|
-
 Originally Posted by VENGEANCE MX
Oh, I see. But surely there's a limit to how many textures you can re-use? There are games with randomly-generated or user-designed content, right? Also, I'm surprised that in a detailed and varied game like Crysis there'd be enough re-usage of textures to make acceleration feasible. Why can't CPUs be optimized like this?
It is hard to explain the techniques that a game like Crysis would use to render scenes just because it takes advantage of a lot of features of the GPU that have no CPU equivalent. Crysis takes advantage of texture splatting, detail maps, instancing and pretty much every trick in the book and still hammers the computer you run it on. Also, keep in mind that its not the total number of textures but only the number that you are rendering (You don't need to switch to a car texture if you arent rendering any cars at the moment).
User generated content is unrelated to render state switches and could be implemented in a variety of ways. Both user generated content and random content could potentially be generated/calculated completely on the GPU anyways.
The main problem is just that data in a 3d game is treated and kept in a completely different from than in flash on almost every level, and even if one bypassed all of the other issues, some parts of flash, such as tweening and vector rendering are just fundamentally not going to work very well on the GPU. So, the best solution one could put together would be performing some operations (such as bitmap operations) on the GPU and then reading it back to the CPU. The problem there is that transferring data to and from the GPU is extremely slow (The GPU is intended to push pixels to the monitor, not back to the CPU). Reading back data is almost a taboo of graphics programming. And even then, for ideal performance, the user will have to order the draw calls by texture (and hope the texture has already been uploaded to the GPU).
GPU acceleration will only be beneficial in edge cases, and under specific circumstances. Even then, when flash is standing between you and the video card I will be incredibly surprised if any major performance gains will be had (For example, you wont be able to use instancing which would probbably be the most useful technique for rendering particles and similar in flash (http://en.wikipedia.org/wiki/Geometry_instancing)). Making a separate draw call for each quad will kill performance like nothing ever seen. (http://http.developer.nvidia.com/GPU...chapter03.html ) And the sad part is that there is no way for flash to avoid making a separate draw call because it just doesn't have the right information.
Last edited by 691175002; 11-29-2008 at 08:42 PM.
The greatest pleasure in life is doing what people say you cannot do.
- Walter Bagehot
The height of cleverness is to be able to conceal it.
- Francois de La Rochefoucauld
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|