FShaderConductorContext

Wrapper class to handle interface between UE and ShaderConductor.

Windows
MacOS
Linux

References

Module

ShaderCompilerCommon

Header

/Engine/Source/Developer/ShaderCompilerCommon/Public/ShaderConductorContext.h

Include

#include "ShaderConductorContext.h"

Syntax

class FShaderConductorContext

Remarks

Wrapper class to handle interface between UE and ShaderConductor. Use to compile HLSL shaders to SPIR-V or high-level languages such as Metal.

Constructors

Name Description

Public function

FShaderConductorContext()

Initializes the context with internal buffers used for the conversion of input and option descriptors between UE and ShaderConductor.

Public function

FShaderConductorContext

(
    FShaderConductorContext&& Rhs
)

Move constructor to take ownership of internal buffers from 'Rhs'.

Public function

FShaderConductorContext

(
    const FShaderConductorContext&
)

Destructors

Name Description

Public function

~FShaderConductorContext()

Release the internal buffers.

Functions

Name Description

Public function

bool

 

CompileHlslToSpirv

(
    const FShaderConductorOptions& Opt...,
    TArray< uint32 >& OutSpirv
)

Compiles the specified HLSL shader source code to SPIR-V.

Public function

bool

 

CompileSpirvToSource

(
    const FShaderConductorOptions& Opt...,
    const FShaderConductorTarget& Targ...,
    const void* InSpirv,
    uint32 InSpirvByteSize,
    FString& OutSource
)

Compiles the specified SPIR-V shader binary code to high level source code (Metal or GLSL).

Public function

bool

 

CompileSpirvToSourceAnsi

(
    const FShaderConductorOptions& Opt...,
    const FShaderConductorTarget& Targ...,
    const void* InSpirv,
    uint32 InSpirvByteSize,
    TArray< ANSICHAR >& OutSource
)

Compiles the specified SPIR-V shader binary code to high level source code (Metal or GLSL) stored as null terminated ANSI string.

Public function

bool

 

CompileSpirvToSourceBuffer

(
    const FShaderConductorOptions& Opt...,
    const FShaderConductorTarget& Targ...,
    const void* InSpirv,
    uint32 InSpirvByteSize,
    const TFunction< void&#...
)

Compiles the specified SPIR-V shader binary code to high level source code (Metal or GLSL) stored as byte buffer (without null terminator as it comes from ShaderConductor).

Public function Static

void

 

ConvertCompileErrors

(
    TArray< FString >&& ErrorStringLin...,
    TArray< FShaderCompilerError >& Ou...
)

Convert array of error string lines into array of .

Public function Static

bool

 

Disassemble

(
    EShaderConductorIR Language,
    const void* Binary,
    uint32 BinaryByteSize,
    TArray< ANSICHAR >& OutAssemblyTex...
)

Disassembles the specified SPIR-V module and returns its assembly as text representation.

Public function

void

 

FlushErrors

(
    TArray< FShaderCompilerError >& Ou...
)

Flushes the list of current compile errors and moves the ownership to the caller.

Public function Const

const TArray...

 

GetErrors()

Returns the list of current compile errors.

Public function Static

const FShade...

 

GetIdentifierTable()

Returns the table of special identifiers generated by ShaderConductor.

Public function Static

const TCHAR ...

 

GetShaderFileExt

(
    EShaderConductorLanguage Language,
    EShaderFrequency ShaderStage
)

Returns a filename extension for the specified shading language and shader stage, e.g. "frag" for a GLSL pixel shader.

Public function Const

int32

 

GetSourceLength()

Returns a length of the internal loaded sources (excluding the null terminator).

Public function Const

const ANSICH...

 

GetSourceString()

Returns a pointer to a null terminated ANSI string of the internal loaded sources, or null if no source has been loaded yet.

Public function Static

bool

 

IsIntermediateSpirvOutputVariable

(
    const ANSICHAR* SpirvVariableN...
)

Returns whether the specified variable name denotes an intermediate output variable.

Public function

bool

 

LoadSource

(
    const FString& ShaderSource,
    const FString& Filename,
    const FString& EntryPoint,
    EShaderFrequency ShaderStage,
    const FShaderCompilerDefinitions&#...,
    const TArray< FString >* Extra...
)

Loads the shader source and converts the input descriptor to a format suitable for ShaderConductor.

Public function

bool

 

LoadSource

(
    const ANSICHAR* ShaderSource,
    const ANSICHAR* Filename,
    const ANSICHAR* EntryPoint,
    EShaderFrequency ShaderStage,
    const FShaderCompilerDefinitions&#...,
    const TArray< FString >* Extra...
)

Loads the shader source and converts the input descriptor to a format suitable for ShaderConductor.

Public function

bool

 

OptimizeSpirv

(
    TArray< uint32 >& Spirv,
    const ANSICHAR*const* Opt...,
    int32 OptConfigCount
)

Performs the specified optimization passes (e.g. "-O" or "--strip-reflect") on the SPIR-V module.

Public function

bool

 

RewriteHlsl

(
    const FShaderConductorOptions& Opt...,
    FString* OutSource
)

Rewrites the specified HLSL shader source code.

Public function Static

void

 

Shutdown()

Explicitly shut down ShaderConductor and DXC shared libraries.

Operators

Name Description

Public function

FShaderCondu...

 

operator=

(
    FShaderConductorContext&& Rhs
)

Move operator to take ownership of internal buffers from 'Rhs'.

Public function

FShaderCondu...

 

operator=

(
    const FShaderConductorContext&
)