- overview of architecture
- multiple render backends are supported at the same time
- all GPU resources are referred to by a handle, resources can exist on multiple GPUs
- overview of the high-level command system that is recorded and translated into native API command buffers
- render graph system graph construction and execution
- how to deal with multiple GPUs
- virtual GPU system allows emulation of a multi GPU setup using a single GPU
- proxy backend routes rendering calls to a remote machine for execution
- a brief look at machine learning in a render graph architecture
- overview of the asset pipeline
- overview of hybrid rendering pipeline and how transparent shadows have been implemented using DirectX Raytracing
- discussing open problems with ray tracing
![render_proxy.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/render_proxy.png&key=98be44c7ba05869d9efc79ac69ebca5300d0b88ab0b40419c88ca6be51b86649)
- a new shading language, designed for use with WebGPU
- discusses the constraints of targeting the web, and the ability to convert to Metal, HLSL, and SPIR-V
- SPIR-V limitations also limit the expressiveness of WHLSL
- memory safety for arrays, getter and setter support
- does not support a preprocessor but instead uses a two-pass compilation model with specialization constants
- bindless binding model is not supported
![WHLSL.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/WHLSL.png&key=b4e0f3e83f4f7aad1ad6cfbab0bc4b2642137b7f395a6536c7b0fc2cfc275688)
- part 2 of the series on font rendering
- shows the artifacts a regular grid sampling pattern causes and how a rotated grid improves the edges of glyphs that contain straight lines
- explains how to sample the grid efficiently by splitting the rotation into one horizontal and one vertical skew
- able to optimize the sampling by precalculating lookup tables
![art_rotated_t_full.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/art_rotated_t_full.png&key=6f0d99215952bdff0f4df40500895c395da0a75d57cf253048ed4367aa022e43)
- new open source library from Microsoft that combines the DirectXShaderCompiler and SPIRV-Cross to convert HLSL shaders into OpenGL/Metal/SPIR-V or HLSL compatible with D3D11
![shader_conductor.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/shader_conductor.png&key=4de8725e055c06a61146e10b68118db2106659781fa14e8ddf00734a4f5b7b60)
- presents an approach to generate a quasirandom blue noise point sequence
- shows the mathematical foundation, distribution analysis and comparison with other techniques
- python code is provided to help with the understanding of the technique
![sample_jitter.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/sample_jitter.png&key=97966328ce2162e1f66bae5a9959afabd5abac30d7b3fe488af9237abc000bd2)
- podcast episode discusses how to design a cross-platform API, problems, and considerations
- engine design is aimed at modern APIs, supporting older APIs is not a concern for “Our Machinery”
![cross_platform_graphics.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/cross_platform_graphics.jpg&key=3ac9def01da1c52be098bddf83a4c6756f8e4a6f3b981550df2ead8b8877050d)
- reverse engineering the sharpening filter from The Witcher 3 and explains how it works step by step
- provides HLSL source code that produces the same assembly
![witcher3_sharpening.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/witcher3_sharpening.jpg&key=2f40b8bd28fe30c63141631c569c5ee5fa64186e3c54f44c8e4f22c1f53b223a)
- shows that using DXGI functionality can be used to keep track of Vulkan memory usage on Windows
- presents how to identify physical adapters between Vulkan and DXGI to deal with multi-GPU systems
- experiments with using DXGI for memory reporting when using Vulkan
- results are presented for the system using one AMD and one NVIDIA GPU
- memory management behavior seems to be different between the vendors
- DXGI appears to be able to report sensible application local memory usage information
- the extension allows the application to collect timing information from the presentation engine and schedule presents at specified times
- the post presents results from experimenting with VK_GOOGLE_display_timing on Android and Mesa (X11)
- list of issues encountered and possible points of improvement
- explains how ray-tracing could be used for arbitrary data-lookup in 2D and 3D
- can handle more data points where the signal changes more rapidly
- a texture has a fixed resolution and cannot adjust to varying density needs
![ray2d.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/ray2d.png&key=657c2f16bb38721386234aaee955d5c0a47f4faaeca88817198639e54baf6d87)
- shows how to generate a depth pyramid for Vulkan
- takes the depth buffer and produces a conservative mipmap chain
- preparation for GPU occlusion culling in the next episode
![depth_pyramid.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/depth_pyramid.png&key=593e60590eb6b4fef7dbd09e2fc03ad5f86e2c66f3da6b8c0772b09e4b0a4d69)
- implementation of GPU occlusion culling into the mesh-shader and classical rendering pipeline
![gpu_culling.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/gpu_culling.png&key=01ed3ac7ac8593c0f1d1c65bb3941a94e68062c2ffd2aec8061b75026631b4b5)
- list of resources for beginners that are looking to get started with graphics programming
- new Vulkan extension that allows usage of the C++ memory layout in Vulkan constant and structured buffers
- this relaxes the alignment requirements
- presents how to recover the scale, rotation, and position from a model matrix
- rotation is retrieved as a rotation matrix
![original_rotated_axes.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/original_rotated_axes.jpg&key=567fd3f1fac047f1279a8a628e4bce7b0ee951578e0c4dfca9d65550c9dca248)
- a presentation about the development and design of a C++ library implementation that allows GLSL shaders to run on the CPU
![shaders_cpp.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-63/shaders_cpp.png&key=3b1509d98138f9073119b83a683976264e23211e8c7d45b039c634175ea528b2)
If you are enjoying the series and getting value from it, please consider supporting this blog.
Support this blog