129 lines
47 KiB
JavaScript
129 lines
47 KiB
JavaScript
|
const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;
|
||
|
|
||
|
let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
||
|
|
||
|
cachedTextDecoder.decode();
|
||
|
|
||
|
let cachegetUint8Memory0 = null;
|
||
|
function getUint8Memory0() {
|
||
|
if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {
|
||
|
cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);
|
||
|
}
|
||
|
return cachegetUint8Memory0;
|
||
|
}
|
||
|
|
||
|
function getStringFromWasm0(ptr, len) {
|
||
|
return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
|
||
|
}
|
||
|
|
||
|
const heap = new Array(32).fill(undefined);
|
||
|
|
||
|
heap.push(undefined, null, true, false);
|
||
|
|
||
|
let heap_next = heap.length;
|
||
|
|
||
|
function addHeapObject(obj) {
|
||
|
if (heap_next === heap.length) heap.push(heap.length + 1);
|
||
|
const idx = heap_next;
|
||
|
heap_next = heap[idx];
|
||
|
|
||
|
heap[idx] = obj;
|
||
|
return idx;
|
||
|
}
|
||
|
|
||
|
function getObject(idx) { return heap[idx]; }
|
||
|
|
||
|
function dropObject(idx) {
|
||
|
if (idx < 36) return;
|
||
|
heap[idx] = heap_next;
|
||
|
heap_next = idx;
|
||
|
}
|
||
|
|
||
|
function takeObject(idx) {
|
||
|
const ret = getObject(idx);
|
||
|
dropObject(idx);
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
let cachegetFloat32Memory0 = null;
|
||
|
function getFloat32Memory0() {
|
||
|
if (cachegetFloat32Memory0 === null || cachegetFloat32Memory0.buffer !== wasm.memory.buffer) {
|
||
|
cachegetFloat32Memory0 = new Float32Array(wasm.memory.buffer);
|
||
|
}
|
||
|
return cachegetFloat32Memory0;
|
||
|
}
|
||
|
|
||
|
let WASM_VECTOR_LEN = 0;
|
||
|
|
||
|
function passArrayF32ToWasm0(arg, malloc) {
|
||
|
const ptr = malloc(arg.length * 4);
|
||
|
getFloat32Memory0().set(arg, ptr / 4);
|
||
|
WASM_VECTOR_LEN = arg.length;
|
||
|
return ptr;
|
||
|
}
|
||
|
|
||
|
let cachegetInt32Memory0 = null;
|
||
|
function getInt32Memory0() {
|
||
|
if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {
|
||
|
cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);
|
||
|
}
|
||
|
return cachegetInt32Memory0;
|
||
|
}
|
||
|
|
||
|
function getArrayF32FromWasm0(ptr, len) {
|
||
|
return getFloat32Memory0().subarray(ptr / 4, ptr / 4 + len);
|
||
|
}
|
||
|
/**
|
||
|
* Generates vertex tangents for the given position/normal/texcoord attributes.
|
||
|
* @param {Float32Array} position
|
||
|
* @param {Float32Array} normal
|
||
|
* @param {Float32Array} texcoord
|
||
|
* @returns {Float32Array}
|
||
|
*/
|
||
|
export function generateTangents(position, normal, texcoord) {
|
||
|
try {
|
||
|
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
||
|
var ptr0 = passArrayF32ToWasm0(position, wasm.__wbindgen_malloc);
|
||
|
var len0 = WASM_VECTOR_LEN;
|
||
|
var ptr1 = passArrayF32ToWasm0(normal, wasm.__wbindgen_malloc);
|
||
|
var len1 = WASM_VECTOR_LEN;
|
||
|
var ptr2 = passArrayF32ToWasm0(texcoord, wasm.__wbindgen_malloc);
|
||
|
var len2 = WASM_VECTOR_LEN;
|
||
|
wasm.generateTangents(retptr, ptr0, len0, ptr1, len1, ptr2, len2);
|
||
|
var r0 = getInt32Memory0()[retptr / 4 + 0];
|
||
|
var r1 = getInt32Memory0()[retptr / 4 + 1];
|
||
|
var v3 = getArrayF32FromWasm0(r0, r1).slice();
|
||
|
wasm.__wbindgen_free(r0, r1 * 4);
|
||
|
return v3;
|
||
|
} finally {
|
||
|
wasm.__wbindgen_add_to_stack_pointer(16);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export const __wbindgen_string_new = function(arg0, arg1) {
|
||
|
var ret = getStringFromWasm0(arg0, arg1);
|
||
|
return addHeapObject(ret);
|
||
|
};
|
||
|
|
||
|
export const __wbindgen_rethrow = function(arg0) {
|
||
|
throw takeObject(arg0);
|
||
|
};
|
||
|
|
||
|
//
|
||
|
|
||
|
const wasmDataURI = 'data:application/octet-stream;base64,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TQ0WIARBAnRqIgQgBCgCAEEBajYCACACQQRqIQIgA0F/aiIDDQALCyABQdgFaigCACABKALgBUUNFUEAIQJBADYCAEEBIQQDQCABQfgCaiABQdgFahBjIAEoAvwCIgMgBEF/aiIHTQ0UIAEoAvgCIAJqKAIAIQMgAUHwAmogAUHoBWoQYyABKAL0AiINIAdNDRMgASgC8AIgAmooAgAhByABQdgFaigCACENIAEoAuAFIhEgBE0NEiACIA1qQQRqIAMgB2o2AgAgAkEEaiECIARBAWoiBEGAEEcNAAsgCEEJTwRAQQAhBCABQZgGakEAQQRBCCAGGyALG2ohCCAFIQMDQCABQegCaiADKAIAEGEgAUGYBmogACABKALoAiABKALsAhAxIDAgLiAIKgIAEDwhAiABQeACaiABQdgFahBjIAEoAuQCIgYgAk0NEiABQcgFaigCACABKALQBSINIAJBAnQiBiABKALgAmooAgAiC00NESABQdgCaiABQfgFahBjIAEoAtwCIg0gAk0NECALQQJ0aiABKALYAiAGaigCAEECdGogBDYCACABQfgFaigCACELIAEoAoAGIgcgAk0NDyAGIAtqIgIgAigCAEEBajYCACADQQRqIQMgCiAEQQFqIgRHDQALCyABQdACaiABQegFahBjIAEoAtQCRQ0MIAEoAtACKAIAIQNBBCECQQEhBANAIAFByAJqIAFB6AVqEGMgASgCzAIiCiAETQ0MIAMgASgCyAIgAmooAgBJBEAgAUHAAmogAUHoBWoQYyABKALEAiIDIARNDQwgASgCwAIgAmooAgAhAwsgAkEEaiECIARBAWoiBEGAEEcNAAsgAUHgA2oiAkIANwIAIAJBCGpCADcCACABQaAGaiABQegDaikDADcDACABIAEpA+ADNwOYBiABQYgGaiABQZgGaiADEEEgASgCiAYhCiABKAKQBiELQQAhBgNAIAFBuAJqIAFB2AVqEGMgASgCvAIiAyAGTQ0KIAFByAVqKAIAIQIgASgC0AUiBCAGQQJ0IgggASgCuAJqKAIAIgNNDQkgAUGwAmogAUHoBWoQYyABKAK0AiIEIAZNDQggASgCsAIgCGooAgAiCEECTwRAIAIgA0ECdGohBEEAIQMgCiECA0AgAUGoAmogBSAEKAIAIgdBAnRqKAIAEGEgAUGYBmogACABKAKoAiABKAKsAhAxIAMgC0YNCSACIAEoApgGNgIAIAJBBGogASgCnAY2AgAgASgCoAYhDSACQQxqIAc2AgAgAkEIaiANNgIAIARBBGohBCACQRBqIQIgCCADQQFqIgNHDQALIAUgCiAAQQAgCEF/ahAECyAGQQFqIgZBgBBHDQALIBNBASATQQFLGyEFIA5BPGohAyABQYgGahBSIAFB+AVqKAIAGiABQfgFahBWIAFB6AVqKAIAGiABQegFahBWIAFB2AVqKAIAGiABQdgFahBWIAFByAVqKAIAGiABQcgFahBWQQAhAkEAIQRBACEGQQAhBwNAIAFBoAJqIAFBwANqEGMgASgCpAIiCiAETQ0GIAEoAqACIAJqKAIAIQogAUGYAmogAUHAA2oQYyABKAKcAiILIARBAWpNDQUgASgCmAIgAmpBB
|
||
|
|
||
|
export let wasm;
|
||
|
|
||
|
export let isReady = false;
|
||
|
|
||
|
export const ready = fetch(wasmDataURI)
|
||
|
.then((res) => res.arrayBuffer())
|
||
|
.then((buffer) => WebAssembly.instantiate(buffer, {
|
||
|
'./mikktspace_module_bg.js': {__wbindgen_string_new, __wbindgen_rethrow}
|
||
|
}))
|
||
|
.then((result) => {
|
||
|
wasm = result.instance.exports;
|
||
|
isReady = true;
|
||
|
});
|