Follow-up from the <Decal> roadmap (previously tracked in packages/cientos/src/core/abstractions/Decal/ROADMAP.md).
Use case
Today each decal owns its own material, so even after geometry batching draw calls won't collapse — different materials = different draw calls.
Approach
Pack every decal texture into a single atlas (e.g. CanvasTexture) and drive per-decal UV offsets from the atlas mapping. All decals share one material.
- Re-pack on add/remove. Use a free-rect allocator for incremental updates.
- JSON layout schema gains a
uvRect per decal.
Friction
Follow-up from the
<Decal>roadmap (previously tracked inpackages/cientos/src/core/abstractions/Decal/ROADMAP.md).Use case
Today each decal owns its own material, so even after geometry batching draw calls won't collapse — different materials = different draw calls.
Approach
Pack every decal texture into a single atlas (e.g.
CanvasTexture) and drive per-decal UV offsets from the atlas mapping. All decals share one material.uvRectper decal.Friction
magFilter,colorSpace,anisotropy) shared across all decals in the atlas.