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.