public record class EffectPushConstantDataOne push-constant range: what a shader is handed per draw without a descriptor.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
Carried because a pipeline layout has to declare it, and a layout that does not is one a push is silently dropped against — or refused outright by the validation layers. It went missing for a while, and what it costs is not obscure: ForwardPlus.rvn pushes the world matrix, so every object in the frame is drawn at the origin.
The members are here, and this comment used to say they were not. The claim was that a caller building the bytes reads the generated constants — but nothing is generated for a push-constant block, so the only offset a host had was the one it assumed. That held while the block was one matrix at zero. It stopped holding the moment a second member existed, and the failure would have been silent: a push at the wrong offset within a declared range is accepted by every layer there is.
Fields and properties (4)
public ShaderStage StagesWhich stages read it.
public int OffsetWhere the range starts, in bytes.
public int SizeHow many bytes it is.
public EffectPushConstantMember[]? MembersWhat is inside it, so a caller can find one by name.
Methods (1)
public EffectPushConstantData(ShaderStage Stages = None, int Offset = 0, int Size = 0, EffectPushConstantMember[]? Members = null)One push-constant range: what a shader is handed per draw without a descriptor.
Used by (7)
- ClusteredShadingDeviceTestsVixen.Graphics.Golden.Tests
- EffectDataVixen.Shaders
- EffectLoaderVixen.Shaders
- TypeRegistrationVixen.Shaders
- Vixen_Shaders_EffectDataSerializerVixen.Shaders
- Vixen_Shaders_EffectPushConstantDataSerializerVixen.Shaders
- EffectTranslatorVixen.ShaderCompiler