GLuRay - http://tacc.github.io/GLuRay/
UPDATE: OptiX backend temporarily removed from distribution due to potential licensing issues with an external library. This will be fixed in a future update.
An OpenGL inter ceptor using Ray Tracing backends for photorealistic rendering. Currently supports OpenGL 1.x and has backends for both CPU and GPU ray tracing.
Tested in the following programs, though other programs using OpenGL 1.x backends may work
- ParaView
- VisIt
- VAPOR - Limited testing
- Ensight - Limited testing
- the latest build of Manta. Enable the DYNBV_APPROX option in Manta for significantly faster acceleration structure build times.
- cmake [ccmake recommended]
- mkdir build
- cd build
- ccmake ..
in CMAKE options you will need to set the location of MANTA_SRC and MANTA_BUILD_PREFIX.
- Currently, Manta is still required and has to be built with USE_SSE disabled in order to build with Embree support.
- In build directory, ccmake .
- Enable USE_EMBREE and then specify the root folder of the Embree install as well as a build folder.
- Configure, Generate, and then run “make”
NOTE: Embree is setup to use progressive rendering while most applications are event driven. Be sure to run the path tracer with sufficient samples per pixel to get a decent image.
- GLURAY_RENDER_MODE [GLREADPIXELS, GLXSWAPBUFFERS, GLFINISH, GLFLUSH]
- GLURAY_CONFIG <path to config file>
config files contain '-apply' followed by any of the following options:
- -spp <number of samples per pixel>
- -threads <int>
- -skydome <int number> <float size of dome> <float 0-1 intensity>
- -reflectivity <float 0-1>
- -env <string path to .hdr file>
- -ao <int number> <float cutoff distance> <float intensity>
- -phong
- -shadows
- -no_gl_lights
- -rotate <float speed> <float offset>
- -plane
- -thinLens <float focaldistance> <float aperture>
- -pinhole
- -lambertian
- -thinDielectric
- -metal
- -transparent
- -orenNayar
- -write_to_file <string file or may say generated to generate file names for each frame>
example configuration files:
- -apply -spp 1 -threads 8 -phong -fov 30 -ao 36 10.0 0.8
- -apply -spp 8 -threads 8 -skyDome 32 100 0.8 -reflectivity 0.1 -env /Users/username/data/lightProbes/campus_probe.hdr -ao 36 10.0 0.8 -phong -fov 45 -shadows -no_gl_lights
Here is an example of running glxgears with Embree.
Configuration file: -apply -spp 256 -threads 16 -skyDome 32 100 0.8 -reflectivity 0.1 -env /work/01336/carson/data/lightProbes/rnl_probe.pfm -ao 36 10.0 0.8 -phong -fov 45 -shadows
GLURAY_CONFIG=/home1/01336/carson/gluray_scripts/shiny_embree.cfg ./gluray glxgears
the GUI is located in glurayGUI folder which can be built with Qt. Currently this is disabled and has not been tested with newer versions of GLuRay, you will need to modify defines.h to enable run_client. The client is run by first running the GUI program using GLuRay and then launching GLuRay instances with other programs which will then attach to the GUI.
GLuRay was written by Carson Brownlee, originally at the University of Utah with continuted development at the Texas Advanced Computing Center at the University of Texas at Austin. It is based on SpyGlassGL and the Manta ray tracer.