Texture atlas
One large image holding many small textures, letting compatible objects share a material and cut texture switches and draw calls.
See it
What it is
A texture atlas packs many smaller texture regions into one large image. Each mesh's UV coordinates point at its own rectangle inside that image. When those meshes can also share one material and one draw operation, the GPU switches textures less often and the renderer can batch or merge more geometry.
Reach for an atlas when a scene contains many small props, tiles, glyphs, or repeated assets that use the same shader settings. Game interfaces and tile-based worlds have used the same sprite-sheet idea for decades. TexturePacker does the layout for sprite work, and Blender's Pack Islands does it for UVs. It trades some asset-pipeline complexity for fewer material changes and draw calls.
Gotcha: placing images in one file does not merge draw calls by itself. The objects must share compatible render state and be instanced, merged, or otherwise batched. Mipmaps and linear filtering can also pull color across tile borders, so leave padding, extrude each tile's edge pixels, and avoid ordinary repeat wrapping on a subregion unless the shader remaps its UVs.
Ask AI for it
Pack these prop textures into one 2048px atlas with 8px padding and extruded edge pixels at every mip level. Rewrite each three.js BufferGeometry UV range to its atlas rectangle, give all props one MeshStandardMaterial, and merge static meshes with BufferGeometryUtils.mergeGeometries. Verify the result by comparing renderer.info.render.calls before and after.