Last night, Microsoft officially announced the latest upgrade of DirectX 12 - DirectX 12 ultimate, which can be said to be the most significant update of DirectX 12 since it was officially launched in 2015. It has added many new features. In fact, some of them have been previewed in October last year.
In the future, the logo may be added to the box for products that support dx12 ultimate
All right, the official blog gives some details about the new features, so this article will try to interpret them.
First, there are four new features in DirectX 12 ultimate, namelyDirectX Raytracing 1.1,Variable rate rendering,Mesh rendererandSampler feedback（Sampler Feedback）。
DirectX Raytracing 1.1
DirectX raytracing (DXR) is a new feature introduced by Microsoft in 2018 for DirectX 12 to support real-time ray tracing processing. The 1.0 version of DXR is based on the software features. It can be said that it is designed around the hardware implementation of Turing architecture. At that time, it did not consider how to realize optical pursuit from the perspective of software development. Version 1.1 extends DirectX 12's ray tracing features to make it more efficient and developer friendly. There are three main points:
Allow GPU to call optical trace directly
Shaders running on the GPU can call raytracing directly in version 1.1 without turning back the CPU. This feature is very useful for adaptive ray tracing scenes, especially for culling, sorting, classifying and thinning based on shaders. Basically, the ray tracing work in the future can be prepared on the GPU and generated immediately.
Load ray tracing shaders on demand
When players move in the game world and new objects become visible, the streaming engine can load new ray tracing shaders according to the screen demand at this time, so as to improve the efficiency of the processing.
Inline raytracing is currently an alternative form of ray tracing based on dynamic shaders, which you can understand as a simplified ray tracing. Developers will have more control over the inline ray tracing process, and can call it at any shading stage, including computing and pixel shading stages. It can be mixed with traditional ray tracing based on dynamic shaders. For simple scenes, inline ray tracing will provide better performance, while for complex scenes, ray tracing based on dynamic shaders will provide better performance.
Variable rate coloring
Variable rate shading is an accelerated coloring feature first introduced by NVIDIA on its Turing GPU. For details, please refer to our classroom article: "super class (212): why can VRS variable rate shading improve the frame number?"? 》, let's talk about its principle here, instead of going into details.
In short, the principle of VRS is to change the shading quality of different areas of the screen by changing the number of pixels processed by a single pixel shader operation. In short, it can change the rendering fineness of different parts of the same screen,Its purpose is to increase the number of frames。
When VRS is not turned on, that is to say, under normal circumstances, all pixels of a frame are independently colored; when VRS is turned on, the original independent pixels are divided into pixel blocks, which share the coloring results. At this time, GPU will assign different shading fineness to all pixel blocks according to the importance level set by the programmer. Take the above picture as an example, the pixels of the vehicle and the vision part are still independently colored, but the pixel blocks of the fast changing road and the roadside are all colored together. At this time, because the computing resources of the video card are saved, the frame number of the game will be increased.
Mesh shaders: the foundation of the next generation geometry pipeline
In the past two decades, the traditional geometry processing pipeline has increased several stages, but its core idea is still based on the traditional rasterization pre coloring method, which is too complex today and drags down the processing efficiency. Both hardware and software developers want to change this situation, so DirectX 12 introduces mesh shader, which provides developers with unprecedented programmable capabilities.
In the original pipeline, the parallel ability of GPU hardware is hidden, or it is automated. The hardware will help package operation and execute it in parallel, which is very efficient, but there are also problems - not enough flexibility.
Mesh shader completely changes this process, it is no longer a single function for a single vertex or entity, but works in the whole computing thread group. In one stage, each thread of mesh shader is aimed at a vertex, while in another stage, each thread is aimed at an entity. The memory of the whole thread group is shared, and the flexibility of access is very high. At the same time, the developer has more control over the hardware, and even can inspire new technologies, saving memory usage and memory bandwidth.
Along with the mesh shader, there is also an optional amplification shader stage, which runs before the mesh shader, calculates how many mesh shaders are needed and starts them.
The last big feature is sampler feedback. First, the effect: better visual quality, shorter loading time and less carton. Its core idea is actually to let the program load only the necessary textures and give the resources to the more needed places.
Sampler feedback allows the game engine to track how the texture sampler is used, and let the latter provide feedback to the engine by generating a "feedback map" Map), which records the different resident levels of different texture regions, and then the program can make decisions based on these feedback information - including how to use the texture sampler and what resources to keep in the display memory. This is more accurate than the original process and can better allocate computing resources. In short, its actual effect isRendering larger, more detailed textures with less memory。
In addition, the sampler feedback also allows a new technique, texture space coloring. It can shade objects without rasterizing them. The idea is to cache and reuse the shading results to reduce the computation of GPU.
Summary: new graphics architecture and next generation mainframe
After Microsoft launched DirectX 12 ultimate, NVIDIA and AMD quickly announced that they have / will support it. In fact, most of the new features of DirectX 12 ultimate can be said to be based on Turing architecture. NVIDIA may have reserved a considerable number of new features when designing Turing architecture, which are not disclosed. At present, AMD is only a follower. To use the new features, we must wait until the end of rDNA 2 architecture.
The above is a detailed interpretation of DirectX 12 ultimate. As I am not an industry person, I only understand these features until now, which inevitably leads to cognitive errors. Please correct me.