- a brief overview of the concepts of the ray tracing extension
- started integration with replacing screenspace AO and shadow map implementations
- how to implement ray trace reflections, techniques to reduce noise and optimizations
- best optimization advice is to split ray casting and shading
- export ray hit information from raycasting shader, and shade samples later using a conventional compute shader
- overview of the indirect diffuse voxel solution used in Quantum Break and how ray tracing can be used to improve the results
![](/img/posts/graphics-programming-weekly-64/remedy_demo.png)
- overview of the Navier-stokes equation, look at each step of the implementation and how it was integrated into the engine
- scrollable grid, only run simulation near the player character, a static map for the rest of the world
- obstacle injection uses capsule vs. water plane collision checks
- algae implementation uses virtual particles that convert density to particles, applies simulations, and turns back to densities
![](/img/posts/graphics-programming-weekly-64/oil_water.png)
- Nvidia sample for mesh shaders using Vulkan and OpenGL
- presents performance comparison for different meshes and a varying number of vertex attributes
![](/img/posts/graphics-programming-weekly-64/meshlet_bunny.png)
- explains the GPU programming model, how shaders are executed
- showcases the differences between CPU and GPU design
![](/img/posts/graphics-programming-weekly-64/adam_demo.png)
- explains how to implement a shader that simulates a foggy window effect applied to a plane in 3D space
- allows the user to clean parts of the window. Foggy state returns after some time has passed
![](/img/posts/graphics-programming-weekly-64/foggy_glass.png)
- explains how to integrate the DirectX shader compiler (DXC) into the Visual Studio build system (msbuild)
- integration of dependency tracking
- detecting headers
- shows how to provide a regex to integrate with the Visual Studio error window
![](/img/posts/graphics-programming-weekly-64/dxc_msbuild.png)
- beginner level overview about consideration for modeling techniques related to performance and minimizing z-fighting artifacts
![](/img/posts/graphics-programming-weekly-64/box_overdraw.png)
- article with interactive and live tweakable examples
- presents a technique that allows constant time conversion from a position on or above a sphere to the nearest triangle index using an octahedron subdivision model
![](/img/posts/graphics-programming-weekly-64/sphere_indexing.png)
If you are enjoying the series and getting value from it, please consider supporting this blog.
Support this blog- explains how to use new D3D12 API additions to precompile shaders for DirectX raytracing in parallel into a native hardware format
![](/img/posts/graphics-programming-weekly-64/PSO_multithread.png)
- performance comparison of OpenGL, D3D9, D3D11, and Vulkan in Dota 2
![](/img/posts/graphics-programming-weekly-64/dota2_api.png)
- frame breakdown of an interior scene in Ni No Kuni 2
- uses a light pre-pass architecture
- the cartoon edge line is using FXAA for smoother lines, and the final render result uses SMAA
![](/img/posts/graphics-programming-weekly-64/ni_no_kuni.jpg)
- C++ header only implementation to generate 2D blue noise sample points
![](/img/posts/graphics-programming-weekly-64/blue_noise.png)
- part 1 of the series on writing a software rasterizer in C++
- explains the concept of barycentric coordinates, edge functions and how they are combined to rasterize a 2D triangle
![](/img/posts/graphics-programming-weekly-64/edge_functions.png)
- overview of the synchronization primitives of the Vulkan API
- explains concepts of barriers, access masks, semaphores, and queue transitions
![](/img/posts/graphics-programming-weekly-64/vulkan_barrier.png)
- the distinction between memory and execution barrier
- explains render passes including sub-region dependencies
- look at GPU → CPU synchronization
![](/img/posts/graphics-programming-weekly-64/vulkan_barrier2.png)
If you are enjoying the series and getting value from it, please consider supporting this blog.
Support this blog