Venice in Gotham
Another of Crysis 2's DX11-exclusive features is, as we've mentioned, dynamically simulated and tessellated water.
Gazing out from the shoreline, that simulated water looks quite nice, and the waves roll and flow in realistic fashion.
GPU PerfStudio gives us a look at the tessellated polygon mesh for the water, which is quite complex. It's hard to say for sure, but the tessellation routine doesn't appear to be scaling back the number of polygons dynamically based on their distance from the camera. As a result, the mesh dissolves into a solid purple band of pixels near the horizon. Still, the complexity is used impressively; the water is some of the most convincing we've seen in any game.
From the same basic vantage point, we can whirl around to take a look at the terra firma of Manhattan. In this frame, there's no water at all, only some federally mandated crates (this is an FPS game), a park, trees, and buildings. Yet when we analyze this frame in the debugger, we see a relatively large GPU usage spike for a certain draw call, just as we saw for the coastline scene above. Here is its output:
That's right. The tessellated water mesh remains in the scene, apparently ebbing and flowing beneath the land throughout, even though it's not visible. The GPU is doing the work of creating the mesh, despite the fact that the water will be completely occluded by other objects in the final, rendered frame. That's true here, and we've found that it's also the case in other outdoor areas of the game with a coastline nearby.
Obviously, that's quite a bit needless of GPU geometry processing load. We'd have expected the game engine to include a simple optimization that would set a boundary for the water at or near the coastline, so the GPU isn't doing this tessellation work unnecessarily.