- a technique that allows the generation of infinite output space from a small example texture (such a grass, snow) in a pixel shader only
- for example tillable terrain textures
- cheap to evaluate; 0.29ms for a fullscreen quad
- the approach is to partition the output space into a triangle grid and to pick three random patches from the input texture to blend to create the output patch
- this is made possible through the variance preserving blending operation, and this can also be used to improve triplanar mapping
![hpn2018_teaser.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/hpn2018_teaser.png&key=026e9e0b629009e771c414c77506e096fd2e060e83117941bc44d7c45b0ec429)
- technique for downsampling images that preserves high-frequency information from the original image
- instead of discarding high-frequency information it remaps the signal into a form that can be represented in the downsampled image
![spectral_remapping_for_image_downscaling.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/spectral_remapping_for_image_downscaling.jpg&key=46ae42279beeeb30e3d23427e7255ec5452dbbaddbb4a8a31ff9d2d0cdde3b37)
- a technique to improve importance sampling for spherical light sources by projecting the visible spherical cap onto a 2D plane, and taking uniform samples within this plane
- yields noise-free direct illumination for constant illumination with no occluders
![spherical_caps.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/spherical_caps.jpg&key=146419db5ae848bf5912f674479e3ced204e7371fc9b93fb4561aa011a798a07)
- summary of the previous paper
- explains the spherical cap projection and the intuition how this improves the results
![spherical_cap_projection.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/spherical_cap_projection.png&key=4ec34bff9f29b3ad0a436057022fc0aa9de708f3cd270e8dae73beababc6b00d)
- program for the High-Performance Graphics 2018 in Vancouver has been published
![hpg2018_banquet.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/hpg2018_banquet.jpg&key=545d42d3090e7898baa35263f2de479c47d69cc5dfaae68e8340f3397d69eb17)
- technique changes shading rate adaptively based on the local content of the image
- partitions the framebuffer into subdivision levels; uses these to estimate the variance between neighboring pixels to decide if new shading information needs to be calculated or if the shading result can be estimated from neighboring pixels
![deferred_adaptive_compute_shading.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/deferred_adaptive_compute_shading.png&key=5eee3f5dee71bfa4036d4d1be62474020ab6bb64ff7187717bef7e22464769ac)
- overview of area-preserving approaches of cube to sphere mapping
- summarizing ability to preserve area and GPU performance
- how to generalize 2D grid-based poisson-disc sampling to the sphere
- provides shadertoy implementations of the presented techniques
![cube_to_sphere.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/cube_to_sphere.png&key=4ed2f335ce5a7881e6bd69e0d5802ae96d31da01bd62f43220a5331bccf2fbc6)
- summary of “cube-to-sphere projections for procedural texturing and beyond” paper
![cube_to_sphere.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/cube_to_sphere.png&key=4ed2f335ce5a7881e6bd69e0d5802ae96d31da01bd62f43220a5331bccf2fbc6)
- Pix now also support GPU occupancy visualization for all shader types on AMD GPUs
![occupancy-feature.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/occupancy-feature.png&key=66b66ca7f1d1e34738acfce49fe218feda5ed9a393ae5d542a260fa6e9bde46c)
- polygons on terrain implemented as image-space decals
- how to apply them when they span a large area on the surface of the earth
- effects of implementation inaccuracies of inverse trigonometric functions between CPU and GPU
![project_2d.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/project_2d.jpg&key=6c5f71af70642cb9abc807ce37e6802638fe8cb75473f0acb57e916b38f79b09)
- explains what a context on AMD hardware is and how the driver manages these
- the Radeon GPU Profiler has a tool to analyze when context rolls are causing a performance issue
![context_rolls.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/context_rolls.png&key=883f0beb27fa298067502aae0c95acd9db0cfe2d5639ecf8457c86906ee446a7)
- a technique that adjusts the temporal accumulation factor dynamically per pixel and frame
- done by calculating per-pixel temporal gradients. These are reconstructed from sparse information that captures the change of luminance between the last and current frame
![adaptive_temporal_filtering.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-45/adaptive_temporal_filtering.jpg&key=316850b4c86001954f6318bba24419d211a14c82e3f989d9cb1937168d7ebe78)
- Microsoft DirectX Shader Compiler is now also supported on Linux and macOS
- there is a docker image available: https://github.com/gwihlidal/docker-dxc
- low-level C# graphics library now supports SPIR-V shader for all supported backends
- exposes specialization constants on the API level and emulates them at translation time for backends that don’t support them