Vixen
dd8b0a81
csharp
public record class StandardFrameAsset

The engine-owned frame, as one node: docs/plan/39's !StandardFrame.

Read the guide page for this →

Remarks

Expands at build time into the same node graph a hand-authored document would contain — sample 13's Frame.vxcompositor at full knobs, the bare sky/opaque/tonemap chain at none. The knobs are few and semantic on purpose: they say what the game wants, never how the frame is wired, and everything the expansion emits (resource extents, load actions, seat/publisher pairs, pass order) is the invariant the 2026-08-04 audit paid for, encoded once here instead of transcribed per project.

The type lives in the effect set rather than beside the compositor schema, and not by accident: the expansion emits SkyAsset, TonemapAsset and their siblings, which Vixen.Rendering must not reference — the builder reaches node kinds it does not know through ISceneRendererFactory, and this node reaches the builder the same way, through PostEffectFactory implementing ICompositorAssetTransformer. Registering the factory a host already registers is therefore the whole installation.

⚠ One fact stays the host's, exactly as it is for a hand-authored frame. The caster stages are extraction's: a host whose objects should cast adds "Shadow" (and "Motion" for TAA) to GraphicsOptions.CasterStages, because a frame document cannot decide what an object is extracted as.

The ambient split used to be the second, and is not any more. gi above Off emits the split targets and the combine, and ForwardPlus.SplitOutputs — what makes the shading pass actually write those targets — is read back off them: CompositorBuilder pushes it to the material features from the emitted Main pass's four colourTargets, the same way it pushes CascadeCount from the shadow node. Until it did, the half a document could not say was set in two sample projects and nowhere else, and a frame missing it rendered pixel-identically to an unsplit one — see RenderPassRenderer.SplitOutputsKey.

Artistic values are deliberately neutral — the shipped node defaults, untouched — because look belongs to the .vxlook profile (Look), not to pipeline structure: it lands on the emitted nodes through the volume fold at run time, so editing it relights the same expanded document with nothing rebuilt. What is not neutral is structure: depth read-only on the velocity and particle passes, back-face culling and zero raster bias on the caster stage, the per-target load lists, the TAA-before-fog ordering. Those are correctness, and they are this type's whole point.

Fields and properties (13)

  • public string Name

    The node's name, for debug groups and for a human reading the file.

  • public bool Enabled

    Whether the node runs.

  • public QualityTier? Quality

    The scalability tier the numeric sub-knobs are taken from, or null for the host's pick.

  • public RenderQualityAsset? Preset

    Per-document quality overrides — the top layer of doc 39's waterfall.

  • public LookAsset? Look

    The project's look profile — the artistic base under the volume stack.

  • public ShadowMode Shadows

    Sun and lamp shadows.

  • public GiMode Gi

    The global-illumination stack.

  • public ReflectionsMode Reflections

    Reflections.

  • public AntialiasingMode Antialiasing

    Antialiasing — and, through it, whether the frame has motion vectors.

  • public ExposureMode Exposure

    Whether the frame meters itself or trusts the camera.

  • public bool Particles

    Whether the additive particle pass and its stage are emitted.

  • public string Output

    The resource the finished frame is written to.

  • public StandardFrameExtensions Extensions

    The project's own nodes, spliced at the three named seams.

Used by (23)

  • BakedMaterialImageTestsVixen.Graphics.Golden.Tests
  • DiffuseModelImageTestsVixen.Graphics.Golden.Tests
  • GraphMaterialImageTestsVixen.Graphics.Golden.Tests
  • LayeredMaterialImageTestsVixen.Graphics.Golden.Tests
  • ParallaxMaterialImageTestsVixen.Graphics.Golden.Tests
  • RenderQualityTestsVixen.Rendering.PostFx.Tests
  • SmaaTestsVixen.Rendering.PostFx.Tests
  • StandardFrameVixen.Rendering.PostFx
  • StandardFrameExposureDeviceTestsVixen.Graphics.Golden.Tests
  • StandardFrameTestsVixen.Rendering.PostFx.Tests
  • StandardFrameTierImageTestsVixen.Graphics.Golden.Tests
  • TerrainCasterTestsVixen.Rendering.Terrain.Tests
  • TerrainNodeTestsVixen.Rendering.Terrain.Tests
  • TerrainVelocityTestsVixen.Rendering.Terrain.Tests
  • TierSceneVixen.Graphics.Golden.Tests
  • TypeRegistrationVixen.Rendering.PostFx
  • Vixen_Rendering_PostFx_StandardFrameAssetSerializerVixen.Rendering.PostFx
  • CompositorWriterTestsVixen.Editor.Assets.Tests
  • FrameDocumentTestsVixen.Editor.AssetEditors.Tests
  • HostedRendererTestsVixen.App.Tests
  • StandardFrameDocumentVixen.Editor.AssetEditors
  • StandardFrameSettingsVixen.Editor.AssetEditors
  • StandardFrameViewVixen.Editor.AssetEditors