Graphics Programming weekly - Issue 53 — August 26, 2018

DD2018: Paul Malin - HDR display in Call of Duty

  • video for the talk that was discussed in issue 42
  • an in-depth overview of color, color spaces, and color transformations
  • discussion of HDR standards
  • ACES pipeline overview
  • implementation of HDR pipeline covering:
    • tone curve, display mapping, UI rendering
    • universal CLUT and color grading

Material Advances in Call of Duty: WWII

  • normal and gloss mipmapping
    • using a shortened normals technique
    • normals are shortened based on the glossiness
    • how to combine different textures to add detail to a base texture
  • material surface occlusion
    • reformulation of Ambient Occlusion that adds indirect lighting in the occluded parts of the material
    • adds micro-shadowing from material occlusion into the direct-lighting component
    • indirect specular occlusion, using 3D Environment BrdfLut, 3rd dimension is cone angle
  • multi-scattering diffuse BRDF utilizing an approximation stored in a 2D LUT

Tech Note: Shader Snippets for Efficient 2D Dithering

  • present HLSL code snippets that implement different kinds of dithering and an example application
  • comparison of quality and performance of the different dithering techniques

A Life of a Bokeh

  • an in-depth walkthrough of the new Depth of Field implementation in Unreal Engine 4
  • discussing problems encountered, solutions and optimizations
  • includes many small code snippets
  • better results and better performance than the old UE4 implementation

The Road toward Unified Rendering with Unity’s High Definition Render Pipeline

  • discusses architecture, light culling, clustered lighting implemetation
  • how feature parity between deferred and forward pipeline is achieved
  • implementation of decal system using a D-buffer (similar to g-buffer but for decals only)
  • details about material types, lighting features, volumetric systems

Efficient Screen-Space Subsurface Scattering Using Burley’s Normalized Diffusion in Real-Time

  • presentation of a screen space subsurface scattering model, they call it the Disney SSS
  • model is using a single tweakable parameter that makes it easy to use for artists
  • implementation details for a thick and thin object model and optimizations to the implementation

Real-Time rendering’s next frontier: Adopting lessons from offline ray tracing to real-time ray tracing for practical pipelines

  • start tracing rays where rasterizer has shortcomings
  • explains how to tune Monte Carlo estimators to converge quicker by minimizing variance using different AO and spherical lights as examples
  • shows the weakness of uniform random numbers and provides techniques to generate better distributions
  • variance-driven sampling focus taking more samples where variance is high

Evenly distributing points on a sphere

  • presents two techniques that improve on existing Fibonacci lattice methods
  • one version to achieve better packing distribution
  • other to optimize volume and surface area of the convex hull

Differentiable Rendering

  • overview of differentiable rendering
  • a technique gaining traction in machine learning
  • the idea is to provide a way to inverse the rendering process so that changes in the output can be traced back through the pipeline to map changes from output state into changes in the input state

Moving Mobile Graphics - SIGGRAPH 2018

  • slides for the Moving Mobile Graphics 2018 course from SIGGRAPH 2018

Journey into rust #2: Compute Shaders

  • Game Of Life implemented using OpenGL compute shaders in Rust

Monte Carlo Integration

  • an in-depth explanation WIP document about Monte Carlo integration
  • how it’s able to approximate the shape of the function from taking independent samples
  • how importance sampling helps to converge quicker
  • extend technique to support Multiple Importance Sampling

Color in advanced displays: HDR, OLED, AR & VR

  • slides from the SIGGRAPH course
  • characteristics of an idealized display
  • discussion of real hardware considerations
  • tone reproduction, tone characteristics, dynamic range
  • color primaries, gamut, calibration & characterization
  • viewing environment, adaptive displays, observer differences

Subsurface Scattering for Foliage (without Raytracing!)

  • video tutorial on how to implement a subsurface scattering approximation with unity

Stencil Buffers

  • a tutorial that explains how to use the stencil buffer with Unity
  • shows how to read/write the stencil mask so that only parts of models will be visible on the screen

X-Ray Shader Tutorial in Unity

  • a tutorial explains how to create an Overwatch style x-ray effect in Unity
  • implemented using stencil buffer and multiple shader passes


  • abstraction layer from AMD on-top of Vulkan has been released as open source
  • implements automatic render barrier management, descriptor pools/sets, memory management, render passes, etc

SIGGRAPH 2018 Stuff

  • collection of observations and nuggets of information from different SIGGRAPH 2018 sessions

Basic Math for Shaders

  • a visual explanation of foundational linear algebra concepts that are required for shader programming

Demoscene session at SIGGRAPH 2018

Scatter Kernel

  • next part of the series about developing a path tracer using Cuda
  • discussing how to move ray generation code from the CPU to the GPU
  • speedup of 11x is achieved compared to single threaded CPU implementation

Some thoughts re Raytracing post-Siggraph 2018

  • thoughts on open questions in regards to raytracing dynamic, open world type environments

A brief postscript on moment-based order-independent transparency

Pathtracing Coherency

  • look at different ray tracing scenarios and how they influence coherency between neighboring rays
  • references to papers that investigate the issue in further details

If you are enjoying the series and getting value from it, please consider supporting this blog.

Support this blog