- summary of
- cloud modeling and authoring system
- lighting model
- high level overview of the implementation
![nubis_cover.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/nubis_cover.png&key=8ea14170c301a08f09c37de72a22f24ede363daa0390f6bd4838a82f9dee5276)
- environment lighting is using several distributed area lights
- distribution / strength is adapted to the environment
- implementation of importance sampling using varying step sizes for ray marching steps
![sampling.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/sampling.png&key=113eb2cdf086b2540821d7ba53ef8be2bfb57f8ee9b6af754e057de8e12da0a4)
- investigation of relation between linear interpolation and curve representations
![curve_sampling.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/curve_sampling.png&key=89a22b43645075114a90b1fa57e080b3acd616606a17d07dcf8fc40dd8096f6e)
- D3D11 extensions to simplify use of Lens Matched Shading and Multi-Res Shading
- short overview of the concepts and how the API works
![lens_matched.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/lens_matched.jpg&key=92e9b76fb05ef197ca784e0305efb88ce88c619222e583ca6e4a4407ff1320da)
- vulkan function calls pass through several layers until the actual function is executed
- looks at the disassembly to evaluate the cost of this (between 1-5%)
- and how to bypass many layers to reduce the overhead
- 100% dynamic lights, 16 shadow maps in 4kx4k atlas
- gbuffer breakdown
- stores material index in gbuffer, indexing into structured buffer for material information
- deferred decals have problems with depth discontinuities because of wrong mip selections
- use mip0 when depth discontinues are found around the pixel
- object decals, blending arbitrary meshes into the gbuffer
- working on bindless decals, follow the same pattern as clustered deferred lighting
![the_surge.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/the_surge.png&key=4511eed04b2cf9c9c8c9fb6cacc36e38768879b78f8061b967408606c829b2b0)
- implementation of a buffer based (breadth first) approach for the raytracer
- looking at synchronization issues, performance
- brief look at the NVidia nsight tool
![rt-gpubuffer-nsight-initial-markup.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/rt-gpubuffer-nsight-initial-markup.png&key=38f407f5ff71cfc28c9d92859471b4896d8c776aee0ef945df92a143f9b09e23)
- overview of what error metric he uses when working/comparing encoders
![error_metric.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/error_metric.png&key=1294d606787a6e10adcc51597aca078ad0d313c01ec986c3c4b5bc10a4dd837f)
- shows effect of different ray marching step sizes for screen space reflections
- diffuse reflections approximation with mip selection vs reference implementation with many samples
![rough_reflections.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/rough_reflections.png&key=391a6ad4c9a480c7bb04d42b5d74f2f6f707ad7f0948dc1bd0d46b66031f7509)
- comparison of backface culling efficiency for cluster cone, 64-triangle clusters
- discusses 3 different approaches for implementing thermal erosion on a height field based terrain
![thermalResults.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-36/thermalResults.png&key=16f9ce7af7537aa1e87eb779a43a5a010654208f2710a252802efb09edfb017f)
- supports perceptual metric for compression
- designed for opaque textures
- descriptor types in vulkan vs D3D12
- how to specify resource bindings for vulkan in HLSL
- memory layout rules