Graphics Programming weekly - Issue 21 โ€” December 17, 2017


Unreal Engine 4 Rendering Part 1: Introduction [wayback-archive]

  • focus on the deferred shading pipeline
  • settings required for good development experience
  • how data is passed from updated thread -> engine thread -> gpu
  • how shader system is structured
  • binding between HLSLS and C++
  • how the correct shader variation is picked

Deferred Signed Distance Field rendering [wayback-archive]

  • using a fullscreen pass, render the SDF into the g-buffer
  • outputting custom depth for correct depth sorting

State of Roblox graphics API across all platforms - December 2017 [wayback-archive]

  • on windows 77% can use D3D 11+, still 3% on D3D39
  • windows store, 10% for D3D10
  • 52% can run metal on mac and 86 on iOS
  • android very fragmented across ES 3.X and 2.0, vulkan

Vulkan: Pipelines and Render States [wayback-archive]

  • support on-demand, VkPipeline creation at runtime only as fallback option
    • most should be created offline
  • how to handle this with multithreaded rendering
  • Render State Override Blocks
    • allow changes to some dynamic states at runtime

A Simple Device Memory Allocator For Vulkan [wayback-archive]

  • memory heaps and types
    • can’t mix different types into one heap
  • vkAllocateMemory overview
    • guaranteed to return memory aligned to the largest required alignment for any resource
    • allocation sizes differ depending on hardware
    • driver specifies maximum number of allocations that can be done
  • when sub-allocating
    • need to respect Buffer-Image Granularity to avoid aliasing
    • need separate pool for each allocation type
    • only allowed to map allocation once, even when sub-allocating different objects within

Deferred Path Tracing By Enscape [wayback-archive]

  • path traced real time global illumination that can converge to offline quality
  • using Radeon Rays for BVH construction and traversal
  • using g-buffer as replacement for primary rays
  • try to cast the diffuse rays in screen space, only if no hit is found trace using the BVH
  • ray bundling based on direction
  • BVH is streamed based on estimated visual importance weighted against their BVH cost
  • bake lighting into BVH per-vertex
    • sun is evaluated during traversal
  • filtering with temporal accumulation buffers

presentation here: Real-time path tracing using a hybrid deferred approach [wayback-archive]


Learning DirectX 12 โ€“ Lesson 1 [wayback-archive]

  • very in-depth tutorial about D3D12
    • win32 window creation
    • Query the GPU adapters
    • Create in d3d12 device, command queue, swap chain, command allocator and command lists
    • Handle GPU synchronization
    • Handle resizing
    • Handle full-screen toggling

Crunch compression of ETC textures [wayback-archive]

  • explanation of DXT1 compression
  • detailed explanation how crunch compression works
  • and what improvements have been done

Metal Gear Solid V - Graphics Study [wayback-archive]

  • SSAO is done with two passes
    • Line Integral SSAO + Scalable Ambient Obscurance
  • uses local irradiance spherical maps for global illumination
    • one bounding-box-shaped mesh representing the volume of influence of the zone
    • additively blends the irradiance from all zones
  • does tone-mapping early, right after g buffer lighting
  • depth of field
    • done using a sprite scattering approach
    • on near-field and far field separately
    • results blended together

Decima Visibility in Horizon Zero Dawn - Video

  • this was discussed in Issue 18
  • now the video has been released

Assimp: The 4.1.0-Release: gITF2 and more

  • import / export GLTF 2.0

SHLighting


Radeon GPU Profiler (RGP) v1.10

  • now supports pix markers
  • barriers and transitions now show reason why they are executed