Navigation
API > API/Runtime > API/Runtime/Engine
A collection of graph properties used by a value.
If a graph property is true, it generally means that either the value itself makes has of that property, or one of its dependencies (direct or indirect) has it. This entails these flags are automatically propagated to all dependant values (values that depend on a given one). As an example, if "ReadsPixelNormal" is true on a specific value it means that either that value itself or some other upstream value that value is dependent on reads the pixel normal.
The properties starting with "Uniform" are exceptions. Instead of being a union of child subgraph properties, "Uniform" represents an intersection, indicating all dependencies have "Uniform" set, as opposed to any. "PreshaderOut" is set for "Uniform" nodes with an immediate non-Uniform parent, and "PreshaderTemp" is set for nodes in a subtree of a "PreshaderOut" node, representing intermediate values that don't need to be available on the GPU or in the output uniform buffer. And "TrivialTailSwizzle" handles a special case optimization.
| Name | MIR::EGraphProperties |
| Type | enum |
| Header File | /Engine/Source/Runtime/Engine/Public/Materials/MaterialIRCommon.h |
| Include Path | #include "Materials/MaterialIRCommon.h" |
Syntax
namespace MIR
{
enum EGraphProperties
{
None = 0,
PixelStageOnly = 1 << 0,
ReadsPixelNormal = 1 << 1,
HasParameter = 1 << 2,
Uniform = 1 << 3,
PreshaderOut = 1 << 4,
PreshaderTemp = 1 << 5,
TrivialTailSwizzle = 1 << 6,
}
}
Values
| Name | Remarks |
|---|---|
| None | |
| PixelStageOnly | This value is only meaningful and available in the pixel stage. |
| ReadsPixelNormal | Some value reads the pixel normal. |
| HasParameter | Some value in the subtree is a parameter. |
| Uniform | This value and all its dependencies have the Uniform property set. |
| PreshaderOut | This value is used as an output in a Preshader, meaning it's visible to the GPU and needs a uniform buffer location. |
| PreshaderTemp | This value is used as a temporary in a Preshader, meaning it is only used by other Preshaders, and HLSL doesn't need to be generated for it. |
| TrivialTailSwizzle | This value is a trivial tail swizzle, meaning a subscript or composite of elements from a single source vector (and optionally any number of constant elements) at the root of a subexpression tree that can be expanded on the GPU for "free". |