ray traced global illumination for games massively
play

Ray-Traced Global Illumination for Games: Massively Parallel Path - PowerPoint PPT Presentation

Ray-Traced Global Illumination for Games: Massively Parallel Path Space Filtering Nikolaus Binder and Alexander Keller Principles of Image Synthesis Solving the visibility problem Rasterization 2 Principles of Image Synthesis Solving the


  1. Ray-Traced Global Illumination for Games: Massively Parallel Path Space Filtering Nikolaus Binder and Alexander Keller

  2. Principles of Image Synthesis Solving the visibility problem Rasterization 2

  3. Principles of Image Synthesis Solving the visibility problem Rasterization 2

  4. Principles of Image Synthesis Solving the visibility problem Rasterization clipping 2

  5. Principles of Image Synthesis Solving the visibility problem Rasterization clipping Z-buffer 2

  6. Principles of Image Synthesis Solving the visibility problem Rasterization clipping Z-buffer 2

  7. Principles of Image Synthesis Solving the visibility problem Rasterization Reyes clipping dicing Z-buffer kind of Z-Buffer 2

  8. Principles of Image Synthesis Solving the visibility problem Rasterization Reyes clipping dicing Z-buffer kind of Z-Buffer shadow maps shadow maps 2

  9. Principles of Image Synthesis Solving the visibility problem Rasterization Reyes Ray Tracing L P Camera clipping dicing acceleration data structure Z-buffer kind of Z-Buffer tracing rays with arbitrary origins shadow maps shadow maps shadow rays 2

  10. Path tracing on a budget

  11. Massively Parallel Path Space Filtering

  12. Massively Parallel Path Space Filtering Sharing instead of splitting � filtering beyond screen space 5

  13. Massively Parallel Path Space Filtering Sharing instead of splitting � filtering beyond screen space � algorithm 5

  14. Massively Parallel Path Space Filtering Sharing instead of splitting � filtering beyond screen space � algorithm 1. generate paths, select and store vertices 5

  15. Massively Parallel Path Space Filtering Sharing instead of splitting � filtering beyond screen space � algorithm 1. generate paths, select and store vertices 2. average contributions with similar vertex descriptors 5

  16. Massively Parallel Path Space Filtering Sharing instead of splitting � filtering beyond screen space � algorithm 1. generate paths, select and store vertices 2. average contributions with similar vertex descriptors 3. use averaged contributions 5

  17. Massively Parallel Path Space Filtering Sharing instead of splitting � filtering beyond screen space � algorithm 1. generate paths, select and store vertices 2. average contributions with similar vertex descriptors 3. use averaged contributions 5

  18. Massively Parallel Path Space Filtering Sharing instead of splitting � filtering beyond screen space � algorithm 1. generate paths, select and store vertices 2. average contributions with similar vertex descriptors 3. use averaged contributions 5

  19. Massively Parallel Path Space Filtering Bottleneck: Calculating averages � include many “close by” contributions in average 6

  20. Massively Parallel Path Space Filtering Bottleneck: Calculating averages � include many “close by” contributions in average – efficient culling by range search 6

  21. Massively Parallel Path Space Filtering Bottleneck: Calculating averages � include many “close by” contributions in average – efficient culling by range search – but still have to iterate over all of them 6

  22. Massively Parallel Path Space Filtering Bottleneck: Calculating averages � include many “close by” contributions in average – efficient culling by range search – but still have to iterate over all of them – and every vertex needs to do this individually 6

  23. Massively Parallel Path Space Filtering Principle input 7

  24. Massively Parallel Path Space Filtering Principle input local averaging 7

  25. Massively Parallel Path Space Filtering Principle input local averaging average per cell � instead of calculating one average per vertex , calculate one average per cell – cell identified by quantizing a descriptor ( x i ,... ) – proximity defined by equality after quantization instead of distance – worst case complexity O ( N ) instead of O ( N 2 ) 7

  26. Massively Parallel Path Space Filtering Resolving quantization artifacts input average per cell 8

  27. Massively Parallel Path Space Filtering Resolving quantization artifacts input average per cell with jittering 8

  28. Massively Parallel Path Space Filtering Resolving quantization artifacts input average per cell with jittering � jittering descriptor ( x i , ...) on store and look up 9

  29. Massively Parallel Path Space Filtering Resolving quantization artifacts input average per cell with jittering � jittering descriptor ( x i , ...) on store and look up – hides quantization artifacts 9

  30. Massively Parallel Path Space Filtering Resolving quantization artifacts input average per cell with jittering � jittering descriptor ( x i , ...) on store and look up – hides quantization artifacts – resulting uniform noise amenable to (existing) post filtering 9

  31. Massively Parallel Path Space Filtering Resolving quantization artifacts input average per cell with jittering � jittering descriptor ( x i , ...) on store and look up – hides quantization artifacts – resulting uniform noise amenable to (existing) post filtering � amounts to stochastic evaluation of interpolation 9

  32. Massively Parallel Path Space Filtering Hashing instead of searching � descriptors for selected vertices include world space location x 10

  33. Massively Parallel Path Space Filtering Hashing instead of searching � descriptors for selected vertices include world space location x and optionally normal n , 10

  34. Massively Parallel Path Space Filtering Hashing instead of searching � descriptors for selected vertices include world space location x and optionally normal n , incident angle ω , 10

  35. Massively Parallel Path Space Filtering Hashing instead of searching � descriptors for selected vertices include world space location x and optionally normal n , incident angle ω , and BRDF layer 10

  36. Massively Parallel Path Space Filtering Storing and looking up data with quantized descriptors � fast updates, no pre-processing 11

  37. Massively Parallel Path Space Filtering Storing and looking up data with quantized descriptors � fast updates, no pre-processing � access in constant time 11

  38. Massively Parallel Path Space Filtering Storing and looking up data with quantized descriptors � fast updates, no pre-processing � access in constant time – requires injective mapping ( x , n ,... ) �→ [ 0 , M ) 11

  39. Massively Parallel Path Space Filtering Storing and looking up data with quantized descriptors � fast updates, no pre-processing � access in constant time – requires injective mapping ( x , n ,... ) �→ [ 0 , M ) ⇒ hash map 11

  40. Massively Parallel Path Space Filtering Fast hash map � trade a larger table size for faster access 12

  41. Massively Parallel Path Space Filtering Fast hash map � trade a larger table size for faster access � simple, fast hash functions 12

  42. Massively Parallel Path Space Filtering Fast hash map � trade a larger table size for faster access � simple, fast hash functions � linear probing for collision resolution 12

  43. Massively Parallel Path Space Filtering Fast hash map � trade a larger table size for faster access � simple, fast hash functions � linear probing for collision resolution � use a second hash of the descriptor instead of storing full keys – may fail, but is very very unlikely 12

  44. Massively Parallel Path Space Filtering Linear instead of quadratic � finding the hash table location i i ← hash (˜ x ,... ) % table size for both averaging and querying 13

  45. Massively Parallel Path Space Filtering Linear instead of quadratic � finding the hash table location i i ← hash (˜ x ,... ) % table size v ← hash2 (˜ x , n ,... ) for both averaging and querying 13

  46. Massively Parallel Path Space Filtering Linear instead of quadratic � finding the hash table location i l ′ ← level of detail ( | p cam − x ′ | ) � x ′ � ˜ x ← scale · 2 l ′ i ← hash (˜ x ,... ) % table size v ← hash2 (˜ x , n ,... ) for both averaging and querying 13

  47. Massively Parallel Path Space Filtering Linear instead of quadratic � finding the hash table location i l ← level of detail ( | p cam − x | ) x ′ ← x + jitter ( n ) · scale · 2 l l ′ ← level of detail ( | p cam − x ′ | ) � x ′ � ˜ x ← scale · 2 l ′ i ← hash (˜ x ,... ) % table size v ← hash2 (˜ x , n ,... ) for both averaging and querying 13

  48. Massively Parallel Path Space Filtering Linear instead of quadratic � finding the hash table location i l ← level of detail ( | p cam − x | ) x ′ ← x + jitter ( n ) · scale · 2 l l ′ ← level of detail ( | p cam − x ′ | ) � x ′ � ˜ x ← scale · 2 l ′ i ← hash (˜ x ,... ) % table size v ← hash2 (˜ x , n ,... ) for both averaging and querying 13

  49. Massively Parallel Path Space Filtering Linear instead of quadratic � finding the hash table location i l ′ ← level of detail ( | p cam − x ′ | ) � x ′ � ˜ x ← scale · 2 l ′ i ← hash (˜ x ,... ) % table size v ← hash2 (˜ x , n ,... ) for both averaging and querying 13

Recommend


More recommend