Pipeline for the selection-outline pass: expands each vertex outward along its normal (see
model_outline_vs.wgsl) and rasterizes only the expanded shell’s back faces (cull_mode: Front), which are hidden behind the real mesh everywhere except right at the silhouette rim.
No texture binding is needed, so group 0 is skipped, matching how the immediate/shape
pipelines skip unused groups.
Pipeline for the world-sprite selection outline: a flat, enlarged, solid-color quad drawn
behind the real sprite (see DrawPass::draw_world_sprite_outline). Unlike the model outline’s
“expand along normal” shell trick — which doesn’t help a flat quad, since every vertex shares
the same normal — the enlargement happens entirely on the CPU by widening the quad’s local
extents, so this pipeline only needs plain world-space positions. Reuses
model_outline_fs.wgsl’s fixed solid-blue output.