crowd_pose.computeShader
Poses the Odeon Marisol's 1,412-strong audience on the GPU, one thread per member. It reads a static per-member seed block — seat foot point, facing, four randoms and three wave delays — plus the film's global wave fronts as params, and writes the four world matrices each member…
crowd_pose
Poses the Odeon Marisol's 1,412-strong audience on the GPU, one thread per
member. It reads a static per-member seed block — seat foot point, facing, four
randoms and three wave delays — plus the film's global wave fronts as params,
and writes the four world matrices each member is drawn with (torso, head, left
hand, right hand) together with the four vec4 shader lanes their material
reads.
Four waves cross the room and each carries a per-member delay and rate, so
every one of them arrives as a gradient rather than a switch: occupancy (the
seats fill, resolving row by row), attention (heads turn to hold the lens),
rising (the house comes to its feet from the front row backward) and
applause (hands out of phase, drifting into unison as unison collapses
both the rate spread and the offset spread onto one clock).
Dispatched once per rendered frame by the figures component off the film
clock; the transform buffers it writes are the ones
renderer.mesh.drawInstanced draws the population from, so the values never
touch the CPU.
Scoped to this part · feeds back into the world's score.