That presentation is way too advanced for an OptiX beginner and was from before the MDL SDK was open-sourced on

https://github.com/NVIDIA/MDL-SDK.

Means I wrote the whole MDL-capable renderer from scratch including all BSDFs like GGX.

1.) OptiX is a general purpose high-level ray casting SDK and you can implement any rendering algorithm and material system you want.

2.) Depends on your light transport algorithm.

The problem with glossy surfaces in a ray tracer is that the reflections of objects around that material are fuzzy, so it’s not possible to capture that with a single reflection ray.

For real-time usage your ray budget is currently still very small and lots of advanced filtering methods need to be applied to get a smooth glossy reflection then.

Follow the links on this page for more examples, esp. the GameWorks technology video: https://developer.nvidia.com/rtx/raytracing

Then watch the “Ray Tracing with Low Sample Counts with NVIDIA’s Ray Tracing Denoisers” presentations here: http://on-demand-gtc.gputechconf.com/gtc-quicklink/eCWqVGT

I would not expect that a Kepler board is able to do that (if you say real-time is 24 fps). There are already four newer GPU generations and actual hardware ray-tracing support in Turing.

3.) I’m not aware of any public OptiX example implementing the GGX microfacet distribution, but that is not too difficult in a path tracer if you have the necessary formulas describing that, see paper below.

For a simpler quick-start with OptiX please watch the OptiX Introduction presentation and work through the example code.

Links here: https://devtalk.nvidia.com/default/topic/998546/optix/optix-advanced-samples-on-github/

At example number 07 you have everything you need to add more BSDF implementations like GGX.

That renderer’s core architecture is a simplified version of my MDL-capable renderer.

Means if you have the sampling and evaluation functions from the usual papers (e.g. “Microfacet Models for Refraction through Rough Surfaces” from Walter, Marschner, Li, Torrance) you just need to implement two additional functions following the code in

https://github.com/nvpro-samples/optix_advanced_samples/blob/master/src/optixIntroduction/optixIntro_07/shaders/bsdf_diffuse_reflection.cu

and add a new enum in

https://github.com/nvpro-samples/optix_advanced_samples/blob/master/src/optixIntroduction/optixIntro_07/shaders/function_indices.h

to support GGX or any other BSDF.

That is progressive frame rendering and not real-time though, but will give you a better understanding of OptiX and an idea what is required for your use case.