- 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
![remedy_demo.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/remedy_demo.png&key=0d3d0b1381b8bf72db3a14e3233470ee92d3bba683236f1c2230a8ad0c21ec02)
- 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
![oil_water.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/oil_water.png&key=0286f05cb3ec4c922f14d491f386b8440ca743a6237961d19d7413a68b82fa7b)
- Nvidia sample for mesh shaders using Vulkan and OpenGL
- presents performance comparison for different meshes and a varying number of vertex attributes
![meshlet_bunny.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/meshlet_bunny.png&key=a33b64751ea412360b5abfe9916662b20f0ce4547797fd364b50a914983cfe85)
- explains the GPU programming model, how shaders are executed
- showcases the differences between CPU and GPU design
![adam_demo.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/adam_demo.png&key=26a5a8ac90dd85cb15401235eec4942e179b41daf73ffd57ef1b7873c3b70609)
- twitter collection of many graphics and game programming related links
![twitter_coding_things.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/twitter_coding_things.png&key=e73f4e522ad2fd79e3a5e53489eab54b3de49126d22b8e54169ab88df03aa41c)
- 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
![foggy_glass.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/foggy_glass.png&key=8cb7b1f5cb30f324f375d3e1ff2759700d1761bb34bfdeca7ceaaadb34f3a6d7)
- 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
![dxc_msbuild.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/dxc_msbuild.png&key=2a5bdc7eedec6f99616857a6c8947ce11bae6930b685ca92c1ebab97637566a7)
- beginner level overview about consideration for modeling techniques related to performance and minimizing z-fighting artifacts
![box_overdraw.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/box_overdraw.png&key=be69832878f397d8dfb4dd96fb65256f91e65ed384053b028bd0db53d9884904)
- 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
![sphere_indexing.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/sphere_indexing.png&key=9edbdd84b45d9df8c8b1675fc4d6f77d84fced8e09e4527f40c484820644f722)
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
![PSO_multithread.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/PSO_multithread.png&key=35249b26e66cf5ce2da6404becc696e42c9c2a000f197986c301baf25579efdb)
- performance comparison of OpenGL, D3D9, D3D11, and Vulkan in Dota 2
![dota2_api.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/dota2_api.png&key=9e58eaa940050b2c6c5de4ce0c0836b2ec409c56715529b26334eb35ee3c2a59)
- 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
![ni_no_kuni.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/ni_no_kuni.jpg&key=4046a691478ad8f4bef48305968627e449d1b8474d726e66fd2de148a80cb6a3)
- C++ header only implementation to generate 2D blue noise sample points
![blue_noise.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/blue_noise.png&key=5ac3ad6c9f164ae38f5f048a83492c22c8cd9cfd46bfac89caed7d8118172e00)
- 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
![edge_functions.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/edge_functions.png&key=899a0568d5fa1725f4b9fc37f97f5f04c329033d1e46b3f688f603e03cecf846)
- overview of the synchronization primitives of the Vulkan API
- explains concepts of barriers, access masks, semaphores, and queue transitions
![vulkan_barrier.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/vulkan_barrier.png&key=4dae4f1c9b26fe994f30eb4644176043740fec5e328d559bdf45d42c9029278c)
- the distinction between memory and execution barrier
- explains render passes including sub-region dependencies
- look at GPU → CPU synchronization
![vulkan_barrier2.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-64/vulkan_barrier2.png&key=c416444055226708fd7fdb60e61c21a904362db092ffc227991223c786d93b8e)
If you are enjoying the series and getting value from it, please consider supporting this blog.
Support this blog