Files
bgfx/3rdparty/meshoptimizer/js/meshopt_decoder.js
Бранимир Караџић e8422851c5 Updated meshoptimizer.
2019-07-25 21:53:38 -07:00

71 lines
8.3 KiB
JavaScript

// This file is part of meshoptimizer library and is distributed under the terms of MIT License.
// Copyright (C) 2016-2019, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
var MeshoptDecoder = (function() {
"use strict";
var wasm = "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";
var memory = new WebAssembly.Memory({
initial: 1
});
var heap = new Uint8Array(memory.buffer);
var brk = 32768; // stack top
var sbrk = function(size) {
var old = brk;
brk += size;
if (brk > heap.length) {
memory.grow(Math.ceil((brk - heap.length) / 65536));
heap = new Uint8Array(memory.buffer);
}
return old;
};
var imports = {
env: {
memory: memory,
_emscripten_memcpy_big: function(d, s, n) {
heap.set(heap.subarray(s, s + n), d);
},
}
};
var instance = {};
var promise =
(typeof fetch === 'function'
? fetch('data:application/octet-stream;base64,' + wasm)
.then(response => response.arrayBuffer())
: Promise.resolve(Buffer.from(wasm, 'base64').buffer))
.then(bytes => WebAssembly.instantiate(bytes, imports))
.then(result => instance = result.instance);
var decode = function(fun, target, count, size, source) {
var tp = sbrk(count * size);
var sp = sbrk(source.length);
heap.set(source, sp);
var res = fun(tp, count, size, sp, source.length);
target.set(heap.subarray(tp, tp + count * size), 0);
sbrk(tp - sbrk(0));
if (res != 0) {
throw new Error("Malformed buffer data: " + res);
}
};
return {
ready: promise,
decodeVertexBuffer: function(target, count, size, source) {
decode(instance.exports["_meshopt_decodeVertexBuffer"], target, count, size, source);
},
decodeIndexBuffer: function(target, count, size, source) {
decode(instance.exports["_meshopt_decodeIndexBuffer"], target, count, size, source);
}
}
})();
if (typeof exports === 'object' && typeof module === 'object')
module.exports = MeshoptDecoder;
else if (typeof define === 'function' && define['amd'])
define([], function() {
return MeshoptDecoder;
});
else if (typeof exports === 'object')
exports["MeshoptDecoder"] = MeshoptDecoder;