AMD FidelityFX™ Brixelizer background

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

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.

Comparisons

Left: GI off, right: GI on.

GI off
GI on

Left: GI off, right: GI on.

GI off
GI on

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

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.

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