AMD Capsaicin Framework

Our Direct3D 12 framework for real-time graphics research.

AMD Capsaicin Framework is a simple and flexible tool for fast prototyping and development of real-time rendering research.

Download the latest version - v1.2

This release adds the following features:

  • Support morph target animation (in addition to the existing skinning support)

  • Meshlet based rendering (now uses reverse-Z)

  • Texture “.dds” loading (supports BC compressed and uncompressed)

  • New ToneMappers: Defaults to ACES with optional Reinhard, Uncharted2, PBR Neutral, and Agx

  • Histogram based automatic exposure

  • Shader caching for fast reloading

  • Bloom effect technique using AMD FidelityFX™ Blur

  • lens effects technique using AMD FidelityFX Lens

  • Use CMakes for dependencies instead of submodules (also supports package managers)

  • Support for drag&drop asset file loading

  • Improved negotiation system for shared textures/buffers between render techniques

  • Camera jump cut automatic detection

  • Improved light sampling performance and accuracy

  • And many more smaller features, bug fixes, and improved documentation

Features

This sample showcases the AMD Capsaicin Framework as well as the GI1.0 Global Illumination technique.

These include the following features:

  • AMD Capsaicin Framework:
    • Abstraction of common rendering operations
    • Modular framework for easy development and collaboration
    • Scene and model loading and animation
    • Inbuilt user extensible UI
    • Automated debugging and profiling information
    • Pluggable and swappable common rendering techniques such as ToneMapping, TAA, AO etc.
    • Reference path tracer
  • GI-1.1
    • Real-time global illumination with no pre-processing
    • Radiance caching in screen space and world space
    • Specular reflections
    • Simple denoiser for final image cleanup
    • World space reservoir sampling

Benefits

The Capsaicin core principles involve creating simple abstractions over complex low-level hardware implementation details to allow developers to focus on writing algorithms instead of dealing with complex API specifics. The framework makes efforts to ensure these abstractions are performant but the priority is rapid developer iteration and debugging and thus Capsaicin is not intended to be a high performance product development tool.

A key concept within Capsaicin is the ability to support multiple different research implementations and multiple concurrent developers independently working within the code base. To enable this the framework uses a modular design that allows for different components to be independently developed and then combined/reused in different ways.

GI-1.1 - Global Illumination

We’ve implemented the GI-1.1 technique based on our research papers to estimate indirect lighting in real-time.

It is based on a two-level radiance caching structure that allows to reduce the sampling rate for increased performance while making the most of every ray through better sampling.

Check out the paper for more details.

GDC 2023 presentation at the Advanced Graphics Summit for the GI-1.0 technique (YouTube link).

GI-1.1 added reflection support, see the paper for more details.

Without GI
With GI
Without GI
With GI

Requirements

  • A graphics card with Direct3D® 12 and DXR 1.1 support.
  • Windows® 10 20H2 or newer (64-bit recommended).
  • Visual Studio® 2019 or higher with Visual C++® and the Windows® 10 SDK installed.
  • CMake 3.10 or newer

Version history

  • Support morph target animation (in addition to the existing skinning support)

  • Meshlet based rendering (now uses reverse-Z)

  • Texture “.dds” loading (supports BC compressed and uncompressed)

  • New ToneMappers: Defaults to ACES with optional Reinhard, Uncharted2, PBR Neutral, and Agx

  • Histogram based automatic exposure

  • Shader caching for fast reloading

  • Bloom effect technique using AMD FidelityFX™ Blur

  • lens effects technique using AMD FidelityFX Lens

  • Use CMakes for dependencies instead of submodules (also supports package managers)

  • Support for drag&drop asset file loading

  • Improved negotiation system for shared textures/buffers between render techniques

  • Camera jump cut automatic detection

  • Improved light sampling performance and accuracy

  • And many more smaller features, bug fixes, and improved documentation

Related news and technical articles

Related videos