verve.gl — morph targets (blend shapes)

A 5×5 subdivided plane with three blend shapes: Bulge (centre pushed up), Wave (sine deformation along X), and Twist (rotation around Y proportional to Z). A baked LINEAR weight animation cycles Wave and Twist; Bulge is left to the runtime control below. The morph texture is RGBA16F (width=vertex_count, height=target_count×2), sampled per-vertex in the shader (variant_morph = 1<<14). Renders on WebGL2 and WebGPU.

The baked clip animates Wave and Twist. “Bulge +” drives target 0 at runtime (morph_runtime_set[0]=true), adding a centre bulge on top of the ongoing animation; “Reset” releases it. Runtime weights override the baked clip per index. Deferred: skinned+morph, TANGENT deltas, >8 active targets.