@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.
Files changed (663) hide show
  1. package/README.md +257 -119
  2. package/editor/prototypeEditorShell.js +26 -2
  3. package/package.json +4 -3
  4. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  5. package/src/core/geom/3d/shape/ConvexHullShape3D.js +41 -25
  6. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  7. package/src/core/geom/3d/shape/PosedShape3D.js +7 -2
  8. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +47 -0
  9. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -0
  10. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +109 -0
  11. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts +28 -16
  12. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts.map +1 -1
  13. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.js +111 -92
  14. package/src/engine/graphics3/FogOfWarSystem.d.ts +1 -1
  15. package/src/engine/graphics3/FogOfWarSystem.d.ts.map +1 -1
  16. package/src/engine/graphics3/FogOfWarSystem.js +1 -1
  17. package/src/engine/graphics3/HighlightOutlineSystem.d.ts +99 -0
  18. package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -0
  19. package/src/engine/graphics3/HighlightOutlineSystem.js +240 -0
  20. package/src/engine/graphics3/HighlightSystem.d.ts +14 -77
  21. package/src/engine/graphics3/HighlightSystem.d.ts.map +1 -1
  22. package/src/engine/graphics3/HighlightSystem.js +19 -233
  23. package/src/engine/graphics3/HighlightSystem3.d.ts +7 -4
  24. package/src/engine/graphics3/HighlightSystem3.d.ts.map +1 -1
  25. package/src/engine/graphics3/HighlightSystem3.js +15 -10
  26. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +13 -8
  27. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
  28. package/src/engine/graphics3/highlight/pack_highlight_table.js +14 -8
  29. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  30. package/src/shade/RENDERER_CONTRACT.md +579 -568
  31. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +19 -14
  32. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +1 -1
  33. package/src/shade/renderer/scene/Mesh.d.ts.map +1 -1
  34. package/src/shade/renderer/scene/Mesh.js +4 -6
  35. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +16 -7
  36. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  37. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1342 -1322
  38. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +13 -0
  39. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  40. package/src/shade/renderer/shadow/map/Shadowmap.js +14 -0
  41. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts +79 -0
  42. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -0
  43. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +196 -0
  44. package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts +91 -0
  45. package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts.map +1 -0
  46. package/src/shade/renderer/shadow/map/ShadowmapRegistry.js +156 -0
  47. package/src/engine/graphics/ecs/highlight/plugin/HighlightRenderElementSource.d.ts +0 -9
  48. package/src/engine/graphics/ecs/highlight/plugin/HighlightRenderElementSource.d.ts.map +0 -1
  49. package/src/engine/graphics/ecs/highlight/plugin/HighlightRenderElementSource.js +0 -12
  50. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.d.ts +0 -16
  51. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.d.ts.map +0 -1
  52. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.js +0 -44
  53. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderGroup.d.ts +0 -20
  54. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderGroup.d.ts.map +0 -1
  55. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderGroup.js +0 -29
  56. package/src/engine/graphics/ecs/highlight/renderer/makeGaussianBlurShader.d.ts +0 -8
  57. package/src/engine/graphics/ecs/highlight/renderer/makeGaussianBlurShader.d.ts.map +0 -1
  58. package/src/engine/graphics/ecs/highlight/renderer/makeGaussianBlurShader.js +0 -58
  59. package/src/engine/graphics/ecs/highlight/renderer/traverseThreeObject.d.ts +0 -8
  60. package/src/engine/graphics/ecs/highlight/renderer/traverseThreeObject.d.ts.map +0 -1
  61. package/src/engine/graphics/ecs/highlight/renderer/traverseThreeObject.js +0 -18
  62. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1.mag.xy.png +0 -0
  63. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1.mag.xz.png +0 -0
  64. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_0.png +0 -0
  65. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_1.png +0 -0
  66. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_10.png +0 -0
  67. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_11.png +0 -0
  68. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_12.png +0 -0
  69. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_13.png +0 -0
  70. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_14.png +0 -0
  71. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_15.png +0 -0
  72. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_16.png +0 -0
  73. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_17.png +0 -0
  74. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_18.png +0 -0
  75. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_19.png +0 -0
  76. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_2.png +0 -0
  77. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_20.png +0 -0
  78. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_21.png +0 -0
  79. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_22.png +0 -0
  80. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_23.png +0 -0
  81. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_24.png +0 -0
  82. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_25.png +0 -0
  83. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_26.png +0 -0
  84. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_27.png +0 -0
  85. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_28.png +0 -0
  86. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_29.png +0 -0
  87. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_3.png +0 -0
  88. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_30.png +0 -0
  89. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_31.png +0 -0
  90. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_32.png +0 -0
  91. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_33.png +0 -0
  92. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_34.png +0 -0
  93. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_35.png +0 -0
  94. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_36.png +0 -0
  95. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_37.png +0 -0
  96. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_38.png +0 -0
  97. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_39.png +0 -0
  98. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_4.png +0 -0
  99. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_40.png +0 -0
  100. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_41.png +0 -0
  101. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_42.png +0 -0
  102. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_43.png +0 -0
  103. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_44.png +0 -0
  104. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_45.png +0 -0
  105. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_46.png +0 -0
  106. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_47.png +0 -0
  107. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_48.png +0 -0
  108. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_49.png +0 -0
  109. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_5.png +0 -0
  110. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_50.png +0 -0
  111. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_51.png +0 -0
  112. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_52.png +0 -0
  113. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_53.png +0 -0
  114. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_54.png +0 -0
  115. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_55.png +0 -0
  116. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_56.png +0 -0
  117. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_57.png +0 -0
  118. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_58.png +0 -0
  119. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_59.png +0 -0
  120. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_6.png +0 -0
  121. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_60.png +0 -0
  122. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_61.png +0 -0
  123. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_62.png +0 -0
  124. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_63.png +0 -0
  125. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_7.png +0 -0
  126. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_8.png +0 -0
  127. package/src/shade/renderer/texture/noise/stbn/images/stbn_scalar_2Dx1Dx1D_128x128x64x1_9.png +0 -0
  128. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64.dat +0 -0
  129. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64.mag.xy.png +0 -0
  130. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64.mag.xz.png +0 -0
  131. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_0.png +0 -0
  132. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_1.png +0 -0
  133. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_10.png +0 -0
  134. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_11.png +0 -0
  135. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_12.png +0 -0
  136. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_13.png +0 -0
  137. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_14.png +0 -0
  138. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_15.png +0 -0
  139. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_16.png +0 -0
  140. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_17.png +0 -0
  141. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_18.png +0 -0
  142. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_19.png +0 -0
  143. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_2.png +0 -0
  144. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_20.png +0 -0
  145. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_21.png +0 -0
  146. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_22.png +0 -0
  147. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_23.png +0 -0
  148. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_24.png +0 -0
  149. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_25.png +0 -0
  150. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_26.png +0 -0
  151. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_27.png +0 -0
  152. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_28.png +0 -0
  153. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_29.png +0 -0
  154. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_3.png +0 -0
  155. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_30.png +0 -0
  156. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_31.png +0 -0
  157. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_32.png +0 -0
  158. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_33.png +0 -0
  159. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_34.png +0 -0
  160. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_35.png +0 -0
  161. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_36.png +0 -0
  162. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_37.png +0 -0
  163. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_38.png +0 -0
  164. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_39.png +0 -0
  165. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_4.png +0 -0
  166. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_40.png +0 -0
  167. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_41.png +0 -0
  168. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_42.png +0 -0
  169. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_43.png +0 -0
  170. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_44.png +0 -0
  171. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_45.png +0 -0
  172. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_46.png +0 -0
  173. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_47.png +0 -0
  174. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_48.png +0 -0
  175. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_49.png +0 -0
  176. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_5.png +0 -0
  177. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_50.png +0 -0
  178. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_51.png +0 -0
  179. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_52.png +0 -0
  180. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_53.png +0 -0
  181. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_54.png +0 -0
  182. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_55.png +0 -0
  183. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_56.png +0 -0
  184. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_57.png +0 -0
  185. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_58.png +0 -0
  186. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_59.png +0 -0
  187. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_6.png +0 -0
  188. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_60.png +0 -0
  189. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_61.png +0 -0
  190. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_62.png +0 -0
  191. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_63.png +0 -0
  192. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_7.png +0 -0
  193. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_8.png +0 -0
  194. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec1_2Dx1D_128x128x64_9.png +0 -0
  195. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64.dat +0 -0
  196. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64.mag.xy.png +0 -0
  197. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64.mag.xz.png +0 -0
  198. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_0.png +0 -0
  199. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_1.png +0 -0
  200. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_10.png +0 -0
  201. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_11.png +0 -0
  202. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_12.png +0 -0
  203. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_13.png +0 -0
  204. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_14.png +0 -0
  205. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_15.png +0 -0
  206. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_16.png +0 -0
  207. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_17.png +0 -0
  208. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_18.png +0 -0
  209. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_19.png +0 -0
  210. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_2.png +0 -0
  211. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_20.png +0 -0
  212. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_21.png +0 -0
  213. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_22.png +0 -0
  214. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_23.png +0 -0
  215. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_24.png +0 -0
  216. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_25.png +0 -0
  217. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_26.png +0 -0
  218. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_27.png +0 -0
  219. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_28.png +0 -0
  220. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_29.png +0 -0
  221. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_3.png +0 -0
  222. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_30.png +0 -0
  223. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_31.png +0 -0
  224. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_32.png +0 -0
  225. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_33.png +0 -0
  226. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_34.png +0 -0
  227. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_35.png +0 -0
  228. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_36.png +0 -0
  229. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_37.png +0 -0
  230. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_38.png +0 -0
  231. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_39.png +0 -0
  232. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_4.png +0 -0
  233. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_40.png +0 -0
  234. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_41.png +0 -0
  235. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_42.png +0 -0
  236. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_43.png +0 -0
  237. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_44.png +0 -0
  238. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_45.png +0 -0
  239. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_46.png +0 -0
  240. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_47.png +0 -0
  241. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_48.png +0 -0
  242. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_49.png +0 -0
  243. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_5.png +0 -0
  244. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_50.png +0 -0
  245. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_51.png +0 -0
  246. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_52.png +0 -0
  247. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_53.png +0 -0
  248. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_54.png +0 -0
  249. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_55.png +0 -0
  250. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_56.png +0 -0
  251. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_57.png +0 -0
  252. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_58.png +0 -0
  253. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_59.png +0 -0
  254. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_6.png +0 -0
  255. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_60.png +0 -0
  256. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_61.png +0 -0
  257. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_62.png +0 -0
  258. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_63.png +0 -0
  259. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_7.png +0 -0
  260. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_8.png +0 -0
  261. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec2_2Dx1D_128x128x64_9.png +0 -0
  262. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64.dat +0 -0
  263. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64.mag.xy.png +0 -0
  264. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64.mag.xz.png +0 -0
  265. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_0.png +0 -0
  266. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_1.png +0 -0
  267. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_10.png +0 -0
  268. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_11.png +0 -0
  269. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_12.png +0 -0
  270. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_13.png +0 -0
  271. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_14.png +0 -0
  272. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_15.png +0 -0
  273. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_16.png +0 -0
  274. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_17.png +0 -0
  275. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_18.png +0 -0
  276. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_19.png +0 -0
  277. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_2.png +0 -0
  278. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_20.png +0 -0
  279. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_21.png +0 -0
  280. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_22.png +0 -0
  281. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_23.png +0 -0
  282. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_24.png +0 -0
  283. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_25.png +0 -0
  284. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_26.png +0 -0
  285. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_27.png +0 -0
  286. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_28.png +0 -0
  287. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_29.png +0 -0
  288. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_3.png +0 -0
  289. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_30.png +0 -0
  290. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_31.png +0 -0
  291. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_32.png +0 -0
  292. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_33.png +0 -0
  293. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_34.png +0 -0
  294. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_35.png +0 -0
  295. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_36.png +0 -0
  296. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_37.png +0 -0
  297. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_38.png +0 -0
  298. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_39.png +0 -0
  299. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_4.png +0 -0
  300. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_40.png +0 -0
  301. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_41.png +0 -0
  302. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_42.png +0 -0
  303. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_43.png +0 -0
  304. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_44.png +0 -0
  305. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_45.png +0 -0
  306. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_46.png +0 -0
  307. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_47.png +0 -0
  308. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_48.png +0 -0
  309. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_49.png +0 -0
  310. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_5.png +0 -0
  311. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_50.png +0 -0
  312. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_51.png +0 -0
  313. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_52.png +0 -0
  314. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_53.png +0 -0
  315. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_54.png +0 -0
  316. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_55.png +0 -0
  317. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_56.png +0 -0
  318. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_57.png +0 -0
  319. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_58.png +0 -0
  320. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_59.png +0 -0
  321. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_6.png +0 -0
  322. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_60.png +0 -0
  323. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_61.png +0 -0
  324. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_62.png +0 -0
  325. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_63.png +0 -0
  326. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_7.png +0 -0
  327. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_8.png +0 -0
  328. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_2Dx1D_128x128x64_9.png +0 -0
  329. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64.dat +0 -0
  330. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64.mag.xy.png +0 -0
  331. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64.mag.xz.png +0 -0
  332. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_0.png +0 -0
  333. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_1.png +0 -0
  334. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_10.png +0 -0
  335. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_11.png +0 -0
  336. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_12.png +0 -0
  337. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_13.png +0 -0
  338. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_14.png +0 -0
  339. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_15.png +0 -0
  340. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_16.png +0 -0
  341. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_17.png +0 -0
  342. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_18.png +0 -0
  343. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_19.png +0 -0
  344. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_2.png +0 -0
  345. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_20.png +0 -0
  346. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_21.png +0 -0
  347. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_22.png +0 -0
  348. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_23.png +0 -0
  349. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_24.png +0 -0
  350. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_25.png +0 -0
  351. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_26.png +0 -0
  352. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_27.png +0 -0
  353. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_28.png +0 -0
  354. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_29.png +0 -0
  355. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_3.png +0 -0
  356. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_30.png +0 -0
  357. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_31.png +0 -0
  358. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_32.png +0 -0
  359. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_33.png +0 -0
  360. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_34.png +0 -0
  361. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_35.png +0 -0
  362. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_36.png +0 -0
  363. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_37.png +0 -0
  364. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_38.png +0 -0
  365. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_39.png +0 -0
  366. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_4.png +0 -0
  367. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_40.png +0 -0
  368. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_41.png +0 -0
  369. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_42.png +0 -0
  370. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_43.png +0 -0
  371. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_44.png +0 -0
  372. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_45.png +0 -0
  373. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_46.png +0 -0
  374. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_47.png +0 -0
  375. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_48.png +0 -0
  376. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_49.png +0 -0
  377. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_5.png +0 -0
  378. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_50.png +0 -0
  379. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_51.png +0 -0
  380. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_52.png +0 -0
  381. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_53.png +0 -0
  382. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_54.png +0 -0
  383. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_55.png +0 -0
  384. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_56.png +0 -0
  385. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_57.png +0 -0
  386. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_58.png +0 -0
  387. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_59.png +0 -0
  388. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_6.png +0 -0
  389. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_60.png +0 -0
  390. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_61.png +0 -0
  391. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_62.png +0 -0
  392. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_63.png +0 -0
  393. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_7.png +0 -0
  394. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_8.png +0 -0
  395. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_cosine_2Dx1D_128x128x64_9.png +0 -0
  396. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64.dat +0 -1
  397. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64.mag.xy.png +0 -0
  398. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64.mag.xz.png +0 -0
  399. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_0.png +0 -0
  400. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_1.png +0 -0
  401. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_10.png +0 -0
  402. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_11.png +0 -0
  403. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_12.png +0 -0
  404. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_13.png +0 -0
  405. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_14.png +0 -0
  406. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_15.png +0 -0
  407. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_16.png +0 -0
  408. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_17.png +0 -0
  409. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_18.png +0 -0
  410. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_19.png +0 -0
  411. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_2.png +0 -0
  412. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_20.png +0 -0
  413. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_21.png +0 -0
  414. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_22.png +0 -0
  415. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_23.png +0 -0
  416. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_24.png +0 -0
  417. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_25.png +0 -0
  418. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_26.png +0 -0
  419. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_27.png +0 -0
  420. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_28.png +0 -0
  421. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_29.png +0 -0
  422. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_3.png +0 -0
  423. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_30.png +0 -0
  424. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_31.png +0 -0
  425. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_32.png +0 -0
  426. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_33.png +0 -0
  427. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_34.png +0 -0
  428. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_35.png +0 -0
  429. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_36.png +0 -0
  430. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_37.png +0 -0
  431. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_38.png +0 -0
  432. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_39.png +0 -0
  433. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_4.png +0 -0
  434. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_40.png +0 -0
  435. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_41.png +0 -0
  436. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_42.png +0 -0
  437. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_43.png +0 -0
  438. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_44.png +0 -0
  439. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_45.png +0 -0
  440. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_46.png +0 -0
  441. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_47.png +0 -0
  442. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_48.png +0 -0
  443. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_49.png +0 -0
  444. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_5.png +0 -0
  445. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_50.png +0 -0
  446. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_51.png +0 -0
  447. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_52.png +0 -0
  448. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_53.png +0 -0
  449. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_54.png +0 -0
  450. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_55.png +0 -0
  451. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_56.png +0 -0
  452. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_57.png +0 -0
  453. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_58.png +0 -0
  454. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_59.png +0 -0
  455. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_6.png +0 -0
  456. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_60.png +0 -0
  457. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_61.png +0 -0
  458. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_62.png +0 -0
  459. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_63.png +0 -0
  460. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_7.png +0 -0
  461. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_8.png +0 -0
  462. package/src/shade/renderer/texture/noise/stbn/images/stbn_unitvec3_forest_2Dx1D_128x128x64_9.png +0 -0
  463. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64.dat +0 -0
  464. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64.mag.xy.png +0 -0
  465. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64.mag.xz.png +0 -0
  466. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_0.png +0 -0
  467. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_1.png +0 -0
  468. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_10.png +0 -0
  469. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_11.png +0 -0
  470. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_12.png +0 -0
  471. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_13.png +0 -0
  472. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_14.png +0 -0
  473. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_15.png +0 -0
  474. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_16.png +0 -0
  475. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_17.png +0 -0
  476. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_18.png +0 -0
  477. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_19.png +0 -0
  478. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_2.png +0 -0
  479. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_20.png +0 -0
  480. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_21.png +0 -0
  481. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_22.png +0 -0
  482. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_23.png +0 -0
  483. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_24.png +0 -0
  484. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_25.png +0 -0
  485. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_26.png +0 -0
  486. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_27.png +0 -0
  487. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_28.png +0 -0
  488. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_29.png +0 -0
  489. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_3.png +0 -0
  490. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_30.png +0 -0
  491. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_31.png +0 -0
  492. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_32.png +0 -0
  493. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_33.png +0 -0
  494. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_34.png +0 -0
  495. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_35.png +0 -0
  496. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_36.png +0 -0
  497. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_37.png +0 -0
  498. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_38.png +0 -0
  499. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_39.png +0 -0
  500. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_4.png +0 -0
  501. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_40.png +0 -0
  502. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_41.png +0 -0
  503. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_42.png +0 -0
  504. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_43.png +0 -0
  505. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_44.png +0 -0
  506. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_45.png +0 -0
  507. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_46.png +0 -0
  508. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_47.png +0 -0
  509. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_48.png +0 -0
  510. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_49.png +0 -0
  511. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_5.png +0 -0
  512. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_50.png +0 -0
  513. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_51.png +0 -0
  514. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_52.png +0 -0
  515. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_53.png +0 -0
  516. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_54.png +0 -0
  517. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_55.png +0 -0
  518. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_56.png +0 -0
  519. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_57.png +0 -0
  520. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_58.png +0 -0
  521. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_59.png +0 -0
  522. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_6.png +0 -0
  523. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_60.png +0 -0
  524. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_61.png +0 -0
  525. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_62.png +0 -0
  526. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_63.png +0 -0
  527. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_7.png +0 -0
  528. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_8.png +0 -0
  529. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec1_2Dx1D_128x128x64_9.png +0 -0
  530. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64.dat +0 -0
  531. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64.mag.xy.png +0 -0
  532. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64.mag.xz.png +0 -0
  533. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_0.png +0 -0
  534. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_1.png +0 -0
  535. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_10.png +0 -0
  536. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_11.png +0 -0
  537. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_12.png +0 -0
  538. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_13.png +0 -0
  539. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_14.png +0 -0
  540. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_15.png +0 -0
  541. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_16.png +0 -0
  542. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_17.png +0 -0
  543. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_18.png +0 -0
  544. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_19.png +0 -0
  545. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_2.png +0 -0
  546. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_20.png +0 -0
  547. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_21.png +0 -0
  548. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_22.png +0 -0
  549. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_23.png +0 -0
  550. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_24.png +0 -0
  551. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_25.png +0 -0
  552. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_26.png +0 -0
  553. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_27.png +0 -0
  554. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_28.png +0 -0
  555. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_29.png +0 -0
  556. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_3.png +0 -0
  557. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_30.png +0 -0
  558. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_31.png +0 -0
  559. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_32.png +0 -0
  560. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_33.png +0 -0
  561. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_34.png +0 -0
  562. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_35.png +0 -0
  563. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_36.png +0 -0
  564. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_37.png +0 -0
  565. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_38.png +0 -0
  566. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_39.png +0 -0
  567. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_4.png +0 -0
  568. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_40.png +0 -0
  569. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_41.png +0 -0
  570. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_42.png +0 -0
  571. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_43.png +0 -0
  572. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_44.png +0 -0
  573. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_45.png +0 -0
  574. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_46.png +0 -0
  575. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_47.png +0 -0
  576. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_48.png +0 -0
  577. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_49.png +0 -0
  578. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_5.png +0 -0
  579. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_50.png +0 -0
  580. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_51.png +0 -0
  581. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_52.png +0 -0
  582. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_53.png +0 -0
  583. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_54.png +0 -0
  584. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_55.png +0 -0
  585. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_56.png +0 -0
  586. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_57.png +0 -0
  587. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_58.png +0 -0
  588. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_59.png +0 -0
  589. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_6.png +0 -0
  590. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_60.png +0 -0
  591. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_61.png +0 -0
  592. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_62.png +0 -0
  593. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_63.png +0 -0
  594. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_7.png +0 -0
  595. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_8.png +0 -0
  596. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec2_2Dx1D_128x128x64_9.png +0 -0
  597. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64.dat +0 -0
  598. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64.mag.xy.png +0 -0
  599. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64.mag.xz.png +0 -0
  600. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_0.png +0 -0
  601. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_1.png +0 -0
  602. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_10.png +0 -0
  603. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_11.png +0 -0
  604. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_12.png +0 -0
  605. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_13.png +0 -0
  606. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_14.png +0 -0
  607. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_15.png +0 -0
  608. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_16.png +0 -0
  609. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_17.png +0 -0
  610. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_18.png +0 -0
  611. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_19.png +0 -0
  612. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_2.png +0 -0
  613. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_20.png +0 -0
  614. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_21.png +0 -0
  615. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_22.png +0 -0
  616. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_23.png +0 -0
  617. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_24.png +0 -0
  618. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_25.png +0 -0
  619. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_26.png +0 -0
  620. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_27.png +0 -0
  621. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_28.png +0 -0
  622. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_29.png +0 -0
  623. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_3.png +0 -0
  624. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_30.png +0 -0
  625. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_31.png +0 -0
  626. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_32.png +0 -0
  627. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_33.png +0 -0
  628. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_34.png +0 -0
  629. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_35.png +0 -0
  630. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_36.png +0 -0
  631. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_37.png +0 -0
  632. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_38.png +0 -0
  633. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_39.png +0 -0
  634. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_4.png +0 -0
  635. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_40.png +0 -0
  636. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_41.png +0 -0
  637. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_42.png +0 -0
  638. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_43.png +0 -0
  639. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_44.png +0 -0
  640. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_45.png +0 -0
  641. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_46.png +0 -0
  642. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_47.png +0 -0
  643. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_48.png +0 -0
  644. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_49.png +0 -0
  645. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_5.png +0 -0
  646. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_50.png +0 -0
  647. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_51.png +0 -0
  648. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_52.png +0 -0
  649. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_53.png +0 -0
  650. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_54.png +0 -0
  651. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_55.png +0 -0
  652. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_56.png +0 -0
  653. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_57.png +0 -0
  654. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_58.png +0 -0
  655. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_59.png +0 -0
  656. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_6.png +0 -0
  657. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_60.png +0 -0
  658. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_61.png +0 -0
  659. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_62.png +0 -0
  660. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_63.png +0 -0
  661. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_7.png +0 -0
  662. package/src/shade/renderer/texture/noise/stbn/images/stbn_vec3_2Dx1D_128x128x64_8.png +0 -0
  663. 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
- A library you import from and drive in code - no native bindings, no editor-first workflow. Built over 10+ years, shipped in commercial Steam releases, and held to ~13,400 tests across ~2,100 spec files, determinism and adversarial suites among them.
3
+ **Desktop-grade real-time graphics in the browser, in a JavaScript engine you import from and drive in code.**
5
4
 
6
- **Proprietary and source-available.** You get all ~6,000 fine-grained ES modules, unobfuscated, under a licence that lets you ship. Need a lerp function? Import the module that holds it and pay for those four lines.
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
- **Coming from 2.x?** [Migration guide](MIGRATION_2_TO_3.md) · [Changelog](CHANGELOG.md).
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
- ## Rendering: Shade
32
- GPU-driven and visibility-buffer deferred. Geometry is clustered into meshlets ahead of time and lives GPU-resident in one buffer; culling runs on the GPU; the rasterizer writes a visibility buffer and a G-buffer rather than shading as it draws; lights are binned into froxels and applied deferred; the result is temporally resolved, upscaled, tonemapped and presented.
33
-
34
- **→ [The renderer contract](src/shade/RENDERER_CONTRACT.md)** - what it promises, how to put a model on the screen, and how to add your own work to the frame.
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
- * **Terrain:** chunk-based and auto-culled, splat-weighted per layer. The layer count is bounded by the device's texture-array depth rather than by an engine constant.
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
- * **Particles:** zero-allocation, fully lit, soft, automatically atlassed, drawn through the renderer's own billboard pipeline.
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
- * **Resolution:** TAA/NSS upscaling and dynamic resolution scaling.
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
- * **Path tracing:** a GPU path tracer in Shade, and a separate CPU one that runs off the engine's own BVH.
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
- * **Extensible frames:** your own work goes in as a *render extension* - a declared phase, declared ordering, typed per-frame records - rather than as a patch to the pipeline.
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
- ## ⚙️ Physics
61
- Deterministic rigid bodies in pure JS - no WASM, no worker threads - built for replay-stable netcode and scenes with millions of mostly-sleeping bodies.
62
-
63
- * **At scale:** SoA body pool, two-tree BVH broadphase, sequential-impulse solver with warm starting, island-based atomic sleep/wake.
64
-
65
- * **Shape coverage:** closed-form sphere/box/capsule paths, GJK+EPA for arbitrary convex shapes, heightmap and triangle-mesh terrain collisions, continuous collision detection for fast movers.
66
-
67
- * **Fluids:** Eulerian MAC-grid solver (MacCormack advection, vorticity confinement, SOR/PCG pressure) plus an MLS-MPM material-point simulator.
68
-
69
- * **Vehicles and characters:** raycast vehicle, and a kinematic first-person controller with stair and ramp handling.
70
-
71
- * **Inverse kinematics:** FABRIK and analytic two-joint solvers.
72
-
73
- ## 🔊 Audio
74
- A data-driven sound engine built on Wwise / FMOD concepts - without the opaque middleware banks.
75
-
76
- * **The middleware feature set:** events, a mixer bus tree, RTPC parameters, voice stealing, mixer snapshots and ducking - all authored as serializable engine data.
77
-
78
- * **Two entry points:** `AudioEmitter` puts a sound on an entity; `AudioEventTrigger` fires authored events in response to entity events.
79
-
80
- * **Acoustic simulation (opt-in):** geometry-driven occlusion, transmission, propagation pathing and baked reverb probes. What Steam Audio is to FMOD/Wwise, this layer is to the sound engine.
81
-
82
- * **Scale:** custom culling and attenuation support 1,000s of positional sources.
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
- ## 🌐 Networking
85
-
86
- * **Server-authoritative rollback:** client-side prediction and reconciliation over action-log replication and binary snapshots.
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
- * **Serialization:** binary, with version upgrading.
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
- ## 🛠️ Tooling
120
-
121
- * **In-app editor** (`editor/`), opt-in through `enableEditor(engine)`: entity inspection, gizmo tools, particle authoring, docked panels, layout persistence. It attaches to and detaches from a running `Engine`.
122
-
123
- * **GPU profile capture:** hand the renderer a `GPUProfileSession` and it writes `.sgpt` captures - pass timings, frame graph structure, dispatch and draw counts. Writer and reader both ship, and the container is specified in [`SGPT_FORMAT.md`](src/shade/device/timing/profile/SGPT_FORMAT.md); a viewer is distributed separately. Nothing reaches the capture code unless you import it, so an application that never profiles does not carry it.
124
-
125
- * **Software GPU device:** a validating software WebGPU implementation and a WGSL interpreter under `src/shade/device/mock/`, so your own shaders and pipelines can run on a machine with no GPU.
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
- ## 🔬 Shipping a build
271
+ ## Shipping a build
130
272
 
131
- The engine carries ~6,000 assertions. They throw while you develop, and [`@rollup/plugin-strip`](https://github.com/rollup/plugins/tree/master/packages/strip) takes them out of a production build - its defaults already cover `assert.*`:
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
- ## License & Copyright
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 stays under US$50,000 in funding and US$50,000 in revenue. Evaluating the engine and building internal prototypes are free whatever your funding. Paid tiers - Indie, Standard, and Enterprise - raise that ceiling for a one-time fee per project, and add 24 months of major-version coverage.
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 competing engine.
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 [pricing page](https://meep.company-named.com/pricing/) for the tier ladder.
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
- await em.addSystem(new MeshSystem(
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": "Pure JavaScript game engine. Fully featured and production ready.",
6
+ "description": "Advanced 3D game engine",
7
7
  "type": "module",
8
8
  "author": "Alexander Goldring",
9
- "version": "3.13.0",
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,kBA8EC;IAKD,wCAIC;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,4DAoBC;IAGD;;;OAGG;IACH,cAHW,iBAAiB,GACf,OAAO,CAanB;IAcL;;;;OAIG;IACH,8BAFU,OAAO,CAE8B;CAP9C;gCAvX+B,sBAAsB"}
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; ny /= len; nz /= len;
164
+ nx /= len;
165
+ ny /= len;
166
+ nz /= len;
165
167
  const o = f * 4;
166
- planes[o] = nx; planes[o + 1] = ny; planes[o + 2] = nz;
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() { return this.__volume; }
182
- get surface_area() { return this.__surface_area; }
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]; result[1] = b[1]; result[2] = b[2];
187
- result[3] = b[3]; result[4] = b[4]; result[5] = b[5];
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 vc = v.length / 3;
217
+ const vertex_array_length = v.length;
205
218
 
206
- if (vc === 0) {
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 best = -Infinity;
216
- let bi = 0;
228
+ let best_distance = -Infinity;
229
+ let best_offset = 0;
217
230
 
218
- for (let i = 0; i < vc; i++) {
231
+ for (let offset = 0; offset < vertex_array_length; offset += 3) {
219
232
 
220
- const v_x = v[i * 3];
221
- const v_y = v[i * 3 + 1];
222
- const v_z = v[i * 3 + 2];
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 > best) {
227
- best = d;
228
- bi = i;
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[bi * 3];
234
- result[result_offset + 1] = v[bi * 3 + 1];
235
- result[result_offset + 2] = v[bi * 3 + 2];
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]; by_ = scratch_closest[1]; bz_ = scratch_closest[2];
358
+ bx_ = scratch_closest[0];
359
+ by_ = scratch_closest[1];
360
+ bz_ = scratch_closest[2];
346
361
  }
347
362
  }
348
- result[0] = bx_; result[1] = by_; result[2] = bz_;
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);