Ray Tracing Acceleration on AMD Radeon™ RX 6000 Series Graphics Cards
AMD Radeon™ RX 6000 Series graphics cards add support for hardware-accelerated ray tracing. While many games are using ray tracing to add support for better shadows and reflections, this feature is even more widely applied to offline rendering solutions.
Modern renderers are already using ray tracing, though before hardware acceleration became a tool in computer systems, they were using GPU compute capabilities or CPU programs to do the ray tracing.
Now, with specific hardware acceleration features implemented, content creators can accelerate their rendering using AMD Radeon™ RX 6000 Series graphics cards. Here is how we enabled these gains in ray tracing speed in the AMD Radeon™ ProRender rendering engine.
Computations in Ray Tracing
At a basic level, the computations needed to trace the rays for a render involve two steps:
- Check if a ray (think of an arrow pointing off into space) intersects a given polygon. Of course, there may be millions of polygons in a scene! So, to find the first polygon a light ray hits, there needs to be millions of tests to find the first one. Of course, we want to minimize the number of tests. The common method to achieve this is to use a Bounding Volume Hierarchy (BVH) to group polygons.
- Build the BVH and test ray intersection against the BVH before testing the ray–polygon intersection. If we can rule out most polygons by what “area” of space they occupy, we can do fewer tests. Arranging the polygons into groupings and testing the BVH at higher levels also accelerates the ray tracing.
AMD Radeon™ ProRender 2.0 Improvements
Radeon™ ProRender, being our OpenCL™ based rendering engine, takes advantage of new OpenCL™ functions to hardware-accelerate rendering. Of course, performance improvement is dependent on the scene, and scenes that have more complex shaders will typically benefit less from hardware-accelerated ray tracing. Here are some simple benchmark scenes we tested with hardware acceleration on and off using the AMD Radeon™ RX 6800 XT graphics card.
The hardware acceleration can not only accelerate ray-triangle intersection, but it can accelerate rendering a scene with curves. Here is a performance comparison of a test “rabbit” scene made with Radeon™ ProRender by LiNDA ZOO using the Ephere Ornatrix hair plug-in for Autodesk® Maya®. As you can see, we are getting an impressive performance improvement on an AMD Radeon™ RX 6800 XT GPU.
Of course, just turning on hardware acceleration isn’t the only change we made for Radeon™ ProRender 2.0! We also made great strides in making the renderer more efficient. For a given amount of render time, the amount of noise has generally been reduced in RPR 2.0.
Another area where we looked to improve Radeon™ ProRender 2.0 was scaling over multiple GPUs. Why should users be limited to just one GPU? This was an area we wanted to improve on compared to RPR 1.X. Ideally, we would like to see the rendering time halved when using two equivalent GPUs, and decrease exponentially as you use even more GPUs. In practice, this is hard to achieve. Our tests, however, show an almost predictable scaling when increasing the number of GPUs up to 10!
Enabling Hardware Ray Tracing for Developers
For developers using the AMD Radeon™ ProRender SDK, enabling hardware ray tracing in AMD Radeon RX 6000 Series graphics cards is simple. Upgrade to the latest Radeon™ ProRender SDK available on GitHub and enable the “Northstar” render context plugin instead of “Tahoe”. Details how to do this in C code are covered in our documentation.
AMD Radeon™ ProRender is an entire renderer. For developers writing their own renderer who wish to enable hardware ray tracing in OpenCL™, there is an upcoming version of the Radeon™ Rays SDK planned to support this.
Plug-Ins Supporting Radeon™ ProRender 2.0
For developers, we are making Radeon™ ProRender 2.0 available on GitHub via GPUOpen. Part of the GPUOpen philosophy is support for software that makes it easier for developers to run on most devices via open standards. Radeon™ ProRender 2.0 will run on virtually any GPU which supports OpenCL™ 1.2.
For users, we have also updated our Autodesk® Maya®, Blender®, and SideFX® Houdini™ plugins to include Radeon™ ProRender 2.0 and support hardware-accelerated ray tracing (only on AMD Radeon™ RX 6000 Series graphics cards).
Introducing the new version of Radeon™ ProRender 2.0, the Universal Rendering API.
AMD Radeon™ ProRender is our fast, easy, and incredible physically-based rendering engine built on industry standards that enables accelerated rendering on virtually any GPU, any CPU, and any OS in over a dozen leading digital content creation and CAD applications.
AMD Radeon™ ProRender SDK is a powerful physically-based path traced rendering engine that enables creative professionals to produce stunningly photorealistic images.
- Average ray cast kernel time: Testing conducted by AMD Performance Labs as of Oct 26, 2020 on the AMD Radeon™ 6800 XT and a pre-release AMD Radeon™ Software 20.45-201022a-360301E driver, on a test system comprising of an AMD Ryzen™ Threadripper™ 3990X, 64 GB DDR4-3200 RAM, MSI Creator TRX40 motherboard with BIOS version 1.50 at default settings, Patriot VP4100 1TB PCIe4 SSD, and Windows® 10 Pro May 2020 Update.
- Average rendering time (second): Testing conducted by AMD Performance Labs as of Sept 25, 2020 on the AMD Radeon™ 5700 XT. on a test system comprising of an AMD EPYC™ 3351 12-Core Processor, 128 GB DDR4-2667 RAM, SAPPHIRE IPC-EP3000-SPH motherboard with firmware version: 5.13, CFD 240GB SATA 6Gbps SSD, and Ubuntu 18.04.5 LTS.
© 2020 Advanced Micro Devices, Inc. All rights reserved. AMD, the AMD Arrow logo, Radeon, Ryzen, Threadripper, and combinations thereof are trademarks of Advanced Micro Devices, Inc. in the United States and/or other jurisdictions. Autodesk, the Autodesk logo, and Maya are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. Blender is a registered trademark of the Blender Foundation in EU and USA. Houdini, the Houdini logo, and SideFX are registered trademarks or trademarks of Side Effects Software Inc. registered in the USA and other countries. OpenCL is a trademark of Apple Inc. used by permission by Khronos Group Inc. Render Pool is a trademark of Morgenrot Inc. Other names are for informational purposes only and may be trademarks of their respective owners.