DirectX 11 and 12 library that provides a scalable and GCN-optimized solution for deferred shadow filtering

Related tags

Graphics ShadowFX
Overview

AMD ShadowFX

AMD ShadowFX

The ShadowFX library provides a scalable and GCN-optimized solution for deferred shadow filtering. Currently the library supports uniform and contact hardening shadow (CHS) kernels.

Latest release

Version 2.0 of the library now supports both DirectX® 11 and DirectX® 12. The ShadowFX API is unified across D3D11 and D3D12, allowing an easy transition to D3D12. Samples are provided for both D3D11 and D3D12 versions.

The library supports a range of different options:

  • Shadow map packing into an atlas or a texture array
  • Processing up to 6 shadow maps for a union of lights, cascaded light, or a cube light
  • Poisson-distributed and regular sampling patterns

The ShadowFX library can also serve as a sandbox for experiments with other shadow filtering techniques.

Prerequisites for DirectX 11

  • AMD Radeon™ GCN-based GPU (HD 7000 series or newer)
    • Or other DirectX® 11 compatible discrete GPU with Shader Model 5 support
  • 64-bit Windows® 7 (SP1 with the Platform Update), Windows® 8.1, or Windows® 10
  • Visual Studio® 2015 or Visual Studio® 2017

Prerequisites for DirectX 12

  • AMD Radeon™ GCN-based GPU (HD 7000 series or newer)
    • Or other DirectX® 12 compatible discrete GPU with Shader Model 5 support
  • 64-bit Windows® 10
  • Visual Studio® 2015 or Visual Studio® 2017

Getting started

  • For DirectX 11, Visual Studio solutions for VS2015 and VS2017 can be found in the amd_shadowfx11_sample\build directory.
  • For DirectX 12, Visual Studio solutions for VS2015 and VS2017 can be found in the amd_shadowfx12_sample\build directory.
  • There are also solutions for just the core library in the amd_shadowfx\build directory.
  • Documentation is located in the amd_shadowfx\doc directory.

Learn More

Premake

The Visual Studio solutions and projects in this repo were generated with Premake. If you need to regenerate the Visual Studio files, double-click on gpuopen_geometryfx_update_vs_files.bat in the premake directory.

For Visual Studio 2015 and 2017, this version of Premake adds the WindowsTargetPlatformVersion element to the project file to specify which version of the Windows SDK will be used. To change WindowsTargetPlatformVersion for Visual Studio 2015 and 2017, change the value for _AMD_WIN_SDK_VERSION in premake\amd_premake_util.lua and regenerate the Visual Studio files.

Third-Party Software

  • DXUT is distributed under the terms of the MIT License. See framework\d3d11\dxut\MIT.txt.
  • Premake is distributed under the terms of the BSD License. See premake\LICENSE.txt.
  • The Open Asset Import Library (assimp) is distributed under the terms of the BSD License. See third_party\assimp\LICENSE.

DXUT and Assimp are only used by the samples, not the core library. Only first-party software (specifically amd_shadowfx and amd_lib) is needed to build the ShadowFX library.

Attribution

  • AMD, the AMD Arrow logo, Radeon, Crossfire, and combinations thereof are either registered trademarks or trademarks of Advanced Micro Devices, Inc. in the United States and/or other countries.
  • Microsoft, DirectX, Visual Studio, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
Issues
  • AMD ShadowFX sample is hangs on Intel HD 4000 GPU

    AMD ShadowFX sample is hangs on Intel HD 4000 GPU

    Hi Jason Stewart! I have problem on Intel HD 4000, the shadowFx sample is hangs.

    Also i created the topic in the amd developping forum: https://community.amd.com/thread/196125

    opened by Andreyogld3d 5
  • reserved identifier violation

    reserved identifier violation

    I would like to point out that an identifier like "__AMD_SHADOWFX_H__" does not fit to the expected naming convention of the C++ language standard. Would you like to adjust your selection for unique names?

    opened by elfring 4
  • Crash on non-AMD hardware

    Crash on non-AMD hardware

    Though it is not clear from the prereqs in the readme (we'll be updating that soon), the *FX libraries are supposed to work on non-AMD hardware. However, I'm currently getting a crash. I'm looking into it.

    opened by jstewart-amd 1
Releases(v2.0.0)
  • v2.0.0(Jun 23, 2016)

    The ShadowFX library provides a scalable and GCN-optimized solution for deferred shadow filtering. Currently the library supports uniform and contact hardening shadow (CHS) kernels.

    The library supports a range of different options:

    • Shadow map packing into an atlas or a texture array
    • Processing up to 6 shadow maps for a union of lights, cascaded light, or a cube light
    • Poisson-distributed and regular sampling patterns

    Release Notes

    Version 2.0 of the library now supports both DirectX® 11 and DirectX® 12. The ShadowFX API is unified across D3D11 and D3D12, allowing an easy transition to D3D12. Samples are provided for both D3D11 and D3D12 versions.

    Prerequisites for DirectX 11

    • AMD Radeon™ GCN-based GPU (HD 7000 series or newer)
      • Or other DirectX® 11 compatible discrete GPU with Shader Model 5 support
    • 64-bit Windows® 7 (SP1 with the Platform Update), Windows® 8.1, or Windows® 10
    • Microsoft Visual C++® 2013 Redistributable to run the binary (ShadowFX11_Sample_v2.0.0_binary.zip)
      • See redist for installer, if needed
    • Visual Studio® 2012, Visual Studio® 2013, or Visual Studio® 2015 to build from source
      • Visual Studio is not needed if you just want to run the binary (ShadowFX11_Sample_v2.0.0_binary.zip)

    Prerequisites for DirectX 12

    • AMD Radeon™ GCN-based GPU (HD 7000 series or newer)
      • Or other DirectX® 12 compatible discrete GPU with Shader Model 5 support
    • 64-bit Windows® 10
    • Microsoft Visual C++® 2015 Redistributable to run the binary (ShadowFX12_Sample_v2.0.0_binary.zip)
      • See redist for installer, if needed
    • Visual Studio® 2015 to build from source
      • Visual Studio is not needed if you just want to run the binary (ShadowFX12_Sample_v2.0.0_binary.zip)
    Source code(tar.gz)
    Source code(zip)
    ShadowFX11_Sample_v2.0.0_binary.zip(103.21 MB)
    ShadowFX12_Sample_v2.0.0_binary.zip(35.47 MB)
Owner
GPUOpen Effects
Real-time visual effects from the GPUOpen initiative
GPUOpen Effects
The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing DirectX 11.x code in C++

DirectX Tool Kit for DirectX 11 http://go.microsoft.com/fwlink/?LinkId=248929 Copyright (c) Microsoft Corporation. All rights reserved. January 9, 202

Microsoft 2.1k Jun 22, 2022
A C++/DirectX 11 implementation of "A Scalable and Production Ready Sky and Atmosphere Rendering Technique"

Atmosphere Renderer A C++/DirectX 11 implementation of "A Scalable and Production Ready Sky and Atmosphere Rendering Technique" Features interactive e

Z Guan 29 Jun 23, 2022
A rendering sample that demonstrates bindless deferred texturing using D3D12

Bindless Deferred Texturing and Decals Sample This project is a D3D12 rendering sample that implements a deferred renderer using bindless deferred tex

MJP 331 Jun 27, 2022
A simple single point light shadow mapping with OpenGL 3.3 and C++

omni-directional-light-example Using OpenGL 3.3 with C++ Basically a single light map, no lighting model was used Usage Build the executable outside A

Mohammad Issawi 4 Feb 10, 2022
A sample app that demonstrates several techniques for rendering real-time shadow maps

Shadows This is a D3D11 sample app that demonstrates several techniques for rendering real-time shadow maps. The following techniques are implemented:

MJP 516 Jun 21, 2022
A real-time DirectX 11 renderer. The renderer is named by my girlfriend's english name.

sophia Sophia is a real-time DirectX 11 renderer. It is not quite a rich graphics engine, only packages some low-level DirectX functions and contains

BB 6 Dec 11, 2021
✖🌱 A DirectX 12 starter repo that you could use to get the ball rolling.

DirectX 12 Seed A DirectX 12 repo you can use to get started with your own renderer. Setup First install: Git CMake Visual Studio Then type the follow

Alain Galvan 60 May 10, 2022
This repo contains the DirectX Graphics samples that demonstrate how to build graphics intensive applications on Windows.

DirectX-Graphics-Samples This repo contains the DirectX 12 Graphics samples that demonstrate how to build graphics intensive applications for Windows

Microsoft 4.6k Jun 27, 2022
Playground for DirectX 11 / 12 simple graphics demo examples ...

graphicsdemoskeleton Playground for DirectX 11 / 12 simple graphics demo examples ... If anyone from Microsoft reads this: C99 support is broken in Di

Wolfgang Engel 46 Jan 13, 2022
DirectX shader bytecode cross compiler

HLSLcc DirectX shader bytecode cross compiler. Originally based on https://github.com/James-Jones/HLSLCrossCompiler. This library takes DirectX byteco

Unity Technologies 697 Jun 20, 2022
Optimized GPU noise functions and utilities

Optimized GPU noise functions and utilities

Brian Sharpe 328 May 12, 2022
📽 Highly Optimized Graphics Math (glm) for C

?? OpenGL Mathematics (glm) for C Documentation Almost all functions (inline versions) and parameters are documented inside the corresponding headers.

Recep Aslantas 1.4k Jun 20, 2022
Pathway is an Android library that provides new functionalities around the graphics Path API.

Pathway is an Android library that provides new functionalities around the graphics Path API.

Romain Guy 98 Jun 28, 2022
SPIRV-Reflect is a lightweight library that provides a C/C++ reflection API for SPIR-V shader bytecode in Vulkan applications.

SPIRV-Reflect SPIRV-Reflect is a lightweight library that provides a C/C++ reflection API for SPIR-V shader bytecode in Vulkan applications. SPIRV-Ref

The Khronos Group 407 Jun 18, 2022
A C++ commandline for use in servers and chat software. Provides very simple asynchronous input/output.

commandline A C++ commandline for use in servers and terminal chat software. Provides very simple asynchronous input/output. Supports reading and writ

Lion 68 Jun 14, 2022
Legion Low Level Rendering Interface provides a graphics API agnostic rendering interface with minimal CPU overhead and low level access to verbose GPU operations.

Legion-LLRI Legion-LLRI, or “Legion Low Level Rendering Interface” is a rendering API that aims to provide a graphics API agnostic approach to graphic

Rythe Interactive 25 Mar 8, 2022
Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features for your screenshots.

Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features for your screenshots.

ksnip 1.4k Jun 26, 2022
ANSI C library for NURBS, B-Splines, and Bézier curves with interfaces for C++, C#, D, Go, Java, Lua, Octave, PHP, Python, R, and Ruby.

TinySpline TinySpline is a small, yet powerful library for interpolating, transforming, and querying arbitrary NURBS, B-Splines, and Bézier curves. Th

Marcel Steinbeck 797 Jun 27, 2022