GLB Support

This page has technical information on GLB files.

What's Supported

Feature
Supported?
What it means

Multi-mesh

✅ Yes

You can include multiple separate objects (e.g. a table and a chair) in one GLB.

Multi-material

✅ Yes

Different parts of your model can use different materials (e.g. one shiny, one matte).

Texture atlasing

✅ Yes

You can pack multiple materials' textures into one big image, as long as each material's UVs occupy a distinct region of that image.

Adjacent UV regions

✅ Yes

Two materials' UV regions can touch along a shared edge (e.g. one in the left half, one in the right half) — touching is not the same as overlapping.

Not Supported (at the moment)

Issue
Why we reject it

External textures

Your GLB must be fully self-contained — every texture has to be embedded. We will reject GLBs that reference textures by external URL or filename.

Untextured materials

Every material in your GLB must have at least one texture (base color, normal, metallic-roughness, occlusion, or emissive). Materials with no textures are rejected.

Broken texture references

Texture slots that point to a missing texture, missing image, or empty image data are rejected.

A separate texture file alongside a GLB

GLB uploads must embed textures. Sending a GLB plus a separate texture file is rejected because the embedded textures would already be the source of truth.


Things to know (currently allowed but may surprise you)

These pass our validator today, but you should be aware of them:

  • Tiled / out-of-[0,1] UVs. UVs are evaluated as raw values, not wrapped into the [0,1] square. A material whose UVs go from 0 to 5 (because it tiles a texture) will be treated as occupying that full 0–5 range and is very likely to collide with another material — so tiling-style UVs are effectively not supported.

Last updated