Today (2021.03.05) we are releasing version 2021.2. We invite you to take a look at the changelog and see what’s new.
In this blog entry we will talk about one of the highlights of the release: Maverick now benefits from Nvidia’s RTX-capable hardware.
What does “Support for RTX” mean
You may probably seen some buzz in the past 1-2 years about RTX ON and OFF and may be a bit confused as to what this exactly means. Without getting too deep into the hardcore details, we will broadly describe here what RTX means in general and what RTX brings to Maverick in particular.
Nvidia CUDA and RTX
Nvidia GPUs are massively parallel hardware units that over the years have become more and more capable of tackling general-purpose computing problems. Thus, outgrowing far beyond their initial purpose which was accelerating rasterized graphics (e.g., for videogames, etc…).
CUDA is a parallel computing platform created by Nvidia. It allows software engineers to use a CUDA-enabled GPU for general purpose processing. Maverick is 100% built on (and heavily optimized for) CUDA since day 0. Actually, Maverick’s predecessor (Arion, circa 2010/11) was one of the first available commercial render engines based on CUDA. So CUDA and us go a long way back.
We use CUDA for everything: material BSDFs, procedural maps, render logic, sampling, etc… Literally every operation in our core is hardware-accelerated and benefits from CUDA’s massive parallelism. One of these many operations is ray-tracing. i.e., computing the geometrical intersection between a ray and the triangles in the scene.
Between late 2018 and 2020, Nvidia launched the 20 Series and the 30 Series. In addition to their CUDA cores, these architectures introduced new cores (called RT cores) designed specifically to optimize ray-traversal in a scene. This technology is called RTX and this is why the 20 and 30 Series are called RTX cards.
RTX is not a replacement or a successor to CUDA. Actually, RTX can “only” do that one thing: optimize ray-traversal operations. So it is an extra you can optionally use as a developer to very specifically optimize ray-tracing, inter-operating with CUDA or not.
RTX in Maverick
Maverick’s core is made of many stages, like we mentioned above. What we have done is re-engineer the ray-tracing stage using RTX instead of only CUDA. In other words:
Maverick features now an RTX-based ray-tracing backend.
Materials, maps, lights, sampling, etc… every other feature in Maverick stays the same.
What does RTX bring to Maverick
Of all the codebase volume in a render engine, ray-tracing is probably only 1% or so. Ray-tracing is complicated, but little code relatively speaking. By far, most of the codebase deals with materials, maps, render logic, sampling, and hundreds of other subsystems.
What is true, nonetheless, is that ray-tracing is very computationally intensive. About half of the render time is spent computing ray-to-scene intersections. The exact percentage of time depends on the scene. Some scenes have a heavier map/material load, such as those with complex materials and relatively simple geometry. Others are much heavier on the ray-tracing side, such as those with complex geometry, heavy GI, dielectric materials, etc… But it is safe to say that about 30% to 60% of the render time goes down the ray-tracing drain.
It is important to stress the fact that RTX only helps with the ray-tracing (the green) part. So there is only so much that RTX can do to help with overall performance. Also the boost that one can expect entirely depends on the characteristics of the scene. But yet the speed gains in Maverick 2021.2 are good enough to rejoice in the performance of the new core.
Show me the results
Enough talking. This animation compares the scores in Maverick Benchmark as released in November 2019 (before RTX) and today (with support for RTX).
A couple of things to note:
The RTX chart excludes non-RTX cards. Read more about this at the end of this post.
As explained above the performance gain is highly scene dependent. The benchmark scene does such heavy use of so many different features that the gains are especially high.
Maverick Benchmark (RTX)
We have uploaded a new version of Maverick Benchmark that renders under the same conditions as the original benchmark. This new version sports the new core under the hood and hence benefits from RTX hardware. The CUDA-only version of the benchmark from 2020 can still be downloaded for reference and comparison.
Since Nvidia is pushing on RTX very hard, it is reasonable to expect that the leap between RTX-accelerated ray-tracing and CUDA-only ray-tracing will grow in future architectures. Unfortunately, the opposite is also true, to the point that:
RTX is -not- supported at all in GPUs older than the 10 Series.
Nvidia provides some sort of emulation support for RTX in the drivers for the 10 Series. So you can run RTX-based software (such as Maverick) in a 10xx GPU. But performance is at best equal to Maverick’s performance before RTX. That is, there is no performance gain whatsoever, and in some scenes there may be a loss, even.
Maverick is no longer compatible with GPUs older than the 10 Series. e.g., 780Ti or 980Ti.
Performance in GPUs of the 10 Series stays roughly the same*. e.g., 1080Ti.
Performance has improved significantly* in GPUs of the 20 and 30 Series. e.g., 2080Ti, 3080, 3090, …
(*) As explained in another blog post, we have done much more than add support to RTX in this release. Some features such as curvature and round edges have been re-engineered and those in particular have experienced massive gains. So in practice, you may experience a performance boost even in a 10xx card. Only, not due to RTX in particular.