No performance difference on 2080Ti no matter if RTX is enabled


I am a beginner in Optix and I am bit confused by the RTX support.

I have a computer (running windows 10) a 2080Ti (with driver 418.81) and I would like to make sure that the Optix samples I compiled (with Optix 6.0) take advantage of the RT Cores.

So, I modified the samples with the following codes before the call to

int RTX = true; // try once with true then false to see performance difference
if (rtGlobalSetAttribute(RT_GLOBAL_ATTRIBUTE_ENABLE_RTX, sizeof(RTX), &RTX) != RT_SUCCESS)
    printf("Error setting RTX mode. \n");
    printf("OptiX RTX execution mode is %s.\n", (RTX) ? "on" : "off");

For example, I tried the Path Tracer once with RTX = true and then with RTX = false. I expected to see a massive difference in performance and both run at ~16 fps (I raise the number of samples per pixel to 4) when slightly rotating the camera.

So my question is, if I disabled the RTX “support” in one case and got the same performance in the other case, it probably means that either the RT Cores are always used or never used.

Can you clarify what is going on here?


The OptiX SDK path tracer example is not going to show a lot of benefit.

First, because the scene size is super small, and second, because all geometric primitives are custom types with own bounding box and intersection programs.
Only the BVH traversal itself would run in hardware on that scene setup with the RTX execution strategy and since the scene is small, the limit will be more on the shading side, which is always running on the streaming multi-processors.

Please have a look at the optixGeometryTriangles example which shows how to move the triangle intersection onto the hardware RT cores as well.

Here’s an example for a more impressive scene size:


I compiled the dynamic geometry samples with Optix 5 and Optix 6 while asking to display 10000 cows. It effectively run at least twice as fast (and probably faster since I hit the 60 fps limit in Optix 6) in the newer version 6.

So, indeed the RT Cores are useful with triangles and a lot of geometry.

If you seem to be limited to 60fps, try turning off vertical sync in the NVIDIA control panel.

Thanks, I can go to 26-28 FPS to 110 FPS in that case which showcase the difference a lot better.

For information, I changed the Path Tracer sample to use triangles instead of custom intersection program and I went from 50 FPS to 85 FPS which is still a nice performance improvement.

Nice job!

BTW, when you’re beginning with OptiX, there is the OptiX Introduction presentation I did during GTC 2018
which comes with sources on github.

Those examples are only using triangles for the runtime generated geometry and should be really simple to convert to OptiX 6.0.0 and GeometryTriangles. I didn’t find that time to do that, yet.

That path tracer has already a lot more functionality than the small one inside the OptiX SDK and provides an elegant and flexible foundation for own OptiX developments.