InternalCreates a new DrawOp.
Two constructor forms are accepted for convenience:
new DrawOp(technique, renderPass) — single-variant opnew DrawOp(variants, renderPass) — multi-variant opThe legacy positional form new DrawOp(technique, renderPass, withNormals)
also still works for backward compatibility with call sites that haven't
been migrated to the variants object.
ReadonlyrenderThe render pass in which this draw operation is executed.
ReadonlytechniqueThe default (flat-shaded, no-UVs) draw technique. Always present; used as the fallback when no closer variant is supplied.
ReadonlytechniqueSmooth-shaded, no-UVs variant.
ReadonlytechniqueSmooth-shaded triplanar variant.
ReadonlytechniqueSmooth-shaded, with-UVs variant.
ReadonlytechniqueFlat-shaded triplanar variant (no per-vertex normals).
ReadonlytechniqueFlat-shaded, with-UVs variant.
A draw operation (DrawOp) binds one or more DrawTechniques to a specific render pass.
DrawOp is intentionally lightweight: it contains no rendering logic of its own — it just routes a MeshBatch to the right technique variant and forwards the draw call.
Variant axes (per-batch flags consulted by _select):
hasNormals— batch carries per-vertex normalshasUVs— batch carries per-vertex UV coordinatesLambert colour ops typically supply 4 variants. Edge, silhouette, pick, shadow-depth and snap ops only need the flat/no-UVs default and ignore both flags.