Graphics Programming weekly - Issue 50 — August 5, 2018

Filament - Physically-based rendering engine

  • great in-depth discussion of the full PBR rendering pipeline, documentation for the Filament engine
  • base BRDF model, extended with support for clear coat layer, anisotropic surfaces, and cloth
  • explanation of lighting units and implementations for directional, point and spotlights
  • providing GLSL code snippets
  • a short overview of the clustered forward shading implementation
  • information about how to validate a PBR implementation

An implementation of physically based shading model & image based lighting in various graphics APIs

  • physically based shading model implemented using D3D11, D3D12, Vulkan and OpenGL 4.5
  • each backend is implemented in a single .h and .cpp file

Generating random points in a sphere

  • shows algorithms for generating random points within a sphere
  • contains interactive visualizations that make it easy to see the quality of the distribution


  • breakdown of a burning shader implemented in Unreal Engine
  • uses flow maps and world space positioned spheres to influence the fire

Non-Scary Shader Intro 2: Vertex Fun

  • part two of the series providing an introduction to vertex shaders
  • shows how to add a custom vertex shader to a basic unity shader, sample textures, pass data from vertex to pixel shader and modify vertex positions

Explanation of the paper 'View-warped Multi-view Soft Shadows for Local Area Lights'

  • summary of the paper: “View-warped Multi-view Soft Shadows for Local Area Lights ” discussed in last weeks issue
  • a real-time technique for soft shadows

Optimize Memory Transfers - Using CUDA profiler to figure out why our renderer is slow

  • shows how to measure Cuda copy performance using the tools contained in the SDK
  • how to speed up the application with the collected performance information

Aligning 3D scans

  • the article discusses how to calculate the central axis from a 3D mesh
  • the axis is computed as maximal perpendicular to the area-weighted surface normal of the mesh

Vulkan - Multisampling

  • explains how to use MSAA when using Vulkan
  • how to detect the supported sample count, set up the render targets and make the necessary adjustments to the render passes
  • shows how to enable sample shading to further improve quality on the inside of polygons

Twitter - Volume rendering thread

  • twitter thread that provides a large number of links to information about volume rendering

Vulkan® 1.1.82 - Chunked Specification

  • provides the Vulkan specification in a chunked version
  • the original specification is one large HTML file that causes usability issues

Decoding Radeon Vulkan versions

  • AMD provides a XML file that offers the possibility to map from external driver version to the contained Vulkan driver version

Xenko 3.0 is now free and open-source!

  • Xenko, a C# based game engine has been released as open source with an MIT license

Compilation of 100+ 3D graphics academic papers

  • collection of many 3D graphics research papers for a large number of different topics (sorted by topic)

Think Silicon® releases GLOVE™, an OpenGL ES over Vulkan middleware as open source

  • OpenGL ES implementation using Vulkan
  • licensed as LGPL v3