Advanced Procedural Rendering in DirectX 11
Aim
- More dynamic game worlds
Demoscene??
Linear, non-interactive, scripted
DX11
- compute shader
Procedural mesh generation
- signed distance fields ( SDFs)
- procedural geometry creation
- easy to define in code
Procedural SDFs in practice
SDFs from triangle meshes
- convert triangle mesh to SDF in 3D texture
-SDFs bicubical interpolation is good
- can be done often offline
Naive approach
- counpute dist. from every cell to every triangle
- slow but accurate
Voxelize mesh to grid, then sweep? UGLU
Geometry Stages
- Bind 3D texture target
- VS transforms to SDF space
Pixel shader stage
- compute distance from 3d pixel to triangle
Post processing step
- cells around mesh.
Fast sweeping
- require ability to read and write same buffer.
- one thread per row
-sweep forwards than backwards on same axis
- sweep each axis in turn
SDFs from particle system
-Naive: treat each particle as sphere
-evaluate a kernel around each cell
Visualizing Distance Fields
Ray casting
- accuracy depends on iteration count
- marching Cubes
Marching Cubes in one slide
Marching cubes issues
- large number of grid cells
- traditionally implemented on CPU
Geometry Shader matching cubes
- CPU submit a law
Creating vertex data
- genetrate index data with another CS
Bucket sorting arrays
- count
Wita, dynaic texture in
- partocal bassed
Smooth particle Hydromyninic
- buck patyivled oyb
SPG performance
: still far too slow
- cheaf
- only une fixable/
Rendering pipeline of future
Ambient Occlusion with SDFs
- accuracy less memory
- use temporal reproduction
Hole filling
- Reprojection works if you can fill holes nicely
- sol: balance rays across threads in CS
Look forwea
- multiple representation of same world
- world be more dynamic
- More dynamic game worlds
Demoscene??
Linear, non-interactive, scripted
DX11
- compute shader
Procedural mesh generation
- signed distance fields ( SDFs)
- procedural geometry creation
- easy to define in code
Procedural SDFs in practice
SDFs from triangle meshes
- convert triangle mesh to SDF in 3D texture
-SDFs bicubical interpolation is good
- can be done often offline
Naive approach
- counpute dist. from every cell to every triangle
- slow but accurate
Voxelize mesh to grid, then sweep? UGLU
Geometry Stages
- Bind 3D texture target
- VS transforms to SDF space
Pixel shader stage
- compute distance from 3d pixel to triangle
Post processing step
- cells around mesh.
Fast sweeping
- require ability to read and write same buffer.
- one thread per row
-sweep forwards than backwards on same axis
- sweep each axis in turn
SDFs from particle system
-Naive: treat each particle as sphere
-evaluate a kernel around each cell
Visualizing Distance Fields
Ray casting
- accuracy depends on iteration count
- marching Cubes
Marching Cubes in one slide
Marching cubes issues
- large number of grid cells
- traditionally implemented on CPU
Geometry Shader matching cubes
- CPU submit a law
Creating vertex data
- genetrate index data with another CS
Bucket sorting arrays
- count
Wita, dynaic texture in
- partocal bassed
Smooth particle Hydromyninic
- buck patyivled oyb
SPG performance
: still far too slow
- cheaf
- only une fixable/
Rendering pipeline of future
Ambient Occlusion with SDFs
- accuracy less memory
- use temporal reproduction
Hole filling
- Reprojection works if you can fill holes nicely
- sol: balance rays across threads in CS
Look forwea
- multiple representation of same world
- world be more dynamic
Comments
Post a Comment