public record class EffectDataOne compiled variant of a shader, in a form that outlives the process that compiled it and needs nothing from the compiler to read.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
This is what makes "zero runtime shader compilation" a structural claim rather than a policy. Raven's own .rvnfx already holds bytecode and reflection — but CompiledEffectReader lives in the compiler assembly, so a runtime that read one would link the parser, the lowerer and both backends. Every tier below the in-memory dictionary reads this instead: the disk cache, the baked bundle and the answer that comes back over TCP are all the same record, and translating a .rvnfx into it happens once, on the build side, in the one place that is allowed to know both.
It is device-independent on purpose. Descriptor set layouts and a pipeline layout are handles owned by a device that did not exist when this was baked, so what is stored is the description and EffectLoader creates the handles. Baking handles would make a bundle valid for exactly one run of one process.
SourceHash and Target are carried but not part of the identity: two artefacts for the same EffectKey from different sources are the same variant, and the hash is what says whether one of them is stale.
Fields and properties (11)
public string ShaderNameThe shader this is a variant of.
public EffectPermutationValue[] PermutationsThe permutation values that selected it — only the keys it read.
public EffectComposeBinding[] CompositionWhat filled its compose slots.
public string TargetThe backend that produced the modules, as Raven's TargetBackends names it.
public string SourceHashA hash of the source it was compiled from, for detecting a stale artefact.
public EffectStageData[] StagesThe compiled stages.
public EffectBindingData[] BindingsEvery resource it binds.
public int ConstantBufferSizeHow many bytes its uniform block needs.
public EffectParameterData[] ParametersEvery value in that block, one entry per value.
public EffectPushConstantData[] PushConstantsThe push-constant ranges its pipeline layout has to declare.
public EffectVertexInputData[] VertexInputsThe vertex attributes its vertex stage reads, with the locations it reads them at.
Methods (1)
public EffectKey ToKey()The key that selects this variant.
Used by (32)
- BindlessSamplingDeviceTestsVixen.Graphics.Golden.Tests
- BindlessSetLayoutTestsVixen.Shaders.Tests
- BufferTransferDeviceTestsVixen.Graphics.Golden.Tests
- ClusterCullingDeviceTestsVixen.Graphics.Golden.Tests
- ClusteredShadingDeviceTestsVixen.Graphics.Golden.Tests
- CompilerVixen.Graphics.Golden.Tests
- CountedVixen.Shaders.Tests
- DistanceFieldDeviceTestsVixen.Graphics.Golden.Tests
- EffectBundleVixen.Shaders
- EffectCacheTestsVixen.Shaders.Tests
- EffectCompileResponseVixen.Shaders
- EffectDiskCacheVixen.Shaders
- EffectLoaderVixen.Shaders
- EffectStoreVixen.Shaders
- ForwardFrameTestsVixen.Rendering.Tests
- IEffectSourceVixen.Shaders
- IrradianceShadingDeviceTestsVixen.Graphics.Golden.Tests
- RemoteEffectSourceVixen.Shaders
- ScreenProbeUpsampleCompileTestsVixen.Graphics.Golden.Tests
- TypeRegistrationVixen.Shaders
- ViewCullingDeviceTestsVixen.Graphics.Golden.Tests
- Vixen_Shaders_EffectBundleSerializerVixen.Shaders
- Vixen_Shaders_EffectCompileResponseSerializerVixen.Shaders
- Vixen_Shaders_EffectDataSerializerVixen.Shaders
- ContentMountTestsVixen.App.Tests
- EffectBundleBuilderVixen.ShaderCompiler
- EffectCompilerTestsVixen.ShaderCompiler.Tests
- EffectTranslatorVixen.ShaderCompiler
- PermutationClosureVixen.ShaderCompiler
- PermutationClosureResultVixen.ShaderCompiler
- RavenEffectCompilerVixen.ShaderCompiler
- ShaderCompilerServiceTestsVixen.ShaderCompilerService.Tests