5 ms·
It seems to me that the artistic portion of Wind Waker was given a little more attention than the technical one. The lack of instancing/batching when rendering
by thegeomaster 12y ago
It seems to me that the artistic portion of Wind Waker was given a little more attention than the technical one. The lack of instancing/batching when rendering grass or the lack of efficient culling outside, for instance, surely doesn't match the care with which the artists designed the lighting or splatted sea materials.
Still, great analysis.
- Narishma 12y agoThe lack of instancing is because there's no need for it. Consoles in general have low-level graphics APIs that let you make tons of drawcalls without the performance issues you get on PC.
- glhaynes 12y agoAnybody got a quick explanation for why desktop APIs have such trouble with lots of drawcalls? What is it that Mantle, Metal, etc. do differently that saves so much time? (And how much of that is a problem with just OpenGL vs. how much does it apply to DirectX as well?)
- tpl 12y agohttp://renderingpipeline.com/2014/06/whats-the-big-deal-with-apples-metal-api/ http://renderingpipeline.com/2014/06/whats-the-big-deal-with... That blog post should help you clarify the difference. I think the primary problem it that OpenGL and DirectX handle changes in pipeline state very poorly.
- corysama 12y agoMS's presentation on Direct12 does a good job of breaking down the problems with classic API models and how DX12 (very similar to Mantle) fixes them. http://channel9.msdn.com/Events/Build/2014/3-564 http://channel9.msdn.com/Events/Build/2014/3-564 youtube dupe: http://www.youtube.com/watch?v=m0QkjKGZQzI http://www.youtube.com/watch?v=m0QkjKGZQzI
- deleted 12y ago[deleted]
- glhaynes 12y agoI'm not sure -- the game runs with a good frame rate in nearly all places (IIRC), so it doesn't seem like they needed the power that'd be freed up by better culling. Maybe they just didn't (prematurely?) optimize there and instead spent their time on some of the other little details from this post?
- JoshTriplett 12y agoExactly. PC games optimize like crazy because every optimization offers the chance to run on lower-end systems and sell a few more copies. Console games have a defined target, and as long as they run well on that target, they're done; optimizations only matter if the game doesn't hit the desired framerate on the one and only target device.
- Narishma 12y agoIt's the other way around. PC games are rarely optimized to any significant degree because of the vast amount of different configurations out there, and PC gamers will just through hardware at the problem anyway. On a console, you know exactly what configuration all your players have, and any optimizations you do will benefit every one of them.
- gabriel34 12y agoHis point still holds: in consoles, any optimization past a certain threshold is wasted effort because your consumer does not get any additional value (the game runs equally as smooth and beautiful with or without the optimization), therefore, doesn't pay more.
- Narishma 12y agoIt's only wasted in the short term. If you optimize so much that you have a lot of unused resources left, you just use them in your next game.
- 12y ago
- otikik 12y agoI am glad it was done this way and not the other way around.
- sjtrny 12y agoAt some point in the execution culling has to happen. It will always happen on the GPU so adding your own CPU based culling will lead to double checking and lower performance in most cases. It only makes sense to do your own culling if your GPU doesn't do it or if you have some spatial partition system which can cull in bulk.
- to3m 12y agoI only ever worked on the Wii, but on that system CPU-based (coarse-ish) culling seemed to be usually the right tradeoff. The GPU was mostly OK, but its vertex throughput always seemed rather poor, particularly if you supplied lots of vertex attributes. The CPU on the other hand was pretty fast, with short pipelines and low-latency RAM. (I was always under the impression that the Wii was at heart just a Gamecube with a higher clock speed and some extra RAM, so I figure the same principles would apply.) While working on this game, I got some code that a colleague wrote for another product to pre-generate all the GPU commands offline, so things could be drawn with 0% CPU overhead. But once I'd merged it all in and got it working, the thing was actually slower! No good sending them all to the GPU and letting it deal with them, it turned out. It was faster to have the CPU carefully check each state setting and not bother the GPU with the redundant ones. (Sort-of disclaimer: Wii developers never got tools as good as the ones for the PS3 or Xbox360. In particular, there was very little visibility into the GPU's working, just some poorly-documented performance counters, and a Javascript tool that would estimate a per-vertex cycle count for a given set of vertex attributes. So it's possible I just got something wrong. And sadly I can't claim to be the sharpest tool in the box.)