mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-19 05:23:00 +01:00
71 lines
8.3 KiB
JavaScript
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; |