Module |
|
Header |
/Engine/Source/Runtime/RenderCore/Public/ShaderPermutation.h |
Include |
#include "ShaderPermutation.h" |
template<typename... Ts>
struct TShaderPermutationDomain
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>()) { }
Name | Description | |
---|---|---|
|
TShaderPermutationDomain() |
Constructors. |
|
TShaderPermutationDomain ( |
Name | Description | ||
---|---|---|---|
|
FromDimensionValueId ( |
Returns the permutation domain from the unique ID. |
|
|
const Dimens... |
Get() |
Get dimension's value, but in this case emit compile time error if could not find the dimension to get. |
|
ModifyCompilationEnvironment ( |
Modify compilation environment. |
|
|
Set ( |
Set dimension's value, but in this case emit compile time error if could not find the dimension to set. |
|
|
ToDimensionValueId() |
||
|
ToDimensionValueId ( |
Converts domain permutation vector to domain's value id. |
Name | Description | ||
---|---|---|---|
|
operator== ( |
Test if equal. |
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. |
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. |