
In this article we aim to discuss a few practical use cases and provide you with some tips you can apply for getting the most performance out of AMD FidelityFX™ Brixelizer in your application.
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:
This release of the AMD FidelityFX™ SDK adds the following features:
AMD FidelityFX™ Brixelizer + Brixelizer GI features the following:
For more information, don’t miss our extensive documentation.
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.
A top-down view of two AMD FidelityFX™ Brixelizer cascades containing geometry.
A visualization of a slice from the brick atlas 3D texture.
Final lighting output of a 3D scene.
SDF debug visualization of a 3D scene.
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.
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.
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.
Visualization of screen probes.
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.
Denoised Diffuse GI output.
Denoised Specular GI output.
Final lighting output with GI composited.
This talk briefly discusses how the AMD FidelityFX™ Brixelizer works, then explores how diffuse and specular global illumination is implemented with sparse distance fields in Brix GI.
This presentation is a practical implementation of a solution aimed at making the most of every sample by caching the estimated radiance into a cache hierarchy used for both sampling and filtering.
This presentation introduces a novel algorithm for PC and console developers to efficiently generate sparse distance fields in real-time.
A set of guidelines for developers on how to present options in the game’s user interface to enable/disable AMD FidelityFX™ Effects.
Requires AMD GCN architecture-class GPUs and above.
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