Stitches a set of block textures together into a texture atlas
The texture names are looked up from voxel-registry and the texture data from artpacks.
For an example, run npm start
or try the live demo.
voxel-stitch uses atlaspack, which supports packing textures of arbitrary rectangular shapes onto a two-dimensional canvas. The mip maps are generated using rect-mip-map.
(Before version 0.3, voxel-stitch would generate a 5-dimensional ndarray is in a format suitable for gl-tile-map / tile-mip-map, which required fixed texture sizes.)
Load using voxel-plugins, options:
artpacks
: Array of resource pack URL(s) to load for textures, defaults to ProgrammerArt.atlasSize
: Texture atlas width and height, in pixels. Note not all graphics cards support all texture dimensions, but WebGL stats showsMAX_TEXTURE_SIZE
of 2048 or smaller is supported by 100% of WebGL users.debug
: If true, writes out each mip level to the document for debugging.
Methods:
stitch()
: Buildthis.atlas
from all blocktexture
properties in voxel-registry.createGLTexture(gl, cb)
: Creates a gl-texture2d with the GL context, callscb(err, tex)
when complete, comparable to gl-tile-map.preloadTexture(name)
: Addsname
to the list of textures to load institch()
. Textures listed in the voxel-registrytexture
property are automatically loaded; you can add additional textures for custom non-voxel use here.getTextureUV(name)
: Get UV coordinates for a texture (without padding), for custom usage withthis.texture
Events (voxel-stitch is an EventEmitter and emits the following):
added
: Added one texture to the atlas.addedAll
: All of the textures institch()
were added.updateTexture
: All textures were added andvoxelSideTextureIDs
has been populated.
Variables:
atlas
: The atlaspack instance.texture
: The gl-texture2d instance.voxelSideTextureIDs
: ndarray of (blockIndex,side) to texture ID, for ao-mesher or voxel-mesher.voxelSideTextureSizes
: ndarray of (blockIndex,side) to lg(texture size), for voxel-mesher.
MIT