Graphics Programming weekly - Issue 24 — January 28, 2018

Tightening Up the Graphics: Tools and Techniques for Debugging and Optimization

  • aimed at beginners in graphics programming
  • overview of common problems and causes
  • renderdoc explanation
    • feature and interface overview
    • how to use it to detect problems
  • GPU perf studio and how to profile your application
  • common GPU performance problems

Rendering and shading in ADAM: Episode 3 [wayback-archive]

  • frame breakdown
  • deferred shading pipeline
  • extra g-buffer channels used to store subsurface scattering profiles
  • spot lights used to light the main characters
  • for subsurface scattering diffuse and specular are applied separately
    • diffuse component gets blurred to approximate scattering outside of a single pixel
    • recombined with specular afterwards
  • running two g-buffer passes
    • once for the main scene and once for the visor (rendered as opaque)
    • visor is recomposited using the visor alpha


  • proposal of a new unit of time ( 1 flick = 1705600000 second )
  • can represent most common frame duration in integer quantitates

Explicit Multi-GPU Programming [wayback-archive]

  • aimed not just at games but also other industries
  • creating and updating of resources take a bitmask to specify on which device to operate on
  • when binding a render pass or binding a queue the target device mask is specified
  • new sync primitive to specify what fences to wait on and what fences to signal
    • signal uses the device mask

Using Arrays of Textures in Vulkan Shaders [wayback-archive]

  • use a single descriptor set to store all textures
  • push constant to index into the array
  • how to create, fill and use the descriptor set
  • deal with GlslangValidator warnings

A Simple, and Trivially Parallelizable Triangle Rasterization Approach [wayback-archive]

  • description of how the cross product can be used to detect if a point is inside a triangle

Art Design Deep Dive: Using a 3D pipeline for 2D animation in Dead Cells [wayback-archive]

  • simple 3D model used
  • rendered into a small texture without anti aliasing to create the 2D sprite + normal map

Google and Qualcomm: Pixel-Perfect? [wayback-archive]

  • look at driver quality between Google Pixel 2 and Samsung Galaxy S8

GPU Zen 2 - Call for Authors [wayback-archive]

  • next edition of the book is looking for proposals, due March 30th

The Forge - Cross-Platform Rendering Framework

  • open source
  • supports PC D2D12, vulkan, iOS, Android, PS4, Xbox One