Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion

Tags in this Discussion

Regarding Scenix & Optix
  • Hello

    I am currently getting started using Optix, however I have just read about Scenix and are thinking about trying this since it would reduce workload significantly. However I am just wondering about a few things.

    Since Scenix seems to have pre-defined geometry types (like tri-lists or patches etc), does this mean the bounding/intersection programs for Optix are already defined? So I could save some time there. If so, is it also possible to add custom intersection programs to define additional primitives (eg sphere)? Or alternatively, does Scenix still require all intersection programs to be provided by user?

    Also, how about closest/any-hit programs? Does Scenix come with any predefined Optix materials (eg lambertian, phong, refraction, reflection, volumetric diffusion etc)? Or will they all need to be provided by the user also?

    Finally, does Scenix allow specifying static/dynamic geometry separately? Eg so static & dynamic geometry go into different Optix acceleration structures.

    Thanks
  • 4 Comments sorted by
  • Vote Up0Vote Down Detlef Roettger
    Posts: 330 Accepted Answer
    First, please read the Using RTFx.pdf document in the SceniX installation, second, read the SceniX tagged posts on this forum.

    "Since Scenix seems to have pre-defined geometry types (like tri-lists or patches etc), does this mean the bounding/intersection programs for Optix are already defined?"

    The only supported primitive inside the SceniX ray tracing backend using OptiX is indexed triangles. No points, no lines, no patches. Every other primitive is sent as individual triangles.

    >>If so, is it also possible to add custom intersection programs to define additional primitives (eg sphere)? Or alternatively, does Scenix still require all intersection programs to be provided by user?<<

    The only intersection program SceniX has built-in is inside the cited document.
    The RTFx framework allows to exchange it. Here is an example where I demonstrated that:
    http://forums.developer.nvidia.com/devforum/discussion/3201/custom-intersection-program-in-scenix-optix
    But as you see from that post, triangles are the only data to work with.

    "Also, how about closest/any-hit programs? Does Scenix come with any predefined Optix materials (eg lambertian, phong, refraction, reflection, volumetric diffusion etc)? Or will they all need to be provided by the user also?"

    All SceniX built-in ray tracing program sources are inside the appendix of the Using RTFx.pdf document. The Material implemented is a simple Whitted recursive ray tracer with the lighting model matching OpenGL's lighting definition plus reflection, refraction, and shadows. For simple materials you will not see a big difference between the rasterizer and the ray tracer if it weren't for these additional effects.
    The built-in programs are just a start to get anything rendered with ray tracing at all, here is where the fun starts:

    The QtIconTracer example shows how to implement a simple path tracer supporting global illumination with progressive refinement. It's very similar to this SIGGRAPH 2009 demo I built (Hmm, removed the http, it somehow doesn't show up in the post. Copy into your browser): www.youtube.com/watch?v=i8F_48nyW90
    which spawned the NVIDIA Design Garage demo which is also SceniX+OptiX based:
    http://www.nvidia.com/object/cool_stuff.html#/demos/2116

    The QtAmbientOcclusion demo is a stripped down version of the QtIconTracer with a simpler methodology, just casting primary rays and ambient occlusion shadow rays.
    Both examples are a good start to learn how to build custom ray tracing programs in SceniX.

    When it comes to exchanging materials in loaded files, the two rasterizer demos QtForwardShadowMapping and QtProfileCommonShadow are a good source to learn how to replace materials in loaded scene graphs. Almost everything in there done for CgFX effects can be applied to RTFx effects.

    >>Finally, does Scenix allow specifying static/dynamic geometry separately? Eg so static & dynamic geometry go into different Optix acceleration structures.<<

    Yes, animated geometry is handled by SceniX automatically. It's using BVH acceleration structures with refitting. (SceniX is not using kd-Trees because of that required animation support.)
    If you flag geometry as dynamic using the setHint() mechanism you will also force different acceleration parts.

    There are some animated example files inside the media folder like chameleon.nbf, clawbot.nbf, and hatealien.nbf. Load them into the SceniX Viewer.exe and play there anyimation (try with VSync off inside the NVIDIA Display Driver Control Panel) and switch from CPU skinning processor to GPU skinning processor in the rasterizer and in the ray tracer engine. The user manual of the SceniX Viewer is inside the example's folder.
  • Thanks very much.
  • I must say, that path tracing video looks extremely good.
  • I forgot to mention that a lot of additional information can be found on the previous graphics forums in the SceniX and OptiX sections: http://forum-archive.developer.nvidia.com/

    If you liked that video, look at the progression from 2008 to 2010 in the videos I linked here:
    http://forum-archive.developer.nvidia.com/index.php?showtopic=4943