forked from 1b-agent/fieldcraft-upstream
A fluid step's result is a field per cell of a regular grid, not per node, so the contour machinery had nothing to draw it with and the viewport showed nothing after a fluid solve. Add `render::flow`, CPU display data for such fields with no solver dependency (render stays at L1): an axis-aligned slice through the cells as triangles carrying cell-centred values (interpolated between the two layers either side, outer centres moved to the domain faces, cells inside obstacles left out), the field sampled at a surface beside the fluid cells for colouring an obstacle, and streamlines traced through the trilinear velocity field by the midpoint rule, seeded on a lattice upstream of the obstacles. Seeds, steps and the total number of points are capped so hostile counts cost a bounded time. `contour::banded` fans band pieces into scene triangles for the callers. Part of #193.