Graphics Programming weekly - Issue 39 — May 20, 2018


Kernel Foveated Rendering

  • implements foveated rendering through usage of log-polar transformation
  • gbuffer is written as normal, attributes transformed into sub-resolution textures using a log-polar transformation
  • shading is done in log-polar space before the results are transformed back into Cartesian space


Checkerboard rendering, rotated anti-aliasing and grid frequencies

  • Intro to sampling theory and how different sampling patterns influence the aliasing that can be observed
  • explanation of why the default D3D11 MSAA has been chosen


My take on shaders: Spherical mask dissolve

  • description of a shader effect that dissolves triangles outside of a spherical effect range


Game Math: Swing-Twist Interpolation (…Sterp?)

  • slerp between two orientations takes the shortest path on a 4D hypersphere
  • author wants the shortest arc in 3D instead
  • decomposes rotation into swing and twist operations
  • these are interpolated independently and concatenated to form the final rotation


A Multi-Faceted Exploration (Part 1)

  • start of series that will look at lack of multi scattering in common analytical BSDFs and solution
  • only modelling single scattering causes significant energy loss on rough surfaces
  • post shows visual example that up to 60% of energy can be lost


Multiple-Scattering BRDF

  • derivation of the multi-scattering GGX BRDF
  • provides source code and precomputed lookup tables


Stripping scriptable shader variants

  • explains what shader variations are
  • how to compute the amount of variations created for a shader
  • how unity decides what variations to include
  • Unity 2018.2 beta adds the possibility to control shader variation compilation from a C# script


Compressonator V3.0 Release Brings Powerful New 3D Model Features

  • new image diff option allows visualization of pixel difference between compressed / uncompressed textures
  • adds model optimizations (vertex cache, overdraw, vertex prefetch optimizations)
  • draco compression support


Simple and efficient Vulkan loading with flextGL

  • tool that allows to only include vulkan functionality that you need
  • comparison of header sizes and influence on compile time, startup time


Normals and the Inverse Transpose, Part 2: Dual Spaces

  • introduction into vectors as functions and dual space
  • how to transform dual vectors


Writing a Portable CPU/GPU Ray Tracer in C#

  • uses ShaderGen to write shaders in C# and compile them into the target shader language for D3D11, Metal, OpenGL and vulkan


Introducing Shader Playground

  • website that allows compilation of shaders with a multitude of shader compilers and inspect the available outputs
  • possibility to chain compilers together


Vulkan Debug Utilities

  • tutorial how to use the VK_EXT_debug_utils extensions
  • combines old debug extensions into a unified one and adds more possibilities
  • allows more details to be reported from the validation layer and tools that support the extension


GPU-Centered Font Rendering Directly from Glyph Outlines

  • technical details about the font rendering algorithm used in slug


Game Math: Deriving the Slerp Formula

  • presents one method to derive the slerp formula for quaternions


Programmability of Graphics Pipelines

  • discusses issues with composability, how complexity poses a problem of sharing research results
  • list of frameworks for research
  • how the scriptable render pipeline of unity allows more flexibility and still hides most of the complexity


Texture Arrays in Unity

  • discusses problems with using a texture atlas
  • set of scripts to help with the creation, management and usage of texture arrays in unity


Alpha Distribution

  • technique that helps to reduce problems of disappearing geometry for alpha tested geometry
  • no runtime changes required, only changes the way mips are generated