@woosh/meep-engine 3.60.6 → 3.60.8

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 (328) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/package.json +1 -1
  3. package/src/core/binary/BitSet.d.ts.map +1 -1
  4. package/src/core/binary/BitSet.js +2 -1
  5. package/src/{format/image/avif/av1/util → core/binary/operations}/ceil_log2.d.ts +2 -2
  6. package/src/core/binary/operations/ceil_log2.d.ts.map +1 -0
  7. package/src/{format/image/avif/av1/util → core/binary/operations}/ceil_log2.js +18 -18
  8. package/src/core/binary/zstd/ZstdReverseBitReader.d.ts.map +1 -1
  9. package/src/core/binary/zstd/ZstdReverseBitReader.js +225 -223
  10. package/src/core/binary/zstd/zstd_fse.d.ts.map +1 -1
  11. package/src/core/binary/zstd/zstd_fse.js +267 -265
  12. package/src/core/binary/zstd/zstd_huffman.d.ts.map +1 -1
  13. package/src/core/binary/zstd/zstd_huffman.js +246 -244
  14. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
  15. package/src/core/bvh2/binary/2/BinaryUint32BVH.js +8 -2
  16. package/src/core/bvh2/bvh3/ebvh_optimize_treelet.d.ts.map +1 -1
  17. package/src/core/bvh2/bvh3/ebvh_optimize_treelet.js +8 -7
  18. package/src/core/collection/PairUint32Map.d.ts.map +1 -1
  19. package/src/core/collection/PairUint32Map.js +2 -2
  20. package/src/core/collection/Uint32Map.d.ts.map +1 -1
  21. package/src/core/collection/Uint32Map.js +2 -4
  22. package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -1
  23. package/src/core/collection/heap/FibonacciHeap.js +2 -1
  24. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
  25. package/src/core/geom/2d/r-tree/StaticR2Tree.js +8 -2
  26. package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts.map +1 -1
  27. package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js +2 -3
  28. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
  29. package/src/engine/graphics/texture/atlas/TextureAtlas.js +13 -14
  30. package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -1
  31. package/src/engine/graphics/texture/atlas/sprite_atlas_border.js +70 -69
  32. package/src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.d.ts.map +1 -1
  33. package/src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.js +2 -1
  34. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  35. package/src/engine/graphics3/GPUParticleEmitterSystem.js +2 -1
  36. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
  37. package/src/engine/graphics3/decal/GPUDecalRenderer.js +2 -1
  38. package/src/engine/graphics3/decal/chunk_decal_record.d.ts +14 -0
  39. package/src/engine/graphics3/decal/chunk_decal_record.d.ts.map +1 -0
  40. package/src/engine/graphics3/decal/chunk_decal_record.js +44 -0
  41. package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
  42. package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +2 -15
  43. package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
  44. package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +3 -16
  45. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  46. package/src/engine/graphics3/decal/shader_decal_composite.js +3 -23
  47. package/src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.d.ts.map +1 -1
  48. package/src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.js +2 -1
  49. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  50. package/src/engine/physics/queries/shape_cast.js +2 -2
  51. package/src/format/image/avif/av1/decode/decode_palette.js +442 -442
  52. package/src/format/image/avif/av1/entropy/SymbolWriter.d.ts.map +1 -1
  53. package/src/format/image/avif/av1/entropy/SymbolWriter.js +2 -1
  54. package/src/generation/foliage/material/foliage_tile.d.ts.map +1 -1
  55. package/src/generation/foliage/material/foliage_tile.js +2 -1
  56. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  57. package/src/generation/markers/GridActionRuleSet.js +12 -3
  58. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  59. package/src/shade/device/mock/SoftwareGPUDevice.js +6 -13
  60. package/src/shade/playground/caldera/main.js +3 -2
  61. package/src/shade/playground/probe_clipmap/README.md +2 -1
  62. package/src/shade/playground/probe_clipmap/index.html +7 -2
  63. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  64. package/src/shade/playground/probe_clipmap/main.js +17 -7
  65. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -1
  66. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +7 -13
  67. package/src/shade/playground/vgeo_scene/main.js +2 -1
  68. package/src/shade/playground/vsm/VSMDebugOverlay.d.ts.map +1 -1
  69. package/src/shade/playground/vsm/VSMDebugOverlay.js +3 -1
  70. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  71. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  72. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  73. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  74. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.d.ts.map +1 -1
  75. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.js +5 -4
  76. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.d.ts.map +1 -1
  77. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.js +168 -166
  78. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.d.ts.map +1 -1
  79. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.js +221 -219
  80. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  81. package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
  82. package/src/shade/renderer/fow/shader_fog_of_war.js +8 -19
  83. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +6 -6
  85. package/src/shade/renderer/geometry/sdf/MeshSDFLayout.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/sdf/MeshSDFLayout.js +2 -1
  87. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  88. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +2 -1
  89. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
  90. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +2 -1
  91. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_decode_from_storage.d.ts.map +1 -1
  92. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_decode_from_storage.js +10 -31
  93. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_encode_to_storage.d.ts.map +1 -1
  94. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_encode_to_storage.js +9 -15
  95. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts +2 -1
  96. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.js +6 -5
  98. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
  99. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +2 -1
  100. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -3
  101. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  102. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +168 -18
  103. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +98 -57
  104. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
  105. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +168 -77
  106. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +4 -2
  107. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  108. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +27 -12
  109. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
  110. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +12 -7
  111. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
  112. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +8 -2
  113. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
  114. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +5 -2
  115. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +1 -1
  116. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts.map +1 -1
  117. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.js +5 -3
  118. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +1 -1
  119. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_free.d.ts.map +1 -1
  120. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_free.js +1 -1
  121. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_movers_command.d.ts.map +1 -1
  122. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_movers_command.js +4 -2
  123. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_scroll.d.ts.map +1 -1
  124. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_scroll.js +1 -1
  125. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
  126. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +1 -1
  127. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
  128. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +3 -1
  129. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.js +2 -2
  130. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +114 -41
  131. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  132. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +424 -207
  133. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +34 -25
  134. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
  135. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +41 -31
  136. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts +7 -5
  137. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts.map +1 -1
  138. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.js +7 -5
  139. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.d.ts +47 -0
  140. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.d.ts.map +1 -0
  141. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.js +84 -0
  142. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts +48 -0
  143. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts.map +1 -0
  144. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.js +101 -0
  145. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +58 -4
  146. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
  147. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +127 -30
  148. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts +18 -7
  149. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts.map +1 -1
  150. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.js +39 -13
  151. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +29 -8
  152. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
  153. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +112 -56
  154. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.d.ts +19 -0
  155. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.d.ts.map +1 -0
  156. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.js +35 -0
  157. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
  158. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +9 -3
  159. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +3 -3
  160. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +5 -5
  161. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +8 -12
  162. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
  163. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +23 -56
  164. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts +0 -3
  165. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts.map +1 -1
  166. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +11 -15
  167. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +26 -0
  168. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -0
  169. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +173 -0
  170. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +32 -0
  171. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -0
  172. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +166 -0
  173. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts +3 -4
  174. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts.map +1 -1
  175. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.js +3 -4
  176. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_guide.d.ts.map +1 -1
  177. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_guide.js +3 -1
  178. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +6 -12
  179. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
  180. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +15 -65
  181. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_order.d.ts.map +1 -1
  182. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_order.js +7 -2
  183. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +4 -4
  184. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
  185. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +24 -17
  186. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.d.ts +7 -5
  187. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.d.ts.map +1 -1
  188. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.js +18 -10
  189. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.d.ts +2 -2
  190. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.d.ts.map +1 -1
  191. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.js +9 -5
  192. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts +3 -0
  193. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts.map +1 -1
  194. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.js +9 -6
  195. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts +1 -1
  196. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts.map +1 -1
  197. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.js +16 -16
  198. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.d.ts +36 -0
  199. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.d.ts.map +1 -0
  200. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.js +233 -0
  201. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.d.ts.map +1 -1
  202. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.js +7 -5
  203. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  204. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +5 -3
  205. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  206. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +10 -4
  207. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.d.ts +2 -1
  208. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.d.ts.map +1 -1
  209. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.js +12 -6
  210. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts +1 -2
  211. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
  212. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +5 -6
  213. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +14 -18
  214. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts.map +1 -1
  215. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +25 -35
  216. package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.d.ts +13 -0
  217. package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.d.ts.map +1 -0
  218. package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.js +12 -0
  219. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +27 -2
  220. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
  221. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +62 -6
  222. package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
  223. package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +10 -19
  224. package/src/shade/renderer/gpu_primitive/indirect/chunk_folded_dispatch.d.ts.map +1 -1
  225. package/src/shade/renderer/gpu_primitive/indirect/chunk_folded_dispatch.js +6 -3
  226. package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -1
  227. package/src/shade/renderer/hiz/hzb_pick_alignment.js +149 -148
  228. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -1
  229. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +4 -2
  230. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -1
  231. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +6 -5
  232. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -1
  233. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +3 -1
  234. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -1
  235. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +3 -1
  236. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -1
  237. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +3 -1
  238. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +0 -5
  239. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -1
  240. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +0 -7
  241. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +15 -2
  242. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -1
  243. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +51 -16
  244. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -1
  245. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +3 -2
  246. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  247. package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.d.ts +17 -0
  248. package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.d.ts.map +1 -0
  249. package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.js +81 -0
  250. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  251. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +5 -48
  252. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  253. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +4 -44
  254. package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.d.ts.map +1 -1
  255. package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.js +4 -1
  256. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  257. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +8 -7
  258. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  259. package/src/shade/renderer/postprocess/nss/chunk_nss_luma_derivative.d.ts.map +1 -1
  260. package/src/shade/renderer/postprocess/nss/chunk_nss_luma_derivative.js +5 -7
  261. package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.d.ts +17 -0
  262. package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.d.ts.map +1 -0
  263. package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.js +56 -0
  264. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
  265. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +2 -22
  266. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
  267. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +2 -13
  268. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  269. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +10 -13
  270. package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.d.ts.map +1 -1
  271. package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.js +39 -38
  272. package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.d.ts.map +1 -1
  273. package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.js +7 -12
  274. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts +8 -6
  275. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts.map +1 -1
  276. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js +10 -7
  277. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.d.ts +16 -0
  278. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.d.ts.map +1 -0
  279. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.js +35 -0
  280. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts +5 -2
  281. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts.map +1 -1
  282. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.js +27 -18
  283. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.d.ts.map +1 -1
  284. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.js +5 -15
  285. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.d.ts.map +1 -1
  286. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.js +5 -19
  287. package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.d.ts.map +1 -1
  288. package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.js +3 -22
  289. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -1
  290. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +2 -1
  291. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_shadow_group_list.d.ts.map +1 -1
  292. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_shadow_group_list.js +154 -152
  293. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
  294. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +2 -1
  295. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +3 -1
  296. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -1
  297. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +4 -3
  298. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +7 -1
  299. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -1
  300. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +54 -47
  301. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -1
  302. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +371 -370
  303. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  304. package/src/shade/renderer/water/GPUWaterRenderer.js +2 -1
  305. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  306. package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -1
  307. package/src/shade/renderer/water/surface/lod/shader_water_lod.js +12 -14
  308. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
  309. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +2 -9
  310. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
  311. package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +2 -1
  312. package/src/shade/renderer/wind/WIND_FIELD.d.ts +3 -1
  313. package/src/shade/renderer/wind/WIND_FIELD.d.ts.map +1 -1
  314. package/src/shade/renderer/wind/WIND_FIELD.js +4 -3
  315. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts +8 -2
  316. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts.map +1 -1
  317. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.js +11 -4
  318. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +2 -2
  319. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -1
  320. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +13 -4
  321. package/src/shade/util/texture_mip_extent.d.ts.map +1 -1
  322. package/src/shade/util/texture_mip_extent.js +88 -87
  323. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  324. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +9 -7
  325. package/src/format/image/avif/av1/util/ceil_log2.d.ts.map +0 -1
  326. package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.d.ts +0 -1
  327. package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.d.ts.map +0 -1
  328. package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"SymbolWriter.d.ts","sourceRoot":"","sources":["../../../../../../../src/format/image/avif/av1/entropy/SymbolWriter.js"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH;IACI,gFAAgF;IAChF,UADW,WAAW,CACuB;IAE7C,8DAA8D;IAC9D,iBADW,MAAM,CACG;IAEpB,uFAAuF;IACvF,KADW,MAAM,CACT;IAER,2FAA2F;IAC3F,OADW,MAAM,CACH;IAEd,0EAA0E;IAC1E,OADW,MAAM,CACN;IAEX;;OAEG;IACH,oBAFU,MAAM,CAEO;IAEvB,mEAAmE;IACnE,SADW,MAAM,CACL;IAEZ,mGAAmG;IACnG,MADW,MAAM,CACR;IAET;;;;OAIG;IACH,2BAHW,MAAM,GACJ,YAAY,CAYxB;IAED;;;;;OAKG;IACH,iBAFa,YAAY,CAQxB;IAiED;;;;;;;;OAQG;IACH,qBALW,MAAM,OACN,WAAW,UACX,MAAM,KACN,MAAM,QAuDhB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAoBhB;IAED;;;OAGG;IACH,qBAHW,MAAM,KACN,MAAM,QAMhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,KACN,MAAM,QAgBhB;IAED;;;;;;;OAOG;IACH,UAFa,UAAU,CA8CtB;;CACJ"}
1
+ {"version":3,"file":"SymbolWriter.d.ts","sourceRoot":"","sources":["../../../../../../../src/format/image/avif/av1/entropy/SymbolWriter.js"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH;IACI,gFAAgF;IAChF,UADW,WAAW,CACuB;IAE7C,8DAA8D;IAC9D,iBADW,MAAM,CACG;IAEpB,uFAAuF;IACvF,KADW,MAAM,CACT;IAER,2FAA2F;IAC3F,OADW,MAAM,CACH;IAEd,0EAA0E;IAC1E,OADW,MAAM,CACN;IAEX;;OAEG;IACH,oBAFU,MAAM,CAEO;IAEvB,mEAAmE;IACnE,SADW,MAAM,CACL;IAEZ,mGAAmG;IACnG,MADW,MAAM,CACR;IAET;;;;OAIG;IACH,2BAHW,MAAM,GACJ,YAAY,CAYxB;IAED;;;;;OAKG;IACH,iBAFa,YAAY,CAQxB;IAiED;;;;;;;;OAQG;IACH,qBALW,MAAM,OACN,WAAW,UACX,MAAM,KACN,MAAM,QAuDhB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAoBhB;IAED;;;OAGG;IACH,qBAHW,MAAM,KACN,MAAM,QAMhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,KACN,MAAM,QAgBhB;IAED;;;;;;;OAOG;IACH,UAFa,UAAU,CA8CtB;;CACJ"}
@@ -1,6 +1,7 @@
1
1
  import { floor_log2 } from "../util/floor_log2.js";
2
2
  import { BOOL_COST, COST_ONE_BIT, symbol_cost } from "./symbol_cost.js";
3
3
  import { EC_MIN_PROB, EC_PROB_SHIFT } from "../tables/av1_symbols.js";
4
+ import { msb_32 } from "../../../../../core/binary/msb_32.js";
4
5
 
5
6
  /**
6
7
  * Initial capacity of the pre-carry buffer, in 16-bit words. Grows as needed.
@@ -146,7 +147,7 @@ export class SymbolWriter {
146
147
  #normalize(low, range) {
147
148
  let count = this.count;
148
149
 
149
- const d = 16 - (32 - Math.clz32(range));
150
+ const d = 15 - msb_32(range);
150
151
 
151
152
  let s = count + d;
152
153
 
@@ -1 +1 @@
1
- {"version":3,"file":"foliage_tile.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/material/foliage_tile.js"],"names":[],"mappings":"AAiDA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,sDAHW,OAAO,oCAAoC,EAAE,qBAAqB,GAChE,MAAM,CAIlB;AAmBD;;;;;;;;;;;;;GAaG;AACH,6CAHW,OAAO,gCAAgC,EAAE,iBAAiB,GACxD,iBAAiB,CAqC7B;AAuBD;;;;;;;;;GASG;AACH,6CANW,OAAO,gCAAgC,EAAE,iBAAiB,UAC1D,iBAAiB,WACjB,MAAM,kBACN,OAAO,GACL,iBAAiB,CAwH7B;;;;;mBAlPa,MAAM;;;;gBACN,MAAM;;;;WACN,MAAM;;;;eACN,MAAM;;;;cACN,MAAM;cACN,MAAM;;;;qBACN,MAAM;;;;aACN,MAAM;;;;kBACN,MAAM;;;;aACN,MAAM;;;;WACN,MAAM;;;;;;mBACN,MAAM;;;;;;cAoFN,MAAM;;;;WACN,YAAY;;;;UACZ,YAAY;;;;eACZ,YAAY;;;;SACZ,YAAY;;;;YACZ,YAAY;;;;UACZ,YAAY"}
1
+ {"version":3,"file":"foliage_tile.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/material/foliage_tile.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,sDAHW,OAAO,oCAAoC,EAAE,qBAAqB,GAChE,MAAM,CAIlB;AAmBD;;;;;;;;;;;;;GAaG;AACH,6CAHW,OAAO,gCAAgC,EAAE,iBAAiB,GACxD,iBAAiB,CAqC7B;AAuBD;;;;;;;;;GASG;AACH,6CANW,OAAO,gCAAgC,EAAE,iBAAiB,UAC1D,iBAAiB,WACjB,MAAM,kBACN,OAAO,GACL,iBAAiB,CAwH7B;;;;;mBAlPa,MAAM;;;;gBACN,MAAM;;;;WACN,MAAM;;;;eACN,MAAM;;;;cACN,MAAM;cACN,MAAM;;;;qBACN,MAAM;;;;aACN,MAAM;;;;kBACN,MAAM;;;;aACN,MAAM;;;;WACN,MAAM;;;;;;mBACN,MAAM;;;;;;cAoFN,MAAM;;;;WACN,YAAY;;;;UACZ,YAAY;;;;eACZ,YAAY;;;;SACZ,YAAY;;;;YACZ,YAAY;;;;UACZ,YAAY"}
@@ -8,6 +8,7 @@ import { FoliageTileContent } from "../config/FoliageTileContent.js";
8
8
  import { foliage_card_plane_count } from "../skeleton/foliage_card_density.js";
9
9
  import { foliage_variant_maturity } from "../skeleton/foliage_senescence.js";
10
10
  import { leaf_geometry, needle_shoot_geometry } from "./leaf_geometry.js";
11
+ import { ceilPowerOfTwo } from "../../../core/binary/operations/ceilPowerOfTwo.js";
11
12
 
12
13
  /**
13
14
  * Most tiles an atlas packs (`compute_foliage_variant_atlas_layout`).
@@ -124,7 +125,7 @@ export function foliage_tile_layout(species) {
124
125
  let stem = Infinity;
125
126
  for (let s = 0; s < g.stems.length; s += 5) stem = Math.min(stem, 2 * g.stems[s + 4]);
126
127
  const wanted = Math.max(FEATURE_TEXELS * card_size / Math.max(1e-6, g.finest), STEM_TEXELS * card_size / Math.max(1e-6, stem));
127
- const resolution = clamp(Math.pow(2, Math.ceil(Math.log2(wanted))), MIN_RESOLUTION, MAX_RESOLUTION);
128
+ const resolution = ceilPowerOfTwo(Math.ceil(clamp(wanted, MIN_RESOLUTION, MAX_RESOLUTION)));
128
129
 
129
130
  return {
130
131
  variant_count: foliage_atlas_variant_count(material),
@@ -1 +1 @@
1
- {"version":3,"file":"GridActionRuleSet.d.ts","sourceRoot":"","sources":["../../../../src/generation/markers/GridActionRuleSet.js"],"names":[],"mappings":"AA2BA;IA0BI;;;;;;;;OAQG;IACH;QAN4C,KAAK,EAAtC,uBAAuB;QACW,MAAM,GAAxC,uBAAuB;QACJ,OAAO,GAA1B,MAAM,EAAE;QACU,kBAAkB,GAApC,OAAO;QACL,iBAAiB,CAkB7B;IAjDD;;;OAGG;IACH,UAFU,uBAAuB,CAEnB;IAEd;;;OAGG;IACH,QAFU,uBAAuB,GAAC,MAAM,CAEI;IAE5C;;;OAGG;IACH,SAFU,MAAM,EAAE,CAED;IAEjB;;;OAGG;IACH,aAFU,OAAO,CAEE;IA6BnB;;;OAGG;IACH,uCAEC;IAED;;;;;;OAMG;IACH,8BAJW,MAAM,eACN,MAAM,QAiIhB;CACJ;wCArNuC,8BAA8B"}
1
+ {"version":3,"file":"GridActionRuleSet.d.ts","sourceRoot":"","sources":["../../../../src/generation/markers/GridActionRuleSet.js"],"names":[],"mappings":"AA4BA;IA0BI;;;;;;;;OAQG;IACH;QAN4C,KAAK,EAAtC,uBAAuB;QACW,MAAM,GAAxC,uBAAuB;QACJ,OAAO,GAA1B,MAAM,EAAE;QACU,kBAAkB,GAApC,OAAO;QACL,iBAAiB,CAkB7B;IAjDD;;;OAGG;IACH,UAFU,uBAAuB,CAEnB;IAEd;;;OAGG;IACH,QAFU,uBAAuB,GAAC,MAAM,CAEI;IAE5C;;;OAGG;IACH,SAFU,MAAM,EAAE,CAED;IAEjB;;;OAGG;IACH,aAFU,OAAO,CAEE;IA6BnB;;;OAGG;IACH,uCAEC;IAED;;;;;;OAMG;IACH,8BAJW,MAAM,eACN,MAAM,QAyIhB;CACJ;wCA7NuC,8BAA8B"}
@@ -3,6 +3,7 @@ import { ArrayIteratorRandom } from "../../core/collection/array/iterator/ArrayI
3
3
  import { ArrayIteratorSequential } from "../../core/collection/array/iterator/ArrayIteratorSequential.js";
4
4
  import { v2_rotate } from "../../core/geom/vec2/v2_rotate.js";
5
5
  import { PI_HALF } from "../../core/math/PI_HALF.js";
6
+ import { randomIntegerBetween } from "../../core/math/random/randomIntegerBetween.js";
6
7
  import { seededRandom } from "../../core/math/random/seededRandom.js";
7
8
  import TaskGroup from "../../core/process/task/TaskGroup.js";
8
9
  import { countTask } from "../../core/process/task/util/countTask.js";
@@ -146,7 +147,6 @@ export class GridActionRuleSet {
146
147
 
147
148
  const tMain = randomCountTask(seed, 0, sampleCount, index => {
148
149
 
149
-
150
150
  const sample_y = (index / sampleCountX) | 0;
151
151
  const sample_x = index % sampleCountX;
152
152
 
@@ -166,11 +166,19 @@ export class GridActionRuleSet {
166
166
 
167
167
  const matcher = element.pattern;
168
168
 
169
+ let ROTATION_COUNT = 1;
170
+ let INITIAL_ROTATION = 0;
171
+
172
+ if (element.allowRotation) {
173
+ ROTATION_COUNT = 4;
174
+ // to avoid biasing rotation 0, we pick a random initial rotation; the sequence is always the same though
175
+ INITIAL_ROTATION = randomIntegerBetween(random, 0, 3);
176
+ }
177
+
169
178
  sampling_loop: for (let sampleIndex = 0; sampleIndex < patternSize;) {
170
179
  const sampleOffsetX = pattern[sampleIndex++];
171
180
  const sampleOffsetY = pattern[sampleIndex++];
172
181
 
173
- const ROTATION_COUNT = element.allowRotation ? 4 : 1;
174
182
 
175
183
  // a single roll per placement attempt: whether the rule fires is decided once,
176
184
  // the rotation scan only decides the orientation. Rolling per rotation would
@@ -178,8 +186,9 @@ export class GridActionRuleSet {
178
186
  const roll = random();
179
187
 
180
188
  for (let j = 0; j < ROTATION_COUNT; j++) {
189
+ const rotation_index = (j + INITIAL_ROTATION) % 4;
181
190
 
182
- const rotation = j * PI_HALF;
191
+ const rotation = rotation_index * PI_HALF;
183
192
 
184
193
  v2_rotate(scratch_offset, 0, sampleOffsetX, sampleOffsetY, rotation);
185
194
 
@@ -1 +1 @@
1
- {"version":3,"file":"SoftwareGPUDevice.d.ts","sourceRoot":"","sources":["../../../../../src/shade/device/mock/SoftwareGPUDevice.js"],"names":[],"mappings":"AA+QA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wEAFgB,SAAS;IAkCrB;;;;;;;;OAQG;IACH;QAP+B,KAAK,GAAzB,MAAM;QACwB,gBAAgB,GAA9C,gBAAgB;QAGyB,cAAc,GAAvD,2BAA2B;OAuBrC;IAvDD;;;;;OAKG;IACH,qCAEC;IAOD;;;;;;OAMG;IACH,iCAEC;IAiCD;;OAEG;IACH,kCAEC;IAID;;OAEG;IACH,sBAEC;IAaD;;;;;;;;OAQG;IACH,iEAUC;IAwBD;;;;;OAKG;IACH,uCAEC;IAID;;;;OAIG;IACH,2BAEC;IAED;;;;;;;OAOG;IACH,gBAcC;IAID;;;;;;;;;OASG;IACH,uBALW,MAAM,YACN,kCAAkC,YAClC,OAAO,GAAC,uBAAuB,GAC7B,IAAI,CAIhB;IAED;;;;;OAKG;IACH,0BALW,MAAM,YACN,kCAAkC,YAClC,OAAO,GAAC,oBAAoB,GAC1B,IAAI,CAIhB;IAED;;;OAGG;IACH,qBAHW,KAAK,GACH,OAAO,CAInB;IASD;;;;;;;OAOG;IACH,wCAFa,IAAI,CAUhB;IAED;;;;;;;;;OASG;IACH,iBAHa,QAAQ,mBAAiB,IAAI,CAAC,CAc1C;IAED;;;;;;;;;;;;;;OAcG;IACH,yCAFa,IAAI,CA4BhB;IAED;;;;;;;;;OASG;IACH,yDAcC;IAmJD;;;;;;OAMG;IACH,4DAcC;IAED;;;;;;OAMG;IACH,6DAEC;IAED;;;OAGG;IACH,oFAEC;IAED;;;;;;;OAOG;IACH,kEAUC;IAkCD;;;OAGG;IACH,iFAcC;IAED;;;;;;;OAOG;IACH,2EAEC;IAED;;;;;;OAMG;IACH,iFAEC;IAED;;;;;OAKG;IACH,oFAEC;IAED;;;;;;OAMG;IACH,oEAFa,0BAA0B,CAItC;IAED;;;;;OAKG;IACH,sEAFa,2BAA2B,CAIvC;IAUD;;;;;OAKG;IACH,kBAFa,MAAM,CAMlB;IAED;;;OAGG;IACH,+DAQC;IA4BD;;;OAGG;IACH,kFAEC;IAGL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;;CAN9C;;;;;;;;;;;;WAluBa,mBAAiB,IAAI;;sCA9QG,4BAA4B;kCAHhC,wBAAwB;mCASvB,yBAAyB"}
1
+ {"version":3,"file":"SoftwareGPUDevice.d.ts","sourceRoot":"","sources":["../../../../../src/shade/device/mock/SoftwareGPUDevice.js"],"names":[],"mappings":"AAoQA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wEAFgB,SAAS;IAkCrB;;;;;;;;OAQG;IACH;QAP+B,KAAK,GAAzB,MAAM;QACwB,gBAAgB,GAA9C,gBAAgB;QAGyB,cAAc,GAAvD,2BAA2B;OAuBrC;IAvDD;;;;;OAKG;IACH,qCAEC;IAOD;;;;;;OAMG;IACH,iCAEC;IAiCD;;OAEG;IACH,kCAEC;IAID;;OAEG;IACH,sBAEC;IAaD;;;;;;;;OAQG;IACH,iEAUC;IAwBD;;;;;OAKG;IACH,uCAEC;IAID;;;;OAIG;IACH,2BAEC;IAED;;;;;;;OAOG;IACH,gBAcC;IAID;;;;;;;;;OASG;IACH,uBALW,MAAM,YACN,kCAAkC,YAClC,OAAO,GAAC,uBAAuB,GAC7B,IAAI,CAIhB;IAED;;;;;OAKG;IACH,0BALW,MAAM,YACN,kCAAkC,YAClC,OAAO,GAAC,oBAAoB,GAC1B,IAAI,CAIhB;IAED;;;OAGG;IACH,qBAHW,KAAK,GACH,OAAO,CAInB;IASD;;;;;;;OAOG;IACH,wCAFa,IAAI,CAUhB;IAED;;;;;;;;;OASG;IACH,iBAHa,QAAQ,mBAAiB,IAAI,CAAC,CAc1C;IAED;;;;;;;;;;;;;;OAcG;IACH,yCAFa,IAAI,CA4BhB;IAED;;;;;;;;;OASG;IACH,yDAcC;IAuJD;;;;;;OAMG;IACH,4DAcC;IAED;;;;;;OAMG;IACH,6DAEC;IAED;;;OAGG;IACH,oFAEC;IAED;;;;;;;OAOG;IACH,kEAUC;IAkCD;;;OAGG;IACH,iFAcC;IAED;;;;;;;OAOG;IACH,2EAEC;IAED;;;;;;OAMG;IACH,iFAEC;IAED;;;;;OAKG;IACH,oFAEC;IAED;;;;;;OAMG;IACH,oEAFa,0BAA0B,CAItC;IAED;;;;;OAKG;IACH,sEAFa,2BAA2B,CAIvC;IAUD;;;;;OAKG;IACH,kBAFa,MAAM,CAMlB;IAED;;;OAGG;IACH,+DAQC;IA4BD;;;OAGG;IACH,kFAEC;IAGL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;;CAN9C;;;;;;;;;;;;WAtuBa,mBAAiB,IAAI;;sCAnQG,4BAA4B;kCAHhC,wBAAwB;mCASvB,yBAAyB"}
@@ -16,6 +16,7 @@ import { texture_view_resource_refusal } from "./texture_view_resource.js";
16
16
  import { gpu_texture_format_feature } from "../../descriptor/texture/format/gpu_texture_format_feature.js";
17
17
  import { gpu_texture_format_info } from "../../descriptor/texture/format/gpu_texture_format_info.js";
18
18
  import { gpu_texture_formats_view_compatible } from "../../descriptor/texture/format/gpu_texture_formats_view_compatible.js";
19
+ import { texture_mip_level_count } from "../../util/texture_mip_extent.js";
19
20
 
20
21
  /**
21
22
  * The limits a device reports when nothing was asked for — the spec's default values, which is what
@@ -257,18 +258,6 @@ function buffer_usage_refusal(usage) {
257
258
  return null;
258
259
  }
259
260
 
260
- /**
261
- * Mip levels a texture of these dimensions can have - one per halving until every axis is 1.
262
- *
263
- * @param {number} width
264
- * @param {number} height
265
- * @param {number} depth counted only for a 3d texture; array layers do not halve
266
- * @returns {number}
267
- */
268
- function max_mip_level_count(width, height, depth) {
269
- return Math.floor(Math.log2(Math.max(width, height, depth))) + 1;
270
- }
271
-
272
261
  /**
273
262
  * One entry of the device's error scope stack.
274
263
  *
@@ -685,6 +674,10 @@ export class SoftwareGPUDevice extends SoftwareGPUObjectBase {
685
674
 
686
675
  const dimension = descriptor.dimension ?? "2d";
687
676
 
677
+ if (width === 0 || height === 0 || depth === 0) {
678
+ return `${width}x${height}x${depth} has a zero-sized axis; every axis must be at least 1`;
679
+ }
680
+
688
681
  if (descriptor.usage === 0 || descriptor.usage === undefined) {
689
682
  return 'usage is 0, a texture must declare at least one usage';
690
683
  }
@@ -764,7 +757,7 @@ export class SoftwareGPUDevice extends SoftwareGPUObjectBase {
764
757
  const mip_level_count = descriptor.mipLevelCount ?? 1;
765
758
 
766
759
  // array layers do not halve with the mip chain; only a 3d texture's depth does
767
- const max_mips = max_mip_level_count(width, height, dimension === "3d" ? depth : 1);
760
+ const max_mips = texture_mip_level_count(width, height, depth, dimension);
768
761
 
769
762
  if (mip_level_count < 1 || mip_level_count > max_mips) {
770
763
  return `mipLevelCount ${mip_level_count} is outside [1, ${max_mips}] for ${width}x${height}x${depth}`;
@@ -39,6 +39,7 @@ import {
39
39
  caldera_vgeo_record,
40
40
  caldera_read_placements,
41
41
  } from "./caldera_format.js";
42
+ import { ceilPowerOfTwo } from "../../../core/binary/operations/ceilPowerOfTwo.js";
42
43
 
43
44
  /**
44
45
  * Caldera, drawn by meep: 45 districts, millions of placements, and every triangle of it standing
@@ -1040,12 +1041,12 @@ function virtual_capacities(manifest, page_capacity, requested_queue) {
1040
1041
  ? requested_queue
1041
1042
  : Math.min(
1042
1043
  1 << 22,
1043
- 1 << Math.ceil(Math.log2(Math.max(1 << 18, Math.max(1, instances) * 16)))
1044
+ ceilPowerOfTwo(Math.max(1 << 18, Math.max(1, instances) * 16))
1044
1045
  );
1045
1046
 
1046
1047
  return {
1047
1048
  geometry_capacity: containers + 64,
1048
- lookup_words: 1 << Math.ceil(Math.log2(Math.max(1 << 16, pages * 1.5))),
1049
+ lookup_words: ceilPowerOfTwo(Math.ceil(Math.max(1 << 16, pages * 1.5))),
1049
1050
  claim_word_capacity: Math.ceil(
1050
1051
  Math.max(1, manifest.max_vgeo_instances ?? 1) * page_capacity / 32
1051
1052
  ) * 2,
@@ -23,7 +23,8 @@ has the two lines that put it there. Another scene loads with `?scene=/some/othe
23
23
  | Indirect light | the probe clipmap, or IBL to compare against |
24
24
  | Debug view | the brick clipmap as the probes' rays see it; the geometry caches' mesh SDF; the hits' albedo from the cards |
25
25
  | Path tracer (P) | the accumulating path tracer's image in place of the rasterized one, as ground truth; TAA is off while it is on and comes back after |
26
- | Re-sampling (R) | each probe update pools its rays with what four of its neighbours have already seen, where their depth confirms it (`ProbeClipmapSettings.resampling`); off by default, and measured slower to converge and a few per cent brighter on Sponza (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.8) |
26
+ | History re-sampling (R) | each probe update pools its rays with what four of its neighbours have already seen, where their depth confirms it (`ProbeClipmapSettings.history_resampling`); off by default, and measured quieter but no faster to converge on Sponza (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.8) |
27
+ | Ray re-sampling (T) | each probe update also takes every ray one neighbour traced the same frame, the neighbour drawn by its radiance and the probe's sight of it, each ray where the probe's depth confirms its hit or sky (`ProbeClipmapSettings.ray_resampling`); off by default (PROBE_RAY_REPROJECTION_SCOPE_2026_11_01.md) |
27
28
  | Sun height, Sun turn | where the sun stands |
28
29
  | Point lights | eight shadowed point lights along the scene's long axis, which the probes' hits take as local lights |
29
30
  | TAA | the resolve the probe pick's noise is meant for |
@@ -109,8 +109,13 @@
109
109
  </label>
110
110
 
111
111
  <label>
112
- <input type="checkbox" id="resampling">
113
- <span>Re-sampling <span class="hint">— probes take their neighbours' radiance; R flips it</span></span>
112
+ <input type="checkbox" id="history_resampling">
113
+ <span>History re-sampling <span class="hint">— probes take their neighbours' radiance; R flips it</span></span>
114
+ </label>
115
+
116
+ <label>
117
+ <input type="checkbox" id="ray_resampling">
118
+ <span>Ray re-sampling <span class="hint">— probes take a neighbour's rays of the frame; T flips it</span></span>
114
119
  </label>
115
120
 
116
121
  <hr>
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/probe_clipmap/main.js"],"names":[],"mappings":"AA0FA;;;;;GAKG;AACH,yBAFa,QAAQ,IAAI,CAAC,CA4RzB"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/probe_clipmap/main.js"],"names":[],"mappings":"AA0FA;;;;;GAKG;AACH,yBAFa,QAAQ,IAAI,CAAC,CAsSzB"}
@@ -282,15 +282,22 @@ export async function start() {
282
282
 
283
283
  path_tracing_toggle.addEventListener('change', event => set_path_tracing(event.target.checked));
284
284
 
285
- const resampling_toggle = element('resampling');
285
+ const history_resampling_toggle = element('history_resampling');
286
286
 
287
- resampling_toggle.checked = renderer.probe_clipmap.resampling;
288
- resampling_toggle.addEventListener('change', event => {
289
- renderer.probe_clipmap.resampling = event.target.checked;
287
+ history_resampling_toggle.checked = renderer.probe_clipmap.history_resampling;
288
+ history_resampling_toggle.addEventListener('change', event => {
289
+ renderer.probe_clipmap.history_resampling = event.target.checked;
290
+ });
291
+
292
+ const ray_resampling_toggle = element('ray_resampling');
293
+
294
+ ray_resampling_toggle.checked = renderer.probe_clipmap.ray_resampling;
295
+ ray_resampling_toggle.addEventListener('change', event => {
296
+ renderer.probe_clipmap.ray_resampling = event.target.checked;
290
297
  });
291
298
 
292
299
  document.addEventListener('keydown', event => {
293
- // not while typing a number, nor in a select, where P and R pick an option
300
+ // not while typing a number, nor in a select, where P, R and T pick an option
294
301
  const typing = event.target === bake_budget || event.target instanceof HTMLSelectElement;
295
302
 
296
303
  if (event.repeat || typing) {
@@ -300,8 +307,11 @@ export async function start() {
300
307
  if (event.code === 'KeyP') {
301
308
  set_path_tracing(!renderer.feature_path_tracing_enabled);
302
309
  } else if (event.code === 'KeyR') {
303
- resampling_toggle.checked = !resampling_toggle.checked;
304
- renderer.probe_clipmap.resampling = resampling_toggle.checked;
310
+ history_resampling_toggle.checked = !history_resampling_toggle.checked;
311
+ renderer.probe_clipmap.history_resampling = history_resampling_toggle.checked;
312
+ } else if (event.code === 'KeyT') {
313
+ ray_resampling_toggle.checked = !ray_resampling_toggle.checked;
314
+ renderer.probe_clipmap.ray_resampling = ray_resampling_toggle.checked;
305
315
  }
306
316
  });
307
317
 
@@ -1 +1 @@
1
- {"version":3,"file":"sh_exp_playground_shaders.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/sh_exponential/sh_exp_playground_shaders.js"],"names":[],"mappings":"AAcA;;;GAGG;AACH,8BAFU,MAAM,EAAE,CAOhB;AAEF;;;;;;GAMG;AACH,oCAFU,MAAM,CAE0B;AAE1C;;;;;;;;;;;;;GAaG;AACH,qCAFU,YAAY,CAgBI;AAsC1B;;;;;;GAMG;AACH,qDAFU,aAAa,CAuDpB;AAeH;;;;;GAKG;AACH,qCAFU,aAAa,CA4FpB;6BArQ0B,4CAA4C;8BAJ3C,wCAAwC"}
1
+ {"version":3,"file":"sh_exp_playground_shaders.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/sh_exponential/sh_exp_playground_shaders.js"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,8BAFU,MAAM,EAAE,CAOhB;AAEF;;;;;;GAMG;AACH,oCAFU,MAAM,CAE0B;AAE1C;;;;;;;;;;;;;GAaG;AACH,qCAFU,YAAY,CAgBI;AAsC1B;;;;;;GAMG;AACH,qDAFU,aAAa,CAuDpB;AAeH;;;;;GAKG;AACH,qCAFU,aAAa,CAoFpB;6BA7P0B,4CAA4C;8BAJ3C,wCAAwC"}
@@ -1,4 +1,6 @@
1
1
  import { chunk_get_ibl_radiance } from "../../renderer/deferred/indirect/chunk_get_ibl_radiance.js";
2
+ import { chunk_rgb_to_luminance } from "../../renderer/shader/chunk/color/chunk_rgb_to_luminance.js";
3
+ import { chunk_sRGBTransferOETF } from "../../renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js";
2
4
  import { chunk_sh_exp_p4q2_base_reflectance } from "../../renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.js";
3
5
  import { SH_EXP_P4Q2_PROBE_STRUCT } from "../../renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.js";
4
6
  import { chunk_D_GGX } from "../../renderer/shader/chunk/brdf/chunk_D_GGX.js";
@@ -191,16 +193,6 @@ fn tonemap(x: vec3<f32>) -> vec3<f32> {
191
193
  return vec3<f32>(1.0) - exp(-max(x, vec3<f32>(0.0)) * view.exposure);
192
194
  }
193
195
 
194
- fn srgb_encode(x: vec3<f32>) -> vec3<f32> {
195
- let low = x * 12.92;
196
- let high = 1.055 * pow(x, vec3<f32>(1.0 / 2.4)) - 0.055;
197
- return select(high, low, x <= vec3<f32>(0.0031308));
198
- }
199
-
200
- fn luminance(x: vec3<f32>) -> f32 {
201
- return dot(x, vec3<f32>(0.2126, 0.7152, 0.0722));
202
- }
203
-
204
196
  @compute @workgroup_size(8, 8)
205
197
  fn main(@builtin(global_invocation_id) id: vec3<u32>) {
206
198
  let width = view.columns * view.cell_size;
@@ -222,7 +214,7 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
222
214
  values[row * slots + pixel] = vec4<f32>(0.0);
223
215
  }
224
216
 
225
- textureStore(output, id.xy, vec4<f32>(srgb_encode(BACKGROUND), 1.0));
217
+ textureStore(output, id.xy, vec4<f32>(sRGBTransferOETF(BACKGROUND), 1.0));
226
218
  return;
227
219
  }
228
220
 
@@ -258,15 +250,17 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
258
250
  color = tonemap(value);
259
251
  } else {
260
252
  // red: SH exponential brighter than the reference, blue: darker; on the tonemapped scale
261
- let difference = (luminance(tonemap(sh_exp)) - luminance(tonemap(reference))) * view.error_gain;
253
+ let difference = (rgb_to_luminance(tonemap(sh_exp)) - rgb_to_luminance(tonemap(reference))) * view.error_gain;
262
254
  color = vec3<f32>(max(difference, 0.0), 0.0, max(-difference, 0.0));
263
255
  }
264
256
 
265
- textureStore(output, id.xy, vec4<f32>(srgb_encode(saturate(color)), 1.0));
257
+ textureStore(output, id.xy, vec4<f32>(sRGBTransferOETF(saturate(color)), 1.0));
266
258
  }
267
259
  `, [
268
260
  chunk_playground_sphere,
269
261
  chunk_sh_exp_p4q2_base_reflectance,
270
262
  chunk_get_ibl_radiance,
263
+ chunk_rgb_to_luminance,
264
+ chunk_sRGBTransferOETF,
271
265
  ]),
272
266
  });
@@ -38,6 +38,7 @@ import { place_primitive } from "../../renderer/scene/rows/place_primitive.js";
38
38
  import { Scene } from "../../renderer/scene/Scene.js";
39
39
  import { load_default_environment } from "../load_default_environment.js";
40
40
  import { install_profile_hotkey } from "../profile_hotkey.js";
41
+ import { ceilPowerOfTwo } from "../../../core/binary/operations/ceilPowerOfTwo.js";
41
42
 
42
43
  /**
43
44
  * A **whole converted scene** of virtual geometry: thousands of containers, tens of thousands of
@@ -1437,7 +1438,7 @@ function scene_capacities(manifest, page_capacity) {
1437
1438
 
1438
1439
  return {
1439
1440
  geometry_capacity: manifest.geometry_count + 64,
1440
- lookup_words: 1 << Math.ceil(Math.log2(Math.max(1 << 16, manifest.total_pages * 1.5))),
1441
+ lookup_words: ceilPowerOfTwo(Math.ceil(Math.max(1 << 16, manifest.total_pages * 1.5))),
1441
1442
  claim_word_capacity: Math.ceil(max_instances * page_capacity / 32) * 2,
1442
1443
  max_instances,
1443
1444
  };
@@ -1 +1 @@
1
- {"version":3,"file":"VSMDebugOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/vsm/VSMDebugOverlay.js"],"names":[],"mappings":";;;2BAyBU,MAAM;;;;;;;AA2LhB;;;;;;;;;GASG;AACH;IAuCI;;OAEG;IACH,sBAFW,OAAO,mCAAmC,EAAE,eAAe,EAMrE;IAzCD;;OAEG;IACH,MAFU,MAAM,CAES;IAEzB;;;OAGG;IACH,OAFU,OAAO,CAEH;IAEd;;;OAGG;IACH,KAFU,OAAO,+CAA+C,EAAE,gBAAgB,GAAC,IAAI,CAE5E;IAEX;;;OAGG;IACH,SAFU,OAAO,uDAAuD,EAAE,wBAAwB,GAAC,IAAI,CAExF;IAiGf,gBAIC;;CACJ;gCA3V+B,6CAA6C"}
1
+ {"version":3,"file":"VSMDebugOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/vsm/VSMDebugOverlay.js"],"names":[],"mappings":";;;2BA0BU,MAAM;;;;;;;AA4LhB;;;;;;;;;GASG;AACH;IAuCI;;OAEG;IACH,sBAFW,OAAO,mCAAmC,EAAE,eAAe,EAMrE;IAzCD;;OAEG;IACH,MAFU,MAAM,CAES;IAEzB;;;OAGG;IACH,OAFU,OAAO,CAEH;IAEd;;;OAGG;IACH,KAFU,OAAO,+CAA+C,EAAE,gBAAgB,GAAC,IAAI,CAE5E;IAEX;;;OAGG;IACH,SAFU,OAAO,uDAAuD,EAAE,wBAAwB,GAAC,IAAI,CAExF;IAiGf,gBAIC;;CACJ;gCA7V+B,6CAA6C"}
@@ -6,6 +6,7 @@ import { SceneColor } from "../../renderer/extension/SceneColor.js";
6
6
  import { ViewTextures } from "../../renderer/extension/ViewTextures.js";
7
7
  import { LIGHT_DATABASE_SPEC } from "../../renderer/light/LIGHT_DATABASE_SPEC.js";
8
8
  import { chunk_project_position_from_depth } from "../../renderer/shader/chunk/camera/chunk_project_position_from_depth.js";
9
+ import { chunk_rgb_to_luminance } from "../../renderer/shader/chunk/color/chunk_rgb_to_luminance.js";
9
10
  import { chunk_u32_to_hash_color } from "../../renderer/shader/chunk/color/chunk_u32_to_hash_color.js";
10
11
  import { chunk_lut_turbo } from "../../renderer/shader/chunk/color/lut/chunk_lut_turbo.js";
11
12
  import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
@@ -186,7 +187,7 @@ fn main(@builtin(position) coord: vec4f) -> @location(0) vec4f {
186
187
  }
187
188
 
188
189
  // modulated by the picture, so the shadows stay readable under the tint
189
- let luminance = dot(scene.rgb, vec3f(0.2126, 0.7152, 0.0722));
190
+ let luminance = rgb_to_luminance(scene.rgb);
190
191
 
191
192
  return vec4f(tint * (0.15 + luminance), scene.a);
192
193
  }
@@ -199,6 +200,7 @@ fn main(@builtin(position) coord: vec4f) -> @location(0) vec4f {
199
200
  chunk_vsm_find_page,
200
201
  chunk_lut_turbo,
201
202
  chunk_u32_to_hash_color,
203
+ chunk_rgb_to_luminance,
202
204
  ]
203
205
  ),
204
206
  }),
@@ -143,7 +143,7 @@ export class GPUFluidCascade {
143
143
  * @param {*} _resources
144
144
  * @param {{encoder: ShadeGPUCommandContext}} context
145
145
  */
146
- static "__#279@#execute_restrict"(record: object, _resources: any, context: {
146
+ static "__#281@#execute_restrict"(record: object, _resources: any, context: {
147
147
  encoder: ShadeGPUCommandContext;
148
148
  }): void;
149
149
  /**
@@ -151,7 +151,7 @@ export class GPUFluidCascade {
151
151
  * @param {*} _resources
152
152
  * @param {{encoder: ShadeGPUCommandContext}} context
153
153
  */
154
- static "__#279@#execute_fill"(record: object, _resources: any, context: {
154
+ static "__#281@#execute_fill"(record: object, _resources: any, context: {
155
155
  encoder: ShadeGPUCommandContext;
156
156
  }): void;
157
157
  /**
@@ -159,7 +159,7 @@ export class GPUFluidCascade {
159
159
  * @param {import("../../../engine/graphics/render/frame_graph/FramePassResources.js").FramePassResources} resources
160
160
  * @param {{encoder: ShadeGPUCommandContext}} context
161
161
  */
162
- static "__#279@#execute"(record: object, resources: import("../../../engine/graphics/render/frame_graph/FramePassResources.js").FramePassResources, context: {
162
+ static "__#281@#execute"(record: object, resources: import("../../../engine/graphics/render/frame_graph/FramePassResources.js").FramePassResources, context: {
163
163
  encoder: ShadeGPUCommandContext;
164
164
  }): void;
165
165
  /**
@@ -63,7 +63,7 @@ export class GPUFluidCascadeStack {
63
63
  * @param {*} _resources
64
64
  * @param {{encoder: import("../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext}} context
65
65
  */
66
- static "__#281@#execute_publish"(pass: object, _resources: any, context: {
66
+ static "__#283@#execute_publish"(pass: object, _resources: any, context: {
67
67
  encoder: import("../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext;
68
68
  }): void;
69
69
  /**
@@ -90,19 +90,19 @@ export class GPUFluidForcing {
90
90
  * @param {number} clear_size bytes cleared from 0 when the pool reuses the buffer
91
91
  * @returns {BufferResourceDescriptor}
92
92
  */
93
- static "__#282@#descriptor"(kept: BufferResourceDescriptor[], role: number, size: number, usage: number, clear_size: number): BufferResourceDescriptor;
93
+ static "__#284@#descriptor"(kept: BufferResourceDescriptor[], role: number, size: number, usage: number, clear_size: number): BufferResourceDescriptor;
94
94
  /**
95
95
  * @param {object} record
96
96
  * @param {FramePassResources} resources
97
97
  * @param {{encoder: ShadeGPUCommandContext}} context
98
98
  */
99
- static "__#282@#execute_extract"(record: object, resources: FramePassResources, context: {
99
+ static "__#284@#execute_extract"(record: object, resources: FramePassResources, context: {
100
100
  encoder: ShadeGPUCommandContext;
101
101
  }): void;
102
- static "__#282@#execute_clear"(record: any, _resources: any, context: any): void;
103
- static "__#282@#execute_query"(record: any, resources: any, context: any): void;
104
- static "__#282@#execute_command"(record: any, resources: any, context: any): void;
105
- static "__#282@#execute_apply"(record: any, resources: any, context: any): void;
102
+ static "__#284@#execute_clear"(record: any, _resources: any, context: any): void;
103
+ static "__#284@#execute_query"(record: any, resources: any, context: any): void;
104
+ static "__#284@#execute_command"(record: any, resources: any, context: any): void;
105
+ static "__#284@#execute_apply"(record: any, resources: any, context: any): void;
106
106
  /**
107
107
  * @param {object} options
108
108
  * @param {GPUDevice} options.device
@@ -41,7 +41,7 @@ export class GPUFluidPressureSolve {
41
41
  * @param {*} _resources
42
42
  * @param {{encoder: ShadeGPUCommandContext}} context
43
43
  */
44
- static "__#278@#execute"(data: {
44
+ static "__#280@#execute"(data: {
45
45
  solve: GPUFluidPressureSolve;
46
46
  arm: number;
47
47
  count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"shader_fluid_mg_coarsest.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.js"],"names":[],"mappings":"AAwBA;;;;;;;;;;;;;GAaG;AACH,qDAuFG;8BA5H2B,+BAA+B"}
1
+ {"version":3,"file":"shader_fluid_mg_coarsest.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.js"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;GAaG;AACH,qDAuFG;8BA7H2B,+BAA+B"}
@@ -1,5 +1,6 @@
1
1
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
2
  import { ComputeShader } from "../../shader/ComputeShader.js";
3
+ import { chunk_grid3d_to_index } from "../../shader/chunk/grid/chunk_grid3d_to_index.js";
3
4
  import { chunk_grid_tile_window } from "../../shader/chunk/grid/chunk_grid_tile_window.js";
4
5
  import { chunk_index_to_grid3d } from "../../shader/chunk/grid/chunk_index_to_grid3d.js";
5
6
  import { chunk_is_finite } from "../../shader/chunk/math/chunk_is_finite.js";
@@ -67,7 +68,7 @@ fn tile_read_p(local: vec3<i32>) -> f32 {
67
68
 
68
69
  let c = vec3<u32>(local);
69
70
 
70
- return level_values[c.x + params.size.x * (c.y + params.size.y * c.z)];
71
+ return level_values[grid3d_to_index(c, params.size.xy)];
71
72
  }
72
73
 
73
74
  @compute @workgroup_size(${FLUID_MG_COARSEST_CELL_LIMIT})
@@ -82,10 +83,9 @@ fn main(@builtin(local_invocation_index) lane: u32) {
82
83
 
83
84
  if (inside) {
84
85
  let storage = grid_tile_window_storage(vec3<i32>(cell), params.input_corner_storage, params.input_period);
85
- let held = values[storage.x + params.input_period.x * (storage.y + params.input_period.y * storage.z)];
86
+ storage_index = grid3d_to_index(storage, params.input_period.xy);
87
+ let held = values[storage_index];
86
88
  let rhs_value = rhs[lane];
87
-
88
- storage_index = storage.x + params.input_period.x * (storage.y + params.input_period.y * storage.z);
89
89
  word = words[lane];
90
90
  f = select(0.0, rhs_value, is_finite(rhs_value));
91
91
  level_values[lane] = select(0.0, held, is_finite(held));
@@ -116,6 +116,7 @@ fn main(@builtin(local_invocation_index) lane: u32) {
116
116
  }
117
117
  }
118
118
  `, [
119
+ chunk_grid3d_to_index,
119
120
  chunk_grid_tile_window,
120
121
  chunk_index_to_grid3d,
121
122
  chunk_fluid_mg_relax,
@@ -1 +1 @@
1
- {"version":3,"file":"shader_fluid_mg_residual_restrict.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.js"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;;;GAgBG;AACH,8DAuHG;8BApK2B,+BAA+B"}
1
+ {"version":3,"file":"shader_fluid_mg_residual_restrict.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.js"],"names":[],"mappings":"AA8BA;;;;;;;;;;;;;;;;GAgBG;AACH,8DAwHG;8BAtK2B,+BAA+B"}