Octree-Based Sparse Voxelization for Real-Time Global Illumination. Cyril Crassin NVIDIA Research

Similar documents
Voxel Cone Tracing and Sparse Voxel Octree for Real-time Global Illumination. Cyril Crassin NVIDIA Research

Real-Time Voxelization for Global Illumination

Interactive Indirect Illumination Using Voxel Cone Tracing

GigaVoxels Effects In Video Games

Volume-based Ambient Occlusion with Voxel Fragmentation

After the release of Maxwell in September last year, a number of press articles appeared that describe VXGI simply as a technology to improve

Hardware Accelerated Volume Visualization. Leonid I. Dimitrov & Milos Sramek GMI Austrian Academy of Sciences

CS427 Multicore Architecture and Parallel Computing

Shaders. Slide credit to Prof. Zwicker

Advanced Computer Graphics CS 563: Making Imperfect Shadow Maps View Adaptive. Frederik Clinck lie

CS354R: Computer Game Technology

COMP 4801 Final Year Project. Ray Tracing for Computer Graphics. Final Project Report FYP Runjing Liu. Advised by. Dr. L.Y.

GigaVoxels: Voxels Come Into Play

Real-Time Hair Rendering on the GPU NVIDIA

global light baking software

CMSC427 Advanced shading getting global illumination by local methods. Credit: slides Prof. Zwicker

Advanced Computer Graphics CS 563: Screen Space GI Techniques: Real Time

Rasterization Overview

The Traditional Graphics Pipeline

Game Technology. Lecture Physically Based Rendering. Dipl-Inform. Robert Konrad Polona Caserman, M.Sc.

Multi-level voxel representation for GPUaccelerated

DEFERRED RENDERING STEFAN MÜLLER ARISONA, ETH ZURICH SMA/

C P S C 314 S H A D E R S, O P E N G L, & J S RENDERING PIPELINE. Mikhail Bessmeltsev

NVIDIA Case Studies:

Many-Light Real-Time Global Illumination using Sparse Voxel Octree

Rendering. Converting a 3D scene to a 2D image. Camera. Light. Rendering. View Plane

Rendering Algorithms: Real-time indirect illumination. Spring 2010 Matthias Zwicker

Deferred Rendering Due: Wednesday November 15 at 10pm

Ambient Occlusion. Ambient Occlusion (AO) "shadowing of ambient light "darkening of the ambient shading contribution

Interactive Methods in Scientific Visualization

Real - Time Rendering. Graphics pipeline. Michal Červeňanský Juraj Starinský

Parallelizing Graphics Pipeline Execution (+ Basics of Characterizing a Rendering Workload)

This work is about a new method for generating diffusion curve style images. Although this topic is dealing with non-photorealistic rendering, as you

The Rasterization Pipeline

Threading Hardware in G80

Applications of Explicit Early-Z Culling

Volume Rendering. CS7GV3 Real-time Rendering

Pipeline Operations. CS 4620 Lecture 14

Real-Time Reyes: Programmable Pipelines and Research Challenges. Anjul Patney University of California, Davis

Comparison of hierarchies for occlusion culling based on occlusion queries

The Traditional Graphics Pipeline

Level of Details in Computer Rendering

Volume Graphics Introduction

Lecture 9: Deferred Shading. Visual Computing Systems CMU , Fall 2013

Topic 12: Texture Mapping. Motivation Sources of texture Texture coordinates Bump mapping, mip-mapping & env mapping

A Trip Down The (2011) Rasterization Pipeline

Models and Architectures

CSE 167: Lecture #8: GLSL. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

Pipeline Operations. CS 4620 Lecture Steve Marschner. Cornell CS4620 Spring 2018 Lecture 11

CS GPU and GPGPU Programming Lecture 2: Introduction; GPU Architecture 1. Markus Hadwiger, KAUST

Topic 11: Texture Mapping 11/13/2017. Texture sources: Solid textures. Texture sources: Synthesized

Computergrafik. Matthias Zwicker. Herbst 2010

Texture Mapping. Michael Kazhdan ( /467) HB Ch. 14.8,14.9 FvDFH Ch. 16.3, , 16.6

CHAPTER 1 Graphics Systems and Models 3

CSE 167: Lecture #8: Lighting. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2011

The Traditional Graphics Pipeline

Topic 11: Texture Mapping 10/21/2015. Photographs. Solid textures. Procedural

Direct Rendering of Trimmed NURBS Surfaces

Next-Generation Graphics on Larrabee. Tim Foley Intel Corp

CS GPU and GPGPU Programming Lecture 7: Shading and Compute APIs 1. Markus Hadwiger, KAUST

Shadows for Many Lights sounds like it might mean something, but In fact it can mean very different things, that require very different solutions.

Metal for Ray Tracing Acceleration

Spring 2009 Prof. Hyesoon Kim

CS451Real-time Rendering Pipeline

Multi-View Soft Shadows. Louis Bavoil

Advanced Ambient Occlusion Methods for Modern Games

EE 4702 GPU Programming

Adaptive Point Cloud Rendering

Real-Time Universal Capture Facial Animation with GPU Skin Rendering

Last Time. Reading for Today: Graphics Pipeline. Clipping. Rasterization

PantaRay: Fast Ray-traced Occlusion Caching of Massive Scenes J. Pantaleoni, L. Fascione, M. Hill, T. Aila

GPU-accelerated data expansion for the Marching Cubes algorithm

Computer Graphics Shadow Algorithms

Raytracing Sparse Volumes with NVIDIA GVDB in DesignWorks Rama Hoetzlein, NVIDIA Graphics Technologies, Professional Graphics

Row Tracing with Hierarchical Occlusion Maps

CS GPU and GPGPU Programming Lecture 8+9: GPU Architecture 7+8. Markus Hadwiger, KAUST

Efficient and Scalable Shading for Many Lights

A Unified Triangle/Voxel Structure for GPUs and its Applications

Real-Time Hair Simulation and Rendering on the GPU. Louis Bavoil

RASTERISED RENDERING

How to use Voxel Cone Tracing with two bounces for everything. instead of just Global Illumination

CSE 167: Lecture #17: Volume Rendering. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

Chapter 11 Global Illumination. Part 1 Ray Tracing. Reading: Angel s Interactive Computer Graphics (6 th ed.) Sections 11.1, 11.2, 11.

Ray Tracing. Computer Graphics CMU /15-662, Fall 2016

CS230 : Computer Graphics Lecture 4. Tamar Shinar Computer Science & Engineering UC Riverside

OPENGL RENDERING PIPELINE

Georgios (George) Papaioannou

Beyond Programmable Shading 2012

The Rasterization Pipeline

Parallelizing Graphics Pipeline Execution (+ Basics of Characterizing a Rendering Workload)

GPU Memory Model. Adapted from:

Rendering Soft Shadows and Glossy Reflections with Cone Tracing

Real-Time Rendering (Echtzeitgraphik) Michael Wimmer

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

Ray Tracing. Kjetil Babington

Ray Casting on Programmable Graphics Hardware. Martin Kraus PURPL group, Purdue University

The Rendering Equation & Monte Carlo Ray Tracing

INFOMAGR Advanced Graphics. Jacco Bikker - February April Welcome!

Mattan Erez. The University of Texas at Austin

A Bandwidth Effective Rendering Scheme for 3D Texture-based Volume Visualization on GPU

Transcription:

Octree-Based Sparse Voxelization for Real-Time Global Illumination Cyril Crassin NVIDIA Research

Voxel representations Crane et al. (NVIDIA) 2007 Allard et al. 2010 Christensen and Batali (Pixar) 2004

Global Illumination Indirect effects Important for realistic image synthesis Direct lighting Direct+Indirect lighting

Light Propagation Volumes [Kaplanyan & Dachsbacher 2010] Limited resolution + Mostly diffuse VPL VPL VPL Reflective shadow maps Radiance volume gathering Iterative propagation

Sparse Voxel Octree Detailed geometry rendering Structured LODs Olick. 2008 Laine and Karras (NVIDIA) 2010 Crassin et al. 2009 (GigaVoxels)

Interactive indirect illumination using voxel cone tracing 120 FPS @ 512x512 -- 16 FPS @ FullHD

Publications Interactive indirect illumination using voxel cone tracing C. Crassin, F. Neyret, M. Sainz, S. Green, E. Eisemann Computer Graphics Forum (Proc. of Pacific Graphics 2011) http://research.nvidia.com/publication/interactiveindirect-illumination-using-voxel-cone-tracing I3D 2011 Poster http://maverick.inria.fr/publications/2011/cnsge11/ Siggraph 2011 Talk http://maverick.inria.fr/publications/2011/cnsge11a/

Voxel cone tracing Geometry pre-filtering Traced like a participating media r n l Volume ray-casting Voxel representation Scene geometry : Opacity field + Incoming radiance Quadrilinearly interpolated samples 3D MIP-map pyramid of pre-filtered values

Rendering algorithm Light source 1. Light pass (es) Diffuse cones n l d Bake irradiance (RSM) 2. Filtering pass Down-sample radiance in the octree View direction n 3. Camera pass For each visible fragment: Gather indirect radiance

Ambient Occlusion Scene model courtesy of Guillermo M. Leal Llaguno

Indirect diffuse

Indirect diffuse

Specular tracing Light source n l Diffuse cones d View direction n Specular cone Voxel-based cone

Indirect specular

Indirect specular

GPU Voxel Octree Linked nodes in linear video memory (Octree Pool) 2x2x2 nodes tiles 1 pointer per node to a node-tile Voxels stored into a 3D texture (Brick Pool) 1 Allows hardware tri-linear interpolation 2 3 Linear Memory 1 2 3 4 5 6 7 8 9 Octree pool 3D Texture Brick pool 4 5 6 7 8 9

Dynamic Voxelization Entirely done using the GPU graphics pipeline Sparse (No plain grid allocation) Two modes : Static environment Pre-voxelized (~20ms) Dynamic objects Added to the structure at runtime (~4-5ms)

Previous GPU approaches Compute-based [Schwarz and Seidel 10, Pantaleoni 11] Not using hw rasterizer VoxelPipe [Pantaleoni 11] Multi-pass graphics-based Slice-by-slice [Fang et al. 00, Crane et al. 07, Li et al. 05] Multiple-slices through MRT [Dong et al. 04, Zhang et al. 07, Eisemann and Decoret 08] Crane et al. 2007

OpenGL 4.2 Image Load/Store Random read/write access to textures Shaders with side effects! Shader Model 5 hw (NVIDIA Fermi / Kepler) Similar to DX11 UAV Uniform layout(rgba32f) image3d voxdata; imagestore(voxdata, ivec3(coords), val); NVIDIA Bindless Graphics Pointers to global memory : NV_shader_buffer_load/store Uniform vec4 *voxdata;

One pass voxelization pipeline Thin surface voxelization VS Triangle Dominant Axis Selection Geometry Shader Triangle Projection Edges Shifting Hardware Setup/Raster. Conservative Rasterization Fragments Clipping Fragment Shader Voxel Attributes Computation Write to 3D surface z x Y- proj Normal y x Z- proj y z X- proj

Compositing voxel fragments To texture or linear buffer (global memory) Native AtomicAdd INT32 INT64 (NVIDIA Only, global memory) FP32 (NVIDIA Only, NV_shader_atomic_float extension) Emulation for any format (RGBA8, RGBA16F ) AtomicCompSwap / AtomicCompSwap64 (2x-3x speed penalty) Moving average (RGBA8) + Voxel Anti-Aliasing (coverage mask)

Results Stanford Dragon GTX 480 (GF100) Usually as good as, or even faster than Voxel Pipe [Pantaleoni 11] Times in ms

Sparse Octree construction Sparse voxelization No plain grid allocation Two steps: 1. Octree subdivision 2. Values MIP-mapping 0 1 2 2 1 0

Octree construction (1/2) 0 1 2 Step 1 : Top-down construction For each level from the root: Voxelize Mesh at level resolution Tag octree nodes Create New Node Tiles Init New Node Tiles 1 thread per voxel-fragment 1 thread per node 0 1 2 3 4 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 Node pool 9 10 11 12 13 14 15 16 Node pool 9 10 11 12 13 14 15 16 Node pool 1 thread per node

OpenGL compute kernel emulation Emulated using a vertex shader gl_vertexid == ThreadID No input attribute Synchronization-free: Indirect draw calls gldrawarraysindirect() Parameters read in video memory No CPU read-back Memory barriers: glmemorybarrier() Batching all construction steps

Octree construction (2/2) Step 2: Populating octree with values 1. Voxelize mesh into leaf nodes Average all incoming values per voxel 2. MIP-map values into interior nodes Write values in leaf nodes 2 1 0 Bottom-up MIP-mapping

Results 9 levels octree (512^3) RGBA32F Kepler GK104 performance 30% - 58% faster than Fermi GF100 Atomic merging up to 80% faster. Times in ms

OpenGL Insights Octree-Based Sparse Voxelization Using The GPU Hardware Rasterizer Cyril Crassin and Simon Green To be released for Siggraph 2012 Patrick Cozzi & Christophe Riccio

Thank you!

Talk S0610 - Octree-Based Sparse Voxelization for Real-Time Global Illumination Cyril Crassin (NVIDIA) Discrete voxel representations are generating growing interest in a wide range of applications in computational sciences and particularly in computer graphics. A new real-time usage of dynamic voxelization inside a sparse voxel octree is to compute voxel-based global illumination. When used in real-time contexts, it becomes critical to achieve fast 3D scan conversion (also called voxelization) of traditional triangle-based surface representations. This talk describes an new surface voxelization algorithm that produces a sparse voxel representation of a triangle mesh scene in the form of an octree structure using the GPU hardware rasterizer. In order to scale to very large scenes, our approach avoids relying on an intermediate full regular grid to build the structure and constructs the octree directly. Topic Areas: Computer Graphics Level: Intermediate Day: Tuesday, 05/15 Time: 2:30 pm - 2:55 pm Location: Room B