FidelityFX Shader Compiler

The FidelityFX SDK Shader Compiler tool is distributed as part of the FidelityFX SDK package and is the command line tool used by the SDK to pre-generate all shader permutation binaries that are loaded at runtime.

Using the Shader Compiler

The current version of the Shader Compiler and its needed libraries/dlls are kept in the /sdk/tools/binary_store folder. To use it, simply invoke it from your build process (see the existing backend `CMakeList.txt` files as an example of launching it as part of the build process). The following arguments will allow you to control how compilation occurs:

Command line syntax:

`FidelityFX_SC.exe [Options] ` **Options** | Option | Descriptions | |---------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **<CompilerArgs>** | A list of arguments accepted by the target compiler, separated by spaces. | | **-output=\** | Path to where the shader permutations should be output to. | | **-D\** | Define a macro that is defined in all shader permutations. | | **-D\={\, \, \ ...}** | Declare a shader option that will generate permutations with the macro defined using the given values. Use a '-' to define a permutation where no macro is defined. | | **-num-threads=\** | Number of threads to use for generating shaders. Sets to the max number of threads available on the current CPU by default. | | **-name=\** | The name used for prefixing variables in the generated headers. Uses the file name by default. | | **-reflection** | Generate header containing reflection data. | | **-embed-arguments** | Write the compile arguments used for each permutation into their respective headers. | | **-print-arguments** | Print the compile arguments used for each permuations. | | **-disable-logs** | Prevent logging of compile warnings and errors. | | **-compiler=\** | Select the compiler to generate permutations from (`dxc`, `fxc` or `glslang`). | | **-dxcdll=\** | Path to the dxccompiler dll to use. | | **-d3ddll=\** | Path to the `d3dcompiler` dll to use. | | **-glslangexe=\** | Path to the `glslangValidator` executable to use. | | **-deps=\** | Dump depfile which recorded the include file dependencies in format of (`gcc` or `msvc`). | | **-debugcompile** | Compile shader with debug information. | | **-debugcmdline** | Print all the input arguments. |

Modifying the Shader Compiler

Should the need arise to build and/or modify the shader compiler tool, a solution can be generated by navigating to `/sdk/tools/ffx_shader_compiler/` sub-folder and launching `GenerateSolution.bat`. This will in turn create a solution for the shader compiler in an `/build` subfolder. When building a new shader compiler, the output will be sent to `/sdk/tools/ffx_shader_compiler/bin/` sub-folder in a release or debug folder (based on configuration built). In order to use the newly compiled tool, it needs to have all binary files copied from the binary output location (`bin` directory) to the `binary_store` directory.