Soft-Body Collision — WebGPU v6 activity recipe, 2026-10-24 Uses existing createGPUProgram/compileGPUProgram/showGPUSurface commands. No new engine build or scene-specific Unity commands. Source is self-contained in the saved activity; no RunPod or hidden scene checkpoint is needed to replay it. Model 1.2 m cube, 343 nodes and 1296 constant-strain tetrahedra. Structured cells split into six tetrahedra with consistent shared faces; positive rest volumes, lumped mass, inverse rest matrices and node/element adjacency are created once in JS. Young modulus 8000 Pa, Poisson ratio .3, density 200 kg/m^3. Initial downward velocity 1 m/s, center y=1.15 m, 8-degree tilt. Gravity -9.81 m/s^2. Compressible neo-Hookean energy: W = mu/2 (tr(F^T F)-3) - mu ln J + lambda/2 (ln J)^2. P = mu(F-F^-T) + lambda ln(J) F^-T; sigma = P F^T / J. Element force is -V P Dm^-T, with the fourth nodal force closing the balance. All moving positions, velocities, force evaluation and stress stay on the GPU. Passes SoftElastic: read shared positions, write one element's four nodal forces. SoftIntegrate: gather incident element forces; symplectic Euler with lumped mass. Frictionless y=0 plane contact projects crossing nodes to y=0 and removes downward normal velocity. The resulting m*delta(v) is the measured normal contact impulse. There is no contact restitution parameter; rebound comes from stored elasticity. Contact projection dissipates energy; it is not an exact continuum impact solution. SoftStress: recalculate stress at the NEW positions for coherent rendering. SoftField: volume-weighted incident-element von Mises stress at nodes for display. SoftStatistics: bounded small-test GPU reduction for height, contact, energy and minimum volume ratio. No float atomics and no full-state copies or CPU motion loop. Fixed dt=.0005 s. Playback .05, .1 or .25 changes wall-clock speed, not dt. CPU reads 16 diagnostic scalars at most roughly 3 times/second; simulation remains on GPU. This test pauses after about 1.2 simulated seconds (UI monitoring cadence). Mesh button shows actual boundary triangles; internal tetrahedra are not drawn. Color legend is fixed 0..8+ kPa, blue->white->red. Above 8 kPa saturates red; numeric peak stress remains unclipped and is per element, not the averaged display field. Validation (Unity Metal GPU, before browser run) Rigid rotation/translation: zero stress within .15 Pa. Uniform 5% stretch: stress agrees with analytical constitutive result within .2%. Internal forces balance; contact impulse balances total vertical momentum with gravity (maximum residual .0024 kg m/s). No negative-height nodes or inverted tets. Coarse 384 tets: minimum height .7539026 m. Default 1296 tets: .7452633 m. Half dt, same mesh: .7450141 m. Peak stress 12.174 vs 12.135 kPa. Minimum sampled volume ratio J .310.. .370 across tests; no J<.1 safety stop. Peak total energy did not exceed the initial energy tolerance. At default step 800, t=.400 s: height .7452633 m, peak stress 8.889744 kPa, contact 11.938785 kN. Chrome matched these readouts to displayed precision. Limits One generated soft solid against an analytic plane. No arbitrary GLB volume mesh, friction, fracture, plasticity, incompressible material treatment, self-contact, soft/soft collision or two-way coupling to CS Rigidbody objects. Display floor is a second GPU program, not a Unity collider. Do not assume solid handles are ordinary CS objects. The J<.1 latch freezes integration; it does not repair bad parameters. Validate again before changing material, geometry, dt or loads. Small serial statistics reductions are sufficient for 1296 tets, not a claim of large-model scalability. Stress peaks near contact depend on mesh and contact law. Sources for equations and stability (not copied code): https://mooseframework.inl.gov/docs/doxygen/modules/classComputeNeoHookeanStress.html https://www.mdpi.com/2673-3161/3/2/31 https://cardinal.cels.anl.gov/modules/solid_mechanics/CriticalTimeStepMath.html Files recipe.js — JS topology and runtime WGSL passes. activities/soft-body-collision.js — complete saved editor source with modern UI. Assets/Editor/CSScienceTests/SoftBody.compute — native GPU verification equations. Assets/Editor/CSSoftBodyTests.cs — native tests through production CS command route. unity-results.txt, native-checkpoints.csv — measured native test evidence.