- many optimization lessons learned for mobile
- how to deal with shader preloading
- discussion of error detection in automated image comparison tests
- increased game brightness to reduce the use of display backlights to save battery and reduce heat
- using raytracing to remove aliasing in special cases
- improvements to blue noise algorithm
![](/img/posts/graphics-programming-weekly-40/inside.png)
- discussions of problems with old occlusion culling systems
- renders occluders in a pre-pass, uses the depth information to cull instances
- how to implement culling against the depth buffer, remove culled instance from the stream
- stream compaction implementation
- extend the system to handle LOD, materials and manual vertex fetching
- performance results on Nvidia and Intel
![](/img/posts/graphics-programming-weekly-40/culling.png)
- overview of how to generate a SDF in unity
- per object SDF at build time
- global SDF aggregation at runtime
![](/img/posts/graphics-programming-weekly-40/sdf.png)
- introduction to shaders workshop in Montreal
- focused on the node-based shader pipeline of Unreal
![](/img/posts/graphics-programming-weekly-40/shaders.jpg)
- discussion of characteristics of different ways to pass CPU generated data to the GPU using OpenGL
- persistent memory (GL_ARB_buffer_storage)
- client arrays
- vertex buffer object (VBO)
- overview of SPH (Smooth Particle Hydrodynamics)
- how it’s implemented in a compute shader
- explanation of a sorted grid acceleration structure
![](/img/posts/graphics-programming-weekly-40/fluid.png)
- how the fractal raytracer was implemented on the GPU
- evaluating the fractal, ray marching and photon simulation
![](/img/posts/graphics-programming-weekly-40/rail.png)
- discussion of a unique art style rendering technique
- the character is represented from axis aligned voxels
- voxels are created/destroyed on a quantized world space grid as the character moves through the world
![](/img/posts/graphics-programming-weekly-40/character.png)
- adds supports for a basic material system with lambert diffuse + phong specular
- explanation of importance sampling
![](/img/posts/graphics-programming-weekly-40/emissive.png)
- list of resource for beginners into graphics programming
![](/img/posts/graphics-programming-weekly-40/tweet.png)
- implementation details for reflections, translucency, transparency, shadows
- global illumination uses surfels with world space accumulation
![](/img/posts/graphics-programming-weekly-40/pica.png)
- explanations of how to get started with shader programming with unity
- takes the unity toon shader as the starting point to explain concepts and provide a gentle introduction into making modifications to it
![](/img/posts/graphics-programming-weekly-40/shader.png)
- adds support for GPU tracking system that allows to enable/disable features based on the GPU used
![](/img/posts/graphics-programming-weekly-40/TheForge.jpg)
- now includes present events in the system activity view
- explanations for why the driver had to insert barriers
![](/img/posts/graphics-programming-weekly-40/gpu_profile.jpg)