public static class StageBuiltInsThe values a stage receives from the pipeline rather than from a vertex buffer or an earlier stage.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
One table, shared by the binder, both backends and the reflection, for the reason BindingPlan and StreamPlan exist: a built-in's name, its type and its spelling in each target are one decision, and four copies of it would be four chances to disagree. The binder rejects an unknown compute semantic here, so a backend never has to decide what to do with one.
Reached through the [Semantic("…")] attribute that already carries SV_Position and SV_Target — a built-in is the same mechanism rather than a new one.
The stage is part of the identity. A vertex stage's parameters are mostly attributes the host feeds and a compute stage's are all built-ins, so the same name means different things about where a location comes from; keying on (semantic, stage) is what lets the vertex table stay open — an unrecognised semantic there is POSITION or TEXCOORD0, an ordinary attribute — while the compute one stays closed.
Methods (2)
public static string Names(ShaderStage stage)The recognised semantics for a stage, in the order a diagnostic should list them.
public static StageBuiltInInfo? Of(string? semantic, ShaderStage stage)What a semantic names on this stage, or null when it names no built-in.
Used by (5)
- GlslEmitterVixen.Raven
- SourceNamedTypeSymbolVixen.Raven
- SpirvEmitterVixen.Raven
- StageBuiltInTestsVixen.Raven.Tests
- StreamPlanVixen.Raven