Graphics Programming Weekly 436


Introduction to Spherical Harmonics for Graphics Programmers

  • introduces spherical harmonics as an orthonormal basis for approximating functions defined on a sphere, with a focus on lighting applications
  • walks through the mathematical foundations with interactive in-browser examples for cubemap projection
  • covers practical pitfalls


Real-time Neural Six-way Lightmaps

  • proposes a neural extension of the six-way lightmaps technique to render participating media such as smoke in real time
  • generates a guiding map from the camera view via ray marching with a coarse sampling step to capture scattering and silhouette, then uses a neural network to predict the corresponding six lightmaps


Real-Time Neural Network Implementation for GPUs

  • open-source companion code for the “Real-Time Neural Network Implementation for GPUs” chapter in the GPU Zen 4 book
  • implements multi-layer perceptron (MLP) training and inference in DirectX 12 and HLSL
  • presented example learns how to reconstruct an image


Introducing MiniDXNN: MLP library for DirectX 12

  • introduces MiniDXNN, an open-source multi-layer perceptron (MLP) inference library implemented natively in HLSL
  • leverages cooperative vector APIs to utilize AMD Radeon GPU matrix cores
  • targets performance comparable to dedicated ML frameworks
  • The initial release ships with optimized inference kernels and 2D image reconstruction samples


Custom SRP 6.2.0 3D Color LUT

  • upgrades the color LUT in a Unity Custom SRP from a simulated 2D texture strip to a native 3D texture
  • replaces the fragment-shader-based LUT generation with a compute shader that writes directly into the 3D texture
  • presents how to write a debug visualizer for 3D LUTs


Writing to Compressed Textures in Metal

  • describes a workaround for Metal’s lack of resource casting by aliasing a buffer and a compressed texture on the same Metal heap allocation, allowing compute shaders to write BC7 blocks directly
  • the encoder must produce blocks in the GPU’s native swizzle order within 32×32 block macro-tiles
  • Benchmarks shows that the approach is around 20% faster than the conventional path


Specialization Constants // Vulkan For Beginners #29

  • introduces Vulkan specialization constants as a mechanism to set compile-time constant values in GLSL shaders at pipeline creation
  • explains the Vulkan API structs involved
  • walks through a practical example integrating specialization constants into an existing shader


Lighting | Unity Shader Code Basics 06

  • Implements a Phong-based URP HLSL lighting model
  • Covers URP shader variants for shadows and normal maps
  • Adds point lights and a shadow mask from dynamic lightmap UVs


Behind the Pretty Frames: PRAGMATA

  • in-depth frame analysis of PRAGMATA, a new Capcom IP built on RE Engine
  • walks through the full render pipeline, including Z-prepass, deferred G-buffer with visibility buffer, compute-based SSAO, shadow maps, deferred lighting, ray-traced reflections, strand-based hair simulation and rendering, and the post-process stack


Raytracing Voxels in Teardown and Beyond

  • explains Teardown’s unconventional voxel renderer
  • rasterizes object bounding boxes and runs DDA-based traversal in the fragment shader
  • covers the approach to soft shadows and its limitations that motivated a next-generation rewrite
  • presents the Vulkan hardware raytracing successor to overcome quality limitations


The fog is lifting, volumetric rendering Enshrouded

  • covers distinct media types found in Enshrouded
  • based on sparse virtual-texture voxel with BC-compressed 16³ tiles, top-down weather fog, VFX-spawned dynamic volumes, a 2D cloud density map, and water stored as a sparse signed distance field
  • presents how to combine the various sources to create the effects


Profiling with PIX | Intel Software

  • introduces the Intel PIX metrics experience for Xe GPUs
  • covering how to use pipeline counters to identify bottlenecks such as excess vertex fetching and high clipper rejection in shadow passes
  • explains the Xe GPU architecture
  • walks through all major hardware stall reasons, from message FIFO full, instruction fetch, jump dependency, ALU write, and much more


Thanks to Stephen Hill for support of this series.


Would you like to see your name here too? Become a Patreon of this series.