Microsoft previews features coming to DirectX 12, including improved ray tracing

Cal Jeffrey

Posts: 4,452   +1,587
Staff member
In a nutshell: DirectX 12 is getting better at ray tracing according to Microsoft. The DXR 1.0 API, which brought us that cool Star Wars Raytracing tech demo (below) last year, is moving to version 1.1 with features that provide greater efficiency and more flexibility. It is currently in testing, but should be available next year. DX12 will also have a slew of other features as well.

On Tuesday, Microsoft unveiled a whole new suite of features that will be in DirectX 12. The additions include Raytracing tier 1.1, Mesh Shader, Sampler Feedback, and more. Support is currently only available in preview builds for the Windows Insider Program, specifically 20H1, indicating a possible public release in the first half of 2020.

The DirectX Raytracing SDK (DXR tier 1.0) rolled out last year. Since then, game developers and GPU vendors, including Nvidia and Epic Games, have been making it tick, showing off photorealistic scenes rendered in real-time.

Working with developers and manufacturers, Microsoft has improved DXR tier 1.1. A list of enhancements includes:

  • Support for adding extra shaders to an existing Raytracing PSO, which greatly increases efficiency of dynamic PSO additions.
  • Support for ExecuteIndirect for Raytracing, which enables adaptive algorithms where the number of rays is decided on the GPU execution timeline.
  • Inline Raytracing, which provides more direct control of the ray traversal algorithm and shader scheduling.

“DXR tier 1.1 is a superset of tier 1.0,” explained Microsoft. “Game developers should start building their raytracing solution based on the existing tier 1.0 APIs, then move up to tier 1.1 once they can better evaluate the benefit of tier 1.1 to their games.”

Mesh Shader is another new addition.

"[The DirectX Mesh Shader] is the next generation of GPU geometry processing,” claims the company.

It replaces the current input assembler, vertex shader, hull shader, tessellator, domain shader, and geometry shader. The feature will add efficiency and flexibility to the geometry pipeline (see above comparison).

“Mesh shaders can enhance performance by allowing geometry to be pre-culled without having to output new index buffers to memory, whereas triangles are currently only culled by fixed function hardware after the vertex shader has completed execution,” said the post.

DirectX Sampler Feedback allows games to generate a “Feedback Map” during rendering. This map will help games load only the textures needed for the most detailed MIP levels. Games, especially those with 4K assets, will have faster load times with lower memory pressure. Having Sampler Feedback improves texture streaming so that only the data that is needed is loaded into the stream. It also helps make texture-space shading more efficient by removing redundancies.

DirectX 12 will have several other features that Microsoft promised to provide technical details in the coming weeks along with all the features' specs

Permalink to story.

 
Mesh shaders have been supported by OpenGL via an extension since September and by Vulkan in another extension since last year, so it's a little frustrating to see Microsoft finalise it in Direct3D this slowly (and even then, only in a preview build).
 
Mesh shaders have been supported by OpenGL via an extension since September and by Vulkan in another extension since last year, so it's a little frustrating to see Microsoft finalise it in Direct3D this slowly (and even then, only in a preview build).
it's a start though they still have a ton of work to do. They really need to start changing people at the top to get things moving faster.
 
Looks like a worthwhile upgrade.

Mesh shaders have been supported by OpenGL via an extension since September and by Vulkan in another extension since last year, so it's a little frustrating to see Microsoft finalise it in Direct3D this slowly (and even then, only in a preview build).

Far as I could find, mesh shaders are an NVIDIA extension for OpenGL and Vulkan, not an official extension. The good thing about Microsoft is that it works with both GPU vendors and with software developers to finalise the spec. This takes more time than a particular vendor releasing their own version of an extension, and is a lot better for software developers.
 
Looks like a worthwhile upgrade.



Far as I could find, mesh shaders are an NVIDIA extension for OpenGL and Vulkan, not an official extension. The good thing about Microsoft is that it works with both GPU vendors and with software developers to finalise the spec. This takes more time than a particular vendor releasing their own version of an extension, and is a lot better for software developers.

This. I still remember when you had NVIDIA and ATI implementations for Pixel Shaders (PS 1.1 for NVIDIA, PS 1.4 for ATI); Microsoft unified the two specs as part of Shader Model 2.0.

This is pretty much how Microsoft works; they look at what vendor specific features are used, then implement a vendor neutral version in the next version of the API. This allows Microsoft to keep in step with whatever the industry does, but does result in DX typically trailing the bleeding edge by about a year or so.
 
Far as I could find, mesh shaders are an NVIDIA extension for OpenGL and Vulkan, not an official extension. The good thing about Microsoft is that it works with both GPU vendors and with software developers to finalise the spec. This takes more time than a particular vendor releasing their own version of an extension, and is a lot better for software developers.
While this is true, don't forget that AMD offered something resembling mesh shaders with Vega (but pulled support in the drivers after a while) and the days of Microsoft playing catch up to what AMD and Nvidia are doing are long gone. For example, D3D10 and the first D3D10 GPUs appeared pretty much the same time; D3D11 appeared almost 6 months before the first D3D11 GPUs; Direct3D DXR was released a month after the first RTX cards.

Don't get me wrong - it's good to see D3D still being regularly updated, but this is a surprisingly slow appearance for such a feature.
 
While this is true, don't forget that AMD offered something resembling mesh shaders with Vega (but pulled support in the drivers after a while)....

Don't get me wrong - it's good to see D3D still being regularly updated, but this is a surprisingly slow appearance for such a feature.

On the contrary, I think it's reasonable timing. AMD's implementation has probably been a little raw, and it's likely that Microsoft worked with it on the final implementation.

There are some features which are very basic and need dev support, and releasing cards without them is irrelevant, so GPU vendors need to sync the release date with Microsoft, and Microsoft provides a software (or shader based) implementation before that. Some features, in particular features which are mainly an optimisation, like mesh shaders, can be added in the background and from a dev's perspective make most sense when there's a wider hardware ecosystem to support them.
 
Just adding a new feature like ray-tracing would normally increase DX version by 1. But since the next version number is 13, I understand why they've chosen to stick to 12 for now. I guess the next DX version is 14 :)
 
Back