Today, we are excited to announce that we are releasing an update for ShadowFX that adds support for DirectX® 12.

Features

Different shadowing modes

Union of multiple light sources

Weighted average of multiple light sources

Cascaded shadow maps

Cube shadow maps

Different filtering modes

Percentage Closer Filtering

Contact Hardening Shadows

Different shadow map sampling modes

Box sampling

Poisson sampling

Considerations when integrating ShadowFX

As with the DirectX 11 version, integrating ShadowFX into an existing DirectX 12 renderer is simple. The usage of the library changed very little in comparison to DirectX 11.

State handling

The user has to be aware that the library binds its own Pipeline State Object (PSO) and Shader Resources Descriptor Heap (SRD Heap). The library does not save and restore states as in DirectX 11. After calling the library the PSO and SRD heap need to be explicitly reset.

Constant buffers

For maximum efficiency the library does not automatically rename constant buffers. At initialization, the user has to provide the maximum number of instances that can potentially execute in parallel. The library uses this information to determine the amount of memory that needs to be allocated for constant buffers. Every time the library gets called the user provides an instance ID and the library uses this ID to read from the right constant buffer.

Sample and More Info

The ShadowFX12 sample on GitHub demonstrates how to use this new version of ShadowFX. Additional information can be found in the ShadowFX page.