1. How RTX-Dev Can Help Your Game

The RTX-Dev branches help your title in three distinct ways:

  • Improved performance

  • Enhanced content compatibility

  • Enhanced scalability

Improved performance is obviously a hugely important win for utilizing RTX-Dev improvements in your title. The gains will vary quite dramatically based on your content and features. Additionally, these gains change over time as new UE4 releases make improvements, sometimes by integrating pull requests originating in the RTX-Dev branches. Content using ray traced translucency will benefit substantially from the stencil masking support to cull unnecessary rays. Further, translucency content can gain from hybrid translucency by ignoring particles in ray tracing. With RTX-4.24, some of the largest gains will actually be observed from improved software efficiency. We have measured over 20% improvement in frame rate tied to improved software efficiency in a real ray tracing title.

In the arena of content compatibility, hybrid translucency stands out the most as allowing content developed on legacy pipelines to function correctly. The ability to mix ray traced and raster translucency in the same scene allows the older Cascade particle systems to continue to work. They won’t be ray traced, but most games likely won’t want them to be ray traced anyway. Additionally, the refraction behavior matches what was set up for raster. Shadowing also benefits greatly from a content compatibility perspective. First, ray tracing fires rays from the scene to the light to perform shadow testing, whereas shadow maps project them from the light. This reverses the cull direction of primitives, and it can have challenges with single-sided geometry like you might have placed over a lamp. RTX-Dev allows the game to switch the cull direction to match the effective cull direction used for raster avoiding the issue. (The base engine doesn’t do this presently, as the cull direction it uses produces more accurate penumbras) Finally, shadow compatibility is improved by lights in reflections properly obeying the shadow casting flags applied to lights in the scene, preventing extra lighting on your reflected geometry.

Finally, RTX-Dev helps your game with content scalability beyond what base UE4 offers today. The additional screen percentage levels supported for ray traced effects provides a very clear example. Instead of just having a choice of 100% of pixels tracing reflections or 25% of pixels tracing reflections, it offers an additional level of 50% of pixels. Further, the light priorities enable the option to scale the number of ray traced lights considered for both direct in scene lighting and reflections lighting.

2. Ship Your RTX UE4 Title

2.1. Scalability and Performance

While the desired performance/image quality target varies pretty widely among games and gamers, a lot of importance must be placed on hitting minimum bars that a lot of gamers have come to expect. Achieving 60 FPS at 1080p on your minimum ray tracing spec is highly recommended. Reaching this goal means making some compromises on the lower end hardware. While every game will offer different performance characteristics, we’ve seen these options as offering useful scaling knobs to achieve your goals:

Reflections Screen Percentage

r.RayTracing.Reflections.ScreenPercentage

As mentioned above, this controls how many pixels cast reflection rays, so it provides a really large lever on the cost/quality tradeoff of reflections. It is important to remember that the percentage of total pixels is actually the square of the value provided, so 50% is actually 25% of the total pixels.

Reflections Maximum Roughness

r.RayTracing.Reflections.MaxRoughness

The maximum roughness value determines which pixels trace rays and which fall back to reflection probes. Rougher surfaces tend to have pretty noisy reflections and often don’t benefit as much, so reducing this value from its default of 0.6 to say 0.45 can cut the number of rays being shot by a substantial margin with modest change in image quality.

Reflections Maximum Distance

r.RayTracing.Reflections.MaxDistance

This value controls how far reflection rays are cast prior to reporting a miss. Shorter distances will result in distant objects missing in reflections, but they also often have less visual impact. Restricting this will reduce the cost of reflections as the rays will have less geometry to consider. The units are the standard Unreal units (typically used as centimeters).

Half-Resolution Hybrid Translucency

r.RayTracing.HybridTranslucency.HalfRes

Obviously, cutting the number of rays fired for computing translucency in half offers a nearly 50% reduction in translucency costs. Fortunately, the reflections on translucency are less clear even when at full resolution due to being able to see through the surface.

Maximum Reflection Bounces

r.RayTracing.Reflections.MaxBounces

For most game content, one bounce will be enough; however, one can imagine mirror reflections where the content seen in the mirror does benefit from an additional bounce. While the increase in costs for the number of bounces will generally be sub-linear, it is often an extra cost at least some configurations won’t desire to pay. When evaluating the quality performance tradeoff of multiple bounces, remember to enable r.RayTracing.Reflections.ReflectionCaptures, as this option will emulate the results of extra bounces through reflection captures for little cost.

Number of Ray Traced Shadow Casting Lights

r.RayTracing.Shadow.MaxLights
r.RayTracing.Shadow.MaxDenoisedLights

Obviously, the number of dynamic shadow casting lights has a big impact on performance just as it does with rasterization. In this vein, restricting the maximum number offers a good way to control the costs of lighting in the scene. Importantly, denoising is generally more expensive than the ray traced shadows themselves, so restricting the number of denoised lights is often more important than restricting the total number of ray traced lights.

Culling Distance for Instanced Static Meshes

r.RayTracing.InstancedStaticMeshes.Culling
r.RayTracing.InstancedStaticMeshes.CullDistance

When content has a lot of instant static meshes (including HISMs and foliage), enabling a reasonable culling distance provides an important lever on performance. With no culling, the game may end up processing thousands of instances which are never very meaningful.

Resolution Scaling

When all else fails, cheat. The easiest way to get the most scaling is by rendering at a lower resolution and upscaling. Deep Learning Super Sampling (DLSS) provides a high-quality method to do this. Please refer to the Deep Learning Super Sampling section to get started.

2.2. Include Options

If there is one thing hard-core PC gamers love, it is tweaking options. While the options mentioned in the preceding section allow you to make your performance goals, they also provide a mechanism to extend varying levels of quality to the wide range of performance offered by today’s ray tracing hardware. Obviously, we can produce a higher quality image at the same performance for the player gaming on a RTX 2080 Ti compared to one gaming with an RTX 2060. Offering a group of settings like Medium, High, and Awesome enables the players to choose what suits them best. Ideally, you can do it for multiple categories, such as Reflections, Shadows, and Translucency. This helps you serve the gamer that wants peak FPS on his Titan RTX while also enabling the gamer that is OK with 30 FPS on his RTX 2060. Finally, having these levels offers a simple way to offer presets for detected hardware levels, to help gamers get a great out-of-the-box experience.

2.3. Test Direct3D 12

Ray tracing requires Direct3D 12, so obviously, the quality with which the game operates under D3D12 is important as a baseline. This means that even if you only plan to run D3D12 when a player opts into ray tracing, you should be testing the base game with D3D12 to ensure you have a solid base to build from. Importantly, in D3D12, you may need a QA pass to collect referenced Pipeline State Objects (PSOs) to pre-populate a cache to ensure reduced hitching at runtime.

Previous | Next

  Previous Topic     Next Topic  

Home    

Getting Started    

RTX-Dev Features    

Deep Learning Super Sampling    

 

Notices

Notice

THE INFORMATION IN THIS GUIDE AND ALL OTHER INFORMATION CONTAINED IN NVIDIA DOCUMENTATION REFERENCED IN THIS GUIDE IS PROVIDED “AS IS.” NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE INFORMATION FOR THE PRODUCT, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. Notwithstanding any damages that customer might incur for any reason whatsoever, NVIDIA’s aggregate and cumulative liability towards customer for the product described in this guide shall be limited in accordance with the NVIDIA terms and conditions of sale for the product.

THE NVIDIA PRODUCT DESCRIBED IN THIS GUIDE IS NOT FAULT TOLERANT AND IS NOT DESIGNED, MANUFACTURED OR INTENDED FOR USE IN CONNECTION WITH THE DESIGN, CONSTRUCTION, MAINTENANCE, AND/OR OPERATION OF ANY SYSTEM WHERE THE USE OR A FAILURE OF SUCH SYSTEM COULD RESULT IN A SITUATION THAT THREATENS THE SAFETY OF HUMAN LIFE OR SEVERE PHYSICAL HARM OR PROPERTY DAMAGE (INCLUDING, FOR EXAMPLE, USE IN CONNECTION WITH ANY NUCLEAR, AVIONICS, LIFE SUPPORT OR OTHER LIFE CRITICAL APPLICATION). NVIDIA EXPRESSLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH HIGH RISK USES. NVIDIA SHALL NOT BE LIABLE TO CUSTOMER OR ANY THIRD PARTY, IN WHOLE OR IN PART, FOR ANY CLAIMS OR DAMAGES ARISING FROM SUCH HIGH RISK USES.

NVIDIA makes no representation or warranty that the product described in this guide will be suitable for any specified use without further testing or modification. Testing of all parameters of each product is not necessarily performed by NVIDIA. It is customer’s sole responsibility to ensure the product is suitable and fit for the application planned by customer and to do the necessary testing for the application in order to avoid a default of the application or the product. Weaknesses in customer’s product designs may affect the quality and reliability of the NVIDIA product and may result in additional or different conditions and/or requirements beyond those contained in this guide. NVIDIA does not accept any liability related to any default, damage, costs or problem which may be based on or attributable to: (i) the use of the NVIDIA product in any manner that is contrary to this guide, or (ii) customer product designs.

Other than the right for customer to use the information in this guide with the product, no other license, either expressed or implied, is hereby granted by NVIDIA under this guide. Reproduction of information in this guide is permissible only if reproduction is approved by NVIDIA in writing, is reproduced without alteration, and is accompanied by all associated conditions, limitations, and notices.

Trademarks

NVIDIA, the NVIDIA logo, and cuBLAS, CUDA, CUDA-GDB, CUDA-MEMCHECK, cuDNN, cuFFT, cuSPARSE, DIGITS, DGX, DGX-1, DGX Station, NVIDIA DRIVE, NVIDIA DRIVE AGX, NVIDIA DRIVE Software, NVIDIA DRIVE OS, NVIDIA Developer Zone (aka "DevZone"), GRID, Jetson, NVIDIA Jetson Nano, NVIDIA Jetson AGX Xavier, NVIDIA Jetson TX2, NVIDIA Jetson TX2i, NVIDIA Jetson TX1, NVIDIA Jetson TK1, Kepler, NGX, NVIDIA GPU Cloud, Maxwell, Multimedia API, NCCL, NVIDIA Nsight Compute, NVIDIA Nsight Eclipse Edition, NVIDIA Nsight Graphics, NVIDIA Nsight Systems, NVLink, nvprof, Pascal, NVIDIA SDK Manager, Tegra, TensorRT, Tesla, Visual Profiler, VisionWorks and Volta are trademarks and/or registered trademarks of NVIDIA Corporation in the United States and other countries. Other company and product names may be trademarks of the respective companies with which they are associated.