---------------------------------------------------------------------- Demo: Frustum-Traced Raster Shadows: Revisiting Irregular Z-Buffers Date: 5/28/2015 Contact: Chris Wyman (chris.wyman@acm.org) ---------------------------------------------------------------------- Hardware requirements: ---------------------- For best results, NVIDIA Maxwell GM20x or above (GeForce GTX 9xx series, Titan X) Minimum requirment, NVIDIA Kepler GPU (GeForce GTX 6xx series) This prototype does *not* run on AMD hardware or pre-Kepler NVIDIA GPUs. There is no fundamental reason the Kepler code path would not run on recent AMD cards or NVIDIA Fermi GPUs -- we simply pushed performance and reduced code differences between Kepler and Maxwell codepaths via use of NVIDIA-specific extensions. Prior to the paper submission, we verified we could get the algorithm running on a Radeon 290X, though we spent no time optimizing. Driver requirements: -------------------- Use NVIDIA driver 352.86 or above. This is vital for full functionality. The most efficient (i.e., Maxwell) codepath relies on a new OpenGL extension (NV_conservative_raster_dilate) that was publicly supported starting only in 352.86. When run with older drivers, the executable will disable unsupported codepaths. For older GPUs, we still recommend driver 352.86 and above. However, drivers 35x and above should enable all non-Maxwell features in the executable. Some drivers before 35x have GLSL bugs involving vital features for this demo. Running: -------- * You can double click the executable to run with a simple scene (the YeahRight model) * We include .bat files to run other scenes. * With a command line, loading one of the included scene files: FTIZB_Demo.exe trees.scn * Changing resolution (can also do by directly resizing the window): FTIZB_Demo.exe trees.scn 1280 720 * If you have your own OBJ file, you can test it by tweaking the model file specified in an existing scene file. OBJ file I/O is slow, and rendering is unoptimized (so will be artificially slow). Display Information: -------------------- The display contains 3 performance numbers: * Total frame time * Total cost for all shadow-specific code * Cost for the light-space conservative raster pass (the algorithm bottleneck) The last two numbers are in parentheses. Demo key/mouse controls: ------------------------ W/A/S/D -- movement left-right/forward-back E/C/Q/Z -- movement up-down (duplicated) Left Mouse -- camera motion (Yes, my camera model sucks. Sorry.) Right Mouse -- Light motion / object rotation (Selectable via UI widget) + -- Open UI widget window (+) button -- Open UI widget window UI Widget controls: ------------------- Switch between 4 render modes: * 32 spp with hardware conservative rasterization (GM20x only, with driver 352.86+) * 1 spp with hardware conservative rasterization (GM20x only) * 32 spp with software conservative rasterization (any supported GPU) * 1 spp with software conservative rasterization (any supported GPU) Fine-grained light motion (adjust with left/right arrow keys to analyize aliasing at shadow edges) Display a heatmap visualization of the irregular z-buffer. (Shows # of IZB nodes per light-space texel) Advanced UI widget controls: ---------------------------- Update: * Number of light frusta (from 1 to 4), i.e., number of cascades. * Light space resolution. Each fustum uses the same resolution and is square. * World space epsilon. Due to UI display constraints, this is divided by 16 prior to use. Select whether to display a shaded image or just the shadow visibility mask. Notes / Caveats: ---------------- * If you get light leaking in the shadow using 32 spp with hardware conservative raster that goes away when switching to software conservative raster, your driver may have issues with the NV_conservative_raster_dilate OpenGL extension. If you have a supported GPU, this may mean you need a clean driver install. * This code uses the optimization in Section 6.1 of our paper. This can introduce light leaking for 32spp, depending on settings. The included scenes are set to closely match eye & light space sampling to avoid this issue. To easily demonstrate this light leaking, run the YeahRight scene and zoom way out (hold the 's' key). It becomes more noticable if the light-space resolution is set to 4096 and 4 cascades are used. This light leaking is not an issue with 1spp shadows. * My 32spp shadows are offset in screen space by 1/2 pixel. I know... Sorry. (We have a version in house that is not offset, but it also does a number of other things and thus ends up slower.) This was low on the priority list to fix. * There are issues with self-intersecting one-sided triangles (i.e., intersecting but with no common edge) causing light leaking at their intersection due to numerical precision. This can be fixed in exchange for smaller and more controllable artifacts via an epsilon. Unforutnately, these smaller artifacts are also (in my opinion) less understandable. This prototype leaves in the light-leaking artifacts at the intersections of some one-sided polygons rather than introduce smaller but more confusing issues. More information / algorithmic documentation: --------------------------------------------- Copy of I3D paper: http://chriswyman.org/papers/i3d15_ftizb.pdf https://research.nvidia.com/publication/frustum-traced-raster-shadows-revisiting-irregular-z-buffers http://dl.acm.org/citation.cfm?id=2699280 I3D 2015 presentation slides: (PDF) http://chriswyman.org/supplement/ftizb/2015_2_27_I3DConferencePresentation.pdf (PPT) http://bit.ly/1Clp1eq GTC 2015 presentation slides (also covering 2 other algorithms): (PDF) http://on-demand.gputechconf.com/gtc/2015/presentation/S5442-Chris-Wyman.pdf (Video) http://on-demand.gputechconf.com/gtc/2015/video/S5442.html Information about Models: ------------------------- Citadel Model. Available from Chalmers University (See: http://www.cse.chalmers.se/~d00sint/) Hairball Model. From NVIDIA Research (See: http://graphics.cs.williams.edu/data/meshes.xml) LordGood Model. SketchUp scene from LordGood. From Martin Mittring's demo (See: https://kosmokleaner.wordpress.com/2014/09/26/) UNC Powerplant Model. From University of North Carolina (See: http://graphics.cs.williams.edu/data/meshes.xml) Neu Rungholt Minecraft model from user "Kescha". (See: http://graphics.cs.williams.edu/data/meshes.xml) Tentacles model. From Dylan Lacewall's paper "Raytracing Prefiltered Occlusion for Aggregate Geometry" New Villa model. Available from Chalmers University (See: http://www.cse.chalmers.se/~d00sint/)