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

Comments

Popular posts from this blog

Drawing textured cube with Vulkan on Android

glTF loader for Android Vulkan

C++ unit testing & CI integration in GitHub (I/2)