TShaderPermutationDomain

Variadic template that defines an arbitrary multi-dimensional permutation domain, that can be instantiated to represent a vector within the domain.

Windows
MacOS
Linux

References

Module

RenderCore

Header

/Engine/Source/Runtime/RenderCore/Public/ShaderPermutation.h

Include

#include "ShaderPermutation.h"

Syntax

template<typename... Ts>
struct TShaderPermutationDomain

Remarks

Variadic template that defines an arbitrary multi-dimensional permutation domain, that can be instantiated to represent a vector within the domain.

Defines a permutation domain with arbitrary number of dimensions. Dimensions can themselves be domains. It is totally legal to have a domain with no dimensions. class FMyPermutationDomain = TShaderPermutationDomain<FMyDimensionA, FMyDimensionB, FMyDimensionC>;

Create a permutation vector to be initialized. By default a vector is set at the origin of the domain. The origin of the domain is the ShaderPermutationId == 0. FMyPermutationDomain PermutationVector;

Set the permutation vector's dimensions. PermutationVector.Set<FMyDimensionA>(MyDimensionValueA); PermutationVector.Set<FMyDimensionB>(MyDimensionValueB); PermutationVector.Set<FMyDimensionC>(MyDimensionValueC);

Get the permutation id from the permutation vector for shader compiler. int32 ShaderPermutationId = PermutationVector.ToDimensionValueId();

Reconstruct the permutation vector from shader permutation id. FMyPermutationDomain PermutationVector2(ShaderPermutationId);

Get permutation vector's dimension. if (PermutationVector2.Get<FMyDimensionA>()) { }

Specializations

Constructors

Name Description

Public function

TShaderPermutationDomain()

Constructors.

Public function

TShaderPermutationDomain

(
    int32 PermutationId
)

Functions

Name Description

Public function Static

Type

 

FromDimensionValueId

(
    const int32 PermutationId
)

Returns the permutation domain from the unique ID.

Public function Const

const Dimens...

 

Get()

Get dimension's value, but in this case emit compile time error if could not find the dimension to get.

Public function Const

void

 

ModifyCompilationEnvironment

(
    FShaderCompilerEnvironment& OutEnv...
)

Modify compilation environment.

Public function

void

 

Set

(
    typename DimensionToSet::Type
)

Set dimension's value, but in this case emit compile time error if could not find the dimension to set.

Public function Const

int32

 

ToDimensionValueId()

Public function Static

int32

 

ToDimensionValueId

(
    const Type& PermutationVector
)

Converts domain permutation vector to domain's value id.

Operators

Name Description

Public function Const

bool

 

operator==

(
    const Type& Other
)

Test if equal.

Typedefs

Name

Description

Type

Setup the dimension's type in permutation domain as itself so that a permutation domain can be used as a dimension of another domain.

Constants

Name

Description

IsMultiDimensional

Define a domain as a multidimensional dimension so that ModifyCompilationEnvironment() is getting used.

PermutationCount

Total number of permutation within the domain is one if no dimension at all.

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss