What's New in 1.2?We have, unfortunately, not had the chance or pleasure of speaking with CryTek on the subject, but NVIDIA has given us a heads up on what the new patch includes in the way of SM3.0 support and the features of the SM3.0 rendering path. From what we can gather, there are two performance enhancing developments in the CryEngine made possible by SM3.0 in the new patch.
As for VS3.0, instancing is implemented when rendering grass. Instancing helps to reduce CPU and bus overhead by allowing the engine to send one model to the vertex shader where multiple "instances" of the object are manipulated and moved about the scene as necessary. With all the grass in FarCry, it's easy to see how this could be beneficial.
Under PS3.0, CryTek has apparently implemented single-pass per-pixel lighting. With this per-pixel lighting model, a pixel shader is run that takes into account and processes all light sources in the level that affect a particular pixel in one pass. The PS2.0 implementation apparently uses multiple rendering passes (one for each light) for each affected pixel. This means that in heavily lighted scenes, one (more intense) lighting pass can run, which eliminates the time it takes to setup and execute another pass, even if both implementations have the same result. It is unclear to us exactly why this is possible in PS3.0 and not in PS2.0 (we have even seen examples of technology like this running on PS2.0 hardware). We would really love the chance to go more in-depth with Crytek about their lighting algorithms.
At this point, this is all we know about the new SM3.0 rendering path in FarCry. So, theoretically, running around with your flashlight on in an outdoor (very grassy) night scene with lots of lights everywhere would offer the best performance boost that NVIDIA could see from the new rendering path. There are scenes like this in the game. We actually test a night scene with grass (the regulator level), though it doesn't have an abundance of light sources (or a flashlight).
If these are the only differences between the SM2.0 and SM3.0 paths, then all we heard about were the performance enhancing features. We do appreciate NVIDIA providing us with the patch and information before it went live on Ubisoft's website, but we would still rather have had some of this information directly from the source. Obviously, we want to present a fair and unbiased account of what's actually happening, and we should be fine as long as we take proper precautions and consider as many angles as possible.
And on that note, we've been in touch with ATI about a rendering issue that we noticed with the FarCry 1.2 patch under WinXP SP2, DX9.0c, and ATI's latest public driver (4.6). The problem appears to be incorrect mipmap selection on particular sections of the ground (usually on uneven ground) throughout the game. We've seen this appear as the result of an incorrectly set LOD in the past, but we don't know what is causing this. To be very clear about the issue, here's a portion of a screenshot of the ground right out in front of us in the volcano level.
ATI assures us that they have also been working with CryTek on their efforts. Since we have seen a performance improvement with the latest driver and new 1.2 patch, we don't have any reason to think that anything extraordinarily fishy is going on behind the scenes between NVIDIA and Crytek. We would obviously like to see this texturing issue fixed.
Since performance characteristics in FarCry are dominated by shader performance rather than the texel fill rate or the size of the texture used (especially if it's still being trilinearly filtered as it appears to be the case from the screenshot), our opinion is that this issue will not significantly artificially improve the performance numbers that we see from ATI.