Graphics Programming weekly - Issue 37 — May 6, 2018

Stylized VFX in RIME – Water Edition

  • how the stylized vfx in Rime was implemented
  • short overview of fire and smoke effect
  • in-depth overview of the water rendering implementation

SPIRV-Cross - Reflection API user guide

  • explanation how to query reflection information from SPIR-V shader
  • brief overview of the the SPIR-V type system

The implementation of Pixel-projected Screen Space Reflections

  • explanation of the implementation of Pixel Projected Reflections using vulkan
  • supports approximation of normal maps and roughness
  • comparison against brute force ray tracing implementation (image quality and performance)

GPU Ray Tracing in Unity – Part 1

  • how to implement a ray tracer using a compute shader in unity
  • features supported: sky box, ground plane, spheres, reflections, directional light with hard shadows and a basic material system
  • simple temporal anti-aliasing solution

Bokeh depth of field in a single pass

  • shows the steps leading up the final implementation
  • uses a fixed weight for all contributing samples. If sample doesn’t contribute, blend in the current average color instead
  • clamping sample size when sample is further away then the center sample. This makes sure out of focus background do not blur into in-focus foreground objects


  • texture compression library in just 500 lines of C code + Zstd
  • zpng compressing is quicker, takes 6% of the time and output size of the image is 66% compared to the png reference

2018 Vulkan Montreal Dev Day

  • presentations from the Vulkan Montreal dev day
  • including updates about HLSL in Vulkan and descriptor indexing

Comparison of vertexcodec/indexcodec from meshoptimizer with Google Draco

  • comparison of Draco and mesh optimizer output in regards to size and decoding time
  • Draco size compression is mesh dependent, can be larger. Always a lot slower to decode

GDC 2018 Presentations

  • most of the AMD presentations from GDC have now been uploaded

Basic Argument Buffers

  • examples for arguments buffer have been published
  • allow the grouping of resources and constants into a single object that can be bound as a single unit

Open Sourcing Seurat: bringing high-fidelity scenes to mobile VR

  • tool that allows simplifications for static VR environments
  • takes RGB + depth as input images
  • generates simplified geometry that textures will be mapped onto to represent the scene
  • prebuild version can be found here:

i3D 2018 – Moment-Based Order-Independent Transparency

  • build upon the ideas of moment shadow mapping
  • transparent geometry is rendered twice

    1. determine transmittance function per pixel
    2. composite all transparent surfaces
  • taking advantage of the fact that the logarithm of the transmittance can be accumulated additively

Upcoming Oryol Changes (sokol_gfx.h migration)

  • overview of the new rendering API
  • build around method chaining for the initialization of descriptors

GTC On-Demand

  • videos and presentations from GTC are available