Packages a flat array of 2D UV coordinates into a Float32Array for
GPU upload.
Stored uncompressed (RG32F) so tiling textures (UVs outside [0, 1])
round-trip through the GPU intact — the shader applies a per-fragment
fract() before transforming into the per-mesh atlas sub-rect, which
gives correct wrap-around for tiled materials without losing the
integer part to a quantisation clamp.
Memory cost: 8 bytes/vertex (vs 4 bytes for the previous RG16UI form).
For any vertex-heavy model the position+normal data dominates anyway.
Pass-through if the input is already a Float32Array; otherwise copies
to one.
Packages a flat array of 2D UV coordinates into a
Float32Arrayfor GPU upload.Stored uncompressed (RG32F) so tiling textures (UVs outside
[0, 1]) round-trip through the GPU intact — the shader applies a per-fragmentfract()before transforming into the per-mesh atlas sub-rect, which gives correct wrap-around for tiled materials without losing the integer part to a quantisation clamp.Memory cost: 8 bytes/vertex (vs 4 bytes for the previous RG16UI form). For any vertex-heavy model the position+normal data dominates anyway.
Pass-through if the input is already a
Float32Array; otherwise copies to one.