Vixen
02b45cc4

EffectPushConstantData

class Core/Vixen.Shaders/EffectData.cs:164
csharp
public record class EffectPushConstantData

One 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 Stages

    Which stages read it.

  • public int Offset

    Where the range starts, in bytes.

  • public int Size

    How many bytes it is.

  • public EffectPushConstantMember[]? Members

    What 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