Graphics Programming weekly - Issue 65 — December 2, 2018

WebGPU - An Explicit Graphics API for the Web

  • review of problems with classical APIs (OpenGL) and motivations for the creation of WebGPU
  • presentation about Dawn, WebGPU implementation from Google
  • splits into render passes that insert resource transitions between passes automatically
  • how numerical fences are implemented (Monotonically increasing values indicate a timestamp in GPU execution history)
  • considerations for implementations using cross-process communication

Vulkan Raytracing - bunny and teapot

  • part 2 of Vulkan raytracing series
  • extends the application with multiple 3D meshes, texturing, simple shading, shadows, reflections, and ice shading model

A radiative transfer framework for non-exponential media

  • development of a new rendering framework for transmittance for participating media that enables non-exponential media types to be represented
  • archived by splitting transmittance into 4 transport functions
  • discussion of how to express this new model so that it is intuitive to use and still creates physically correct results

Breakdown: Animated Raindrop Material in UE4

  • walkthrough of the implementation of a rain material using the Unreal Engine 4 shader graph

How to Sanity Check your Spherical Harmonics Projection Code

  • a short summary of what spherical harmonics are and what they are used for
  • proposes a sanity check for SH projection code, by passing a function with a constant of 1, should result in a first coefficient close to 2√π

Procedural Color - Introduction

  • article series about procedural routines for color generation
  • talks about some techniques to generate procedural color variations
  • explains HSB color space and the effect of changing each component
  • convert from RYB hues to HSB hues
  • generation of monochrome color schemes
  • how the difference in colors influences human perception

Encoding Indirect Command Buffers on the GPU

  • a sample that explains how to use Metal to generate render commands on the GPU
  • implements GPU culling only to issue rendering commands for visible meshes and remove empty draws
  • the final command buffer submission is controlled from the CPU

Sampling the GGX Distribution of Visible Normals

  • explains a new model for sampling visible normals of the GGX distribution
  • summarizes the properties of GGX and how sampling a 2D projection of the truncated ellipsoid is equivalent to sampling the visible normals of the GGX distribution
  • the method is more precise and quicker than previous methods
  • provides a GLSL implementation

Twitter Thread - Where do the BRDF formulas come from? How can we make our own?

  • twitter thread that discusses what a BRDF is and how they are formed
  • links to sources with more in-depth information

Halcyon Architecture - Director's Cut

  • a single slide-deck that will evolve and serve as a single reference point for information about the SEED Halcyon engine
  • the content was discussed in issue 63 61 of this graphics programming weekly series


  • the walkthrough explains how to use GLSL-reduce to simplify a GLSL shader and preserve certain conditions such as a crash or invalid output
  • this is achieved with an interestingness test script
  • the script expresses what is considered to be interesting, such as specific compiler crash, high memory usage, long compile time, etc
  • presents the problem of bug slippage, this happens when a reduced shader generates a problem, but it’s not the same problem as in the original shader

2D SDF Shadows

  • a tutorial explains how to implement ray traced shadows when using a signed distance field to represent the scene geometry using Unity

Reweighting Firefly Samples for Improved Finite-Sample Monte Carlo Estimates

  • interactive WebGL demo for the paper describing a technique to reduce firefly artifacts from path tracer outputs

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

Support this blog