DirectX®12 Ultimate is comprised of four key features: DirectX® Raytracing 1.1, Variable Rate Shading (VRS), Mesh shading and sampler feedback. It introduces an unprecedented alignment between the forthcoming Xbox® Series X and PC.
The upcoming RDNA2 architecture will have full support for DirectX®12 Ultimate. Sharing the architecture with Microsoft’s next generation console.
DirectX® RayTracing 1.1
AMD has a long history of enabling a software ecosystem that gives control of the GPU to developers.
Microsoft® DirectX® Raytracing (DXR) adds a new level of graphics realism to video games previously only available in movies. AMD has collaborated with Microsoft on the design of DXR 1.1, an update that can deliver better efficiency and performance in many raytracing effects. DXR 1.1 is a lower-level API which gives more control to developers and is an ideal vehicle to design GPU-friendly raytracing solutions such as Single Shader Ray Tracing approaches.
How the demo works
Create the visibility buffer
Ray traced primary shadows (Compute Shader with TraceRayInline)
Ray traced ambient occlusion (Compute shader with TraceRayInline)
Primary shading (Compute shader)
Ray traced reflections with shadows (Compute shader with 2x TraceRayInline)
Combine + TAA (Compute shader)
* – uses DXR 1.1
Variable rate shading (VRS)
Variable Rate Shading (VRS) is a new feature which allows the hardware to decouple rasterization rate from shading rate.
This enables applications to allocate pixel shading effort where it matters most.
Mesh & amplification shading
These two, new shader stages replace the four stages of the traditional, programmable, geometry processing pipeline.
Amplification and mesh shaders bring the simplicity and efficiency of compute shaders to the frontend of the graphics pipeline.
Amplification shaders are designed to be deployed to perform tasks such as culling. Traditional renderers perform frustum culling at the draw call level. This implies that such an approach is capable of discarding geometry at mesh granularity. Amplification shaders operate instead on meshlets. As the name applies, a meshlet is a smaller subset of a larger mesh. The amplification shader produces a payload of data which is subsequently consumed by the Mesh shader stage, which then performs all geometry-related processing activities.
Sampler feedback adds new instructions which determine the texel footprint of a given texture sample, accounting for filtering modes and MIPmapping.
Before sampler feedback, it was challenging to work out this texel footprint, especially with more complex sampling approaches such as Anisotropic filtering.
This information about what samples the hardware would have fetched can be used to determine the region and resolution of where to apply decoupled shading, or perhaps for adding additional hints to a texture streaming system.