Microsoft announces DirectX Raytracing
The announcement made by Microsoft yesterday at the GDC is likely to revolutionize the history of graphics. DirectX Raytracing is a big step forward for DirectX 12.
In the long history of the evolution of computer graphics, raytracing has always been considered as the most efficient rendering technique in terms of lighting management and visual accuracy. This is because it works similarly to the human eye or better to say, exactly the opposite of the human eye. The raytracing technique projects the rays of light from the observation point to the objects; the rays then bounce off objects to the rest of the scene, ultimately determining the interactions between light sources and objects in a realistic way.
The management of such a large number of light rays requires a lot of processing resources, which has confined the raytracing to static or pre-rendered (pre-baked) scenes. Game developers have used raytracing to render some of the game content upstream and then insert it in a static way into the final scene. Computer graphics experts, on the other hand, know well how the lighting component is by far the most important component of the overall quality of the scene.
When you hear about DirectX 12, you get the feeling that you are talking about a relatively new technology, but in reality, the debut of the latest Microsoft API dates back more than four years ago. This is because for a series of reasons. The adoption of DirectX 12 is still in its infancy: the development times of the optimized software are long and the same can be said about the speed of adoption of the operating system. But the Microsoft technical team is already working on the next version of the API, as revealed at the Game Developers Conference in San Francisco, and this time the main focus will be on Raytracing.
During a session attended by some hardware and software partners, Microsoft announced the new feature of DirectX 12: the APIs will be able to manage ray tracing via software and accelerated via hardware allowing developers to implement more accurate graphic effects.
The main purpose of Microsoft is to provide developers with a standard platform to implement ray tracing in an easy way for the GPU, taking advantage of all the processing resources available. In addition, as an extension of the existing DirectX 12 feature set, DXR is designed to be tightly integrated with traditional rasterization, and allows developers to combine the two rendering techniques to fit their needs and choose the best one based on performance and performance. effects that you can implement.
In the usual rendering, the graphics engine only manages a few light rays, basically one for each light source. Unlike raytracing, we start from the light source, rather than from the observation point. Raytracing, instead, involves the management of a large number of rays, because it requires a ray for each pixel on the screen: moreover, these rays can be reflected, refracted and, finally, recursively regenerated many times. For each pixel, it is also necessary to calculate the quantity of light and color, determining the type of refraction and the penetration within the object.
The large amount of calculations behind the raytracing technique has historically driven developers to use rasterization. This basically simplifies the three-dimensional scene to a two-dimensional plane, reducing the differences in terms of thickness and extension of most of the graphic effects present. The projection of a 3D space in a 2D plane involves an approximation of the light and the shaders, which is somehow compensated.
For these reasons, in recent years we have tried to combine the benefits of the two techniques to combine their strengths, namely the efficiency of the existing rendering pipeline with the quality of raytracing.
The simplest way is to rasterize a scene to have a first geometric representation and then light it with raytracing, and then add a layer of pixel shader to blend the two jobs. This approach exploits the strengths of ray tracing in terms of lighting and shading, with a very accurate final result with regard to reflections of light, diffusion, environmental occlusion and shadows.
This excursion to understand why Microsoft with the new support is first of all focusing on making the new approach compatible with the existing rasterization techniques. The architecture of the current GPU is so generic that developers can implement raytracing through the current hardware units used to calculate the shader (specifically via DirectCompute), but in this way, they lose the benefits of an optional dedicated processing unit to raytracing.
So, within the DirectX 12, there will be new DXR commands and video card manufacturers will decide how to manage them via hardware or software. In any case, Microsoft’s APIs will leave the developers free to establish their approach to raytracing, ie whether to manage it via software or through other hardware resources already available or whether to take advantage of the new DXR commands with dedicated hardware.
This Microsoft approach allows developers to start working with raytracing right away with existing hardware. In addition, it is a gimmick that will allow video card manufacturers to sell the current DX12 GPUs as solutions that can handle ray tracing. This means that by the end of the year we will be able to see the first videogames with DXR support and begin to understand what the benefits will be in terms of visual rendering.
There are some parts of the raytracing process that can be performed in hardware and other functions that it is convenient to manage using current shaders (fallback layers). Microsoft will provide GPU manufacturers with the tools to manage this convergence and minimize the performance difference between rasterization and raytracing.
Microsoft does not consider the new DXR commands as a primary engine of DirectX 12, which remain those delegated to 3D graphics and compute engines, but it is a secondary task that can be performed by other engines, and this is basically preparatory to the adoption in raytracing software. There will be new types of shader to handle raytracing, ray-generation, closest-hit, any-hit and miss shader.
Microsoft’s partner is obviously NVIDIA, which has always announced at GDC that it will support the hardware acceleration of DXR through the new RTX technology. NVIDIA informs that the new Volta architecture presents hardware not dedicated to raytracing, previously announced, and at the same time it is able to manage software raytracing. The pre-Volta architectures, on the other hand, will manage raytracing exclusively in software.
AMD has instead announced to be working with Microsoft for the release of a driver that immediately makes available raytracing with the current video cards, but it is not clear in which part the raytracing will be managed via hardware and in which software. Developers can begin to take advantage of DXR commands right away through the experimental mode of Windows 10 Fall Creators Update.
Epic Games, Futuremark, DICE, Unity and Electronic Arts have already announced their intention to implement DXR within their graphics engines. No information is received about Xbox One, although raytracing support for the Microsoft console should still be there, since all the graphic news from Redmond in the last few years sooner or later have also arrived on the Xbox.
The fact is that the announcements of Microsoft and NVIDIA to the GDC go in the opposite direction compared to the philosophy of the recent GPU, which went increasingly towards the elimination of the fixed function units.
At the same time, raytracing could revolutionize the way we conceive graphics in video games and the quality of lighting. Having a hardware unit expressly dedicated to raytracing on all video cards may soon become mandatory. The announcement of Microsoft, for these reasons, is really very important in the history of the evolution of graphics, and may involve a relaunch in the path of continuous improvement that in recent years has abruptly interrupted.