RTX? Octane в 6 раз быстрее рендерит, реалтайм фоторил через месяц на новых картах? (нет)

На закрытом форуме редшифта есть тред с описанием технологии и ее ограничений. Далее я приведу краткий перевод сути и копипастну весь пост.

В общем ядра RT ускоряют только рейтрейсинг /thread

А если серьезно, то рейтрейсинг не включает:
— в себя подготовку материалов. Сложные шейдера, со смешиванием кучи слоев и тд.
— Вольюмы. Много облаков, туман и т.д. не отрендерить быстрее.
— Множество частичек, волосы, сплайны.
— Моушен блюр на деформации.
— Все «Point-based» алгоритмы. Для глобального освещения и для ссс irradiance и photons maps. Так что только брут форс GI получит прирост.

Зато если у вас простая сцена, где куча геометрии с альфа каналами и лучу надо много всего проверить на колижены, то тут будет приличный прирост. Проблема только в том, что у сложных сцен на сам рейтрейсинг тратится <50% времени рендера. И прирост в разы быть не может от RT ядер. Ну т.е. прирост будет в разы в части рейтресинга, но общий прирост в скорости будет не таким значительным.

В демках октана и самой технологии RT показывают сцены, специально собранные под это. В них простые материалы, нет вольюмов и частичек, а только 90% времени рейтрейсинг идет. Вот на них и получаются крутые тесты новых карт, но на реальных проектах такого не будет.

Далее паста с форума https://www.redshift3d.com/forums/viewthread/23813/. Можете меня поправить, если где-то ошибся.

There have been a good few posts both here and the web in general, asking about Redshift’s support of NVidia’s RTX. For example: when is going to be arriving, what does the speedup look like, what are the possible limitations, etc. This post attempts to answer these questions.

First of all, a bit of introduction on the terminology used here. “RTX” is what NVidia refers to as their new ray tracing technology. In some cases (OptiX, for example), NVidia claims that RTX also exists for some previous-gen Volta GPUs (like the TitanV) but it runs faster on the latest Turing GPUs (like RTX2080, RTX6000, etc) because these contain the “RT cores” which hardware-accelerate ray tracing. We find this notion (of TitanV also supporting RTX) a bit confusing, esp. considering that only the new GPUs are called “RTX”. So, in any case, when you see us talk about “RTX”, we mean only the Turing RTX GPUs. I.e. the GPUs that contain “RT cores” and do hardware-accelerated ray tracing.

Moving on…

Renderer developers like Redshift have a few different APIs for accessing the RT cores: DXR (DirectX ray tracing), Vulkan ray tracing and OptiX. OptiX is the most suitable for our particular “professional graphics” industry as it enables some features that might not appear on DXR or Vulkan. So, for the above reasons, Redshift currently uses OptiX to access the RT core hardware.

One thing I mentioned in some other posts but is important to also stress here is that RTX (the “RT cores”) accelerate ray tracing only. They do not accelerate shading, volume ray marching or point cloud techniques. They also do not accelerate any other geometrical primitive other than triangles. So Redshift’s native point primitive and strands/hair will see little (if any) acceleration. Some other features like deformation blurring are also not fully accelerated.

The above means that, if your scene is heavy on:

- Shading (complex shaders, lots of layering, blending etc)
- Volumes (lots of VDBs)
- Particles or hairs (lots of primitives)
- Deformation blurring (lots of deformed objects in the scene)
- Point-based techniques like irradiance point or photons or point based SSS

... then you will probably not see big speed gains. It doesn’t mean it will render slower (we still haven’t found such a case) but you might see little to no benefit.

Basically it all boils down to this question: “How much time does the renderer spend shooting rays through my scene?”. If the answer is “a lot” and the scene doesn’t contain lots of hair or points or deformation blurring, then you should expect to see a nice benefit.

Below you can see a simple scene (apologies in advance for the programmer art!) showing a patch of grass rendered fairly up-close. This is obviously not the most complicated scene ever but it renders diffuse, reflection and transluency effects and the geometry is fairly “noisy” which means that the ray tracer spends a good amount of time navigating rays through the grass blades until it finds an intersection. We used this scene as a simple comparison between OptiX’s RTX ray tracer and Redshift’s CUDA-based ray tracer. The scene is using brute-force GI for both primary and secondary bounces - so no point-based techniques are used here. The total render time in OptiX (including shading) was 1:30 while Redshift did it in 2:06. So that’s a prety healthy 1.4x speed up with RTX! If the scene had simpler geo or if used more complex shaders or if it was using point-based techniques, the difference would be smaller because (comparatively) less time would be spent on ray tracing.

RTX? Octane в 6 раз быстрее рендерит, реалтайм фоторил через месяц на новых картах? (нет), image #1

A scene which, unfortunately, shows this kind of “not too much time spent on ray tracing” effect is the Vultures benchmark scene. For that scene, Redshift spends about 25% of time doing ray tracing. The geometry in that scene is fairly complex but nothing too crazy. And it uses the irradiance point cloud for the secondary GI bounces - which is not RTX accelerated, unfortunately. It also uses fairly elaborate shaders which are also not RTX accelerated. As a result, even though OptiX (with RTX) is able to shoot rays almost 3x faster than Redshift’s algorithms in the Vultures scene, the total gain in frame time is only around 10%. Not quite as impressive as the grass example above! With the help of NVidia we were able to optimize the “pure ray tracing speed” further and, even though the “Vultures” scene is still not very ray-tracing-heavy, the extra ray tracing part speedup means we are now getting an *overall* 20-25% speedup!

Will your particular scene see speedups like the above? It’s very hard to say! As you can tell, there are a few moving parts here. But, in any case, there shouldn’t be a scene that renders slower with RTX. Having said that, we haven’t yet added points or hairs to the implementation so I guess the safest thing to say at this point is “we’ll see if it renders these slower than Redshift”.

The implementation is capable of rendering a nice variety of scenes already but not everything is working already. Below we have a list of the currently-in-progress features - with a few comments next to each. Please note that when a comment says “no RTX acceleration” it doesn’t mean we’ll disable it completely in the frame! It just means that these specific objects/effects won’t be accelerated. Other effects/objects in the scene will still be accelerated!

- Motion blur. We haven’t yet added motion blur to the OptiX code but this is something we’ll be doing soon. As mentioned above, certain aspects of it won’t be RTX accelerated unfortunately because the hardware doesn’t do it.DONE!

- Points or strands/hairs. These shouldn’t be too hard to add but they involve custom code so, unfortunately, this means little to no RTX hardware acceleration.

- Sprite node. We can implement that but, unfortunately, because it involves doing a texture read during ray tracing (not after), this means we have to write custom code which, again, means little or no RTX acceleration.DONE!

- Trace sets. We already have visibility flags working (yay!) but trace sets will require some more work. They should be possible but might impact performance somewhat. This is TBD.

- Ray traced SSS. You might say “wait, what does that this have to do with ray tracing code”. Well, Redshift contains some ray tracing features specifically designed for ray traced SSS which I unfortunately cannot go into too much detail about here. What I can say is that those optimizations are absolutely necessary for ray traced SSS to happen. This code is custom which, once again, means that little or no RTX accelertion will be possible for ray traced SSS objects.

- Out of core geometry. We’ll need to do more investigation and see if there are any workarounds. We can think of some possibilities but unfortunately these mean either a significant performance impact (more so than our current out-of-core tech) or will involve other limitations which mean that you could still run out of VRAM for sufficiently complicated scenes. So this needs more R&D!

- Displacement. This doesn’t really have to do with RTX. It’s just that, the way we’re translating geometry currently to OptiX is, unfortunately, disabling tessellation and displacement. This should be pretty straightforward to fix and is one of the things I’ll be looking at next.

- Everything else in Redshift *is* already working. So we can already render VDBs, shaders, lighting, mattes, deepEXR, etc. The only features not working is what’s listed above. So, please, no questions like “when will VDB be possible” or something along those lines!

I’m sure the question many of you have at this point is… “ok, when is this getting released?”

Our plan is to ship RTX support along with the first Redshift 3.0 test builds. The 3.0 releases will follow the same style we followed in the past (for 2.0, 2.5, 2.6): There will be a series of releases which will gradually introduce the new features up to the point until 3.0 reaches feature-complete status. For the ones who are new to Redshift: we typically do this to ensure that we catch bugs early on and without the new features “conflicting” with each other in terms of bug or user-requests. We will of course try to introduce 3.0 with a good set of new features so that first release won’t be as boring as the above might suggest! We’ll share more info in a few weeks.

Второй пост с тестами редшифта

*Updated to include Dual 2080ti tests*

=====================================

Example 1: Example scene where RTX really takes advantage of the scene. Really simple shading and just a lot of instances of a single object. It obviously has no issue tearing through this and scales beautifully. No depth of field, no volumes, etc.

Resolution: 3840 x 2160 UHD
Total triangles: 50,602,962
RTX ON - Rendering time: 3m:2s (1 GPU(s) used
RTX OFF - Rendering time: 6m:18s (1 GPU(s) used
RTX ON = 108% Faster

2x 2080ti
RTX ON = Rendering time: 1m:35s (2 GPU(s) used
RTX OFF = Rendering time: 3m:7s (2 GPU(s) used
RTX ON = 97% Faster

RTX? Octane в 6 раз быстрее рендерит, реалтайм фоторил через месяц на новых картах? (нет), image #2

=====================================

Example 2: This time we have a scene with mass scattering and volumetric fog/scattering. In this example RTX still scales very well albiet not as much but still performs excelently compared to CUDA only.

Resolution: 3840 x 1607 Anamorphic UHD
Total triangles: 93,741,172,946
RTX ON - Rendering time: 1m:46s (1 GPU(s) used
RTX OFF - Rendering time: 3m:5s (1 GPU(s) used
RTX ON = 74% Faster

2x 2080ti
RTX ON = Rendering time: 1m:20s (2 GPU(s) used
RTX OFF = Rendering time: 1m:36s (2 GPU(s) used
Dual RTX = 20% Faster

RTX? Octane в 6 раз быстрее рендерит, реалтайм фоторил через месяц на новых картах? (нет), image #3

=====================================

Example 3: This scene has a decent amount of 4k different texture maps for all the different Megascan assets with a variety of shader properties, it also has some pretty heavy DOF. So this is a scene that RTX generally wouldn’t accelerate too much. Even then the results are still surprisingly good.

Resolution: 2048 x 857 Anamorphic
Total triangles: 96,910,342
RTX ON - Rendering time: 49.4s (1 GPU(s) used
RTX OFF - Rendering time: 1m:10s (1 GPU(s) used
RTX ON = 43% Faster

2x 2080ti
RTX ON = Rendering time: 29s (2 GPU(s) used
RTX OFF = Rendering time: 59s (2 GPU(s) used
RTX ON = 103% Faster

RTX? Octane в 6 раз быстрее рендерит, реалтайм фоторил через месяц на новых картах? (нет), image #4

=====================================

Example 4: In this final example we have a scene that has several instances but most of the geometry (leaves) consist of the sprite shader which can’t be accelerated by the RT cores. Even in this example though there are still a lot of regular pieces of geometry which can be accelerated like the branches on the trees. I also pushed the unified sampler pretty high to clean up the DOF as much as possible. Even though the sprite node doesn’t get accelerated by RT cores, all the geometry and DOF ray-tracing does, so it still provides a great boost in performance.

Resolution: 1920 x 803 HD Anamorphic
Total triangles: 480,250,028
RTX ON = Rendering time: 12m:16s (1 GPU(s) used
RTX OFF = Rendering time: 15m:54s (1 GPU(s) used
RTX ON = 30% Faster

2x 2080ti
RTX ON = Rendering time: 6m:15s (2 GPU(s) used
RTX OFF = Rendering time: 7m:59s (2 GPU(s) used
RTX ON = 28% Faster

RTX? Octane в 6 раз быстрее рендерит, реалтайм фоторил через месяц на новых картах? (нет), image #5
2986 views·10 shares