Graphics Programming weekly - Issue 69 — January 20, 2019

My take on shaders: Color grading with Look-up Textures (LUT)

  • describes lookup table based (LUT) color grading in LDR color space
  • shows how to represent the 3D color space in a 2D image
  • LUT is embedded into the picture during color grading and later used to apply the transform at runtime
  • walkthrough of the implementation using Unity

Moving from OpenGL to Metal

  • explains how to port an existing iOS OpenGL application to use Metal
  • shows everything required for a spinning 3D cube on screen
  • including shader authoring, render pipeline creation, uploading of data from the CPU to the GPU and draw call execution
  • providing resources for future steps at the end of the article

Volume Rendering with WebGL

  • implementation of ray marching
  • renders the back faces of the bounding volume to determine on which pixels raymarching needs to be done
  • simplified absorption model, ignoring the scattering effects
  • the vertex shader is used to calculate the ray direction and pass it to the pixel-shader
  • lookup texture is used to color to the greyscale information from the 3D volume texture

Implementation of Fast and Adaptive Procedural Cellular Noise

  • cellular noise created from a quadtree grid structure
  • presents a method that calculates the optimal order in which neighboring cells need to be visited in 2D
  • introduces how to generalize this into higher dimensions and provides a python script can generate lookup tables to store the optimal visit order
  • the technique reduces computation time by around 15%

Reverse engineering the rendering of The Witcher 3, part 10 - distant rain shafts

  • explains how the distant rain shafts in The Witcher 3 are implemented
  • large cylinders in the distant use noise textures with UV distortion
  • reading back the scene depth buffer is used to fade out the effect on distance objects
  • reverse engineered source code provided

“An Introduction to Ray Tracing” is now free for download

  • the first book on raytracing “An Introduction to Ray Tracing” from 1989 is now freely available as PDF


  • full path tracing implementation of Quake 2
  • implemented Vulkan and the RTX raytracing extension
  • uses an adaptive temporal filter for light transport paths to reduce noise

Technically Art: Issue 1 (18.01.2019)

  • start of weekly curation of tweets about 3D (technical) art, shaders, and VFX