For the Record: World of Tanks Client Analysis (Part 3)
Part 1: http://ftr.wot-news.com/2014/07/18/w...ient-analysis/ Part 2: http://ftr.wot-news.com/2014/07/20/w...alysis-part-2/ By Thiemo Jung Welcome to part 3 of my analysis of the World of Tanks client. I will use the same techniques used in part 1 and 2, to analyze the old rendering mode and show differences and similarities. This part will be short, because the difference is not that big. Battles with the old rendering modes have a average frame rate of 65 to 70, with occasional spikes to 120 and dips down to 20. Old Rendering System As both rendering system use the same texture and vertex resources. The main difference is they no longer use deferred rendering, and shadowing is also turned off, reducing the required rendering calls in less than half. Without deferred rendering, the scene no longer needs metadata rendered into 2 additional render target, only color data is stored, reducing the require memory (for render targets) and bandwidth down to one third. With shadowing turned off, the scene is only rendered from the view of the camera, the other passes from the view of the lights is skipped. This combined the required bandwidth is approximately reduced to 25% (or even less) of the new rendering system. But some shaders are still really long (a vertex shader of the tracks is 200 instructions long, this is 5 to 10 times longer than you would expect), but I did not reverse engineer them to find out what they are doing. They still use normal mapping (fake depth) and gloss mapping (or something similar), which is still expensive compared to the contribution to the final image. They stream data as with the new rendering system, it seems the stream system is decoupled from the actual rendering techniques. The problem with the frequent allocation of render target is not present in the old rendering system. The still allocate rendering targets mid frame, but for some static text that is rendered into it, this optimisation is probably counter productive and should be disabled for more stable frame rendering. The redundant state changes of the new rendering system are also present in the old system, but on the old system this is not as severe as with the new system, because there are less stuff to draw. Everything else is very similar, usage of the d3d9ex effect system, the amount and resolution of textures per tank and the streaming of the map. Conclusion Fixing the problems with the redundant state changes, would help both rendering systems. Optimizing their streaming system should also help both rendering systems to make the framerate more predictable (resulting in less spikes and dips). They should also take a look at their shaders, in both rendering modes, to optimize gpu usage.