UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ShaderPermutation.h File Reference
#include "CoreMinimal.h"
#include "ShaderCore.h"

Go to the source code of this file.

Classes

struct  FShaderPermutationParameters
 
struct  FShaderPermutationBool
 
struct  TShaderPermutationInt< TType, TDimensionSize, TFirstValue >
 
struct  TShaderPermutationSparseInt< Ts >
 
struct  TShaderPermutationSparseInt< TUniqueValue, Ts... >
 
struct  TShaderPermutationDomain< Ts >
 
class  TShaderPermutationDomainSpetialization< BooleanSpecialization >
 
class  TShaderPermutationDomainSpetialization< true >
 
struct  TShaderPermutationDomain< TDimension, Ts... >
 

Macros

#define DECLARE_SHADER_PERMUTATION_IMPL(InDefineName, PermutationMetaType, ...)
 
#define SHADER_PERMUTATION_BOOL(InDefineName)
 
#define SHADER_PERMUTATION_INT(InDefineName, Count)    DECLARE_SHADER_PERMUTATION_IMPL(InDefineName, TShaderPermutationInt, int32, Count)
 
#define SHADER_PERMUTATION_RANGE_INT(InDefineName, Start, Count)    DECLARE_SHADER_PERMUTATION_IMPL(InDefineName, TShaderPermutationInt, int32, Count, Start)
 
#define SHADER_PERMUTATION_SPARSE_INT(InDefineName, ...)    DECLARE_SHADER_PERMUTATION_IMPL(InDefineName, TShaderPermutationSparseInt, __VA_ARGS__)
 
#define SHADER_PERMUTATION_ENUM_CLASS(InDefineName, EnumName)    DECLARE_SHADER_PERMUTATION_IMPL(InDefineName, TShaderPermutationInt, EnumName, static_cast<int32>(EnumName::MAX))
 

Typedefs

using FShaderPermutationNone = TShaderPermutationDomain<>
 

Enumerations

enum class  EShaderPermutationFlags : uint32 { None = 0u , HasEditorOnlyData = (1u << 0) , IsODSCOnly = (1u << 1) }
 

Functions

 ENUM_CLASS_FLAGS (EShaderPermutationFlags)
 

Variables

constexpr bool bLogPermutations = false
 

Macro Definition Documentation

◆ DECLARE_SHADER_PERMUTATION_IMPL

#define DECLARE_SHADER_PERMUTATION_IMPL (   InDefineName,
  PermutationMetaType,
  ... 
)
Value:
public: \
static constexpr const TCHAR* DefineName = TEXT(InDefineName); \
}
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127

◆ SHADER_PERMUTATION_BOOL

#define SHADER_PERMUTATION_BOOL (   InDefineName)
Value:
public: \
static constexpr const TCHAR* DefineName = TEXT(InDefineName); \
}
Definition ShaderPermutation.h:48

Implements a boolean shader permutation dimensions. Meant to be used like so:

class FMyShaderDim : SHADER_PERMUTATION_BOOL("MY_SHADER_DEFINE_NAME");

◆ SHADER_PERMUTATION_ENUM_CLASS

#define SHADER_PERMUTATION_ENUM_CLASS (   InDefineName,
  EnumName 
)     DECLARE_SHADER_PERMUTATION_IMPL(InDefineName, TShaderPermutationInt, EnumName, static_cast<int32>(EnumName::MAX))

Implements an shader permutation dimensions with an enum class assumed to have contiguous integer values. Meant to be used like so:

enum class EMyEnum { Hello, World, // [...] MAX };

class FMyShaderDim : SHADER_PERMUTATION_ENUM_CLASS("MY_SHADER_DEFINE_NAME", EMyEnum);

◆ SHADER_PERMUTATION_INT

Implements an integer shader permutation dimensions with N permutation values from [[0; N[[. Meant to be used like so:

class FMyShaderDim : SHADER_PERMUTATION_INT("MY_SHADER_DEFINE_NAME", N);

◆ SHADER_PERMUTATION_RANGE_INT

#define SHADER_PERMUTATION_RANGE_INT (   InDefineName,
  Start,
  Count 
)     DECLARE_SHADER_PERMUTATION_IMPL(InDefineName, TShaderPermutationInt, int32, Count, Start)

Implements an integer shader permutation dimensions with N permutation values from [[X; X+N[[. Meant to be used like so:

class FMyShaderDim : SHADER_PERMUTATION_RANGE_INT("MY_SHADER_DEFINE_NAME", X, N);

◆ SHADER_PERMUTATION_SPARSE_INT

Implements an integer shader permutation dimensions with non contiguous permutation values. Meant to be used like so:

class FMyShaderDim : SHADER_PERMUTATION_SPARSE_INT("MY_SHADER_DEFINE_NAME", 1, 2, 4, 8);

Typedef Documentation

◆ FShaderPermutationNone

Global shader permutation domain with no dimension.

Enumeration Type Documentation

◆ EShaderPermutationFlags

Enumerator
None 
HasEditorOnlyData 
IsODSCOnly 

Function Documentation

◆ ENUM_CLASS_FLAGS()

ENUM_CLASS_FLAGS ( EShaderPermutationFlags  )

Variable Documentation

◆ bLogPermutations

constexpr bool bLogPermutations = false
inlineconstexpr