ReadonlygraphThe "screen"-domain §60 graph — validated at addPass (§85).
ReadonlykindRequired, and the only value — the discriminant.
Optional ReadonlytexturesAdditional sampled inputs, by the sampler names the graph uses —
EffectRenderPass.source carries exactly one surface, and it is bound to
the graph's "source" sampler; a graph naming more declares each here,
which is precisely what keeps the pass's full sample set visible to
RenderGraph.validate().
Optional ReadonlyuniformsValues for the graph's uniform nodes, by name — the per-pass analogue
of NodeMaterial.setUniform. Optional per uniform: an unset uniform
reads as zeroes on every backend (GL's own initial value). Validated
against the graph's reflection at addPass (§85).
§70's "custom full-screen passes", as data (§60; RFC 0001, R-14) — a shader graph in the
"screen"domain over the pass's declared inputs.The graph keeps the pass checkable — the whole point
A
texturenode names its sampler, and every name resolves against the pass's declared inputs:"source"is EffectRenderPass.source, and any other name must appear in GraphEffect.textures. Every texture a graph samples is therefore enumerable from the pass, which is what letsRenderGraph.validate()run its feedback and ordering checks over a graph effect exactly as over a built-in one — so aGraphEffectpass does not emit the"opaque"info issue aCustomRenderPassdoes. That asymmetry is R-5/R-6's recorded principle applied in the affirmative: the escape hatch reports its opacity because the graph cannot see inside it; a node graph does not, because the graph can. A shader source string is what would have destroyed this, and none exists at any tier (§96; RFC 0001).The graph must be
"screen"-domain: it may read"uv"(the pass's own normalized coordinate),uniformnodes (valued per pass, below),texturenodes, andtime(§9 render time) — and nothing of a mesh, which a full-screen pass does not have.