@woosh/meep-engine 3.13.0 → 3.14.0
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.
- package/README.md +257 -119
- package/editor/prototypeEditorShell.js +26 -2
- package/package.json +4 -3
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.js +41 -25
- package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/PosedShape3D.js +7 -2
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +47 -0
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -0
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +109 -0
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts +28 -16
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.js +111 -92
- package/src/engine/graphics3/FogOfWarSystem.d.ts +1 -1
- package/src/engine/graphics3/FogOfWarSystem.d.ts.map +1 -1
- package/src/engine/graphics3/FogOfWarSystem.js +1 -1
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts +99 -0
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -0
- package/src/engine/graphics3/HighlightOutlineSystem.js +240 -0
- package/src/engine/graphics3/HighlightSystem.d.ts +14 -77
- package/src/engine/graphics3/HighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightSystem.js +19 -233
- package/src/engine/graphics3/HighlightSystem3.d.ts +7 -4
- package/src/engine/graphics3/HighlightSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightSystem3.js +15 -10
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +13 -8
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.js +14 -8
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/RENDERER_CONTRACT.md +579 -568
- package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +19 -14
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +1 -1
- package/src/shade/renderer/scene/Mesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/Mesh.js +4 -6
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +16 -7
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1342 -1322
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts +13 -0
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/Shadowmap.js +14 -0
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts +79 -0
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +196 -0
- package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts +91 -0
- package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/ShadowmapRegistry.js +156 -0
- package/src/engine/graphics/ecs/highlight/plugin/HighlightRenderElementSource.d.ts +0 -9
- package/src/engine/graphics/ecs/highlight/plugin/HighlightRenderElementSource.d.ts.map +0 -1
- package/src/engine/graphics/ecs/highlight/plugin/HighlightRenderElementSource.js +0 -12
- package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.d.ts +0 -16
- package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.d.ts.map +0 -1
- package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.js +0 -44
- package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderGroup.d.ts +0 -20
- package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderGroup.d.ts.map +0 -1
- package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderGroup.js +0 -29
- package/src/engine/graphics/ecs/highlight/renderer/makeGaussianBlurShader.d.ts +0 -8
- package/src/engine/graphics/ecs/highlight/renderer/makeGaussianBlurShader.d.ts.map +0 -1
- package/src/engine/graphics/ecs/highlight/renderer/makeGaussianBlurShader.js +0 -58
- package/src/engine/graphics/ecs/highlight/renderer/traverseThreeObject.d.ts +0 -8
- package/src/engine/graphics/ecs/highlight/renderer/traverseThreeObject.d.ts.map +0 -1
- package/src/engine/graphics/ecs/highlight/renderer/traverseThreeObject.js +0 -18
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_9.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64.dat +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_9.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64.dat +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_9.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64.dat +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_9.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64.dat +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_9.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64.dat +0 -1
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_9.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64.dat +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_9.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64.dat +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_9.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64.dat +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64.mag.xy.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64.mag.xz.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_0.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_1.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_10.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_11.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_12.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_13.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_14.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_15.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_16.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_17.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_18.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_19.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_2.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_20.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_21.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_22.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_23.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_24.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_25.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_26.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_27.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_28.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_29.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_3.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_30.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_31.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_32.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_33.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_34.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_35.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_36.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_37.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_38.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_39.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_4.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_40.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_41.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_42.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_43.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_44.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_45.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_46.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_47.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_48.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_49.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_5.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_50.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_51.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_52.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_53.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_54.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_55.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_56.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_57.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_58.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_59.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_6.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_60.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_61.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_62.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_63.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_7.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_8.png +0 -0
- package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_9.png +0 -0
package/README.md
CHANGED
|
@@ -1,134 +1,278 @@
|
|
|
1
1
|
# Meep Engine
|
|
2
|
-
**A pure-JavaScript, data-oriented game engine for WebGPU.**
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
**Desktop-grade real-time graphics in the browser, in a JavaScript engine you import from and drive in code.**
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
[🕹️Examples](https://meep.company-named.com/examples/) | [📚 Documentation](https://meep.company-named.com/docs/getting-started/) | [🚀 Quick Start Template](https://gitlab.company-named.com/travnik/dream-engine-template) | [📄 License](#license--copyright)
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Installation
|
|
5
|
+
[🕹️ Examples](https://meep.company-named.com/examples/) · [📚 Documentation](https://meep.company-named.com/docs/getting-started/) · [🚀 Quick Start Template](https://gitlab.company-named.com/travnik/dream-engine-template) · [📄 Licence](#licence--pricing)
|
|
13
6
|
|
|
14
7
|
```shell
|
|
15
8
|
npm install @woosh/meep-engine
|
|
16
9
|
```
|
|
17
10
|
|
|
18
|
-
**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
## 💎 Architecture: Pure ECS
|
|
23
|
-
|
|
24
|
-
* **Strict data-oriented design:** one component instance per type per entity. That constraint is what keeps memory layout and query paths predictable.
|
|
25
|
-
* **Hierarchy without a scene graph:** `ParentEntity` and `EntityNode` give you the composability of a scene graph on top of flat component storage - the thing pure-ECS architectures usually punt on.
|
|
26
|
-
* **Tiered access:** abstraction layers for gameplay logic, raw typed arrays underneath. Physics bodies, geometry and transforms are all backed by them; the component store itself is index-addressed rather than a flat typed array.
|
|
27
|
-
* **Allocation-conscious throughout:** pooling, SoA storage and reuse on the hot paths, so frame times stay flat instead of sawtoothing against the collector.
|
|
11
|
+
**Proprietary and source-available.** You get all ~6,200 fine-grained ES modules, unobfuscated,
|
|
12
|
+
under a licence that lets you ship. Need a lerp function? Import the module that holds it and pay
|
|
13
|
+
for those four lines.
|
|
28
14
|
|
|
29
15
|
---
|
|
30
16
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
* **Lighting:** clustered point and spot lights, shadows, ReSTIR DI, brick4 volumetric GI.
|
|
37
|
-
|
|
38
|
-
* **Virtual geometry and virtual textures:** `.vgeo` streaming, a GPU scene database, GPU animation and skinning.
|
|
39
|
-
|
|
40
|
-
* **Decals:** frustum-culled and cluster-assigned on the GPU, composited against the G-buffer out of a shared atlas. Capacity grows with the record buffer rather than sitting behind a fixed cap.
|
|
17
|
+
meep has one renderer, not a kit of parts. Every feature is part of a single frame and works off
|
|
18
|
+
the same shared data, so a character's shadow, the decal on the wall behind it and the fog in
|
|
19
|
+
between are computed together and agree with each other. There is one path rather than a
|
|
20
|
+
combinatorial number of them, so it is tuned once - by the engine, not by you.
|
|
41
21
|
|
|
42
|
-
|
|
22
|
+
That is not how browser rendering usually goes. Most WebGPU and WebGL renderers are a rasterizer
|
|
23
|
+
plus an ecosystem: you assemble the frame yourself out of plugins written without knowledge of each
|
|
24
|
+
other, so a stack can have shadows, decals, global illumination, anti-aliasing and volumetric fog
|
|
25
|
+
on paper and still not have them working together - and every plugin is another set of numbers to
|
|
26
|
+
tune, per scene and per device.
|
|
43
27
|
|
|
44
|
-
|
|
28
|
+
**Shadows, ambient occlusion, indirect lighting, auto-exposure, anti-aliasing and transparency are
|
|
29
|
+
all on by default, and there is nothing to configure to get a correct-looking frame.** No quality
|
|
30
|
+
tiers to author, no per-device profiles, no exposure value to pick, no shadow cascade splits to
|
|
31
|
+
hand-tune. You put a scene together, it looks right, and it holds its frame rate across a wide
|
|
32
|
+
range of hardware without you doing anything about it.
|
|
45
33
|
|
|
46
|
-
|
|
34
|
+
<!--
|
|
35
|
+
PLACEHOLDER - two claims were removed from the opening because nothing in the repository
|
|
36
|
+
supports them. Both may be true; neither is verifiable from source. Restore with specifics.
|
|
47
37
|
|
|
48
|
-
|
|
38
|
+
1. "shipped in commercial Steam releases" - needs the titles. Verified 2026-09-01: zero Steam app
|
|
39
|
+
IDs, zero steamworks/steam_api references, zero named shipped products anywhere in the tree.
|
|
40
|
+
The only game the repo names is the codename "mir", whose own README says it is unpublished.
|
|
41
|
+
Every other occurrence of "Steam" is Steam Audio cited as a design reference. Naming even one
|
|
42
|
+
title is worth more than the generic sentence was.
|
|
49
43
|
|
|
50
|
-
|
|
44
|
+
2. "Built over 10+ years" - git history runs 2020-04-19 to 2026-09-01 (6y4m, 7,652 commits), with
|
|
45
|
+
no earlier commit by author or committer date. If the 10 years predates this repository, say
|
|
46
|
+
so; otherwise "in development since 2020" is defensible as written.
|
|
47
|
+
-->
|
|
51
48
|
|
|
52
|
-
* **Picking** is asynchronous and batched (`PickingQuery`); there is no synchronous entry point.
|
|
53
|
-
|
|
54
|
-
On top of Shade, `engine/graphics3` carries the ECS systems a game binds to: cameras, lights, animation, decals, particles, terrain, water, trails, highlights, fog of war and volumetric light maps.
|
|
55
|
-
|
|
56
|
-
Deliberately absent: compressed textures (DDS, Draco, Basis), double-sided drawing, and any second backend.
|
|
57
49
|
|
|
58
50
|
---
|
|
59
51
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
* **
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
* **
|
|
81
|
-
|
|
82
|
-
|
|
52
|
+
# The renderer
|
|
53
|
+
|
|
54
|
+
A GPU-driven deferred renderer on WebGPU. It lives under `src/shade/`, which is where the `Shade*`
|
|
55
|
+
type names come from.
|
|
56
|
+
|
|
57
|
+
## What you get
|
|
58
|
+
|
|
59
|
+
* **Thousands of dynamic lights.** Lighting is one pass over the screen however many lights are in
|
|
60
|
+
the scene. A light adds work only on the pixels it actually touches - not another pass, not
|
|
61
|
+
another draw - so lights are something you place rather than something you budget.
|
|
62
|
+
* **Shadows from every light, with nothing to set up.** No fixed limit on how many lights cast
|
|
63
|
+
shadows. Cascade distances come from your camera, each shadow's resolution from how large that
|
|
64
|
+
light looks on screen, and refresh priority from what has changed. There is no per-light shadow
|
|
65
|
+
setting to get wrong.
|
|
66
|
+
* **Scene complexity is nearly free on the CPU.** All opaque geometry is submitted in a couple of
|
|
67
|
+
draw calls, whether the scene holds one object or a hundred thousand. Visibility is decided on
|
|
68
|
+
the GPU, so adding objects does not add CPU work per object.
|
|
69
|
+
* **You don't pay for what you can't see.** Geometry hidden behind other geometry is dropped on the
|
|
70
|
+
GPU before anything shades it, and this works below the level of whole objects - a mesh half
|
|
71
|
+
behind a wall does not cost its hidden half. A dense interior costs roughly what you can see of it.
|
|
72
|
+
* **Overlapping geometry doesn't multiply cost.** Deferred shading means a surface hidden behind
|
|
73
|
+
another is not shaded twice. Materials are evaluated once per visible pixel, after the scene is
|
|
74
|
+
drawn.
|
|
75
|
+
* **Features you turn off cost nothing.** The frame is assembled as a graph, and work that nothing
|
|
76
|
+
consumes is dropped before it reaches the GPU. That applies to passes you add as well - you
|
|
77
|
+
extend the frame by declaring where your work goes, not by patching the renderer.
|
|
78
|
+
|
|
79
|
+
If you want the mechanisms behind these - visibility buffer, meshlet clustering, clustered lighting,
|
|
80
|
+
occlusion culling, the frame graph - they are in **[the renderer contract](src/shade/RENDERER_CONTRACT.md)**,
|
|
81
|
+
which also covers how to put a model on the screen and how to add your own work to the frame.
|
|
82
|
+
|
|
83
|
+
## How the features interact
|
|
84
|
+
|
|
85
|
+
What a feature list cannot tell you is whether the features work together once they are in the same
|
|
86
|
+
scene. This can.
|
|
87
|
+
|
|
88
|
+
| | Lit by scene lights | Shadows | Stable when it moves | Indirect light |
|
|
89
|
+
|---|---|---|---|---|
|
|
90
|
+
| Static meshes | ✅ | casts + receives | ✅ | ✅ |
|
|
91
|
+
| **Skinned characters** | ✅ | casts + receives | ✅ **per-vertex** | ✅ |
|
|
92
|
+
| Terrain | ✅ | casts + receives | ✅ | ✅ |
|
|
93
|
+
| Decals | ✅ | receives | ✅ follows the surface | ✅ |
|
|
94
|
+
| Transparent surfaces | ✅ | receives | ❌ | ✅ |
|
|
95
|
+
| Volumetric fog | ✅ | shadowed by them | ✅ | n/a |
|
|
96
|
+
| Water, particles, trails, overlays | ❌ | ❌ | ❌ | ❌ |
|
|
97
|
+
|
|
98
|
+
Those top six are not six systems that were each taught about lighting. They read the same lighting,
|
|
99
|
+
the same shadows and the same motion data, because there is only one of each. Three consequences:
|
|
100
|
+
|
|
101
|
+
* **Animated characters are not a special case.** A skinned character goes down the same path as a
|
|
102
|
+
static one: same culling, same shadows, same lighting. It also produces motion data per vertex
|
|
103
|
+
rather than per object, so a swinging arm resolves cleanly under anti-aliasing instead of
|
|
104
|
+
smearing - which is the usual failure of bolt-on temporal AA.
|
|
105
|
+
* **A decal is lit like the surface it lands on.** Decals modify the surface itself rather than
|
|
106
|
+
painting over the finished image, so a scorch mark is lit, shadowed and bounced exactly like the
|
|
107
|
+
wall under it, and ambient occlusion and reflections see it too.
|
|
108
|
+
* **Ordering is declared, not accidental.** Systems state what they must come after, by name, and
|
|
109
|
+
the renderer resolves the order. Decals declare that they follow terrain, so scorch marks land on
|
|
110
|
+
textured ground - rather than depending on which system happened to register first.
|
|
111
|
+
|
|
112
|
+
Water, particles, trails and screen overlays are drawn after lighting, so they are not lit or
|
|
113
|
+
shadowed and contribute no motion data. They read the scene's depth, so they are correctly hidden
|
|
114
|
+
behind things in front of them.
|
|
115
|
+
|
|
116
|
+
## Scaling across hardware
|
|
117
|
+
|
|
118
|
+
**One build covers a wide hardware range, and you don't author the tiers.** When frames start
|
|
119
|
+
costing more than the budget - on a weaker GPU, or because the scene got busy - the engine renders
|
|
120
|
+
internally at a lower resolution and upscales back to the display, adjusting continuously as
|
|
121
|
+
conditions change. Nothing in your application is involved: this is wired up by default when you
|
|
122
|
+
construct an `Engine`.
|
|
123
|
+
|
|
124
|
+
Anti-aliasing is what does the upscaling, and it is on by default. Out of the box the internal and
|
|
125
|
+
display resolutions are the same, so you get anti-aliasing at native resolution and no upscaling
|
|
126
|
+
until something needs the headroom.
|
|
127
|
+
|
|
128
|
+
It holds a **floor rather than a target**: 30 FPS by default, taking no action on hardware that is
|
|
129
|
+
already clearing it, and trading resolution down to 43% before it runs out of room. What it costs
|
|
130
|
+
is one re-converging frame each time the resolution steps, since temporal history is discarded.
|
|
131
|
+
|
|
132
|
+
To override or opt out:
|
|
83
133
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
* **Pluggable transports:** WebRTC DataChannel, WebTransport, WebSocket and Node UDP - plus loopback and simulated transports for tests - with ack-based reliability, MTU fragmentation and per-peer scope filtering.
|
|
89
|
-
|
|
90
|
-
* **Diagnostics:** bandwidth metering, packet record/replay, cross-peer desync detection.
|
|
91
|
-
|
|
92
|
-
## 🧠 Navigation & AI
|
|
93
|
-
|
|
94
|
-
* **Pathfinding:** A* grid search, and a navigation mesh with build-time obstacle carving and exact (Polyanya) any-angle queries.
|
|
95
|
-
|
|
96
|
-
* **Behavior trees and blackboards** for agent state.
|
|
97
|
-
|
|
98
|
-
* **Monte-Carlo tree search**, for decision logic that searches a game tree rather than following one.
|
|
99
|
-
|
|
100
|
-
* **Resource allocation solver:** plan optimal actions against limited resources (ammo, health, currency).
|
|
101
|
-
|
|
102
|
-
* **Spatial queries:** 2-wide and 8-wide BVH implementations for ray, box, frustum and point queries.
|
|
103
|
-
|
|
104
|
-
## 🌱 Procedural Generation
|
|
105
|
-
`src/generation` is a rule-driven grid generator: cellular automata, layered grids with bitmask cell matchers, rule sets that place markers and spawn entities, filtering and placement passes, theme-driven selection. Generation is composable tasks over a shared `GridGenerationResource`, so building a world is a task graph rather than a script.
|
|
106
|
-
|
|
107
|
-
## 📦 Assets & Codecs
|
|
108
|
-
|
|
109
|
-
* **Models:** glTF, including `KHR_meshopt_compression`. A model file expands into **entities** - `ShadedGeometry` on the nodes that draw - rather than living as a tree inside one component.
|
|
110
|
-
|
|
111
|
-
* **Images, decoded in-engine:** PNG (every bit depth and filter), JPEG, and AVIF - a from-scratch AV1 intra encoder and decoder in pure JavaScript with rate-distortion mode search, and no WebAssembly. `NativeImageDecoder` prefers the browser's own decoder where there is one and falls back to these.
|
|
112
|
-
|
|
113
|
-
* **Streaming:** web-first asset streaming. The engine runs before assets even load.
|
|
134
|
+
```js
|
|
135
|
+
engine.graphics.dynamic_resolution.enabled = false; // or .target_frame_rate / .min_scale
|
|
136
|
+
engine.graphics.renderer.feature_taa_enabled = false; // only valid after start()
|
|
137
|
+
```
|
|
114
138
|
|
|
115
|
-
|
|
139
|
+
Two things to know. Anti-aliasing is the only thing that upscales, so switching it off while the
|
|
140
|
+
resolution scale is below full leaves the frame un-upscaled. And if you drive the `Renderer`
|
|
141
|
+
directly rather than through `Engine`, none of this is wired for you.
|
|
142
|
+
|
|
143
|
+
A neural upscaler ships alongside the default one - a port of ARM's Neural Super Sampling, weights
|
|
144
|
+
included, no setup needed - one assignment away at `renderer.upscale_type = ShadeUpscalerType.NSS`.
|
|
145
|
+
|
|
146
|
+
## Correct by default
|
|
147
|
+
|
|
148
|
+
The out-of-the-box configuration is the expensive-and-correct one, not the safe-and-cheap one.
|
|
149
|
+
|
|
150
|
+
**On, with nothing to configure:** shadows · ambient occlusion · indirect lighting · anti-aliasing ·
|
|
151
|
+
auto-exposure · tonemapping · bloom · sharpening · order-independent transparency. Virtual texturing
|
|
152
|
+
is available system-wide and opts in per material.
|
|
153
|
+
|
|
154
|
+
* **Shadows** need no numbers from you. Cascade distances come from your camera, shadow map sizes
|
|
155
|
+
from how large each light looks on screen, and depth bias from constants that work. There is no
|
|
156
|
+
cascade array to hand-tune and no shadow budget to apportion.
|
|
157
|
+
* **Auto-exposure** needs no exposure value. The engine meters the scene's brightness each frame,
|
|
158
|
+
weighted toward the centre of the image and ignoring the brightest and darkest few percent so a
|
|
159
|
+
bright sky or a dark corner does not drag the whole frame, then eases toward it - faster when the
|
|
160
|
+
scene brightens than when it darkens, the way an eye does. Walk from a dark interior into daylight
|
|
161
|
+
and it adjusts.
|
|
162
|
+
* **Tonemapping** picks its own operator from the display: ACES on SDR, and a dedicated HDR curve
|
|
163
|
+
when the display is HDR.
|
|
164
|
+
|
|
165
|
+
Opt-in, off by default: screen-space reflections, motion blur, depth of field, ReSTIR direct
|
|
166
|
+
lighting, and a reference path tracer.
|
|
167
|
+
|
|
168
|
+
**Global illumination** defaults to image-based. There is also a baked volumetric GI mode - probe
|
|
169
|
+
bricks through the scene volume, in the shape Unreal's volumetric lightmaps take - which dynamic and
|
|
170
|
+
skinned objects sample as they move through it. It bakes in-engine, from a live scene and renderer,
|
|
171
|
+
so the precompute is a call you make rather than a tool you leave the engine for. Opaque and
|
|
172
|
+
transparent surfaces both use it, so turning it on does not leave them lit differently.
|
|
173
|
+
|
|
174
|
+
## WebGPU only
|
|
175
|
+
|
|
176
|
+
WebGPU is not a better WebGL - it is a different machine. Compute shaders, storage buffers and
|
|
177
|
+
indirect draw are what let visibility be decided on the GPU and a whole scene be submitted in a
|
|
178
|
+
couple of draw calls. None of that has an equivalent in WebGL, so supporting both would mean either
|
|
179
|
+
a second renderer to maintain or holding this one down to what the older API can express. meep
|
|
180
|
+
targets WebGPU, and everything above follows from that.
|
|
181
|
+
|
|
182
|
+
The floor is fixed and checked before anything is created: WebGPU plus a small set of capabilities
|
|
183
|
+
that mainstream desktop GPUs have had for years. Hardware that does not clear it gets a clear
|
|
184
|
+
failure message written to be shown to a person, rather than a degraded picture. The exact features
|
|
185
|
+
and limits are in [§2 of the contract](src/shade/RENDERER_CONTRACT.md).
|
|
186
|
+
|
|
187
|
+
## Numbers
|
|
188
|
+
|
|
189
|
+
There is no published benchmark for the renderer yet. What the pipeline does differently is
|
|
190
|
+
checkable in the source without running anything - draw count independent of object count, one
|
|
191
|
+
lighting pass independent of light count, material cost independent of overdraw - and the tools to
|
|
192
|
+
measure the rest ship with it.
|
|
193
|
+
|
|
194
|
+
The renderer records `.sgpt` GPU profile captures - per-pass timings, and at higher capture levels
|
|
195
|
+
the frame-graph structure, dispatch and draw counts. Assign a
|
|
196
|
+
`GPUProfileSession({ level: GPUProfileLevel.WORKLOAD })` to `renderer.profile_session`, call
|
|
197
|
+
`start()`, run frames, and `stop()` returns an `ArrayBuffer` to write out. The recorder and the
|
|
198
|
+
[format specification](src/shade/device/timing/profile/SGPT_FORMAT.md) both ship in this package.
|
|
199
|
+
|
|
200
|
+
<!--
|
|
201
|
+
BENCHMARK TABLE - do not fill from memory or estimate. Needs a real measured run.
|
|
202
|
+
Verified 2026-09-01: no end-to-end renderer frame-time measurement exists anywhere in this
|
|
203
|
+
repository, and no measurement against three.js / PlayCanvas / Unity / Babylon exists in any form.
|
|
204
|
+
Do not write "several times faster than three.js" until there is a reproducible run behind it.
|
|
205
|
+
|
|
206
|
+
| Scene | Hardware | Resolution | Frame time | Draw calls | Triangles | Lights |
|
|
207
|
+
|---|---|---|---|---|---|---|
|
|
208
|
+
| | | | | | | |
|
|
209
|
+
|
|
210
|
+
To fill this, the following must be measured and recorded:
|
|
211
|
+
1. A PUBLIC scene. None currently exists - all four playground entry points are dev-server-only
|
|
212
|
+
and three need assets from the gitignored, unpublished `test_assets/`. Publishing one scene
|
|
213
|
+
the reader can open is a prerequisite for every row of this table.
|
|
214
|
+
2. Whole-frame time at a named resolution on a NAMED GPU (not "4070-class"), with the swap chain
|
|
215
|
+
confirmed not to be the limiter - volumetrics_froxel/README.md:83 records 1080p reading a flat
|
|
216
|
+
~16.5 ms under presentation throttling, which is what makes its 28 ms figure at :189 unusable.
|
|
217
|
+
3. Draw-call and triangle counts from the same run - both are already in an .sgpt capture.
|
|
218
|
+
4. The same scene at two or three resolutions, to show the dynamic-resolution curve.
|
|
219
|
+
5. Optional and unusually strong: publish the .sgpt capture itself alongside the numbers.
|
|
220
|
+
The writer already ships; the viewer needs deploying (it is currently `"private": true`).
|
|
221
|
+
-->
|
|
116
222
|
|
|
117
223
|
---
|
|
118
224
|
|
|
119
|
-
##
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
* **
|
|
124
|
-
|
|
125
|
-
|
|
225
|
+
## Everything else
|
|
226
|
+
|
|
227
|
+
The rest of what a game needs, in the same package. Each links out to its own documentation.
|
|
228
|
+
|
|
229
|
+
* **Architecture.** A real ECS - one component per type per entity - with parent/child hierarchy
|
|
230
|
+
available without a scene graph. Allocation-conscious on the hot paths, so frame times stay flat
|
|
231
|
+
rather than sawtoothing against the garbage collector.
|
|
232
|
+
* **Physics.** Deterministic rigid bodies in pure JavaScript, no WebAssembly and no worker threads,
|
|
233
|
+
with the determinism covered by replay tests - which is what lets it sit under rollback netcode.
|
|
234
|
+
Convex and mesh collision, continuous collision detection for fast movers, and bodies that stop
|
|
235
|
+
costing anything once they settle. A raycast vehicle, a character controller that handles stairs
|
|
236
|
+
and slopes, and inverse kinematics. [Fluid simulation](src/engine/physics/mls-mpm/README.md) is
|
|
237
|
+
separate and can run off the main thread.
|
|
238
|
+
* **Audio.** The Wwise/FMOD feature set without the middleware: events, a mixer bus tree, real-time
|
|
239
|
+
parameters, voice stealing, snapshots and ducking, all authored as engine data you can serialize.
|
|
240
|
+
Opt-in [acoustic simulation](src/engine/sound/simulation/README.md) adds occlusion, transmission
|
|
241
|
+
and reverb driven by the scene's own geometry.
|
|
242
|
+
* **[Networking](src/engine/network/README.md).** Server-authoritative rollback: client-side
|
|
243
|
+
prediction, reconciliation, and binary snapshots. Transports for WebRTC, WebTransport, WebSocket
|
|
244
|
+
and Node UDP, plus loopback and deliberately lossy ones for tests. Bandwidth metering, packet
|
|
245
|
+
record and replay, and cross-peer desync detection.
|
|
246
|
+
* **Navigation & AI.** Grid A\*, and a [navigation mesh](src/engine/navigation/mesh/README.md) with
|
|
247
|
+
any-angle paths and obstacle carving at build time. Behaviour trees and blackboards, [Monte-Carlo
|
|
248
|
+
tree search](src/engine/intelligence/mcts/README.md) for agents that search a game tree rather
|
|
249
|
+
than follow one, and a planner for spending limited resources. Ray, box, frustum and point queries
|
|
250
|
+
against the scene.
|
|
251
|
+
* **Procedural generation.** [A rule-driven grid generator](src/generation): cellular automata,
|
|
252
|
+
layered grids, rule sets that place markers and spawn entities, theme-driven selection. Generation
|
|
253
|
+
composes as tasks over shared state, so building a world is a graph of steps rather than a script.
|
|
254
|
+
* **Assets & codecs.** glTF, including meshopt compression, loading into **entities** rather than
|
|
255
|
+
one opaque tree. PNG, JPEG and AVIF decoded in-engine - the AV1 codec is a from-scratch encoder
|
|
256
|
+
*and* decoder in pure JavaScript, no WebAssembly. Web-first asset streaming, and binary
|
|
257
|
+
serialization that upgrades across versions.
|
|
258
|
+
* **Tooling.** An in-app editor that attaches to and detaches from a running engine. [GPU profile
|
|
259
|
+
capture](src/shade/device/timing/profile/SGPT_FORMAT.md) that records per-pass timings and leaves
|
|
260
|
+
the build entirely when you don't import it. A software WebGPU implementation and a WGSL
|
|
261
|
+
interpreter, so shaders and pipelines are testable on machines with no GPU.
|
|
262
|
+
* **Everything smaller.** Input across touch, mouse, keyboard and gamepad behind one abstraction ·
|
|
263
|
+
an optional DOM UI layer, replaceable with React or Vue · colour management with perceptual
|
|
264
|
+
spaces, HDR transfer functions, tone mapping and gamut clipping · node graphs · achievements ·
|
|
265
|
+
localisation · key-value storage over IndexedDB.
|
|
266
|
+
|
|
267
|
+
Held to **~15,000 tests** - determinism, adversarial and shader-emulation suites among them.
|
|
126
268
|
|
|
127
269
|
---
|
|
128
270
|
|
|
129
|
-
##
|
|
271
|
+
## Shipping a build
|
|
130
272
|
|
|
131
|
-
The engine carries ~6,
|
|
273
|
+
The engine carries ~6,100 assertions. They throw while you develop, and
|
|
274
|
+
[`@rollup/plugin-strip`](https://github.com/rollup/plugins/tree/master/packages/strip) takes them
|
|
275
|
+
out of a production build - its defaults already cover `assert.*`:
|
|
132
276
|
|
|
133
277
|
```js
|
|
134
278
|
// vite.config.js
|
|
@@ -138,27 +282,21 @@ export default defineConfig({
|
|
|
138
282
|
});
|
|
139
283
|
```
|
|
140
284
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
## Additional Features
|
|
144
|
-
|
|
145
|
-
| Category | Features |
|
|
146
|
-
|------------------|-------------------------------------------------------------------------------------------------------------------|
|
|
147
|
-
| Input | Touch, mouse, keyboard and gamepad behind one abstraction. Event-driven and query-based APIs |
|
|
148
|
-
| UI | Zero-garbage DOM view system. Optional; replaceable with React/Vue |
|
|
149
|
-
| Color Management | OKLab/OkHSV, CIELAB, HSV/HCL, PQ, YCbCr/YCoCg, illuminants, spectral integration, tone mapping and gamut clipping |
|
|
150
|
-
| NodeGraph | A building block for node-graph systems, such as shader editors and workflow engines |
|
|
151
|
-
| Achievements | Achievement system driven by expressions and blackboards |
|
|
152
|
-
| Localization | Per-locale string catalogues with template variables and `Intl` number formatting |
|
|
153
|
-
| Storage | Key-value `Storage` abstraction with IndexedDB and in-memory backends |
|
|
285
|
+
Note that those defaults also strip `console.*`.
|
|
154
286
|
|
|
155
287
|
---
|
|
156
288
|
|
|
157
|
-
##
|
|
289
|
+
## Licence & pricing
|
|
290
|
+
|
|
158
291
|
Copyright © 2026 Company Named Limited. All rights reserved.
|
|
159
292
|
|
|
160
|
-
**Free for small projects.** You can build and ship commercially at no cost for as long as a project
|
|
293
|
+
**Free for small projects.** You can build and ship commercially at no cost for as long as a project
|
|
294
|
+
stays under US$50,000 in funding and US$50,000 in revenue. Evaluating the engine and building
|
|
295
|
+
internal prototypes are free whatever your funding. Paid tiers - Indie, Standard, and Enterprise -
|
|
296
|
+
raise that ceiling for a one-time fee per project, and add 24 months of major-version coverage.
|
|
161
297
|
|
|
162
|
-
Short version: ship anything you like, just don't redistribute the source and don't build a
|
|
298
|
+
Short version: ship anything you like, just don't redistribute the source and don't build a
|
|
299
|
+
competing engine.
|
|
163
300
|
|
|
164
|
-
See [LICENSE](LICENSE) for the terms covering this package, and the
|
|
301
|
+
See [LICENSE](LICENSE) for the terms covering this package, and the
|
|
302
|
+
[pricing page](https://meep.company-named.com/pricing/) for the tier ladder.
|
|
@@ -16,7 +16,16 @@ import { TransformAttachmentSystem } from "../src/engine/ecs/transform-attachmen
|
|
|
16
16
|
import { EngineHarness } from "../src/engine/EngineHarness.js";
|
|
17
17
|
import TopDownCameraController from "../src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js";
|
|
18
18
|
import { DebugDrawSystem } from "../src/engine/graphics3/DebugDrawSystem.js";
|
|
19
|
+
import {
|
|
20
|
+
HighlightOutlineSystem
|
|
21
|
+
} from "../src/engine/graphics3/HighlightOutlineSystem.js";
|
|
19
22
|
import { MeshSystem } from "../src/engine/graphics3/MeshSystem.js";
|
|
23
|
+
import {
|
|
24
|
+
ShadedGeometryHighlightSystem
|
|
25
|
+
} from "../src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js";
|
|
26
|
+
import {
|
|
27
|
+
SGMeshHighlightSystem
|
|
28
|
+
} from "../src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.js";
|
|
20
29
|
import {
|
|
21
30
|
ShadedGeometrySystem
|
|
22
31
|
} from "../src/engine/graphics3/ShadedGeometrySystem.js";
|
|
@@ -73,16 +82,31 @@ function addModelLoaders(config) {
|
|
|
73
82
|
async function addGraphicsSystems(engine) {
|
|
74
83
|
const em = engine.entityManager;
|
|
75
84
|
|
|
76
|
-
|
|
85
|
+
const meshes = new MeshSystem(
|
|
77
86
|
engine.graphics,
|
|
78
87
|
EngineHarness.shadeScene(engine),
|
|
79
88
|
url => load_model_scene_bundle(engine.assetManager, url)
|
|
80
|
-
)
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
await em.addSystem(meshes);
|
|
81
92
|
|
|
82
93
|
// a model with neither skin nor clip becomes entities, and its primitives are drawn by the
|
|
83
94
|
// system that owns primitives (D47)
|
|
84
95
|
await em.addSystem(new ShadedGeometrySystem(engine.graphics, EngineHarness.shadeScene(engine)));
|
|
85
96
|
|
|
97
|
+
/*
|
|
98
|
+
One outline pass and both of its sources, because the editor offers a `Highlight` editor and
|
|
99
|
+
either kind of thing can be carrying the component: a model placed from the mesh library is an
|
|
100
|
+
`SGMesh`, and anything built in place is a `ShadedGeometry`. The pass is registered once and
|
|
101
|
+
draws for both — a pass per kind would read the whole visibility buffer once per kind, and the
|
|
102
|
+
last would paint over the rest.
|
|
103
|
+
*/
|
|
104
|
+
const outline = new HighlightOutlineSystem(engine.graphics);
|
|
105
|
+
|
|
106
|
+
await em.addSystem(outline);
|
|
107
|
+
await em.addSystem(new SGMeshHighlightSystem(outline, meshes));
|
|
108
|
+
await em.addSystem(new ShadedGeometryHighlightSystem(outline));
|
|
109
|
+
|
|
86
110
|
await em.addSystem(new ParticleEmitterSystem(engine.graphics, engine.assetManager));
|
|
87
111
|
|
|
88
112
|
// the editor's selection box is the debug-draw pass's first consumer (V5)
|
package/package.json
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"license": "SEE LICENSE IN LICENSE",
|
|
4
4
|
"productName": "Meep",
|
|
5
5
|
"homepage": "https://meep.company-named.com/",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "Advanced 3D game engine",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"author": "Alexander Goldring",
|
|
9
|
-
"version": "3.
|
|
9
|
+
"version": "3.14.0",
|
|
10
10
|
"exports": {
|
|
11
11
|
"./build/*": "./build/*",
|
|
12
12
|
"./src/*": "./src/*",
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
"README.md",
|
|
40
40
|
"!src/**/*.spec.js",
|
|
41
41
|
"!editor/**/*.spec.js",
|
|
42
|
-
"!src/**/__fixtures__/**"
|
|
42
|
+
"!src/**/__fixtures__/**",
|
|
43
|
+
"!src/shade/renderer/texture/noise/stbn/images/**"
|
|
43
44
|
],
|
|
44
45
|
"dependencies": {
|
|
45
46
|
"opentype.js": "1.3.3",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvexHullShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/ConvexHullShape3D.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IA8CI;;;;;;;OAOG;IACH,sBAJW,YAAY,WACZ,WAAW,GACT,iBAAiB,CAQ7B;IA1DD;;;;OAIG;IACH,UAFU,YAAY,CAES;IAE/B;;;;OAIG;IACH,SAFU,WAAW,CAEQ;IAE7B;;;;;;OAMG;IACH,cAFU,WAAW,CAEa;IAElC,0BAA0B;IAC1B,YADW,WAAW,CACU;IAEhC;;;;;;OAMG;IACH,iBAA+B;IAE/B,oCAAoC;IACpC,eAA6B;IAE7B,8BAA8B;IAC9B,iBAAa;IAEb,8BAA8B;IAC9B,uBAAmB;IAkBnB;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"ConvexHullShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/ConvexHullShape3D.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IA8CI;;;;;;;OAOG;IACH,sBAJW,YAAY,WACZ,WAAW,GACT,iBAAiB,CAQ7B;IA1DD;;;;OAIG;IACH,UAFU,YAAY,CAES;IAE/B;;;;OAIG;IACH,SAFU,WAAW,CAEQ;IAE7B;;;;;;OAMG;IACH,cAFU,WAAW,CAEa;IAElC,0BAA0B;IAC1B,YADW,WAAW,CACU;IAEhC;;;;;;OAMG;IACH,iBAA+B;IAE/B,oCAAoC;IACpC,eAA6B;IAE7B,8BAA8B;IAC9B,iBAAa;IAEb,8BAA8B;IAC9B,uBAAmB;IAkBnB;;;OAGG;IACH,kBAkFC;IAUD,wCAQC;IAED;;;;;OAKG;IACH,qGAwCC;IAED;;;;;;;;OAQG;IACH,yCAEC;IAED;;;;OAIG;IACH,wCAEC;IAED,qCAkBC;IAED;;;OAGG;IACH,oCAgBC;IAED;;;OAGG;IACH,6CAiBC;IAED,mEAEC;IAED,4DAwBC;IAGD;;;OAGG;IACH,cAHW,iBAAiB,GACf,OAAO,CAanB;IAcL;;;;OAIG;IACH,8BAFU,OAAO,CAE8B;CAP9C;gCAtY+B,sBAAsB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { hash_mix2 } from "../../../math/hash/hash_mix2.js";
|
|
2
2
|
import { computeHashFloat } from "../../../primitives/numbers/computeHashFloat.js";
|
|
3
|
+
import { aabb3_from_v3_array } from "../aabb/aabb3_from_v3_array.js";
|
|
4
|
+
import { convex_polyhedron3_raycast } from "../polyhedron/convex_polyhedron3_raycast.js";
|
|
3
5
|
import { tri3_closest_point } from "../triangle/tri3_closest_point.js";
|
|
4
6
|
import { AbstractShape3D } from "./AbstractShape3D.js";
|
|
5
7
|
import { compute_signed_distance_gradient_by_sampling } from "./util/compute_signed_distance_gradient_by_sampling.js";
|
|
6
|
-
import { aabb3_from_v3_array } from "../aabb/aabb3_from_v3_array.js";
|
|
7
|
-
import { convex_polyhedron3_raycast } from "../polyhedron/convex_polyhedron3_raycast.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Convex polyhedron collider.
|
|
@@ -161,9 +161,13 @@ export class ConvexHullShape3D extends AbstractShape3D {
|
|
|
161
161
|
// Σ a·n === Σ (a − o)·n over a closed surface, since Σ n = 0.
|
|
162
162
|
vol6 += (ax - ox) * nx + (ay - oy) * ny + (az - oz) * nz;
|
|
163
163
|
|
|
164
|
-
nx /= len;
|
|
164
|
+
nx /= len;
|
|
165
|
+
ny /= len;
|
|
166
|
+
nz /= len;
|
|
165
167
|
const o = f * 4;
|
|
166
|
-
planes[o] = nx;
|
|
168
|
+
planes[o] = nx;
|
|
169
|
+
planes[o + 1] = ny;
|
|
170
|
+
planes[o + 2] = nz;
|
|
167
171
|
planes[o + 3] = nx * ax + ny * ay + nz * az;
|
|
168
172
|
}
|
|
169
173
|
this.__planes = planes;
|
|
@@ -178,13 +182,22 @@ export class ConvexHullShape3D extends AbstractShape3D {
|
|
|
178
182
|
this.face_loops = idx;
|
|
179
183
|
}
|
|
180
184
|
|
|
181
|
-
get volume() {
|
|
182
|
-
|
|
185
|
+
get volume() {
|
|
186
|
+
return this.__volume;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
get surface_area() {
|
|
190
|
+
return this.__surface_area;
|
|
191
|
+
}
|
|
183
192
|
|
|
184
193
|
compute_bounding_box(result) {
|
|
185
194
|
const b = this.__bbox;
|
|
186
|
-
result[0] = b[0];
|
|
187
|
-
result[
|
|
195
|
+
result[0] = b[0];
|
|
196
|
+
result[1] = b[1];
|
|
197
|
+
result[2] = b[2];
|
|
198
|
+
result[3] = b[3];
|
|
199
|
+
result[4] = b[4];
|
|
200
|
+
result[5] = b[5];
|
|
188
201
|
}
|
|
189
202
|
|
|
190
203
|
/**
|
|
@@ -201,9 +214,9 @@ export class ConvexHullShape3D extends AbstractShape3D {
|
|
|
201
214
|
) {
|
|
202
215
|
|
|
203
216
|
const v = this.vertices;
|
|
204
|
-
const
|
|
217
|
+
const vertex_array_length = v.length;
|
|
205
218
|
|
|
206
|
-
if (
|
|
219
|
+
if (vertex_array_length === 0) {
|
|
207
220
|
|
|
208
221
|
result[result_offset] = 0;
|
|
209
222
|
result[result_offset + 1] = 0;
|
|
@@ -212,27 +225,27 @@ export class ConvexHullShape3D extends AbstractShape3D {
|
|
|
212
225
|
return;
|
|
213
226
|
}
|
|
214
227
|
|
|
215
|
-
let
|
|
216
|
-
let
|
|
228
|
+
let best_distance = -Infinity;
|
|
229
|
+
let best_offset = 0;
|
|
217
230
|
|
|
218
|
-
for (let
|
|
231
|
+
for (let offset = 0; offset < vertex_array_length; offset += 3) {
|
|
219
232
|
|
|
220
|
-
const v_x = v[
|
|
221
|
-
const v_y = v[
|
|
222
|
-
const v_z = v[
|
|
233
|
+
const v_x = v[offset];
|
|
234
|
+
const v_y = v[offset + 1];
|
|
235
|
+
const v_z = v[offset + 2];
|
|
223
236
|
|
|
224
237
|
const d = direction_x * v_x + direction_y * v_y + direction_z * v_z;
|
|
225
238
|
|
|
226
|
-
if (d >
|
|
227
|
-
|
|
228
|
-
|
|
239
|
+
if (d > best_distance) {
|
|
240
|
+
best_distance = d;
|
|
241
|
+
best_offset = offset;
|
|
229
242
|
}
|
|
230
243
|
|
|
231
244
|
}
|
|
232
245
|
|
|
233
|
-
result[result_offset] = v[
|
|
234
|
-
result[result_offset + 1] = v[
|
|
235
|
-
result[result_offset + 2] = v[
|
|
246
|
+
result[result_offset] = v[best_offset];
|
|
247
|
+
result[result_offset + 1] = v[best_offset + 1];
|
|
248
|
+
result[result_offset + 2] = v[best_offset + 2];
|
|
236
249
|
}
|
|
237
250
|
|
|
238
251
|
/**
|
|
@@ -342,10 +355,14 @@ export class ConvexHullShape3D extends AbstractShape3D {
|
|
|
342
355
|
const d2 = tri3_closest_point(scratch_closest, 0, px, py, pz, ax, ay, az, bx, by, bz, cx, cy, cz);
|
|
343
356
|
if (d2 < best_d2) {
|
|
344
357
|
best_d2 = d2;
|
|
345
|
-
bx_ = scratch_closest[0];
|
|
358
|
+
bx_ = scratch_closest[0];
|
|
359
|
+
by_ = scratch_closest[1];
|
|
360
|
+
bz_ = scratch_closest[2];
|
|
346
361
|
}
|
|
347
362
|
}
|
|
348
|
-
result[0] = bx_;
|
|
363
|
+
result[0] = bx_;
|
|
364
|
+
result[1] = by_;
|
|
365
|
+
result[2] = bz_;
|
|
349
366
|
}
|
|
350
367
|
|
|
351
368
|
|
|
@@ -387,4 +404,3 @@ ConvexHullShape3D.prototype.isConvexHullShape3D = true;
|
|
|
387
404
|
|
|
388
405
|
// closest-point-on-triangle output for the surface-scan query helpers
|
|
389
406
|
const scratch_closest = new Float64Array(3);
|
|
390
|
-
const scratch_point = new Float64Array(3);
|