ShaderCompiler::FixedFunctionBlock struct

One captured "void fixed_function([<target>[, <target>...]]) { ... }" block.

The body is captured verbatim (like the vertex()/fragment() entry bodies) and transpiled to C++ offline by the fixed-function emitter (ConsoleFixedFunction) — it never becomes part of the lowered GLSL stages, so a shader that carries a block emits byte-identical per-shader headers.

Public variables

std::vector<FixedFunctionTarget> Targets
Which backends the block implements, in declaration order — EMPTY for the generic block.
std::vector<SourceLine> Lines
Raw (unpreprocessed) statement lines of the block body.
std::int32_t Line
1-based line number of the block header

Variable documentation

std::vector<FixedFunctionTarget> ShaderCompiler::FixedFunctionBlock::Targets

Which backends the block implements, in declaration order — EMPTY for the generic block.

A comma-separated target list lets one block serve several backends, which is what shaders whose implementation for two consoles is literally the same code use instead of keeping two byte-identical copies. Capabilities are then validated against the INTERSECTION of the listed targets, so a shared block can only use what every one of them can do.