Parses DDS texture headers in Node and the browser.
This was adapted from @toji's wonderful webgl-texture-utils.
Currently this only supports a limited range of common DDS formats:
See test/index.js for an example in Node, or demo/index.js for a WebGL compressed texture example.
Pull requests welcome.
var parse = require('parse-dds')
var buffer = new Uint8Array(... DDS file ...)
var dds = parse(buffer)
console.log(dds.format) // 'dxt1'
console.log(dds.shape) // [ width, height ]
console.log(dds.images) // [ ... mipmap level data ... ]
// get the compressed texture data for gl.compressedTexImage2D
var image = dds.images[0]
var texture = new Uint8Array(buffer, image.offset, image.length)
npm install parse-dds --save-dev
dds = parse(arrayBuffer)Parses an ArrayBuffer and returns the DDS headers for that file.
The returned values:
shape an array representing the [ width, height ] of the textureflags the DDS bit flags stored in the fileformat a string, either 'dxt1', 'dxt3', 'dxt5' or 'rgba32f'images a list of information to extract sub-arrays for each mipmap levelcubemap a boolean indicating whether the file contains a cubemap imageEach image has the form:
{
shape: [ width, height ], // size of this mipmap level
offset: x, // byte offset into the input buffer
length: len, // length of this mipmap level image data
}
MIT, see LICENSE.md for details.