@es3d/es3d 0.0.0-stage → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +85 -2
  3. package/docs/REFERENCE.md +581 -0
  4. package/docs/SPEC.md +417 -0
  5. package/package.json +50 -4
  6. package/scripts/es3d-cli.mjs +377 -0
  7. package/src/cache/geometry-store.js +392 -0
  8. package/src/cache/mesh-bundle.js +123 -0
  9. package/src/cache/sha256.js +73 -0
  10. package/src/format/ast.js +238 -0
  11. package/src/format/colors.js +93 -0
  12. package/src/format/compact-parser.js +171 -0
  13. package/src/format/compact-tokenizer.js +165 -0
  14. package/src/format/errors.js +247 -0
  15. package/src/format/json.js +55 -0
  16. package/src/format/limits.js +14 -0
  17. package/src/format/parse.js +92 -0
  18. package/src/format/schema.js +617 -0
  19. package/src/format/serializer.js +333 -0
  20. package/src/format/validator.js +330 -0
  21. package/src/format/value-error.js +12 -0
  22. package/src/format/value-format.js +314 -0
  23. package/src/format/values.js +459 -0
  24. package/src/format/xml-parser.js +136 -0
  25. package/src/format/xml-tokenizer.js +237 -0
  26. package/src/geometry/contour.js +86 -0
  27. package/src/geometry/extrude.js +175 -0
  28. package/src/geometry/gear.js +85 -0
  29. package/src/geometry/geometry-cache.js +159 -0
  30. package/src/geometry/lod-error.js +178 -0
  31. package/src/geometry/mesh.js +458 -0
  32. package/src/geometry/primitives.js +299 -0
  33. package/src/geometry/registry.js +645 -0
  34. package/src/geometry/revolve.js +136 -0
  35. package/src/geometry/sweep.js +441 -0
  36. package/src/index.js +47 -0
  37. package/src/io/compression.js +67 -0
  38. package/src/io/convert.js +236 -0
  39. package/src/io/download.js +13 -0
  40. package/src/io/external-scene.js +127 -0
  41. package/src/io/file-loader.js +28 -0
  42. package/src/io/gltf.js +630 -0
  43. package/src/io/mesh-import.js +104 -0
  44. package/src/io/obj.js +352 -0
  45. package/src/io/step-brep.js +439 -0
  46. package/src/io/step-exact.js +1149 -0
  47. package/src/io/step.js +1418 -0
  48. package/src/io/stl.js +193 -0
  49. package/src/io/svg-import.js +787 -0
  50. package/src/material/materials.js +154 -0
  51. package/src/math/mat4.js +475 -0
  52. package/src/math/random.js +30 -0
  53. package/src/math/trig.js +65 -0
  54. package/src/math/vec3.js +81 -0
  55. package/src/optimize/optimizer.js +579 -0
  56. package/src/path/path-flatten.js +322 -0
  57. package/src/path/path-parser.js +332 -0
  58. package/src/path/shapes.js +129 -0
  59. package/src/path/triangulate.js +517 -0
  60. package/src/pipeline.js +74 -0
  61. package/src/render/camera.js +168 -0
  62. package/src/render/frame-builder.js +362 -0
  63. package/src/render/geometry-pool.js +149 -0
  64. package/src/render/lighting.js +149 -0
  65. package/src/render/orbit-controls.js +237 -0
  66. package/src/render/renderer.js +258 -0
  67. package/src/render/scroll-timeline.js +104 -0
  68. package/src/render/shaders/glsl.js +285 -0
  69. package/src/render/shaders/wgsl.js +252 -0
  70. package/src/render/stage.js +364 -0
  71. package/src/render/texture-cache.js +40 -0
  72. package/src/render/textures.js +223 -0
  73. package/src/render/webgl2/webgl2-backend.js +586 -0
  74. package/src/render/webgpu/webgpu-backend.js +482 -0
  75. package/src/scene/animation.js +171 -0
  76. package/src/scene/camera-constraints.js +117 -0
  77. package/src/scene/flatten.js +754 -0
  78. package/src/scene/picking.js +161 -0
  79. package/src/scene/scene-graph.js +320 -0
  80. package/src/transform/transform.js +211 -0
  81. package/src/wasm/kernels-binary.js +3 -0
  82. package/src/wasm/kernels.js +385 -0
@@ -0,0 +1,3 @@
1
+ // Generated by `npm run wasm` from wasm/*.c (50722 bytes) and wasm/simd/*.c (9738 bytes). Do not edit.
2
+ export default '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AwAgA0GgAWogDkGgAWopAwA3AwAgA0GoAWogDkGoAWopAwA3AwAgA0GwAWogDkGwAWopAwA3AwAgA0G4AWogDkG4AWopAwA3AwAgDUHAAWohDSAMIAtBBGoiC0cNAAsLIAlFDQAgAiALQTBsIg5qIQMgCiAOaiEOA0AgAyAOKQMANwMAIANBKGogDkEoaikDADcDACADQSBqIA5BIGopAwA3AwAgA0EYaiAOQRhqKQMANwMAIANBEGogDkEQaikDADcDACADQQhqIA5BCGopAwA3AwAgA0EwaiEDIA5BMGohDiAJQX9qIgkNAAsLQQAgCDYC1IqAgABBACACNgLQioCAAAsgAiAHQTBsaiIDIAY2AhAgAyAEOQMIIAMgBTkDACADQv////8PNwIkIANCfzcCHCADQoCAgIBwNwIUQQAgB0EBaiIKNgLYioCAAAwBC0EAIQdBAEEBOgDoioCAAEEAKALUioCAACEIQQAoAtiKgIAAIQpBACgC0IqAgAAhAgsgAiABQTBsaiIDKwMIIQQgAysDACEFIAMoAhAhBgJAAkAgCiAIRw0AIAhBAXRBEGoiD0EwbBCfgICAACICRQ0BAkBBACgC2IqAgAAiCkEBSA0AIApBA3EhCUEAKALQioCAACEIQQAhCwJAIApBBEkNACAKQfz///8HcSEMQQAhDUEAIQsDQCACIA1qIgMgCCANaiIOKQMANwMAIANBKGogDkEoaikDADcDACADQSBqIA5BIGopAwA3AwAgA0EYaiAOQRhqKQMANwMAIANBEGogDkEQaikDADcDACADQQhqIA5BCGopAwA3AwAgA0EwaiAOQTBqKQMANwMAIANBOGogDkE4aikDADcDACADQcAAaiAOQcAAaikDADcDACADQcgAaiAOQcgAaikDADcDACADQdAAaiAOQdAAaikDADcDACADQdgAaiAOQdgAaikDADcDACADQYgBaiAOQYgBaikDADcDACADQYABaiAOQYABaikDADcDACADQfgAaiAOQfgAaikDADcDACADQfAAaiAOQfAAaikDADcDACADQegAaiAOQegAaikDADcDACADQeAAaiAOQeAAaikDADcDACADQZABaiAOQZABaikDADcDACADQZgBaiAOQZgBaikDADcDACADQaABaiAOQaABaikDADcDACADQagBaiAOQagBaikDADcDACADQbABaiAOQbABaikDADcDACADQbgBaiAOQbgBaikDADcDACANQcABaiENIAwgC0EEaiILRw0ACwsgCUUNACACIAtBMGwiDmohAyAIIA5qIQ4DQCADIA4pAwA3AwAgA0EoaiAOQShqKQMANwMAIANBIGogDkEgaikDADcDACADQRhqIA5BGGopAwA3AwAgA0EQaiAOQRBqKQMANwMAIANBCGogDkEIaikDADcDACADQTBqIQMgDkEwaiEOIAlBf2oiCQ0ACwtBACAPNgLUioCAAEEAIAI2AtCKgIAACyACIApBMGxqIgMgBjYCECADIAQ5AwggAyAFOQMAIANC/////w83AiQgA0J/NwIcIANCgICAgHA3AhRBACAKQQFqNgLYioCAAEF/IQ4CQEEALQDoioCAAA0AIAIgAEEwbGoiDSgCHCEOIA0gATYCHCACIAFBMGxqIgkoAhghDSAJIAA2AhggAiAHQTBsaiIJIA42AhwgAiAOQTBsaiAHNgIYIANBHGogBzYCACAJIAo2AhggAiANQTBsaiAKNgIcIANBGGogDTYCACAKIQ4LIA4PC0EAQQE6AOiKgIAAQX8LugIDBX8EfAF/AkAgAEEATg0AIAAPCyAAIAEgAUEASBshAkEAKALQioCAACEDAkADQCADIABBMGxqIgEoAhwhAEEAIQQCQCABKAIoDQAgASgCGCEFIAMgAEEwbGoiBisDCCEHIAErAwghCAJAAkAgASsDACIJIAYrAwAiCmINACAIIAdhDQELIAogCaEgCCADIAVBMGxqIgsrAwihoiAJIAsrAwChIAcgCKGioUQAAAAAAAAAAGINAQsgAyAFQTBsaiAANgIcIAYgBTYCGCABKAIkIQACQCABKAIgIgRBAEgNACADIARBMGxqIAA2AiQLIAFBGGohAQJAIABBAEgNACADIABBMGxqIAQ2AiALQQEhBCABKAIAIgIhACACIAMgAkEwbGooAhxGDQILIAQNACAAIAJHDQALCyACC7gqCQV/AXwBfwF8CX8CfAF/DXwEfwJAA0AgAEEASA0BQQAtAOiKgIAAQQFxDQEgBUGRAyAFQZEDShshBgNAAkAgBSAGRw0AQQBBAToA6IqAgAAPC0EAKALQioCAACEHAkAgA0QAAAAAAAAAAGQgA0QAAAAAAAAAAGNyQQFHIggNACAEDQAg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gICAAJohFkEAKAL8i4CAAEUNASAVIA4gFhCigICAACERDAILIAUgA0EMbCIXaiAVIACitjgCACAFIBdBBGoiGGpBgICA+AM2AgAgBSAXQQhqIh5qIBEgAKK2OAIAIAggGGogGTgCACAIIBdqIBo4AgAgCCAeaiAbOAIAIBQgAzYCACAJIANBA3RqIgNBBGpBgICA/AM2AgAgAyAcOAIAIAFBAmohASAEIAZGDQMMAgsgFSAOIBYQhICAgAAhEQsgBSADQQxsIhdqQoCAgICAgICAPzcCACAFIBdBCGoiGGpBADYCACAIIBdqIhdBBGogDiARo7Y4AgAgFyAVIBGjtjgCACAIIBhqIBYgEaO2OAIAIBQgAzYCACAJIANBA3RqIgNBBGpBgICA/AM2AgAgAyAdtjgCACABQQJqIQEgBCAGRw0AIARB/v///wdxIQYgBEEBcSESQQAhDyAKIQMDQCAHKQIAIR8gA0EIaiANKAIANgIAIAMgHzcCACAHQQRqKQIAIR8gA0EUaiANQQRqKAIANgIAIANBDGogHzcCACADQRhqIQMgDUEIaiENIAdBCGohByAPQQZqIQ8gBkF+aiIGDQALIBJFDQMgBykCACEfIANBCGogDSgCADYCACADIB83AgAgD0EDaiEPDAMLIA9BCGohDyASQQhqIRIgE0EEaiETIBRBBGohFCAGQQFqIQYMAQsLIARBBmwhDyAKIQMgBCESA0AgB0EEaiITKAIAIRQgDUEEaiIXKAIAIQYgBygCACEHIANBFGogDSgCADYCACADQRBqIAY2AgAgA0EMaiAHNgIAIANBCGogBjYCACADQQRqIBQ2AgAgAyAHNgIAIANBGGohAyATIQcgFyENIBJBf2oiEg0ACwsCQAJAIAINACABIR4MAQsgBSABQQxsIgNqIhRBADYCACAFIANBBHIiBmpBgICA+Hs2AgAgBSADQQhqIgdqQQA2AgAgCCAGakGAgID8ezYCACAIIANqIhdBADYCACAIIAdqQQA2AgAgCSABQQN0aiIDQoCAgPiDgICAPzcCACAEQX9zIRggAUEBciECIANBFGohAyALIQYgDCENQQAhE0EAIQcDQCAUIAdqIhJBFGogDSsDACIRtjgCACASQRBqQYCAgPh7NgIAIBJBDGogBisDACIVtjgCACAXIAdqIhJBFGpBADYCACAS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IAFvQRhsaiIfKwMAIRQgACASQQFqIhIgAW8gAWogAW9BGGxqIiArAwAhHiAYQRBqKwMAIRkgGEEIaisDACEaIBNBEGorAwAhFSATQQhqKwMAIRYgH0EQaisDACEhIB9BCGorAwAhIiAgQRBqKwMAIRwgIEEIaisDACEdDAILIAAgGEEYbGoiEysDACEeIBNBEGorAwAhHCATQQhqKwMAIR0LAkACQCASQQJqIhIgAUgNACAKKwMAIhQgFKAgCSsDAKEhISAMKwMAIhQgFKAgCysDAKEhIiAOKwMAIhQgFKAgDSsDAKEhFAwBCyAAIBJBGGxqIhIrAwAhFCASQRBqKwMAISEgEkEIaisDACEiCyAYIRILIBkgFaEhIyAaIBahISQgGyAXoSElAkACQEEAKAL8i4CAAEUNACAlICQgIxCigICAACEmDAELICUgJCAjEISAgIAAISYLIBwgGaEhJyAdIBqhISggHiAboSEpAkACQEEAKAL8i4CAAEUNACApICggJxCigICAACEqDAELICkgKCAnEISAgIAAISoLICEgHKEhKyAiIB2hISwgFCAeoSEtAkACQEEAKAL8i4CAAEUNACAtICwgKxCigICAACEUDAELIC0gLCArEISAgIAAIRQLAkAgA0EBSA0AIAggBmohEyAmn0SN7bWg98awPqVEAAAAAAAAAACgIiIgKp9Eje21oPfGsD6loCIuICKhIS8gByAGQQN0aiEGIC4gFJ9Eje21oPfGsD6loCIUICKhITAgFCAuoSExRAAAAAAAAAAAISYgAyEYA0AgBkEQaiAVICMgIiAvICaiIA+joCIhICKjIiqioCIyICEgLqMiMyAZICcgISAioSI0IC+jIhSioCI1IDKhoqAiNiAUIDUgNCAwoyIyIBwgKyAhIC6hIDGjIiGioCA1oaKgIDahoqA5AwAgBkEIaiAWICQgKqKgIjQgMyAaICggFKKgIjUgNKGioCI0IBQgNSAyIB0gLCAhoqAgNaGioCA0oaKgOQMAIAYgFyAlICqioCI1IDMgGyApIBSioCIqIDWhoqAiMyAUICogMiAeIC0gIaKgICqhoqAgM6GioDkDACAGQRhqIQYgJkQAAAAAAADwP6AhJiAYQX9qIhgNAAsgEyEGCyASIAVIDQALCwJAIAINAAJAAkAgAUEASg0AIAArAxAiFCAUoCAA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';
3
+ export const INSTANCES = 'AGFzbQEAAAABJQdgAX8Bf2ACfH8AYAJ/fwF/YAAAYAF/AGACfHwBfGADfHx8AXwCEAEDZW52CG1hdGVyaWFsAAADCAcBAgMABAUGBAUBcAEBAQUDAQACBggBfwFBkIgECwdVCAZtZW1vcnkCAAdjb3Nfc2luAAEJaW5zdGFuY2VzAAIFYWxsb2MABAVyZXNldAADEHNldF9uYXRpdmVfaHlwb3QABQZoeXBvdDIABgZoeXBvdDMABwrPSgeVBQEGeyAB/QwYLURU+yH5PxgtRFT7Ifk/IgL9DAAAAAAAAAAAAAAAAAAAAAD9DBgtRFT7IQlAGC1EVPshCUAgAEQYLURU+yH5P6D9FCAA/SIBIgMgA/0MGC1EVPshGUAYLURU+yEZQCIE/fMBIgX9dCIG/QwAAAAAAADwvwAAAAAAAPC//fABIAYgBv0MAAAAAAAA4L8AAAAAAADgvyIH/fABIAX9Sv1SIAT98gH98QEiBv3tASAGIAb9DAAAAAAAAAAAAAAAAAAAAAAiBP1JIgX9UiIG/fEBIAYgBiAC/Ur9UiIGIAYgBP1J/VIiAv3xASIGIAb98gEiBiAH/fIB/QwAAAAAAADwPwAAAAAAAPA//fABIAYgBiAGIAYgBiAGIAb9DNQ4iL7p+qi91DiIvun6qL398gH9DMSxtL2e7iE+xLG0vZ7uIT798AH98gH9DK1SnIBPfpK+rVKcgE9+kr798AH98gH9DJAVyxmgAfo+kBXLGaAB+j798AH98gH9DHdRwRZswVa/d1HBFmzBVr/98AH98gH9DExVVVVVVaU/TFVVVVVVpT/98AH98gH98gH98AEgAiAC/fIBIgYgAv3yASAGIAYgBiAGIAb9DHzVz1o62eU9fNXPWjrZ5T398gH9DOucK4rm5Vq+65wriublWr798AH98gH9DH3+sVfjHcc+ff6xV+Mdxz798AH98gH9DNVhwRmgASq/1WHBGaABKr/98AH98gH9DKb4EBEREYE/pvgQERERgT/98AH98gH9DElVVVVVVcW/SVVVVVVVxb/98AH98gEgAv3wASAC/QwYLURU+yHpPxgtRFT7Iek//Ur9UiIG/e0BIAYgBf1SIAMgAyAD/fEBIAT9R/1S/QsAAAvUPyQWfwJ7AX8SewF8BX8JewN/DHwBfwF7AX8BfBF7AnwBfgJ/AnwBfwJ8AX8BfgJ8AX8BfgV8A3sBfAJ7AX4BewF8Bn8FewN8An8gACgCPCECIAAoAjghAyAAKAIwIQQgACgCLCEFIAAoAiQhBiAAKAIoIQcgACgCQCEIIAAoAjQhCSAAKAIIIQogACgCTEEHdBCEgICAACELIAkgCmwiDEEGdBCEgICAACENIAxBBHQQhICAgAAhDiAMQQJ0Ig8QhICAgAAhECAPEISAgIAAIREgDxCEgICAACESIA8QhICAgAAhEyAMQQF0EISAgIAAIRQgDBCEgICAACEVQQAhFiAKIAhsQQV0EISAgIAAIRcCQCAN/REgC/0cASAO/RwCIBD9HAP9DAAAAAAAAAAAAAAAAAAAAAAiGP03/Qz//wAA//8AAP//AAD//wAAIhn9TiAR/REgEv0cASAT/RwCIBT9HAMgGP03IBn9Tv2GAf1TDQAgFUUNACAXRQ0AIAAgFzYCcCAAIBU2AmwgACAUNgJoIAAgEzYCZCAAIBI2AmAgACARNgJcIAAgEDYCWCAAIA42AlQgACANNgJQQQEhFiAAKAIMIRogAf0KA7gEIRsgAf0KA6AEIRwgAf0AA/ABIR0gAf0AA+ABIR4gAf0AA9ABIR8gAf0AA8ABISAgAf0AA7ABISEgAf0AA6ABISIgAf0AA5ABISMgAf0AA4ABISQgAf0AAKgEISUgAf0AAJAEISYCQCAKQQFIDQAgAUEQav0AAwAhJyAB/QADUCEoIAH9AANAISkgAf0AAwAhKiAB/QADoAMhKyAB/QADgAMhLCABKwOYAyEtIAAoAkghLiAAKAJEIS8gACgCBCEwIAAoAhAhMSAAKAIAITIgAf0AAzAiM/0MAAAAAAAAAAAAAAAAAAAAACI0/fIBITUgAUEgav0AAwAiNiA0/fIBITcgAf0AA3AiOCA0/fIBITkgAf0AA2AiOiA0/fIBITsgACgCHCIMQQRxITwgDEECcSE9IAxBAXEhPiABQYgEaisDACABQYAEaisDACI/oSFAIAFB+ANqKwMAIAFB8ANqKwMAIkGhIUIgAUHoA2orAwAgAUHgA2orAwAiQ6EhRCABQdgDaisDACABQdADaisDACJFoSFGIAFByANqKwMAIAFBwANqKwMAIkehIUggAUG4A2orAwAgAUGwA2orAwAiSaEhSiAAQRhqIAAoAhQiS/0R/VYCAAH9DP/////////////////////9rgH9/gH9DAAAAAAAAOA/AAAAAAAA4D/98gEhTCAAKAIgIk1Bf2q3IU4gAf0KA5ADIU8gAf0KA/gCIVAgAf0KA/ACIVEgAf0KA+gCIVIgAf0KA+ACIVMgAf0KA9gCIVQgAf0KA9ACIVUgAf0KA8gCIVYgAf0KA8ACIVcgAf0KA7gCIVggAf0KA7ACIVkgAf0KA6gCIVogAf0KA6ACIVsgAf0KA5gCIVwgAf0KA5ACIV0gAf0KA4gCIV4gAf0KA4ACIV8gTbchYEQAAAAAAADwPyFhQgAhYkEAIWNBACFkRAAAAAAAAAAAIWVEAAAAAAAAAAAhZkEAIWdEAAAAAAAAAAAhaEQAAAAAAAAAACFpQQAhakIAIWtEAAAAAAAAAAAhbEQAAAAAAAAAACFtQQAhbkIAIW9EAAAAAAAA8D8hcEQAAAAAAADwPyFxRAAAAAAAAAAAIXJEAAAAAAAAAAAhc0QAAAAAAAAAACF0A0ACQAJAAkACQAJAAkAgMkUNACAaQfXzrekGaiIMQQ92IAxz/REgGkHq59vSfWoiD0EPdiAPc/0cASAMQQFy/REgD0EBcv0cAf21ASIZQQf9rQEgGf1RIBn9DD0AAAA9AAAAPQAAAD0AAAD9UP21ASAZ/a4BIBn9USIZQQ79rQEgGf1R/f8B/QwAAAAAAADwPQAAAAAAAPA9/fIBIRkgMQ4CAQIDCyALICcgHiAZ/Q0AAQIDBAUGBwABAgMEBQYHIhn98gEgMyAeIBn9DQgJCgsMDQ4PCAkKCwwNDg8idf3yAf3wASAoIB0gGf0NAAECAwQFBgcAAQIDBAUGByJ2/fIB/fABIDggHSAZ/Q0ICQoLDA0ODwgJCgsMDQ4PInf98gH98AH9CwBwIAsgKiAZ/fIBIDYgdf3yAf3wASApIHb98gH98AEgOiB3/fIB/fAB/QsAYCALICcgICAZ/Q0AAQIDBAUGBwABAgMEBQYHIhn98gEgMyAgIBn9DQgJCgsMDQ4PCAkKCwwNDg8idf3yAf3wASAoIB8gGf0NAAECAwQFBgcAAQIDBAUGByJ2/fIB/fABIDggHyAZ/Q0ICQoLDA0ODwgJCgsMDQ4PInf98gH98AH9CwBQIAsgKiAZ/fIBIDYgdf3yAf3wASApIHb98gH98AEgOiB3/fIB/fAB/QsAQCALICcgIiAZ/Q0AAQIDBAUGBwABAgMEBQYHIhn98gEgMyAiIBn9DQgJCgsMDQ4PCAkKCwwNDg8idf3yAf3wASAoICEgGf0NAAECAwQFBgcAAQIDBAUGByJ2/fIB/fABIDggISAZ/Q0ICQoLDA0ODwgJCgsMDQ4PInf98gH98AH9CwAwIAsgKiAZ/fIBIDYgdf3yAf3wASApIHb98gH98AEgOiB3/fIB/fAB/QsAICALICcgJCAZ/Q0AAQIDBAUGBwABAgMEBQYHIhn98gEgMyAkIBn9DQgJCgsMDQ4PCAkKCwwNDg8idf3yAf3wASAoICMgGf0NAAECAwQFBgcAAQIDBAUGByJ2/fIB/fABIDggIyAZ/Q0ICQoLDA0ODwgJCgsMDQ4PInf98gH98AH9CwAQIAsgKiAZ/fIBIDYgdf3yAf3wASApIHb98gH98AEgOiB3/fIB/fAB/QsAAEEAIQwMBAsgLCBkIDBqIgwgDCBLbSIMIEtsa7f9FCAMt/0iASBM/fEB/fIBICwgTyAZ/QwAAAAAAADgvwAAAAAAAOC//fAB/fIB/fIB/fABIXUMAgsgLSAZ/SEAn6L9FP0MGC1EVPsh+T8YLURU+yH5PyJ1IBj9DBgtRFT7IQlAGC1EVPshCUAgGf0hAUQYLURU+yEJQKIieCB4oCJ4RBgtRFT7Ifk/oP0UIHj9IgEidiB2/QwYLURU+yEZQBgtRFT7IRlAInf98wEief10Ihn9DAAAAAAAAPC/AAAAAAAA8L/98AEgGSAZ/QwAAAAAAADgvwAAAAAAAOC/Inr98AEgef1K/VIgd/3yAf3xASIZ/e0BIBkgGSA0/Ukid/1SIhn98QEgGSAZIHX9Sv1SIhkgGSA0/Un9UiJ1/fEBIhkgGf3yASIZIHr98gH9DAAAAAAAAPA/AAAAAAAA8D/98AEgGSAZIBkgGSAZIBkgGf0M1DiIvun6qL3UOIi+6fqovf3yAf0MxLG0vZ7uIT7EsbS9nu4hPv3wAf3yAf0MrVKcgE9+kr6tUpyAT36Svv3wAf3yAf0MkBXLGaAB+j6QFcsZoAH6Pv3wAf3yAf0Md1HBFmzBVr93UcEWbMFWv/3wAf3yAf0MTFVVVVVVpT9MVVVVVVWlP/3wAf3yAf3yAf3wASB1IHX98gEiGSB1/fIBIBkgGSAZIBkgGf0MfNXPWjrZ5T181c9aOtnlPf3yAf0M65wriublWr7rnCuK5uVavv3wAf3yAf0Mff6xV+Mdxz59/rFX4x3HPv3wAf3yAf0M1WHBGaABKr/VYcEZoAEqv/3wAf3yAf0MpvgQERERgT+m+BARERGBP/3wAf3yAf0MSVVVVVVVxb9JVVVVVVXFv/3wAf3yASB1/fABIHX9DBgtRFT7Iek/GC1EVPsh6T/9Sv1SIhn97QEgGSB3/VIgdiB2IHb98QEgNP1H/VL98gEhdQwBCyArIBn9DAAAAAAAAOC/AAAAAAAA4L/98AH98gEhdQsCQCA+RQ0AIEUgGkHJw+WOAmoiDEEPdiAMcyAMQQFybCIMQQd2IAxzIAxBPXJsIAxqIAxzIgxBDnYgDHO4RAAAAAAAAPA9oiBGoqAhciBHIBpB1M+3pXtqIgxBD3YgDHMgDEEBcmwiDEEHdiAMcyAMQT1ybCAMaiAMcyIMQQ52IAxzuEQAAAAAAADwPaIgSKKgIXMgSSAaQd/bibwEaiIMQQ92IAxzIAxBAXJsIgxBB3YgDHMgDEE9cmwgDGogDHMiDEEOdiAMc7hEAAAAAAAA8D2iIEqioCF0CwJAID1FDQAgQyAaQb63k/h4aiIMQQ92IAxzIAxBAXJsIgxBB3YgDHMgDEE9cmwgDGogDHMiDEEOdiAMc7hEAAAAAAAA8D2iIESioCFhAkAgPEUNACBhIXEgYSFwDAELID8gGkGon+/KBmoiDEEPdiAMcyAMQQFybCIMQQd2IAxzIAxBPXJsIAxqIAxzIgxBDnYgDHO4RAAAAAAAAPA9oiBAoqAhcSBBIBpBs6vBYWoiDEEPdiAMcyAMQQFybCIMQQd2IAxzIAxBPXJsIAxqIAxzIgxBDnYgDHO4RAAAAAAAAPA9oiBCoqAhcAsgdL0hewJAAkAgbkUNACBvIHtRDQEL/QwYLURU+yH5PxgtRFT7Ifk/InYgGP0MGC1EVPshCUAYLURU+yEJQCB0RDmdUqJG35E/oiJ4RBgtRFT7Ifk/oP0UIHj9IgEidyB3/QwYLURU+yEZQBgtRFT7IRlAInn98wEiev10Ihn9DAAAAAAAAPC/AAAAAAAA8L/98AEgGSAZ/QwAAAAAAADgvwAAAAAAAOC/Inz98AEgev1K/VIgef3yAf3xASIZ/e0BIBkgGSA0/Ukief1SIhn98QEgGSAZIHb9Sv1SIhkgGSA0/Un9UiJ2/fEBIhkgGf3yASIZIHz98gH9DAAAAAAAAPA/AAAAAAAA8D/98AEgGSAZIBkgGSAZIBkgGf0M1DiIvun6qL3UOIi+6fqovf3yAf0MxLG0vZ7uIT7EsbS9nu4hPv3wAf3yAf0MrVKcgE9+kr6tUpyAT36Svv3wAf3yAf0MkBXLGaAB+j6QFcsZoAH6Pv3wAf3yAf0Md1HBFmzBVr93UcEWbMFWv/3wAf3yAf0MTFVVVVVVpT9MVVVVVVWlP/3wAf3yAf3yAf3wASB2IHb98gEiGSB2/fIBIBkgGSAZIBkgGf0MfNXPWjrZ5T181c9aOtnlPf3yAf0M65wriublWr7rnCuK5uVavv3wAf3yAf0Mff6xV+Mdxz59/rFX4x3HPv3wAf3yAf0M1WHBGaABKr/VYcEZoAEqv/3wAf3yAf0MpvgQERERgT+m+BARERGBP/3wAf3yAf0MSVVVVVVVxb9JVVVVVVXFv/3wAf3yASB2/fABIHb9DBgtRFT7Iek/GC1EVPsh6T/9Sv1SIhn97QEgGSB5/VIgdyB3IHf98QEgNP1H/VIiGf0hASFsIBn9IQAhbUEBIW4geyFvCyBzvSF7AkACQCBqRQ0AIGsge1ENAQv9DBgtRFT7Ifk/GC1EVPsh+T8idiAY/QwYLURU+yEJQBgtRFT7IQlAIHNEOZ1SokbfkT+iInhEGC1EVPsh+T+g/RQgeP0iASJ3IHf9DBgtRFT7IRlAGC1EVPshGUAief3zASJ6/XQiGf0MAAAAAAAA8L8AAAAAAADwv/3wASAZIBn9DAAAAAAAAOC/AAAAAAAA4L8ifP3wASB6/Ur9UiB5/fIB/fEBIhn97QEgGSAZIDT9SSJ5/VIiGf3xASAZIBkgdv1K/VIiGSAZIDT9Sf1SInb98QEiGSAZ/fIBIhkgfP3yAf0MAAAAAAAA8D8AAAAAAADwP/3wASAZIBkgGSAZIBkgGSAZ/QzUOIi+6fqovdQ4iL7p+qi9/fIB/QzEsbS9nu4hPsSxtL2e7iE+/fAB/fIB/QytUpyAT36Svq1SnIBPfpK+/fAB/fIB/QyQFcsZoAH6PpAVyxmgAfo+/fAB/fIB/Qx3UcEWbMFWv3dRwRZswVa//fAB/fIB/QxMVVVVVVWlP0xVVVVVVaU//fAB/fIB/fIB/fABIHYgdv3yASIZIHb98gEgGSAZIBkgGSAZ/Qx81c9aOtnlPXzVz1o62eU9/fIB/QzrnCuK5uVavuucK4rm5Vq+/fAB/fIB/Qx9/rFX4x3HPn3+sVfjHcc+/fAB/fIB/QzVYcEZoAEqv9VhwRmgASq//fAB/fIB/Qym+BARERGBP6b4EBEREYE//fAB/fIB/QxJVVVVVVXFv0lVVVVVVcW//fAB/fIBIHb98AEgdv0MGC1EVPsh6T8YLURU+yHpP/1K/VIiGf3tASAZIHn9UiB3IHcgd/3xASA0/Uf9UiIZ/SEBIWggGf0hACFpQQEhaiB7IWsLIHK9IXsCQAJAIGdFDQAgYiB7UQ0BC/0MGC1EVPsh+T8YLURU+yH5PyJ2IBj9DBgtRFT7IQlAGC1EVPshCUAgckQ5nVKiRt+RP6IieEQYLURU+yH5P6D9FCB4/SIBIncgd/0MGC1EVPshGUAYLURU+yEZQCJ5/fMBInr9dCIZ/QwAAAAAAADwvwAAAAAAAPC//fABIBkgGf0MAAAAAAAA4L8AAAAAAADgvyJ8/fABIHr9Sv1SIHn98gH98QEiGf3tASAZIBkgNP1JInn9UiIZ/fEBIBkgGSB2/Ur9UiIZIBkgNP1J/VIidv3xASIZIBn98gEiGSB8/fIB/QwAAAAAAADwPwAAAAAAAPA//fABIBkgGSAZIBkgGSAZIBn9DNQ4iL7p+qi91DiIvun6qL398gH9DMSxtL2e7iE+xLG0vZ7uIT798AH98gH9DK1SnIBPfpK+rVKcgE9+kr798AH98gH9DJAVyxmgAfo+kBXLGaAB+j798AH98gH9DHdRwRZswVa/d1HBFmzBVr/98AH98gH9DExVVVVVVaU/TFVVVVVVpT/98AH98gH98gH98AEgdiB2/fIBIhkgdv3yASAZIBkgGSAZIBn9DHzVz1o62eU9fNXPWjrZ5T398gH9DOucK4rm5Vq+65wriublWr798AH98gH9DH3+sVfjHcc+ff6xV+Mdxz798AH98gH9DNVhwRmgASq/1WHBGaABKr/98AH98gH9DKb4EBEREYE/pvgQERERgT/98AH98gH9DElVVVVVVcW/SVVVVVVVxb/98AH98gEgdv3wASB2/QwYLURU+yHpPxgtRFT7Iek//Ur9UiIZ/e0BIBkgef1SIHcgdyB3/fEBIDT9R/1SIhn9IQEhZSAZ/SEAIWZBASFnIHshYgsgGkGdk520fWohGiALIHUgGf0NAAECAwQFBgcAAQIDBAUGByIZICf98gEgNf3wASB1IBn9DQgJCgsMDQ4PCAkKCwwNDg8idSAo/fIB/fABIDj98AH9CwBwIAsgGSAq/fIBIDf98AEgdSAp/fIB/fABIDr98AH9CwBgIAsgJyBhIGkgZqKi/RQiGf3yASAzIGEgaSBloqL9FCJ1/fIB/fABIGEgaJqi/RQidiAo/fIB/fABIDn98AH9CwAQIAsgKiAZ/fIBIDYgdf3yAf3wASB2ICn98gH98AEgO/3wAf0LAAAgCyBxIG0gaaKi/RQiGSAo/fIBICcgcSBtIGggZqIieKIgbCBloqCi/RQidf3yASAzIHEgbSBoIGWiIn2iIGwgZqKhov0UInb98gH98AH98AEgOf3wAf0LAFAgCyA7IBkgKf3yASAqIHX98gEgNiB2/fIB/fAB/fAB/fAB/QsAQCALIHAgbCBpoqL9FCIZICj98gEgJyBwIGwgeKIgbSBloqGi/RQidf3yASAzIHAgbSBmoiBsIH2ioKL9FCJ2/fIB/fAB/fABIDn98AH9CwAwIAsgOyAZICn98gEgKiB1/fIBIDYgdv3yAf3wAf3wAf3wAf0LACACQCBNDQBBACEMDAELIE4gGkEPdiAacyAaQQFybCIMQQd2IAxzIAxBPXJsIAxqIAxzIgxBDnYgDHO4RAAAAAAAAPA9oiBgopyk/AIhDAsCQCAHQQFIDQAgZCAIbCJ+IC5qIX8gDCAJbCGAAUEAIYEBIAYhggEDQCALIIIBQQhqKAIAQQd0aiEMIIIBQQRqKAIAIQ8CQAJAAkACQCCCASgCAA4DAAIBAgsgCyAPQQd0aiKDASAM/QAAECIZIAUgggFBDGooAgBBB3RqIg/9CgMAInr98gEgDP0AADAidSAP/QoDCCJ8/fIB/fABIAz9AABQInYgD/0KAxAihAH98gH98AEgDP0AAHAidyAP/QoDGCKFAf3yAf3wAf0LABAggwEgeiAM/QAAACJ5/fIBIHwgDP0AACAiev3yAf3wASCEASAM/QAAQCJ8/fIB/fABIIUBIAz9AABgIoQB/fIB/fAB/QsAACCDASAZIA/9CgMgIoUB/fIBIHUgD/0KAygihgH98gH98AEgdiAP/QoDMCKHAf3yAf3wASB3IA/9CgM4IogB/fIB/fAB/QsAMCCDASB5IIUB/fIBIHoghgH98gH98AEgfCCHAf3yAf3wASCEASCIAf3yAf3wAf0LACAggwEgGSAP/QoDQCKFAf3yASB1IA/9CgNIIoYB/fIB/fABIHYgD/0KA1AihwH98gH98AEgdyAP/QoDWCKIAf3yAf3wAf0LAFAggwEgeSCFAf3yASB6IIYB/fIB/fABIHwghwH98gH98AEghAEgiAH98gH98AH9CwBAIIMBIBkgD/0KA2AihQH98gEgdSAP/QoDaCIZ/fIB/fABIHYgD/0KA3Aidf3yAf3wASB3IA/9CgN4Inb98gH98AH9CwBwIIMBIHkghQH98gEgeiAZ/fIB/fABIHwgdf3yAf3wASCEASB2/fIB/fAB/QsAYAwCCyAXIA8gfmpBBXRqIg8gDCsDYDkDACAPIAwrA2g5AwggDyAMKwNwOQMQIA8gDCsDQCAMKwMwInggDCsDCCJ9oiAMKwMoIokBIAwrAxAiigGioaIgDCsDACCJASAMKwNQIosBoiB4IAwrA0giiQGioaIgDCsDICCLASB9oiCJASCKAaKhoqGgOQMYDAELIA0gY0EGdGoigwEgDP0AAAD9XiAM/QAAEP1e/Q0AAQIDBAUGBxAREhMUFRYX/QsAACCDASAM/QAAIP1eIAz9AAAw/V79DQABAgMEBQYHEBESExQVFhf9CwAQIIMBIAz9AABA/V4gDP0AAFD9Xv0NAAECAwQFBgcQERITFBUWF/0LACAggwEgDP0AAGD9XiAM/QAAcP1e/Q0AAQIDBAUGBxAREhMUFRYX/QsAMCAEIA9BBmwijAFBAnRqIYMBAkAgAiAPIIABaiIPQQJ0aiKNASgCAEF/Sg0AII0BIA8QgICAgAA2AgALIBAgY0ECdCIPaiCDASgCADYCACARIA9qII0BKAIANgIAIBIgD2oggwEoAgQ2AgAgEyAPaiAvIH8ggwEoAggiD2ogD0EASBs2AgAgFCBjQQF0aiCDASgCDDsBACAVIGNqIIMBKAIQIAwrA0AgDCsDMCJ4IAwrAwgifaIgDCsDKCKJASAMKwMQIooBoqGiIAwrAwAgiQEgDCsDUCKLAaIgeCAMKwNIIokBoqGiIAwrAyAgiwEgfaIgiQEgigGioaKhoEQAAAAAAAAAAGNyOgAAAkACQCCDASgCFA0AIDQhdSA0IRkMAQsgAyCMAUEDdGoiD/0KAwAiGSAM/QAAECJ1/fIBIA/9CgMIInYgDP0AADAief3yAf3wASAP/QoDECJ6IAz9AABQInz98gH98AEgDP0AAHD98AEidyAP/QoDGCKEASB1/ewB/fIBIA/9CgMgIoUBIHn97AH98gH98AEgD/0KAygieSB8/ewB/fIB/fABInX98AEifCAbIHwgG/1K/VIhGyAZIAz9AAAAInz98gEgdiAM/QAAICKGAf3yAf3wASB6IAz9AABAInb98gH98AEgDP0AAGD98AEiGSCEASB8/ewB/fIBIIUBIIYB/ewB/fIB/fABIHkgdv3sAf3yAf3wASJ2/fABInkgJSB5ICX9Sv1SISUgdyB1/fEBInkgHCB5IBz9Sf1SIRwgGSB2/fEBInkgJiB5ICb9Sf1SISYgdyB2IHb98gEidv0hACB2/SEBoCB1IHX98gH9IQCgn/0iASF1CyAOIGNBBHRqIBn9XiB1/V79DQABAgMEBQYHEBESExQVFhf9CwAAIGNBAWohYwsgggFBEGohggEggQFBBGoigQEgB0gNAAsLAkAgMg0AICEgUv3yASEZICMgU/3yASF1IB8gUf3yASF2ICIgUv3yASF3ICQgU/3yASF5ICAgUf3yASF6ICEgVv3yASF8ICMgV/3yASGEASAiIFb98gEhhQEgJCBX/fIBIYYBICMgW/3yASGHASAkIFv98gEhiAEgIyBf/fIBICEgXv3yAf3wASAfIF398gH98AEgHSBc/fIB/fABISMgJCBf/fIBICIgXv3yAf3wASAgIF398gH98AEgHiBc/fIB/fABISQgiAEgIiBa/fIB/fABICAgWf3yAf3wASAeIFj98gH98AEhIiCHASAhIFr98gH98AEgHyBZ/fIB/fABIB0gWP3yAf3wASEhIIYBIIUB/fABICAgVf3yAf3wASAeIFT98gH98AEhICCEASB8/fABIB8gVf3yAf3wASAdIFT98gH98AEhHyB6IHkgd/3wAf3wASAeIFD98gH98AEhHiB2IHUgGf3wAf3wASAdIFD98gH98AEhHQsgZEEBaiJkIApHDQALCyABICX9CwCoBCABICb9CwCQBCABIB39CwPwASABIB79CwPgASABIB/9CwPQASABICD9CwPAASABICH9CwOwASABICL9CwOgASABICP9CwOQASABICT9CwOAASABIBz9IQA5A6AEIAAgGjYCDCABIBv9IQA5A7gECyAWCxEAQQBBkIiEgAA2AoCIgIAAC2sBAn8CQEEAKAKAiICAACIBDQBBkIiEgAAhAUEAQZCIhIAANgKAiICAAAsCQCABQQdqQXhxIgIgAGoiAT8AQRB0IgBNDQAgASAAa0H//wNqQRB2QABBf0cNAEEADwtBACABNgKAiICAACACCw0AQQAgADYChIiAgAALhQIDAX8CfAF/AkACQCAAIABiIgJFDQBEAAAAAAAAAAAhA0QAAAAAAAAAACEEDAELRAAAAAAAAAAAIQQgAJkhAyAARAAAAAAAAAAAZCAARAAAAAAAAAAAY3JBAUcNACADIQQLAkAgASABYQ0ARAAAAAAAAPB/RAAAAAAAAPh/IAREAAAAAAAA8H9hGw8LRAAAAAAAAPB/RAAAAAAAAPh/IAGZIgEgBCABIARkGyIERAAAAAAAAPB/YSIFGyEAAkAgBQ0AIAINAEQAAAAAAAAAACEAIAREAAAAAAAAAABhDQAgBCADIASjIgAgAKIiACABIASjIgEgAaIgACAAoaCgn6IhAAsgAAvMAgQCfAF/AXwBf0QAAAAAAAAAACEDRAAAAAAAAAAAIQRBASEFRAAAAAAAAAAAIQYCQCAAIABiDQBEAAAAAAAAAAAhBiAAmSEEQQAhBSAARAAAAAAAAAAAZCAARAAAAAAAAAAAY3JBAUcNACAEIQYLAkACQCABIAFhDQBBASEFDAELIAGZIgMgBmRFDQAgAyEGCwJAIAIgAmENAEQAAAAAAADwf0QAAAAAAAD4fyAGRAAAAAAAAPB/YRsPC0QAAAAAAADwf0QAAAAAAAD4fyACmSICIAYgAiAGZBsiAEQAAAAAAADwf2EiBxshBgJAIAcNACAFDQBEAAAAAAAAAAAhBiAARAAAAAAAAAAAYQ0AIAAgBCAAoyIGIAaiIgYgAyAAoyIBIAGiIAYgBqGgIgGgIgQgAiAAoyICIAKiIAEgBiAEoaCgoJ+iIQYLIAYL';
@@ -0,0 +1,385 @@
1
+ // WebAssembly versions of the reader's hottest loops: number lists, normals,
2
+ // sweeps, extrusions, triangulation, primitives and the instance rows of
3
+ // <repeat> and <scatter>. They are built from wasm/ by `npm run wasm` and
4
+ // compute exactly what the JavaScript versions compute (the same IEEE
5
+ // operations in the same order; sin, cos, atan2 and hypot come from this
6
+ // page's Math). Where WebAssembly is missing or blocked, for example by a
7
+ // content security policy without 'wasm-unsafe-eval', every caller keeps
8
+ // using its JavaScript version.
9
+
10
+ import BINARY, { INSTANCES } from './kernels-binary.js';
11
+
12
+ let text = ''; // the number list being read, for the rare numbers the kernel hands back to Number()
13
+ let material = null; // resolves an instance row's material code (see instancesWasm)
14
+
15
+ const imports = {
16
+ env: {
17
+ sin: Math.sin,
18
+ cos: Math.cos,
19
+ atan2: Math.atan2,
20
+ tan: Math.tan,
21
+ acos: Math.acos,
22
+ hypot2: Math.hypot,
23
+ hypot3: Math.hypot,
24
+ number: (start, end) => Number(text.slice(start, end)),
25
+ material: (code) => material(code),
26
+ },
27
+ };
28
+
29
+ function decode(base64) {
30
+ // native decoders where there is one (newer browsers, Node); a loop otherwise
31
+ if (typeof Uint8Array.fromBase64 === 'function') return Uint8Array.fromBase64(base64);
32
+ if (typeof Buffer === 'function') return Buffer.from(base64, 'base64');
33
+ const s = atob(base64);
34
+ const bytes = new Uint8Array(s.length);
35
+ for (let i = 0; i < s.length; i++) bytes[i] = s.charCodeAt(i);
36
+ return bytes;
37
+ }
38
+
39
+ async function instantiate(base64) {
40
+ try {
41
+ if (typeof WebAssembly !== 'object') return null;
42
+ const { instance } = await WebAssembly.instantiate(decode(base64), imports);
43
+ return instance.exports;
44
+ } catch {
45
+ return null;
46
+ }
47
+ }
48
+
49
+ // the instance kernel is a module of its own: it needs WebAssembly SIMD
50
+ const [wasm, simd] = await Promise.all([instantiate(BINARY), instantiate(INSTANCES)]);
51
+ let enabled = wasm !== null;
52
+
53
+ /**
54
+ * Whether the module's hypot (V8's algorithm) gives this engine's Math.hypot
55
+ * results. The special cases (infinities, NaN, zeros) are fixed by the
56
+ * language; the rounding of finite values is the engine's, so values over
57
+ * many magnitudes are compared. Where they differ the kernels keep calling
58
+ * Math.hypot, which is slower (every call leaves WebAssembly and allocates).
59
+ */
60
+ function hypotMatches() {
61
+ const edge = [0, -0, 3, -4, 5e-324, 1e308, Infinity, NaN];
62
+ for (const x of edge) for (const y of edge) if (!Object.is(wasm.hypot2(x, y), Math.hypot(x, y))) return false;
63
+ let seed = 12345;
64
+ const next = () => {
65
+ seed = (Math.imul(seed, 1103515245) + 12345) >>> 0;
66
+ return (seed / 4294967296 - 0.5) * 10 ** ((seed % 41) - 20);
67
+ };
68
+ for (let i = 0; i < 100; i++) {
69
+ const x = next(), y = next(), z = next();
70
+ if (!Object.is(wasm.hypot3(x, y, z), Math.hypot(x, y, z)) || !Object.is(wasm.hypot2(x, y), Math.hypot(x, y))) return false;
71
+ }
72
+ return true;
73
+ }
74
+ if (wasm) wasm.set_native_hypot(hypotMatches() ? 1 : 0);
75
+
76
+ /** Whether the kernels are in use. */
77
+ export function wasmEnabled() {
78
+ return enabled;
79
+ }
80
+
81
+ /** Whether the instance kernel is in use (it needs WebAssembly SIMD as well). */
82
+ export function instanceKernelEnabled() {
83
+ return enabled && simd !== null;
84
+ }
85
+
86
+ /** Turn the kernels off (or back on, when they loaded) to compare with the JavaScript versions. */
87
+ export function setWasmEnabled(on) {
88
+ enabled = Boolean(on) && wasm !== null;
89
+ }
90
+
91
+ const heap = () => wasm.memory.buffer;
92
+
93
+ /** Copy a typed array into a module's memory; returns its address (0 when memory ran out). */
94
+ function put(a, module = wasm) {
95
+ const p = module.alloc(Math.max(1, a.byteLength));
96
+ if (p) new Uint8Array(module.memory.buffer, p, a.byteLength).set(new Uint8Array(a.buffer, a.byteOffset, a.byteLength));
97
+ return p;
98
+ }
99
+
100
+ const encoder = new TextEncoder();
101
+ const AS = { f64: [0, Float64Array], f32: [1, Float32Array], index: [2, Uint32Array] };
102
+
103
+ /**
104
+ * A number list read into a typed array (`as`: 'f64', 'f32' or 'index'), or
105
+ * null when the JavaScript reader must handle it (the kernels are off, the
106
+ * text is not ASCII, or it has an error, which JavaScript then reports).
107
+ */
108
+ export function readNumbersWasm(raw, as) {
109
+ if (!enabled) return null;
110
+ const [kind, Type] = AS[as];
111
+ const n = raw.length;
112
+ wasm.reset();
113
+ const sp = wasm.alloc(Math.max(1, n));
114
+ const op = sp && wasm.alloc((Math.floor(n / 2) + 1) * Type.BYTES_PER_ELEMENT);
115
+ if (!op) return null;
116
+ const r = encoder.encodeInto(raw, new Uint8Array(heap(), sp, n));
117
+ if (r.read !== n || r.written !== n) return null;
118
+ text = raw;
119
+ const count = wasm.numbers(sp, n, op, kind);
120
+ text = '';
121
+ if (count < 0) return null;
122
+ return new Type(heap(), op, count).slice();
123
+ }
124
+
125
+ /**
126
+ * computeNormals for Float32Array positions and uvs and Uint32Array indices,
127
+ * as {positions, normals, uvs, indices}, or null to use the JavaScript version.
128
+ */
129
+ export function computeNormalsWasm(positions, indices, crease, cosCrease, uvs) {
130
+ if (!enabled || !(positions instanceof Float32Array) || !(indices instanceof Uint32Array) || (uvs && !(uvs instanceof Float32Array))) return null;
131
+ wasm.reset();
132
+ const pp = put(positions), ip = put(indices), tp = uvs ? put(uvs) : 0;
133
+ if (!pp || !ip || (uvs && !tp)) return null;
134
+ const res = wasm.normals(pp, positions.length / 3, ip, indices.length, tp, crease, cosCrease);
135
+ if (!res) return null;
136
+ const [vc, ic, p, nrm, t, i] = new Uint32Array(heap(), res, 6);
137
+ return {
138
+ positions: new Float32Array(heap(), p, vc * 3).slice(),
139
+ normals: new Float32Array(heap(), nrm, vc * 3).slice(),
140
+ uvs: new Float32Array(heap(), t, vc * 2).slice(),
141
+ indices: new Uint32Array(heap(), i, ic).slice(),
142
+ };
143
+ }
144
+
145
+ const f64 = (a) => (a instanceof Float64Array ? a : Float64Array.from(a));
146
+ const u32 = (a) => (a instanceof Uint32Array ? a : Uint32Array.from(a));
147
+ const u8 = (a) => (a instanceof Uint8Array ? a : Uint8Array.from(a));
148
+
149
+ /**
150
+ * Writes contours ({points, smooth, isWall}) as {n, points, smooth, isWall}
151
+ * records; returns the table's address, or 0 when memory ran out.
152
+ */
153
+ function contourTable(list) {
154
+ const rows = new Int32Array(list.length * 4);
155
+ for (let k = 0; k < list.length; k++) {
156
+ const c = list[k];
157
+ const p = put(f64(c.points));
158
+ const sm = c.smooth ? put(u8(c.smooth)) : 0;
159
+ if (!p || (c.smooth && !sm)) return 0;
160
+ rows[k * 4] = c.points.length / 2;
161
+ rows[k * 4 + 1] = p;
162
+ rows[k * 4 + 2] = sm;
163
+ rows[k * 4 + 3] = c.isWall === false ? 0 : 1;
164
+ }
165
+ return put(rows);
166
+ }
167
+
168
+ /** {first contour, contour count} per region, appending each region's contours to `list`. */
169
+ function regionRows(regions, list) {
170
+ const rows = new Int32Array(Math.max(1, regions.length * 2));
171
+ regions.forEach((r, k) => {
172
+ rows[k * 2] = list.length;
173
+ rows[k * 2 + 1] = 1 + r.holes.length;
174
+ list.push(r.outer, ...r.holes);
175
+ });
176
+ return rows;
177
+ }
178
+
179
+ /** A kernel's mesh, copied out of kernel memory into one buffer (one allocation instead of four). */
180
+ const meshOut = (res, extra) => {
181
+ const [vc, ic, p, nrm, t, i] = new Uint32Array(heap(), res, 6);
182
+ const out = new ArrayBuffer((vc * 8 + ic) * 4);
183
+ const positions = new Float32Array(out, 0, vc * 3);
184
+ const normals = new Float32Array(out, vc * 12, vc * 3);
185
+ const uvs = new Float32Array(out, vc * 24, vc * 2);
186
+ const indices = new Uint32Array(out, vc * 32, ic);
187
+ positions.set(new Float32Array(heap(), p, vc * 3));
188
+ normals.set(new Float32Array(heap(), nrm, vc * 3));
189
+ uvs.set(new Float32Array(heap(), t, vc * 2));
190
+ indices.set(new Uint32Array(heap(), i, ic));
191
+ return { positions, normals, uvs, indices, ...extra };
192
+ };
193
+
194
+ /**
195
+ * sweepMesh after its profile is known: spines [{points, closed}], the
196
+ * profile contours, the circle's points (circle profiles) or the regions to
197
+ * cap (shaped profiles). Returns {positions, normals, uvs, indices, open,
198
+ * degenerate: one flag per spine, errors: triangulation error per cap
199
+ * region}, or null to use the JavaScript version.
200
+ */
201
+ export function sweepWasm(spines, contours, circle, regions, twist, taper, caps) {
202
+ if (!enabled) return null;
203
+ wasm.reset();
204
+ const list = [...contours];
205
+ const regionTab = circle ? null : regionRows(regions, list);
206
+ const table = contourTable(list);
207
+ const spineRows = new Int32Array(Math.max(1, spines.length * 3));
208
+ for (let k = 0; k < spines.length; k++) {
209
+ spineRows[k * 3] = put(f64(spines[k].points));
210
+ spineRows[k * 3 + 1] = spines[k].points.length / 3;
211
+ spineRows[k * 3 + 2] = spines[k].closed ? 1 : 0;
212
+ if (!spineRows[k * 3]) return null;
213
+ }
214
+ const profile = put(Int32Array.from(contours, (_, k) => k));
215
+ const spineTab = put(spineRows);
216
+ const capData = circle ? put(f64(circle)) : put(regionTab);
217
+ const header = put(
218
+ Int32Array.of(spines.length, spineTab, list.length, table, contours.length, profile, circle ? 1 : 2, circle ? circle.length / 2 : regions.length, capData, caps ? 1 : 0),
219
+ );
220
+ if (!table || !profile || !spineTab || !capData || !header) return null;
221
+ const res = wasm.sweep(header, twist, taper);
222
+ if (!res) return null;
223
+ const [open, deg, errs] = new Uint32Array(heap(), res + 24, 3);
224
+ return meshOut(res, {
225
+ open: open !== 0,
226
+ degenerate: Array.from(new Uint8Array(heap(), deg, spines.length), (d) => d !== 0),
227
+ errors: circle ? [] : Array.from(new Float64Array(heap(), errs, regions.length)),
228
+ });
229
+ }
230
+
231
+ /**
232
+ * triangulate(data, holeIndices) as an array of vertex indices, or null to
233
+ * use the JavaScript version (also when two holes tie for the sort order).
234
+ */
235
+ export function triangulateWasm(data, holeIndices) {
236
+ if (!enabled) return null;
237
+ wasm.reset();
238
+ const dp = put(f64(data));
239
+ const holes = holeIndices && holeIndices.length ? Int32Array.from(holeIndices) : null;
240
+ const hp = holes ? put(holes) : 0;
241
+ if (!dp || (holes && !hp)) return null;
242
+ let res;
243
+ try {
244
+ res = wasm.triangulate(dp, data.length, hp, holes ? holes.length : 0);
245
+ } catch {
246
+ return null; // stack exhausted on pathological input: JavaScript has a deeper stack
247
+ }
248
+ if (!res) return null;
249
+ const [count, p] = new Uint32Array(heap(), res, 2);
250
+ return count ? Array.from(new Uint32Array(heap(), p, count)) : [];
251
+ }
252
+
253
+ /**
254
+ * extrudeMesh from a shape ({regions, walls}) with the bevel profile rings
255
+ * {inset, z, nr, nz} and bounds from JavaScript. Returns {positions,
256
+ * normals, uvs, indices, errors: triangulation error per region}, or null
257
+ * to use the JavaScript version.
258
+ */
259
+ export function extrudeWasm(shape, bevel, rings, z0, zTop, minX, minY, S) {
260
+ if (!enabled) return null;
261
+ wasm.reset();
262
+ const list = [];
263
+ const regionTab = put(regionRows(shape.regions, list));
264
+ const walls = put(Int32Array.from(shape.walls, (_, k) => list.length + k));
265
+ list.push(...shape.walls);
266
+ const table = contourTable(list);
267
+ const ringData = new Float64Array(Math.max(1, rings.length * 4));
268
+ rings.forEach((r, k) => ringData.set([r.inset, r.z, r.nr, r.nz], k * 4));
269
+ const ringPtr = put(ringData);
270
+ const header = put(Int32Array.of(list.length, table, shape.regions.length, regionTab, shape.walls.length, walls, rings.length, ringPtr));
271
+ if (!regionTab || !walls || !table || !ringPtr || !header) return null;
272
+ const res = wasm.extrude(header, bevel, z0, zTop, minX, minY, S);
273
+ if (!res) return null;
274
+ const errs = new Uint32Array(heap(), res + 24, 1)[0];
275
+ return meshOut(res, { errors: Array.from(new Float64Array(heap(), errs, shape.regions.length)) });
276
+ }
277
+
278
+ /** measureSphereDeviation(w) for w >= 3, or null to use the JavaScript version. */
279
+ export function sphereDeviationWasm(w) {
280
+ if (!enabled) return null;
281
+ wasm.reset();
282
+ const v = wasm.sphere_deviation(w);
283
+ return v < 0 ? null : v;
284
+ }
285
+
286
+ const whole = (...v) => v.every((x) => Number.isInteger(x) && x >= 0 && x < 2 ** 30);
287
+ const prim = (res) => (res ? meshOut(res) : null);
288
+
289
+ /** unitSphere, unitCylinder, unitCapsule, unitTorus and roundedBox ({positions, normals, uvs, indices}), or null. */
290
+ export const primitivesWasm = {
291
+ sphere: (segments) => (enabled && whole(segments) ? (wasm.reset(), prim(wasm.sphere(segments))) : null),
292
+ cylinder: (top, segments, caps) => (enabled && whole(segments) ? (wasm.reset(), prim(wasm.cylinder(top, segments, caps ? 1 : 0))) : null),
293
+ capsule: (L, segments) => (enabled && whole(segments) ? (wasm.reset(), prim(wasm.capsule(L, segments))) : null),
294
+ torus: (t, arcDeg, segments, tubeSegments) => (enabled && whole(segments, tubeSegments) ? (wasm.reset(), prim(wasm.torus(t, arcDeg, segments, tubeSegments))) : null),
295
+ roundedBox: (w, h, d, r, seg) => (enabled && whole(seg) && seg >= 1 ? (wasm.reset(), prim(wasm.rounded_box(w, h, d, r, seg))) : null),
296
+ };
297
+
298
+ /** catmullRom for two or more points (a Float64Array), or null. */
299
+ export function catmullRomWasm(points, closed, subdivisions) {
300
+ if (!enabled || !whole(subdivisions) || points.length < 6 || points.length % 3) return null;
301
+ wasm.reset();
302
+ const p = put(f64(points));
303
+ const res = p && wasm.catmull_rom(p, points.length / 3, closed ? 1 : 0, subdivisions);
304
+ if (!res) return null;
305
+ const [count, out] = new Uint32Array(heap(), res, 2);
306
+ return new Float64Array(heap(), out, count * 3).slice();
307
+ }
308
+
309
+ /** gearOutline ({outline: {points, smooth, closed}, outerRadius, rootRadius}), or null. */
310
+ export function gearOutlineWasm(teeth, pressureAngleDeg, flankSamples, arcSamples) {
311
+ if (!enabled || !whole(teeth, flankSamples, arcSamples) || teeth < 1) return null;
312
+ wasm.reset();
313
+ const res = wasm.gear_outline(teeth, pressureAngleDeg, flankSamples, arcSamples);
314
+ if (!res) return null;
315
+ const [count, pts, smooth, radii] = new Uint32Array(heap(), res, 4);
316
+ const [outerRadius, rootRadius] = new Float64Array(heap(), radii, 2);
317
+ return {
318
+ outline: { points: new Float64Array(heap(), pts, count * 2).slice(), smooth: new Uint8Array(heap(), smooth, count).slice(), closed: true },
319
+ outerRadius,
320
+ rootRadius,
321
+ };
322
+ }
323
+
324
+ // Header layouts of the instance kernel (the enums in wasm/simd/instances.c).
325
+ export const INSTANCE_HEADER = {
326
+ KIND: 0, FIRST: 1, COUNT: 2, STATE: 3, MODE: 4, NX: 5, NZ: 6, RANDOM: 7, CHOICES: 8,
327
+ OPS: 9, NOPS: 10, MATS: 11, ROWS: 12, NROWS: 13, BOUNDS: 14, MATERIALS: 15, LODS: 16, OUTER_LOD: 17, SWITCH: 18, SLOTS: 19,
328
+ OUT: 20, SIZE: 29,
329
+ };
330
+ export const INSTANCE_PARAMS = { WORLD: 0, ACC: 16, STEP: 32, SPACING: 48, JITTER: 50, RADIUS: 51, AREA: 52, ROTATION: 54, SCALE: 60, BOUNDS: 66, SIZE: 72 };
331
+
332
+ /**
333
+ * Instance rows of placements [FIRST, FIRST + COUNT) of a <repeat> or
334
+ * <scatter> whose subtree was recorded as `template` ({ops, mats, table,
335
+ * bounds}, see recordTemplate in src/scene/flatten.js). The headers `h`
336
+ * (Int32Array) and `f` (Float64Array) and the table `materials` (material
337
+ * index per material code, -1 until resolveMaterial(code) has given it)
338
+ * carry the generator state, the accumulated repeat step, the scene bounds
339
+ * and the materials from one call to the next. Returns views of kernel
340
+ * memory, valid until the next kernel call, or null.
341
+ */
342
+ export function instancesWasm(h, f, template, materials, resolveMaterial) {
343
+ if (!enabled || !simd) return null;
344
+ simd.reset();
345
+ const H = INSTANCE_HEADER;
346
+ h[H.OPS] = put(template.ops, simd);
347
+ h[H.MATS] = put(template.mats, simd);
348
+ h[H.ROWS] = put(template.table, simd);
349
+ h[H.BOUNDS] = put(template.bounds, simd);
350
+ h[H.MATERIALS] = put(materials, simd);
351
+ const hp = put(h, simd), fp = put(f, simd);
352
+ if (!h[H.OPS] || !h[H.MATS] || !h[H.ROWS] || !h[H.BOUNDS] || !h[H.MATERIALS] || !hp || !fp) return null;
353
+ material = resolveMaterial;
354
+ try {
355
+ if (!simd.instances(hp, fp)) return null;
356
+ } finally {
357
+ material = null;
358
+ }
359
+ const buf = simd.memory.buffer;
360
+ h.set(new Int32Array(buf, hp, H.SIZE));
361
+ f.set(new Float64Array(buf, fp, INSTANCE_PARAMS.SIZE));
362
+ materials.set(new Int32Array(buf, h[H.MATERIALS], materials.length));
363
+ const n = h[H.COUNT] * h[H.NROWS];
364
+ const o = H.OUT;
365
+ return {
366
+ matrices: new Float32Array(buf, h[o], n * 16),
367
+ spheres: new Float32Array(buf, h[o + 1], n * 4),
368
+ geom: new Uint32Array(buf, h[o + 2], n),
369
+ mat: new Uint32Array(buf, h[o + 3], n),
370
+ uid: new Uint32Array(buf, h[o + 4], n),
371
+ lodNode: new Int32Array(buf, h[o + 5], n),
372
+ lodChild: new Uint16Array(buf, h[o + 6], n),
373
+ flags: new Uint8Array(buf, h[o + 7], n),
374
+ switches: new Float64Array(buf, h[o + 8], h[H.COUNT] * h[H.LODS] * 4),
375
+ };
376
+ }
377
+
378
+ /** es3dCos(x) and es3dSin(x) as the instance kernel computes them (for the tests), or null. */
379
+ export function cosSinWasm(x) {
380
+ if (!enabled || !simd) return null;
381
+ simd.reset();
382
+ const p = simd.alloc(16);
383
+ simd.cos_sin(x, p);
384
+ return Array.from(new Float64Array(simd.memory.buffer, p, 2));
385
+ }