@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
@@ -113,6 +113,19 @@ export class Shadowmap {
113
113
  * @type {boolean}
114
114
  */
115
115
  metadata_changed: boolean;
116
+ /**
117
+ * Which reconciliation pass last saw this map's light in the scene. Owned entirely by
118
+ * {@link ShadowmapRegistry} — nothing else should read or write it.
119
+ *
120
+ * Lives on the map rather than in a side table because the reclamation pass tests it once per
121
+ * map per frame, and a hash lookup there costs more than the whole rest of the pass. A
122
+ * `WeakMap` keyed by map measured at about twice the total reconciliation time at 32 lights.
123
+ *
124
+ * 0 means "never marked", which is what a map reads as before its first reconciliation. The
125
+ * registry marks from 1 upward, so an unmarked map is correctly treated as stale.
126
+ * @type {number}
127
+ */
128
+ _reconcile_mark: number;
116
129
  /**
117
130
  *
118
131
  * @param {Camera} main_camera
@@ -1 +1 @@
1
- {"version":3,"file":"Shadowmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/Shadowmap.js"],"names":[],"mappings":"AAAA;IACI,WAAO;IAEP;;OAEG;IACH,aAAK;IAEL;;;;OAIG;IACH,QAFU,OAAO,CAEL;IAEZ;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,gBAFU,OAAO,GAAG,IAAI,CAEF;IAEtB;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;;;;;;;;;OAWG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;;;;OAMG;IACH,0BAFU,MAAM,CAEc;IAE9B;;;;;;;OAOG;IACH,yBAFU,MAAM,CAEa;IAE7B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAFU,OAAO,CAEC;IAElB;;;;;;;;OAQG;IACH,aAFU,OAAO,CAEG;IAEpB;;;;;;;;;;;;;;OAcG;IACH,kBAFU,OAAO,CAEO;IAExB;;;;OAIG;IACH,8DAEC;IAED;;;;;;;OAOG;IACH,mBAEC;IAED,gBAEC;CACJ"}
1
+ {"version":3,"file":"Shadowmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/Shadowmap.js"],"names":[],"mappings":"AAAA;IACI,WAAO;IAEP;;OAEG;IACH,aAAK;IAEL;;;;OAIG;IACH,QAFU,OAAO,CAEL;IAEZ;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,gBAFU,OAAO,GAAG,IAAI,CAEF;IAEtB;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;;;;;;;;;OAWG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;;;;OAMG;IACH,0BAFU,MAAM,CAEc;IAE9B;;;;;;;OAOG;IACH,yBAFU,MAAM,CAEa;IAE7B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAFU,OAAO,CAEC;IAElB;;;;;;;;OAQG;IACH,aAFU,OAAO,CAEG;IAEpB;;;;;;;;;;;;;;OAcG;IACH,kBAFU,OAAO,CAEO;IAExB;;;;;;;;;;;OAWG;IACH,iBAFU,MAAM,CAEI;IAEpB;;;;OAIG;IACH,8DAEC;IAED;;;;;;;OAOG;IACH,mBAEC;IAED,gBAEC;CACJ"}
@@ -124,6 +124,20 @@ export class Shadowmap {
124
124
  */
125
125
  metadata_changed = true;
126
126
 
127
+ /**
128
+ * Which reconciliation pass last saw this map's light in the scene. Owned entirely by
129
+ * {@link ShadowmapRegistry} — nothing else should read or write it.
130
+ *
131
+ * Lives on the map rather than in a side table because the reclamation pass tests it once per
132
+ * map per frame, and a hash lookup there costs more than the whole rest of the pass. A
133
+ * `WeakMap` keyed by map measured at about twice the total reconciliation time at 32 lights.
134
+ *
135
+ * 0 means "never marked", which is what a map reads as before its first reconciliation. The
136
+ * registry marks from 1 upward, so an unmarked map is correctly treated as stale.
137
+ * @type {number}
138
+ */
139
+ _reconcile_mark = 0;
140
+
127
141
  /**
128
142
  *
129
143
  * @param {Camera} main_camera
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Picks which shadowmaps get rasterized this frame, given a view budget.
3
+ *
4
+ * This is the score-and-select half of {@link GPUSceneShadowmapContext.select_for_draw}, split out
5
+ * so it can be measured without a GPU device — the scoring is arithmetic over plain fields, and
6
+ * the only reason it used to need a renderer was that it lived on the class that owns the atlas.
7
+ *
8
+ * **Why a heap and not a sort.** The budget is a handful of views and a scene can hold hundreds of
9
+ * candidates, so a full ordering is thrown away almost entirely: it sorts N to consume ~K. Popping
10
+ * a max-heap K times is O(N + K log N) against the sort's O(N log N), and skips the N `{map,
11
+ * score}` objects the sorted version allocated every frame. Measured at 512 lights: 30us per frame
12
+ * for the sort, 2.6us for the heap. Removing just the allocation and keeping the sort gets 8.3us,
13
+ * so roughly a third of the win is the allocation and the rest is not ordering the tail. See
14
+ * benchmark/select.spec.js.
15
+ *
16
+ * **Ordering is load-bearing, so the heap is drained in score order rather than partitioned.**
17
+ * A map that has never been drawn must refresh whether or not the budget can cover it, but WHEN it
18
+ * charges its views against the pool decides whether a lower-priority map still fits. Settling all
19
+ * the must-draws up front would be cheaper and would change which maps draw, so they compete in
20
+ * the same ordered drain as everything else.
21
+ *
22
+ * **Ties resolve differently than a sort.** `Array.sort` is stable, so equal scores kept array
23
+ * order; a heap has no such guarantee, and it compares float32 where the sort compared float64.
24
+ * Maps with equal scores are interchangeable by construction — the scorer is the definition of
25
+ * which map deserves the slot, and it rated them the same — so what the benchmark asserts is that
26
+ * the selection is equally good (same view spend, same carry-over signal, same multiset of
27
+ * selected scores), not that it is the same maps. Ties are common rather than exotic here: every
28
+ * light the camera sits inside reports the full viewport as its projected area.
29
+ */
30
+ export class ShadowmapDrawSelector {
31
+ /**
32
+ * Maps chosen by the most recent {@link select}, in the order they were selected. Reused
33
+ * across frames — read it before the next call, don't retain it.
34
+ * @type {Shadowmap[]}
35
+ */
36
+ selected: Shadowmap[];
37
+ /**
38
+ * Views the most recent {@link select} committed, counting must-draws that bypassed the
39
+ * budget. Can exceed the budget it was given.
40
+ * @type {number}
41
+ */
42
+ views_spent: number;
43
+ /**
44
+ * True when the most recent {@link select} left at least one in-view candidate unrefreshed
45
+ * because the pool could not cover its view cost. Drives the caller's carry-over: unused
46
+ * budget is only worth carrying forward when there was demand it could not meet.
47
+ * @type {boolean}
48
+ */
49
+ had_unfit_candidates: boolean;
50
+ /**
51
+ * Score every shadowmap and mark the winners with `should_draw`.
52
+ *
53
+ * Categories, in the order the drain encounters them:
54
+ *
55
+ * - **Directional** — always refreshes. Scores Infinity, so it would head the ordering
56
+ * anyway; it is settled during the scoring pass instead of being pushed onto the heap
57
+ * because the outcome cannot depend on where it lands. Its view cost is still charged, so
58
+ * local lights see a reduced pool.
59
+ * - **Local, off-screen** (`projected_area_px <= 0`) — skipped entirely. Not demand, and not
60
+ * carry-over fuel: the map keeps its flags and springs back when it returns to view.
61
+ * - **Local, in-view, invalid** — must draw. `is_invalid` means the committed layout has
62
+ * never held valid depth, so sampling it would show garbage. Bypasses the budget but is
63
+ * visited in score order, because its charge against the pool is what decides whether the
64
+ * candidates below it still fit.
65
+ * - **Local, in-view, valid** — competes for what is left, highest score first.
66
+ *
67
+ * Results land on {@link selected}, {@link views_spent} and {@link had_unfit_candidates}.
68
+ * `map.update()` is deliberately NOT called here — that needs the camera and the scene, and
69
+ * keeping it out is what keeps this side GPU-free. The caller walks {@link selected}.
70
+ *
71
+ * @param {Shadowmap[]} shadowmaps every map in the scene; `projected_area_px` must already be
72
+ * current for this frame
73
+ * @param {number} frame_index monotonically increasing frame counter, used for staleness
74
+ * @param {number} budget_total views available this frame, including any carry-over
75
+ */
76
+ select(shadowmaps: Shadowmap[], frame_index: number, budget_total: number): void;
77
+ #private;
78
+ }
79
+ //# sourceMappingURL=ShadowmapDrawSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShadowmapDrawSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/ShadowmapDrawSelector.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;IACI;;;;OAIG;IACH,UAFU,WAAW,CAEP;IAEd;;;;OAIG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;;OAKG;IACH,sBAFU,OAAO,CAEY;IAsC7B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,mBALW,WAAW,eAEX,MAAM,gBACN,MAAM,QA+EhB;;CACJ"}
@@ -0,0 +1,196 @@
1
+ import { IndexedFloatMaxHeap } from "../../../../core/collection/heap/IndexedFloatMaxHeap.js";
2
+ import { compute_shadowmap_update_score } from "./shadowmap_update_score.js";
3
+
4
+ /**
5
+ * Picks which shadowmaps get rasterized this frame, given a view budget.
6
+ *
7
+ * This is the score-and-select half of {@link GPUSceneShadowmapContext.select_for_draw}, split out
8
+ * so it can be measured without a GPU device — the scoring is arithmetic over plain fields, and
9
+ * the only reason it used to need a renderer was that it lived on the class that owns the atlas.
10
+ *
11
+ * **Why a heap and not a sort.** The budget is a handful of views and a scene can hold hundreds of
12
+ * candidates, so a full ordering is thrown away almost entirely: it sorts N to consume ~K. Popping
13
+ * a max-heap K times is O(N + K log N) against the sort's O(N log N), and skips the N `{map,
14
+ * score}` objects the sorted version allocated every frame. Measured at 512 lights: 30us per frame
15
+ * for the sort, 2.6us for the heap. Removing just the allocation and keeping the sort gets 8.3us,
16
+ * so roughly a third of the win is the allocation and the rest is not ordering the tail. See
17
+ * benchmark/select.spec.js.
18
+ *
19
+ * **Ordering is load-bearing, so the heap is drained in score order rather than partitioned.**
20
+ * A map that has never been drawn must refresh whether or not the budget can cover it, but WHEN it
21
+ * charges its views against the pool decides whether a lower-priority map still fits. Settling all
22
+ * the must-draws up front would be cheaper and would change which maps draw, so they compete in
23
+ * the same ordered drain as everything else.
24
+ *
25
+ * **Ties resolve differently than a sort.** `Array.sort` is stable, so equal scores kept array
26
+ * order; a heap has no such guarantee, and it compares float32 where the sort compared float64.
27
+ * Maps with equal scores are interchangeable by construction — the scorer is the definition of
28
+ * which map deserves the slot, and it rated them the same — so what the benchmark asserts is that
29
+ * the selection is equally good (same view spend, same carry-over signal, same multiset of
30
+ * selected scores), not that it is the same maps. Ties are common rather than exotic here: every
31
+ * light the camera sits inside reports the full viewport as its projected area.
32
+ */
33
+ export class ShadowmapDrawSelector {
34
+ /**
35
+ * Maps chosen by the most recent {@link select}, in the order they were selected. Reused
36
+ * across frames — read it before the next call, don't retain it.
37
+ * @type {Shadowmap[]}
38
+ */
39
+ selected = [];
40
+
41
+ /**
42
+ * Views the most recent {@link select} committed, counting must-draws that bypassed the
43
+ * budget. Can exceed the budget it was given.
44
+ * @type {number}
45
+ */
46
+ views_spent = 0;
47
+
48
+ /**
49
+ * True when the most recent {@link select} left at least one in-view candidate unrefreshed
50
+ * because the pool could not cover its view cost. Drives the caller's carry-over: unused
51
+ * budget is only worth carrying forward when there was demand it could not meet.
52
+ * @type {boolean}
53
+ */
54
+ had_unfit_candidates = false;
55
+
56
+ /**
57
+ * Heap of budget candidates, keyed by index into the shadowmap array the current
58
+ * {@link select} was handed. Held across frames so the id table and slot storage are
59
+ * allocated once rather than per frame.
60
+ * @type {IndexedFloatMaxHeap}
61
+ */
62
+ #heap = new IndexedFloatMaxHeap(0);
63
+
64
+ /**
65
+ * Id capacity of {@link #heap}. Ids are shadowmap array indices, so this has to cover the
66
+ * largest map count seen so far.
67
+ * @type {number}
68
+ */
69
+ #heap_capacity = 0;
70
+
71
+ /**
72
+ * Resize the heap to hold ids up to `count`. IndexedFloatMaxHeap sizes its id table at
73
+ * construction, so growing means a new heap — safe here because the heap is empty between
74
+ * frames and carries nothing worth migrating.
75
+ *
76
+ * Rounded up to a power of two so a scene that gains lights one at a time reallocates a
77
+ * handful of times rather than every frame.
78
+ *
79
+ * @param {number} count
80
+ */
81
+ #ensure_capacity(count) {
82
+ if (count <= this.#heap_capacity) {
83
+ return;
84
+ }
85
+
86
+ const capacity = Math.max(64, 1 << (32 - Math.clz32(count - 1)));
87
+
88
+ this.#heap = new IndexedFloatMaxHeap(capacity);
89
+ this.#heap_capacity = capacity;
90
+ }
91
+
92
+ /**
93
+ * Score every shadowmap and mark the winners with `should_draw`.
94
+ *
95
+ * Categories, in the order the drain encounters them:
96
+ *
97
+ * - **Directional** — always refreshes. Scores Infinity, so it would head the ordering
98
+ * anyway; it is settled during the scoring pass instead of being pushed onto the heap
99
+ * because the outcome cannot depend on where it lands. Its view cost is still charged, so
100
+ * local lights see a reduced pool.
101
+ * - **Local, off-screen** (`projected_area_px <= 0`) — skipped entirely. Not demand, and not
102
+ * carry-over fuel: the map keeps its flags and springs back when it returns to view.
103
+ * - **Local, in-view, invalid** — must draw. `is_invalid` means the committed layout has
104
+ * never held valid depth, so sampling it would show garbage. Bypasses the budget but is
105
+ * visited in score order, because its charge against the pool is what decides whether the
106
+ * candidates below it still fit.
107
+ * - **Local, in-view, valid** — competes for what is left, highest score first.
108
+ *
109
+ * Results land on {@link selected}, {@link views_spent} and {@link had_unfit_candidates}.
110
+ * `map.update()` is deliberately NOT called here — that needs the camera and the scene, and
111
+ * keeping it out is what keeps this side GPU-free. The caller walks {@link selected}.
112
+ *
113
+ * @param {Shadowmap[]} shadowmaps every map in the scene; `projected_area_px` must already be
114
+ * current for this frame
115
+ * @param {number} frame_index monotonically increasing frame counter, used for staleness
116
+ * @param {number} budget_total views available this frame, including any carry-over
117
+ */
118
+ select(shadowmaps, frame_index, budget_total) {
119
+ const n = shadowmaps.length;
120
+
121
+ const selected = this.selected;
122
+ selected.length = 0;
123
+
124
+ let views_spent = 0;
125
+ let had_unfit_candidates = false;
126
+
127
+ this.#ensure_capacity(n);
128
+
129
+ const heap = this.#heap;
130
+ heap.clear();
131
+
132
+ // Number of must-draw maps still in the heap. Tracked rather than looked for, because it
133
+ // is the only thing that can stop the drain from exiting early — see below.
134
+ let invalid_in_heap = 0;
135
+
136
+ for (let i = 0; i < n; i++) {
137
+ const map = shadowmaps[i];
138
+
139
+ map.should_draw = false;
140
+
141
+ if (map.light.isDirectionalLight) {
142
+ map.should_draw = true;
143
+ selected.push(map);
144
+ views_spent += map.views.length;
145
+ continue;
146
+ }
147
+
148
+ if (map.projected_area_px <= 0) {
149
+ continue;
150
+ }
151
+
152
+ if (map.is_invalid) {
153
+ invalid_in_heap++;
154
+ }
155
+
156
+ heap.insert(i, compute_shadowmap_update_score(map, frame_index));
157
+ }
158
+
159
+ while (heap.size > 0) {
160
+ // Every map costs at least one view, so once the pool is gone nothing left can fit and
161
+ // the remainder are unfit by definition — provided none of them is a must-draw, which
162
+ // would have to be visited regardless. In steady state there are none (`is_invalid` is
163
+ // cleared by the first successful raster) and this fires after about `budget_total`
164
+ // pops, which is what bounds K. During a cold start it degrades to a full drain, i.e.
165
+ // to a heapsort, still ahead of the comparator sort it replaced.
166
+ if (views_spent >= budget_total && invalid_in_heap === 0) {
167
+ had_unfit_candidates = true;
168
+ break;
169
+ }
170
+
171
+ const map = shadowmaps[heap.pop_max()];
172
+ const cost = map.views.length;
173
+
174
+ if (map.is_invalid) {
175
+ invalid_in_heap--;
176
+ map.should_draw = true;
177
+ selected.push(map);
178
+ views_spent += cost;
179
+ continue;
180
+ }
181
+
182
+ if (views_spent + cost <= budget_total) {
183
+ map.should_draw = true;
184
+ selected.push(map);
185
+ views_spent += cost;
186
+ } else {
187
+ // Wanted to refresh but the pool could not cover its view cost. Keep going — a
188
+ // cheaper candidate further down may still fit.
189
+ had_unfit_candidates = true;
190
+ }
191
+ }
192
+
193
+ this.views_spent = views_spent;
194
+ this.had_unfit_candidates = had_unfit_candidates;
195
+ }
196
+ }
@@ -0,0 +1,91 @@
1
+ /**
2
+ * The set of shadowmaps a scene currently holds, indexed by the light each one belongs to.
3
+ *
4
+ * Exists to make {@link GPUSceneShadowmapContext.process_lights} cheap. That pass runs every
5
+ * frame for every scene, and its job is to answer two questions per element: "does this light
6
+ * already have a map" (once per light) and "is this map's light still in the scene" (once per
7
+ * map). Answering the first by scanning the map array made the pass O(lights x maps) — 148us per
8
+ * frame at 512 lights, 554us at 1024, against 24us and 57us with the index. See
9
+ * benchmark/reconcile.spec.js.
10
+ *
11
+ * The second question is answered by MARKING rather than by a per-frame `new Set(lights)`. A
12
+ * reconciliation stamps every light's map with the current pass's mark as it walks the light
13
+ * array; anything still carrying an older mark afterwards belongs to a light that has left. That
14
+ * folds the liveness check into the lookup that was happening anyway, so the pass builds no
15
+ * per-frame collection at all.
16
+ *
17
+ * Deliberately GPU-free — it owns array and index bookkeeping and nothing else. Allocating an
18
+ * atlas rect, creating views and cameras, and releasing them again all stay in
19
+ * {@link GPUSceneShadowmapContext}, which is what lets this be measured without a device.
20
+ *
21
+ * Invariant: a light has at most one map. {@link add} asserts it.
22
+ */
23
+ export class ShadowmapRegistry {
24
+ /**
25
+ * The live map array, in allocation order. Callers iterate this directly — the draw pass, the
26
+ * record writer and the resolution policy all walk it every frame and none of them should pay
27
+ * for a copy.
28
+ *
29
+ * Mutate it only through this class, or the light index silently stops matching it.
30
+ * @returns {Shadowmap[]}
31
+ */
32
+ get maps(): Shadowmap[];
33
+ /**
34
+ * @returns {number}
35
+ */
36
+ get size(): number;
37
+ /**
38
+ * @param {Light} light
39
+ * @returns {Shadowmap|undefined}
40
+ */
41
+ get(light: Light): Shadowmap | undefined;
42
+ /**
43
+ * Open a reconciliation pass. Every map that should survive it must be handed to
44
+ * {@link mark_live} before {@link is_marked} is consulted.
45
+ */
46
+ begin_reconcile(): void;
47
+ /**
48
+ * Look up `light`'s map and, if it has one, mark it as belonging to a light that is still in
49
+ * the scene. The lookup and the liveness marking are the same operation on purpose — that is
50
+ * the whole point of the mark, and splitting them would put the hash probe back.
51
+ *
52
+ * @param {Light} light
53
+ * @returns {Shadowmap|undefined} undefined when the light has no map yet, i.e. it is new
54
+ */
55
+ mark_live(light: Light): Shadowmap | undefined;
56
+ /**
57
+ * @param {Shadowmap} map
58
+ * @returns {boolean} true when the map was marked during the current reconciliation pass
59
+ */
60
+ is_marked(map: Shadowmap): boolean;
61
+ /**
62
+ * @param {number} index
63
+ * @returns {Shadowmap}
64
+ */
65
+ get_at(index: number): Shadowmap;
66
+ /**
67
+ * Take ownership of a newly created map. Marked live immediately — a map created during a
68
+ * reconciliation pass must survive that same pass's reclamation.
69
+ *
70
+ * @param {Shadowmap} map with `light` already assigned
71
+ */
72
+ add(map: Shadowmap): void;
73
+ /**
74
+ * Drop the map at `index`. The caller is responsible for releasing its GPU-side resources
75
+ * first — this only unhooks it from the array and the index.
76
+ *
77
+ * Order of the remaining maps is preserved, because the per-type shadow ids assigned at the
78
+ * end of reconciliation are positional and the records they point at are re-published only
79
+ * when an id actually moves.
80
+ *
81
+ * @param {number} index
82
+ */
83
+ remove_at(index: number): void;
84
+ /**
85
+ * Drop every map. Same caveat as {@link remove_at} — GPU-side resources are the caller's to
86
+ * release before calling this.
87
+ */
88
+ clear(): void;
89
+ #private;
90
+ }
91
+ //# sourceMappingURL=ShadowmapRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShadowmapRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/ShadowmapRegistry.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAuBI;;;;;;;OAOG;IACH,wBAEC;IAED;;OAEG;IACH,mBAEC;IAED;;;OAGG;IACH,mBAFa,YAAU,SAAS,CAI/B;IAED;;;OAGG;IACH,wBAEC;IAED;;;;;;;OAOG;IACH,yBAFa,YAAU,SAAS,CAU/B;IAED;;;OAGG;IACH,2BAFa,OAAO,CAInB;IAED;;;OAGG;IACH,cAHW,MAAM,aAKhB;IAED;;;;;OAKG;IACH,0BAMC;IAED;;;;;;;;;OASG;IACH,iBAFW,MAAM,QAOhB;IAED;;;OAGG;IACH,cAGC;;CACJ"}
@@ -0,0 +1,156 @@
1
+ import { assert } from "../../../../core/assert.js";
2
+
3
+ /**
4
+ * The set of shadowmaps a scene currently holds, indexed by the light each one belongs to.
5
+ *
6
+ * Exists to make {@link GPUSceneShadowmapContext.process_lights} cheap. That pass runs every
7
+ * frame for every scene, and its job is to answer two questions per element: "does this light
8
+ * already have a map" (once per light) and "is this map's light still in the scene" (once per
9
+ * map). Answering the first by scanning the map array made the pass O(lights x maps) — 148us per
10
+ * frame at 512 lights, 554us at 1024, against 24us and 57us with the index. See
11
+ * benchmark/reconcile.spec.js.
12
+ *
13
+ * The second question is answered by MARKING rather than by a per-frame `new Set(lights)`. A
14
+ * reconciliation stamps every light's map with the current pass's mark as it walks the light
15
+ * array; anything still carrying an older mark afterwards belongs to a light that has left. That
16
+ * folds the liveness check into the lookup that was happening anyway, so the pass builds no
17
+ * per-frame collection at all.
18
+ *
19
+ * Deliberately GPU-free — it owns array and index bookkeeping and nothing else. Allocating an
20
+ * atlas rect, creating views and cameras, and releasing them again all stay in
21
+ * {@link GPUSceneShadowmapContext}, which is what lets this be measured without a device.
22
+ *
23
+ * Invariant: a light has at most one map. {@link add} asserts it.
24
+ */
25
+ export class ShadowmapRegistry {
26
+ /**
27
+ * @type {Shadowmap[]}
28
+ */
29
+ #maps = [];
30
+
31
+ /**
32
+ * @type {Map<Light, Shadowmap>}
33
+ */
34
+ #by_light = new Map();
35
+
36
+ /**
37
+ * Monotonically increasing reconciliation counter. Compared against
38
+ * {@link Shadowmap._reconcile_mark} to tell a map whose light is still in the scene from one
39
+ * whose light has left. Starts at 0 and is pre-incremented by {@link begin_reconcile}, so the
40
+ * first pass marks with 1 and a never-marked map (whose field is 0) reads as stale.
41
+ *
42
+ * Increments once per frame. A double stays exact to 2^53, which at 1000 frames per second is
43
+ * longer than the hardware will last, so there is no wraparound to handle.
44
+ * @type {number}
45
+ */
46
+ #mark = 0;
47
+
48
+ /**
49
+ * The live map array, in allocation order. Callers iterate this directly — the draw pass, the
50
+ * record writer and the resolution policy all walk it every frame and none of them should pay
51
+ * for a copy.
52
+ *
53
+ * Mutate it only through this class, or the light index silently stops matching it.
54
+ * @returns {Shadowmap[]}
55
+ */
56
+ get maps() {
57
+ return this.#maps;
58
+ }
59
+
60
+ /**
61
+ * @returns {number}
62
+ */
63
+ get size() {
64
+ return this.#maps.length;
65
+ }
66
+
67
+ /**
68
+ * @param {Light} light
69
+ * @returns {Shadowmap|undefined}
70
+ */
71
+ get(light) {
72
+ return this.#by_light.get(light);
73
+ }
74
+
75
+ /**
76
+ * Open a reconciliation pass. Every map that should survive it must be handed to
77
+ * {@link mark_live} before {@link is_marked} is consulted.
78
+ */
79
+ begin_reconcile() {
80
+ this.#mark++;
81
+ }
82
+
83
+ /**
84
+ * Look up `light`'s map and, if it has one, mark it as belonging to a light that is still in
85
+ * the scene. The lookup and the liveness marking are the same operation on purpose — that is
86
+ * the whole point of the mark, and splitting them would put the hash probe back.
87
+ *
88
+ * @param {Light} light
89
+ * @returns {Shadowmap|undefined} undefined when the light has no map yet, i.e. it is new
90
+ */
91
+ mark_live(light) {
92
+ const map = this.#by_light.get(light);
93
+
94
+ if (map !== undefined) {
95
+ map._reconcile_mark = this.#mark;
96
+ }
97
+
98
+ return map;
99
+ }
100
+
101
+ /**
102
+ * @param {Shadowmap} map
103
+ * @returns {boolean} true when the map was marked during the current reconciliation pass
104
+ */
105
+ is_marked(map) {
106
+ return map._reconcile_mark === this.#mark;
107
+ }
108
+
109
+ /**
110
+ * @param {number} index
111
+ * @returns {Shadowmap}
112
+ */
113
+ get_at(index) {
114
+ return this.#maps[index];
115
+ }
116
+
117
+ /**
118
+ * Take ownership of a newly created map. Marked live immediately — a map created during a
119
+ * reconciliation pass must survive that same pass's reclamation.
120
+ *
121
+ * @param {Shadowmap} map with `light` already assigned
122
+ */
123
+ add(map) {
124
+ assert.equal(this.#by_light.has(map.light), false, 'light already has a shadowmap');
125
+
126
+ map._reconcile_mark = this.#mark;
127
+ this.#maps.push(map);
128
+ this.#by_light.set(map.light, map);
129
+ }
130
+
131
+ /**
132
+ * Drop the map at `index`. The caller is responsible for releasing its GPU-side resources
133
+ * first — this only unhooks it from the array and the index.
134
+ *
135
+ * Order of the remaining maps is preserved, because the per-type shadow ids assigned at the
136
+ * end of reconciliation are positional and the records they point at are re-published only
137
+ * when an id actually moves.
138
+ *
139
+ * @param {number} index
140
+ */
141
+ remove_at(index) {
142
+ const map = this.#maps[index];
143
+
144
+ this.#by_light.delete(map.light);
145
+ this.#maps.splice(index, 1);
146
+ }
147
+
148
+ /**
149
+ * Drop every map. Same caveat as {@link remove_at} — GPU-side resources are the caller's to
150
+ * release before calling this.
151
+ */
152
+ clear() {
153
+ this.#maps.length = 0;
154
+ this.#by_light.clear();
155
+ }
156
+ }
@@ -1,9 +0,0 @@
1
- export class HighlightRenderElementSource {
2
- /**
3
- *
4
- * @param {ObjectPoolFactory<HighlightRenderElement>} pool
5
- * @param {HighlightRenderGroup} group
6
- */
7
- collect(pool: ObjectPoolFactory<HighlightRenderElement>, group: HighlightRenderGroup): void;
8
- }
9
- //# sourceMappingURL=HighlightRenderElementSource.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HighlightRenderElementSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/highlight/plugin/HighlightRenderElementSource.js"],"names":[],"mappings":"AAAA;IAGI;;;;OAIG;IACH,4FAEC;CACJ"}
@@ -1,12 +0,0 @@
1
- export class HighlightRenderElementSource {
2
-
3
-
4
- /**
5
- *
6
- * @param {ObjectPoolFactory<HighlightRenderElement>} pool
7
- * @param {HighlightRenderGroup} group
8
- */
9
- collect(pool, group) {
10
-
11
- }
12
- }
@@ -1,16 +0,0 @@
1
- export class HighlightRenderElement {
2
- /**
3
- *
4
- * @type {Object3D}
5
- */
6
- object: Object3D;
7
- /**
8
- * TODO some definitions may be merged, such as those with the same {@link HighlightDefinition.thickness}, this would allow for less work in the shader
9
- * @type {HighlightDefinition[]}
10
- */
11
- definitions: HighlightDefinition[];
12
- merged: HighlightDefinition;
13
- merge(): void;
14
- }
15
- import { HighlightDefinition } from "../HighlightDefinition.js";
16
- //# sourceMappingURL=HighlightRenderElement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HighlightRenderElement.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.js"],"names":[],"mappings":"AAGA;IACI;;;OAGG;IACH,iBAAc;IAEd;;;OAGG;IACH,aAFU,mBAAmB,EAAE,CAEd;IAEjB,4BAAmC;IAEnC,cAwBC;CACJ;oCA1CmC,2BAA2B"}
@@ -1,44 +0,0 @@
1
- import { lerp } from "../../../../../core/math/lerp.js";
2
- import { HighlightDefinition } from "../HighlightDefinition.js";
3
-
4
- export class HighlightRenderElement {
5
- /**
6
- *
7
- * @type {Object3D}
8
- */
9
- object = null;
10
-
11
- /**
12
- * TODO some definitions may be merged, such as those with the same {@link HighlightDefinition.thickness}, this would allow for less work in the shader
13
- * @type {HighlightDefinition[]}
14
- */
15
- definitions = [];
16
-
17
- merged = new HighlightDefinition();
18
-
19
- merge() {
20
- const definitions = this.definitions;
21
- const n = definitions.length;
22
-
23
- let outputR = 0;
24
- let outputG = 0;
25
- let outputB = 0;
26
- let outputA = 0;
27
-
28
- for (let i = 0; i < n; i++) {
29
- const definition = definitions[i];
30
-
31
- const color = definition.color;
32
- const opacity = definition.opacity;
33
-
34
- outputR = lerp(outputR, color.r, opacity);
35
- outputG = lerp(outputG, color.g, opacity);
36
- outputB = lerp(outputB, color.b, opacity);
37
-
38
- outputA = (outputA * (1 - opacity)) + opacity;
39
- }
40
-
41
- this.merged.color.setRGB(outputR, outputG, outputB);
42
- this.merged.opacity = outputA;
43
- }
44
- }