Graphics Programming weekly - Issue 30 — March 11, 2018

Porting GPU driven occlusion culling to bgfx [wayback-archive]

  • breakdown of how a gpu driven pipeline can be implemented with bgfx
  • indirect buffer writing from the CPU not supported so using regular instancing instead

Breaking down barriers – part 1: what’s a barrier? [wayback-archive]

  • look at different meaning of barriers
  • on GPUs it includes synchronization, cache management, decompression
  • description of how it works on the hardware level

Hair in In the Valley of Gods [wayback-archive]

  • how the stylized hair from Zora is being created
  • based on hair cards
  • for the trailer the hair was rigged and animated

Using the GitHub dxcompiler.dll [wayback-archive]

  • when using custom dxcompiler.dll to build shaders they will be unsigned
  • can only be used when windows developer mode is active and d3d12 experimental mode is enabled
  • when the official dxil.dll can be loaded by the compiler the shader will be signed

Khronos Group Releases Vulkan 1.1 [wayback-archive]

  • Subgroup Operations: operations that allow communications between parallel gpu work
  • extension integrated into 1.1 core specification
  • multi-gpu support, cross-api sharing, 16-bit data types, hlsl memory data layout

Importance Sampling techniques for GGX with Smith Masking-Shadowing: Part 1 [wayback-archive]

  • mathematical derivation of importance sampling using the CDF (Cumulative Distribution Function)
  • including source code

Importance Sampling techniques for GGX with Smith Masking-Shadowing: Part 2 [wayback-archive]

  • description of the flaws of solution from part 1
  • explanation of a better importance sampling using the distribution of visible normals
  • source code included

Don’t Convert sRGB U8 to Linear U8! [wayback-archive]

  • visualizing loss of precision between storing color data in 8 bits per channel using linear vs sRGB encoding
  • difference in lerp behaviour between sRGB and linear color space

Codegen for fast Vulkan [wayback-archive]

  • for better calling performance it’s recommended to query the entry points directly instead of going through the vulkan loader
  • article shows how to parse the vulkan xml specification with python to automate the generation of the loading code