NVIDIA Asteroids is the latest tech demo to be publicly shared by the company. This one is specifically geared towards the demonstration of Turing's new Mesh Shading capabilities.
As you probably know already if you're a regular Wccftech reader, the new Turing architecture introduced a number of advanced shading techniques that are now available for developers. One we've already seen implemented in an actual game is Adaptive Shading, added last month to Wolfenstein II: The New Colossus with a patch.
Whereas Adaptive Shading merely adjusts the shading rate dynamically, Mesh Shading adds a new shader model for vertex, tessellation and geometry shading, thus allowing an 'order of magnitude' more objects per scene than would otherwise be possible.
According to NVIDIA, this dramatically improves both performance and image quality. Senior Software Engineer Manuel Kraemer explained on the official blog:
The NVIDIA Asteroids application can achieve very high frame rates by moving key performance bottlenecks of object list processing off of the CPU and into highly parallel GPU mesh shading programs. Starting from an extremely large dataset comprising trillions of potentially visible triangles at any given time, the shaders efficiently eliminate primitives that will never be seen and shade only those contributing to the pixels displayed.
In the demo, each individual asteroid model consists of a sequence of 10 levels of detail, with the highest level containing up to 6 million triangles. This extreme amount of geometric detail allows the largest asteroids (several kilometers in size) to retain a very detailed look, even when the player is flying extremely close. Activating “Visualize LOD levels” paints each asteroid with a color based on its current LOD, showing how the mesh shaders transition smoothly between LODs. Finally, you can also turn off the dynamic LOD system, and then be able to select the display of any of the first 7 levels of detail.
In addition to dynamic LOD, mesh shading also allows the implementation of smart culling systems, greatly improving rendering efficiency. Culling takes place hierarchically in the demo.
First, the task shader checks the entire asteroid for visibility and determines which LOD(s) to use.
Sub-parts or meshlets are then tested by the mesh shader. Finally, the remaining triangles are culled by the GPU hardware. Prior to the arrival of the Turing architecture, GPUs would be forced to cull every triangle individually, creating massive workloads on both the GPU and CPU.
By combining together efficient GPU culling and LOD techniques, we decrease the number of triangles drawn by several orders of magnitude, retaining only those necessary to maintain a very high level of image fidelity. The real-time drawn triangle counters can be seen in the lower corner of the screen. Mesh shaders make it possible to implement extremely efficient solutions that can be targeted specifically to the content being rendered.
Tessellation is not used at all in the demo, and all objects, including the millions of particles, are taking advantage of Mesh Shading.
Owners of a Turing GPU can now download the NVIDIA Asteroids demo from this URL.