decoder.js 8.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // This file is part of meshoptimizer library and is distributed under the terms of MIT License.
  2. // Copyright (C) 2016-2019, by Arseny Kapoulkine ([email protected])
  3. var MeshoptDecoder = (function() {
  4. "use strict";
  5. var wasm = "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";
  6. var memory = new WebAssembly.Memory({
  7. initial: 1
  8. });
  9. var heap = new Uint8Array(memory.buffer);
  10. var brk = 32768; // stack top
  11. var sbrk = function(size) {
  12. var old = brk;
  13. brk += size;
  14. if (brk > heap.length) {
  15. memory.grow(Math.ceil((brk - heap.length) / 65536));
  16. heap = new Uint8Array(memory.buffer);
  17. }
  18. return old;
  19. };
  20. var imports = {
  21. env: {
  22. memory: memory,
  23. _emscripten_memcpy_big: function(d, s, n) {
  24. heap.set(heap.subarray(s, s + n), d);
  25. },
  26. }
  27. };
  28. var instance = {};
  29. var promise =
  30. (typeof fetch === 'function'
  31. ? fetch('data:application/octet-stream;base64,' + wasm)
  32. .then(response => response.arrayBuffer())
  33. : Promise.resolve(Buffer.from(wasm, 'base64').buffer))
  34. .then(bytes => WebAssembly.instantiate(bytes, imports))
  35. .then(result => instance = result.instance);
  36. var decode = function(fun, target, count, size, source) {
  37. var tp = sbrk(count * size);
  38. var sp = sbrk(source.length);
  39. heap.set(source, sp);
  40. var res = fun(tp, count, size, sp, source.length);
  41. target.set(heap.subarray(tp, tp + count * size), 0);
  42. sbrk(tp - sbrk(0));
  43. if (res != 0) {
  44. throw new Error("Malformed buffer data: " + res);
  45. }
  46. };
  47. return {
  48. ready: promise,
  49. decodeVertexBuffer: function(target, count, size, source) {
  50. decode(instance.exports["_meshopt_decodeVertexBuffer"], target, count, size, source);
  51. },
  52. decodeIndexBuffer: function(target, count, size, source) {
  53. decode(instance.exports["_meshopt_decodeIndexBuffer"], target, count, size, source);
  54. }
  55. }
  56. })();
  57. if (typeof exports === 'object' && typeof module === 'object')
  58. module.exports = MeshoptDecoder;
  59. else if (typeof define === 'function' && define['amd'])
  60. define([], function() {
  61. return MeshoptDecoder;
  62. });
  63. else if (typeof exports === 'object')
  64. exports["MeshoptDecoder"] = MeshoptDecoder;