AMD FidelityFX™ Brixelizer/GI

Dynamic global illumination

AMD FidelityFX™ Brixelizer GI is a compute-based real-time dynamic global illumination solution built upon the sparse distance fields from AMD FidelityFX™ Brixelizer.

It provides you with denoised indirect diffuse and specular lighting outputs that you can composite into your final lighting output.

Supports:

  • DirectX® 12
  • Vulkan®

Part of the AMD FidelityFX™ SDK v1

AMD FidelityFX SDK components

Download the latest version - v1.1.4

Features

State-of-the-art algorithm

RDNA™-optimized

Smart shader selection (SM 6.6+ when present)

Open source, MIT license

Easy to integrate

Cross platform

Details

AMD FidelityFX™ Brixelizer + Brixelizer GI features the following:

  • Denoised indirect diffuse and indirect specular outputs
  • Implemented in compute without hardware-accelerated ray-tracing
  • Optional modes to output at lower than native resolutions
  • AMD FidelityFX™ Brixelizer and Brixelizer GI sample code
  • Native DirectX® 12 and Vulkan® SDK backend implementation libraries
  • Fully dynamic global illumination with multiple bounces

For more information, don’t miss our extensive documentation.

Algorithm overview - Brixelizer

AMD FidelityFX™ Brixelizer is a library that generates sparse distance fields for triangle geometry in real-time for efficiently tracing rays against your scene.

It works with both static and dynamic geometry and provides a shader API to trace rays against the distance field. It generates cascades of sparse distance fields around a given position and each cascade is split into 64x64x64 voxels.

If a voxel intersects any geometry, it generates a local distance field within the voxel. These local distance fields are known as Bricks.

AMD FidelityFX™ Brixelizer diagram-1 A top-down view of two AMD FidelityFX™ Brixelizer cascades containing geometry.

AMD FidelityFX™ Brixelizer diagram-2 A visualization of a slice from the brick atlas 3D texture.

AMD FidelityFX™ Brixelizer GI image Final lighting output of a 3D scene.

AMD FidelityFX™ Brixelizer SDF debug SDF debug visualization of a 3D scene.

Algorithm overview - Brixelizer GI

AMD FidelityFX™ Brixelizer GI is a simplified implementation of AMD GI-1.0.

It takes in the G-Buffer resources of your application alongside the output resources from AMD FidelityFX™ Brixelizer to generate Diffuse and Specular GI outputs.

AMD FidelityFX™ Brixelizer GI diagram-1

Due to the lack of material information in the distance field from AMD FidelityFX™ Brixelizer, we maintain an internal radiance cache which is populated by the previous frames’ lighting output.

Including just direct lighting will result in 1-bounce diffuse GI, whereas including the composited output from the previous frame gives you multiple bounces effectively for free.

Left: Radiance cache with one bounce, right: Radiance cache with multiple bounces.

Single bounce
Multiple bounces
JPG (1600x899)
JPG (1600x900)

Next we spawn screen probes on the visible surfaces in the depth buffer and shoot rays using AMD FidelityFX™ Brixelizer and sample the radiance cache for shading. 

These screen probes are then used to feed a world space irradiance cache that stores spherical harmonics probes for each valid brick. 

AMD FidelityFX™ Brixelizer GI screen probes Visualization of screen probes.

AMD FidelityFX™ Brixelizer GI irradiance cache Visualization of the irradiance cache.

Finally the outputs are resolved and denoised, leaving you with a Diffuse GI and Specular GI output that you can composite into your final lighting.

AMD FidelityFX™ Brixelizer GI diffuse Denoised Diffuse GI output.

AMD FidelityFX™ Brixelizer GI specular Denoised Specular GI output.

AMD FidelityFX™ Brixelizer GI final Final lighting output with GI composited.

Comparisons

Left: GI off, right: GI on.

GI off
GI on
JPG (1600x900)
JPG (1600x900)

Left: GI off, right: GI on.

GI off
GI on
JPG (1600x899)
JPG (1600x899)

Requirements

Requires AMD GCN architecture-class GPUs and above.

Version history

  • The AMD FidelityFX™ SDK 1.1.4 is a patch release that includes additions to API and fixes for issues discovered with AMD FSR 3.1.0 to 3.1.3.

  • Exposed 4 new tunings to reduce AMD FSR upscaler ghosting in newly disoccludded pixels or highly reactive pixels.

  • Changed the default value of fMinDisocclusionAccumulation to -0.333 (from equivalent of 0.333 in AMD FSR 3.1.3) to reduce disocclusion ghosting.

  • Added ffxQueryGetProviderVersion to get version info from created ffx-api context.

  • Exposed ffxDispatchDescFrameGenerationPrepareCameraInfo as a linked struct. It is a required input to AMD FSR 3.1.4 and onwards for best quality.

  • Added frame generation debug checker support.

  • Dropped unused interpolation command lists if frame generation callback fails, to fix infinite wait at swapchain destruction.

  • General fixes to Vulkan® Frame Interpolation Swapchain.

  • General framework fixes and updates.

  • Frame pacing debug line added to Vulkan®.

  • Added new FFX error when create frame interpolation swapchain results in E_ACCESSDENIED in DX12 due to overlay or capture software.

  • Enabled support for frame interpolation swapchain on Windows® 10 1909 and potentially earlier versions.

  • Fixed flipped disocclusion factor from previous and current backbuffer.

  • Fixed HDR mode issues in Cauldron sample.

  • Fixed MSVC C compile errors including ffx-api.

  • The AMD FidelityFX™ SDK 1.1.4 also updates the following to address select issues:

  • AMD FidelityFX™ Brixelizer GI 1.0.1

  • AMD FidelityFX™ Breadcrumbs 1.0.1

Other AMD FidelityFX effects