pub fn assemble(h: &HeightGpu, t: &TextureGpu) -> TerrainGpuExpand description
Pack the two layer structs into the single 56-byte TerrainGpu the realize
and bake shaders read. Field order/positions are unchanged — the split is
CPU-side ownership only, so no shader or SPIR-V change is needed.