@woosh/meep-engine 3.39.0 → 3.41.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 (561) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/package.json +1 -1
  3. package/src/core/geom/3d/quaternion/swing_twist_clamp.d.ts +24 -0
  4. package/src/core/geom/3d/quaternion/swing_twist_clamp.d.ts.map +1 -0
  5. package/src/core/geom/3d/quaternion/swing_twist_clamp.js +62 -0
  6. package/src/core/geom/3d/quaternion/swing_twist_compose.d.ts +15 -0
  7. package/src/core/geom/3d/quaternion/swing_twist_compose.d.ts.map +1 -0
  8. package/src/core/geom/3d/quaternion/swing_twist_compose.js +36 -0
  9. package/src/core/geom/3d/quaternion/swing_twist_error.d.ts +39 -0
  10. package/src/core/geom/3d/quaternion/swing_twist_error.d.ts.map +1 -0
  11. package/src/core/geom/3d/quaternion/swing_twist_error.js +85 -0
  12. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts +11 -6
  13. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts.map +1 -1
  14. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.js +27 -13
  15. package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts +25 -0
  16. package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts.map +1 -0
  17. package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.js +166 -0
  18. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts +5 -3
  19. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts.map +1 -1
  20. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.js +5 -3
  21. package/src/engine/EngineHarness.d.ts.map +1 -1
  22. package/src/engine/EngineHarness.js +17 -4
  23. package/src/engine/animation/curve/AnimationCurve.d.ts +3 -0
  24. package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
  25. package/src/engine/animation/curve/AnimationCurve.js +6 -1
  26. package/src/engine/asset/loaders/image/avif/threaded_image_encoder.js +1 -1
  27. package/src/engine/ecs/EntityManager.d.ts +9 -1
  28. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  29. package/src/engine/ecs/EntityManager.js +26 -27
  30. package/src/engine/ecs/gpu/GPUStateAuthority.d.ts +20 -0
  31. package/src/engine/ecs/gpu/GPUStateAuthority.d.ts.map +1 -1
  32. package/src/engine/ecs/gpu/GPUStateAuthority.js +21 -0
  33. package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.d.ts +13 -0
  34. package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.d.ts.map +1 -0
  35. package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.js +12 -0
  36. package/src/engine/ecs/gpu/gpu_authority_grant.d.ts +6 -0
  37. package/src/engine/ecs/gpu/gpu_authority_grant.d.ts.map +1 -1
  38. package/src/engine/ecs/gpu/gpu_authority_grant.js +7 -1
  39. package/src/engine/ecs/gpu/gpu_authority_held.d.ts +14 -0
  40. package/src/engine/ecs/gpu/gpu_authority_held.d.ts.map +1 -0
  41. package/src/engine/ecs/gpu/gpu_authority_held.js +23 -0
  42. package/src/engine/ecs/gpu/gpu_authority_hold.d.ts +23 -0
  43. package/src/engine/ecs/gpu/gpu_authority_hold.d.ts.map +1 -0
  44. package/src/engine/ecs/gpu/gpu_authority_hold.js +41 -0
  45. package/src/engine/ecs/gpu/gpu_authority_unhold.d.ts +14 -0
  46. package/src/engine/ecs/gpu/gpu_authority_unhold.d.ts.map +1 -0
  47. package/src/engine/ecs/gpu/gpu_authority_unhold.js +32 -0
  48. package/src/engine/ecs/ik/IKGoal.d.ts +59 -0
  49. package/src/engine/ecs/ik/IKGoal.d.ts.map +1 -0
  50. package/src/engine/ecs/ik/IKGoal.js +83 -0
  51. package/src/engine/ecs/ik/IKGoalSystem.d.ts +75 -0
  52. package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -0
  53. package/src/engine/ecs/ik/IKGoalSystem.js +1456 -0
  54. package/src/engine/ecs/ik/PLAN.md +179 -0
  55. package/src/engine/ecs/speaker/VoiceSystem.d.ts +2 -2
  56. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  57. package/src/engine/ecs/storage/BinaryBufferSerializer.d.ts.map +1 -1
  58. package/src/engine/ecs/storage/BinaryBufferSerializer.js +4 -5
  59. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +7 -3
  60. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  61. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +5 -2
  62. package/src/engine/ecs/system/orderSystemsByDeclaredAccess.d.ts +33 -0
  63. package/src/engine/ecs/system/orderSystemsByDeclaredAccess.d.ts.map +1 -0
  64. package/src/engine/ecs/system/orderSystemsByDeclaredAccess.js +282 -0
  65. package/src/engine/ecs/transform/T64WorldCache.js +139 -139
  66. package/src/engine/ecs/transform/t64_evaluate_local.d.ts +25 -0
  67. package/src/engine/ecs/transform/t64_evaluate_local.d.ts.map +1 -0
  68. package/src/engine/ecs/transform/t64_evaluate_local.js +35 -0
  69. package/src/engine/ecs/transform/t64_evaluate_world.d.ts +5 -3
  70. package/src/engine/ecs/transform/t64_evaluate_world.d.ts.map +1 -1
  71. package/src/engine/ecs/transform/t64_evaluate_world.js +128 -126
  72. package/src/engine/graphics/ecs/water/Water.d.ts +14 -17
  73. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  74. package/src/engine/graphics/ecs/water/Water.js +100 -110
  75. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
  76. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +36 -38
  77. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.d.ts +6 -0
  78. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.d.ts.map +1 -0
  79. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.js +10 -0
  80. package/src/engine/graphics/ecs/water/WaterWaves.d.ts +3 -3
  81. package/src/engine/graphics/ecs/water/WaterWaves.js +46 -46
  82. package/src/engine/graphics/texture/sampler/sampler2d_to_avif.d.ts.map +1 -1
  83. package/src/engine/graphics/texture/sampler/sampler2d_to_avif.js +8 -5
  84. package/src/engine/graphics3/AnimationGraphSystem.d.ts +2 -0
  85. package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
  86. package/src/engine/graphics3/AnimationGraphSystem.js +337 -329
  87. package/src/engine/graphics3/AnimationSystem.d.ts +2 -0
  88. package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
  89. package/src/engine/graphics3/AnimationSystem.js +360 -352
  90. package/src/engine/graphics3/WaterSystem.d.ts +21 -74
  91. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  92. package/src/engine/graphics3/WaterSystem.js +174 -367
  93. package/src/engine/physics/cloth/MEASUREMENTS.md +130 -0
  94. package/src/engine/physics/cloth/PLAN.md +16 -1
  95. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +5 -6
  96. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
  97. package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +5 -6
  98. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +4 -7
  99. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
  100. package/src/engine/physics/cloth/ecs/ClothInstance.js +4 -7
  101. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +4 -3
  102. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
  103. package/src/engine/physics/cloth/ecs/ClothSystem.js +4 -3
  104. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  105. package/src/engine/physics/cloth/ecs/ClothWorld.js +10 -0
  106. package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +24 -24
  107. package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
  108. package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +46 -43
  109. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts +1 -1
  110. package/src/engine/physics/cloth/ecs/cloth_write_back.js +1 -1
  111. package/src/engine/physics/constraint/solve_constraints.d.ts +0 -35
  112. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  113. package/src/engine/physics/constraint/solve_constraints.js +1 -83
  114. package/src/engine/physics/ecs/ContactProbe.d.ts +73 -0
  115. package/src/engine/physics/ecs/ContactProbe.d.ts.map +1 -0
  116. package/src/engine/physics/ecs/ContactProbe.js +103 -0
  117. package/src/engine/physics/ecs/ContactProbeSystem.d.ts +44 -0
  118. package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -0
  119. package/src/engine/physics/ecs/ContactProbeSystem.js +397 -0
  120. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +1 -1
  121. package/src/engine/physics/fluid/ecs/FluidComponent.js +1 -1
  122. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  123. package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.d.ts +205 -0
  124. package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.d.ts.map +1 -0
  125. package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.js +245 -0
  126. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.d.ts +21 -0
  127. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.d.ts.map +1 -0
  128. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.js +63 -0
  129. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts +33 -0
  130. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts.map +1 -0
  131. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.js +874 -0
  132. package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.d.ts +27 -0
  133. package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.d.ts.map +1 -0
  134. package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.js +77 -0
  135. package/src/engine/physics/inverse_kinematics/two_bone_path_solve.d.ts +36 -0
  136. package/src/engine/physics/inverse_kinematics/two_bone_path_solve.d.ts.map +1 -0
  137. package/src/engine/physics/inverse_kinematics/two_bone_path_solve.js +97 -0
  138. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts +33 -11
  139. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -1
  140. package/src/engine/physics/inverse_kinematics/two_joint_ik.js +158 -67
  141. package/src/format/image/avif/api/convert_to_rgba.d.ts +2 -2
  142. package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -1
  143. package/src/format/image/avif/api/convert_to_rgba.js +10 -9
  144. package/src/format/image/avif/api/decode_avif.d.ts +2 -2
  145. package/src/format/image/avif/api/decode_avif.d.ts.map +1 -1
  146. package/src/format/image/avif/api/decode_avif.js +1 -1
  147. package/src/shade/playground/ssr_reprojection/README.md +111 -103
  148. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +68 -68
  149. package/src/shade/playground/ssr_reprojection/index.html +80 -79
  150. package/src/shade/playground/ssr_reprojection/main.js +256 -247
  151. package/src/shade/playground/ssr_variance/capture.js +96 -96
  152. package/src/shade/playground/ssr_variance/reference.js +78 -78
  153. package/src/shade/playground/vsm/README.md +96 -0
  154. package/src/shade/playground/vsm/VSMDebugOverlay.d.ts +49 -0
  155. package/src/shade/playground/vsm/VSMDebugOverlay.d.ts.map +1 -0
  156. package/src/shade/playground/vsm/VSMDebugOverlay.js +351 -0
  157. package/src/shade/playground/vsm/clipmap_panel.d.ts +8 -0
  158. package/src/shade/playground/vsm/clipmap_panel.d.ts.map +1 -0
  159. package/src/shade/playground/vsm/clipmap_panel.js +138 -0
  160. package/src/shade/playground/vsm/index.html +170 -0
  161. package/src/shade/playground/vsm/main.d.ts +2 -0
  162. package/src/shade/playground/vsm/main.d.ts.map +1 -0
  163. package/src/shade/playground/vsm/main.js +389 -0
  164. package/src/shade/playground/vsm/scenes.d.ts +52 -0
  165. package/src/shade/playground/vsm/scenes.d.ts.map +1 -0
  166. package/src/shade/playground/vsm/scenes.js +320 -0
  167. package/src/shade/playground/vsm/verify_vsm.d.ts +38 -0
  168. package/src/shade/playground/vsm/verify_vsm.d.ts.map +1 -0
  169. package/src/shade/playground/vsm/verify_vsm.js +305 -0
  170. package/src/shade/playground/water_refraction/README.md +57 -9
  171. package/src/shade/playground/water_refraction/main.js +12 -3
  172. package/src/shade/playground/water_refraction/world.d.ts +1 -0
  173. package/src/shade/playground/water_refraction/world.d.ts.map +1 -1
  174. package/src/shade/playground/water_refraction/world.js +15 -5
  175. package/src/shade/renderer/Renderer.d.ts +19 -0
  176. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  177. package/src/shade/renderer/Renderer.js +72 -1
  178. package/src/shade/renderer/animation/ANIMATION_TRACK_BINDING_STRUCT.d.ts.map +1 -1
  179. package/src/shade/renderer/animation/ANIMATION_TRACK_BINDING_STRUCT.js +10 -1
  180. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +18 -4
  181. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  182. package/src/shade/renderer/animation/GPUAnimationManager.js +269 -23
  183. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts +12 -4
  184. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts.map +1 -1
  185. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.js +12 -4
  186. package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
  187. package/src/shade/renderer/animation/chunk_pose_accumulator.js +14 -1
  188. package/src/shade/renderer/animation/pose/PoseChannelIndex.d.ts +78 -0
  189. package/src/shade/renderer/animation/pose/PoseChannelIndex.d.ts.map +1 -0
  190. package/src/shade/renderer/animation/pose/PoseChannelIndex.js +274 -0
  191. package/src/shade/renderer/animation/pose/PosePlayback.d.ts +40 -3
  192. package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
  193. package/src/shade/renderer/animation/pose/PosePlayback.js +77 -3
  194. package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts +21 -3
  195. package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
  196. package/src/shade/renderer/animation/pose/pose_evaluate_local.js +79 -11
  197. package/src/shade/renderer/animation/shader_animation_apply.js +1 -1
  198. package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts +3 -2
  199. package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
  200. package/src/shade/renderer/animation/shader_animation_pose_resolve.js +187 -176
  201. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +7 -0
  202. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  203. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +11 -0
  204. package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts +3 -1
  205. package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts.map +1 -1
  206. package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.js +10 -1
  207. package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_read_code.d.ts.map +1 -1
  208. package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_read_code.js +28 -0
  209. package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_write_code.d.ts.map +1 -1
  210. package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_write_code.js +31 -1
  211. package/src/shade/renderer/geometry/MeshletGeometry.d.ts +3 -0
  212. package/src/shade/renderer/geometry/MeshletGeometry.d.ts.map +1 -1
  213. package/src/shade/renderer/geometry/MeshletGeometry.js +1 -0
  214. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
  215. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +62 -4
  216. package/src/shade/renderer/light/environment/rgbe/parse_rgbe.d.ts +1 -1
  217. package/src/shade/renderer/light/environment/rgbe/parse_rgbe.js +2 -2
  218. package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.d.ts +2 -2
  219. package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.d.ts.map +1 -1
  220. package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.js +6 -14
  221. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts.map +1 -1
  222. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js +5 -1
  223. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  224. package/src/shade/renderer/medium/ParticipatingMedium.d.ts +3 -0
  225. package/src/shade/renderer/medium/ParticipatingMedium.d.ts.map +1 -1
  226. package/src/shade/renderer/medium/ParticipatingMedium.js +7 -0
  227. package/src/shade/renderer/object_property/chunk_write_object_property.d.ts +3 -1
  228. package/src/shade/renderer/object_property/chunk_write_object_property.d.ts.map +1 -1
  229. package/src/shade/renderer/object_property/chunk_write_object_property.js +5 -2
  230. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts +4 -0
  231. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts.map +1 -1
  232. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.js +6 -1
  233. package/src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.d.ts.map +1 -1
  234. package/src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.js +5 -35
  235. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  236. package/src/shade/renderer/postprocess/ssr/SSR.d.ts +12 -4
  237. package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
  238. package/src/shade/renderer/postprocess/ssr/SSR.js +36 -8
  239. package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.d.ts +3 -0
  240. package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.d.ts.map +1 -0
  241. package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.js +2 -0
  242. package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.d.ts +8 -0
  243. package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.d.ts.map +1 -0
  244. package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.js +40 -0
  245. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
  246. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +150 -137
  247. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.d.ts +3 -0
  248. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.d.ts.map +1 -0
  249. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.js +44 -0
  250. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.d.ts +5 -0
  251. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.d.ts.map +1 -0
  252. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.js +35 -0
  253. package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.d.ts +26 -0
  254. package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.d.ts.map +1 -0
  255. package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.js +42 -0
  256. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +1 -0
  257. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
  258. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +113 -105
  259. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts +2 -0
  260. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  261. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +177 -167
  262. package/src/shade/renderer/rasterize/DEPTH_STENCIL_STATE_SHADOW.d.ts.map +1 -1
  263. package/src/shade/renderer/rasterize/DEPTH_STENCIL_STATE_SHADOW.js +10 -0
  264. package/src/shade/renderer/rasterize/RasterizationJob.d.ts +1 -2
  265. package/src/shade/renderer/rasterize/RasterizationJob.d.ts.map +1 -1
  266. package/src/shade/renderer/rasterize/RasterizationJob.js +1 -2
  267. package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts +5 -6
  268. package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts.map +1 -1
  269. package/src/shade/renderer/rasterize/bucket/construct_primitive_state.js +5 -6
  270. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +2 -2
  271. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  272. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +1 -1
  273. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
  274. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +11 -0
  275. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts +1 -1
  276. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts.map +1 -1
  277. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js +135 -73
  278. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts +7 -0
  279. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts.map +1 -1
  280. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js +29 -1
  281. package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts +19 -0
  282. package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts.map +1 -0
  283. package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.js +167 -0
  284. package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.d.ts +25 -0
  285. package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.d.ts.map +1 -0
  286. package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.js +124 -0
  287. package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.d.ts +19 -0
  288. package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.d.ts.map +1 -0
  289. package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.js +48 -0
  290. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +17 -1
  291. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
  292. package/src/shade/renderer/scene/rows/GPUSceneRows.js +29 -3
  293. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/build_lut_fog_parameters_jendersie_deon.d.ts.map +1 -1
  294. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/build_lut_fog_parameters_jendersie_deon.js +4 -5
  295. package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.d.ts.map +1 -1
  296. package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.js +1 -5
  297. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.d.ts +30 -0
  298. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.d.ts.map +1 -0
  299. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.js +54 -0
  300. package/src/shade/renderer/shader/type/serde/read_gpu_typed_buffer.d.ts.map +1 -1
  301. package/src/shade/renderer/shader/type/serde/read_gpu_typed_buffer.js +3 -2
  302. package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.d.ts +19 -0
  303. package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.d.ts.map +1 -0
  304. package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.js +27 -0
  305. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +1 -0
  306. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  307. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +4 -0
  308. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +54 -0
  309. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  310. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +502 -10
  311. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +3 -2
  312. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  313. package/src/shade/renderer/shadow/map/Shadowmap.js +3 -2
  314. package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts +8 -0
  315. package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts.map +1 -1
  316. package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.js +34 -3
  317. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +3 -2
  318. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
  319. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +17 -2
  320. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.d.ts.map +1 -1
  321. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.js +137 -133
  322. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.d.ts +15 -0
  323. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.d.ts.map +1 -0
  324. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.js +14 -0
  325. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.d.ts +16 -0
  326. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.d.ts.map +1 -0
  327. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.js +15 -0
  328. package/src/shade/renderer/shadow/vsm/PLAN.md +440 -0
  329. package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +43 -0
  330. package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts +42 -0
  331. package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts.map +1 -0
  332. package/src/shade/renderer/shadow/vsm/VSMMoverTracker.js +153 -0
  333. package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts +327 -0
  334. package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts.map +1 -0
  335. package/src/shade/renderer/shadow/vsm/VSMPageManager.js +1408 -0
  336. package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.d.ts +14 -0
  337. package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.d.ts.map +1 -0
  338. package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.js +13 -0
  339. package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.d.ts +63 -0
  340. package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.d.ts.map +1 -0
  341. package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.js +70 -0
  342. package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.d.ts +11 -0
  343. package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.d.ts.map +1 -0
  344. package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.js +10 -0
  345. package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts +54 -0
  346. package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts.map +1 -0
  347. package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.js +75 -0
  348. package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.d.ts +23 -0
  349. package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.d.ts.map +1 -0
  350. package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.js +85 -0
  351. package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.d.ts +16 -0
  352. package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.d.ts.map +1 -0
  353. package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.js +29 -0
  354. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts +136 -25
  355. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
  356. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +282 -116
  357. package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.d.ts +39 -0
  358. package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.d.ts.map +1 -0
  359. package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.js +289 -0
  360. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.d.ts +18 -0
  361. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.d.ts.map +1 -0
  362. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.js +65 -0
  363. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.d.ts +17 -0
  364. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.d.ts.map +1 -0
  365. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.js +75 -0
  366. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts +14 -0
  367. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts.map +1 -0
  368. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.js +45 -0
  369. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.d.ts +17 -0
  370. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.d.ts.map +1 -0
  371. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.js +100 -0
  372. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.d.ts +15 -0
  373. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.d.ts.map +1 -0
  374. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.js +47 -0
  375. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.d.ts +26 -0
  376. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.d.ts.map +1 -0
  377. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.js +156 -0
  378. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.d.ts +13 -0
  379. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.d.ts.map +1 -0
  380. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.js +65 -0
  381. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts +30 -0
  382. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts.map +1 -0
  383. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.js +184 -0
  384. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts +23 -0
  385. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts.map +1 -0
  386. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.js +109 -0
  387. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.d.ts +56 -0
  388. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.d.ts.map +1 -0
  389. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.js +211 -0
  390. package/src/shade/renderer/texture/format/decode_typed_gpu_data.d.ts +1 -1
  391. package/src/shade/renderer/texture/format/decode_typed_gpu_data.d.ts.map +1 -1
  392. package/src/shade/renderer/texture/format/decode_typed_gpu_data.js +3 -13
  393. package/src/shade/renderer/texture/format/infer_format_from_parameters.d.ts.map +1 -1
  394. package/src/shade/renderer/texture/format/infer_format_from_parameters.js +2 -3
  395. package/src/shade/renderer/texture/texture_write_to_gpu.d.ts.map +1 -1
  396. package/src/shade/renderer/texture/texture_write_to_gpu.js +16 -16
  397. package/src/shade/renderer/texture/virtual/VTPhysicalCache.d.ts +4 -90
  398. package/src/shade/renderer/texture/virtual/VTPhysicalCache.d.ts.map +1 -1
  399. package/src/shade/renderer/texture/virtual/VTPhysicalCache.js +6 -210
  400. package/src/shade/renderer/texture/virtual/VTPhysicalSlots.d.ts +119 -0
  401. package/src/shade/renderer/texture/virtual/VTPhysicalSlots.d.ts.map +1 -0
  402. package/src/shade/renderer/texture/virtual/VTPhysicalSlots.js +245 -0
  403. package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.d.ts +1 -1
  404. package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.d.ts.map +1 -1
  405. package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.js +3 -19
  406. package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.d.ts +13 -0
  407. package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.d.ts.map +1 -0
  408. package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.js +34 -0
  409. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +7 -2
  410. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  411. package/src/shade/renderer/water/GPUWaterRenderer.js +49 -49
  412. package/src/shade/renderer/water/chunk_water_transport.js +3 -3
  413. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +11 -25
  414. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
  415. package/src/shade/renderer/water/medium/GPUWaterBodies.js +64 -116
  416. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts +1 -20
  417. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts.map +1 -1
  418. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.js +10 -42
  419. package/src/shade/renderer/water/medium/chunk_water_bodies.d.ts +3 -0
  420. package/src/shade/renderer/water/medium/chunk_water_bodies.d.ts.map +1 -0
  421. package/src/shade/renderer/water/medium/chunk_water_bodies.js +3 -0
  422. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +1 -5
  423. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +1 -1
  424. package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +32 -30
  425. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +4 -0
  426. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -0
  427. package/src/shade/renderer/water/medium/shader_water_meshlets.js +69 -0
  428. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -1
  429. package/src/shade/renderer/water/optics/chunk_water_inscatter.js +124 -123
  430. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -1
  431. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +75 -74
  432. package/src/shade/renderer/water/shader_water.d.ts +1 -1
  433. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  434. package/src/shade/renderer/water/shader_water.js +490 -406
  435. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +12 -85
  436. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +1 -1
  437. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +128 -408
  438. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +6 -0
  439. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -0
  440. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +23 -0
  441. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +9 -0
  442. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +1 -0
  443. package/src/shade/renderer/water/surface/chunk_water_tessellation.js +144 -0
  444. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +3 -5
  445. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +1 -1
  446. package/src/shade/renderer/water/surface/chunk_water_wave.js +40 -48
  447. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +14 -0
  448. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -0
  449. package/src/shade/renderer/water/surface/graph_water_tessellation.js +34 -0
  450. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +4 -0
  451. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +1 -0
  452. package/src/shade/renderer/water/surface/shader_water_tiles.js +123 -0
  453. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +6 -0
  454. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +1 -0
  455. package/src/shade/renderer/water/surface/shader_water_wave_batch.js +85 -0
  456. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +6 -0
  457. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +1 -0
  458. package/src/shade/renderer/water/surface/shader_water_wave_domain.js +83 -0
  459. package/src/shade/renderer/water/water_height_texture_from_sampler.d.ts.map +1 -1
  460. package/src/shade/renderer/water/water_height_texture_from_sampler.js +4 -3
  461. package/src/engine/ecs/ik/IKConstraint.d.ts +0 -52
  462. package/src/engine/ecs/ik/IKConstraint.d.ts.map +0 -1
  463. package/src/engine/ecs/ik/IKConstraint.js +0 -95
  464. package/src/engine/ecs/ik/IKProblem.d.ts +0 -45
  465. package/src/engine/ecs/ik/IKProblem.d.ts.map +0 -1
  466. package/src/engine/ecs/ik/IKProblem.js +0 -58
  467. package/src/engine/ecs/ik/IKSolver.d.ts +0 -8
  468. package/src/engine/ecs/ik/IKSolver.d.ts.map +0 -1
  469. package/src/engine/ecs/ik/IKSolver.js +0 -9
  470. package/src/engine/ecs/ik/InverseKinematics.d.ts +0 -48
  471. package/src/engine/ecs/ik/InverseKinematics.d.ts.map +0 -1
  472. package/src/engine/ecs/ik/InverseKinematics.js +0 -119
  473. package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.d.ts +0 -19
  474. package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.d.ts.map +0 -1
  475. package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.js +0 -72
  476. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts +0 -54
  477. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +0 -1
  478. package/src/engine/ecs/ik/InverseKinematicsSystem.js +0 -212
  479. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts +0 -8
  480. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +0 -1
  481. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +0 -153
  482. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts +0 -5
  483. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +0 -1
  484. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +0 -120
  485. package/src/engine/ecs/ik/ik_bone_chain.d.ts +0 -64
  486. package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +0 -1
  487. package/src/engine/ecs/ik/ik_bone_chain.js +0 -142
  488. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +0 -42
  489. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +0 -1
  490. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +0 -123
  491. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +0 -18
  492. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +0 -1
  493. package/src/engine/ecs/ik/ik_write_local_rotation.js +0 -32
  494. package/src/engine/graphics/ecs/water/WATER_SIZE.d.ts +0 -2
  495. package/src/engine/graphics/ecs/water/WATER_SIZE.d.ts.map +0 -1
  496. package/src/engine/graphics/ecs/water/WATER_SIZE.js +0 -1
  497. package/src/shade/renderer/light/GPUViewLightContext.d.ts +0 -22
  498. package/src/shade/renderer/light/GPUViewLightContext.d.ts.map +0 -1
  499. package/src/shade/renderer/light/GPUViewLightContext.js +0 -62
  500. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts +0 -14
  501. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts.map +0 -1
  502. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.js +0 -20
  503. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts +0 -27
  504. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +0 -1
  505. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +0 -147
  506. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts +0 -7
  507. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts.map +0 -1
  508. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.js +0 -10
  509. package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.d.ts +0 -2
  510. package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.d.ts.map +0 -1
  511. package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.js +0 -1
  512. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts +0 -3
  513. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts.map +0 -1
  514. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.js +0 -8
  515. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts +0 -27
  516. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts.map +0 -1
  517. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.js +0 -102
  518. package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.d.ts +0 -8
  519. package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.d.ts.map +0 -1
  520. package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.js +0 -34
  521. package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.d.ts +0 -10
  522. package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.d.ts.map +0 -1
  523. package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.js +0 -64
  524. package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts +0 -11
  525. package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts.map +0 -1
  526. package/src/shade/renderer/shadow/vsm/decode_tile_address.js +0 -26
  527. package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.d.ts +0 -2
  528. package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.d.ts.map +0 -1
  529. package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.js +0 -11
  530. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts +0 -20
  531. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts.map +0 -1
  532. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.js +0 -184
  533. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts +0 -25
  534. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts.map +0 -1
  535. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.js +0 -230
  536. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts +0 -19
  537. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts.map +0 -1
  538. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.js +0 -127
  539. package/src/shade/renderer/texture/encode/ENCODE_NOTES_2026_09_02.md +0 -462
  540. package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts +0 -23
  541. package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts.map +0 -1
  542. package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts +0 -18
  543. package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts.map +0 -1
  544. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts +0 -12
  545. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts.map +0 -1
  546. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.js +0 -27
  547. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts +0 -14
  548. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts.map +0 -1
  549. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.js +0 -49
  550. package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts +0 -9
  551. package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts.map +0 -1
  552. package/src/shade/renderer/water/surface/chunk_water_wave_grid.js +0 -47
  553. package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts +0 -10
  554. package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts.map +0 -1
  555. package/src/shade/renderer/water/surface/shader_water_surface_write.js +0 -51
  556. package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts +0 -12
  557. package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts.map +0 -1
  558. package/src/shade/renderer/water/surface/shader_water_wave_step.js +0 -54
  559. package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts +0 -13
  560. package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts.map +0 -1
  561. package/src/shade/renderer/water/surface/water_surface_grid_indices.js +0 -39
@@ -1,12 +1,14 @@
1
- import { vec4f } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
1
+ import { u32, vec2i, vec4f } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
2
  import { GPUDatabaseDefinition } from "../buffer/table/GPUDatabaseDefinition.js";
3
3
  import { SCENE_DATABASE_SPEC } from "../scene/SCENE_DATABASE_SPEC.js";
4
4
  import { DIRECTIONAL_LIGHT_STRUCT } from "../shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js";
5
5
  import { POINT_LIGHT_STRUCT } from "../shader/chunk/light/POINT_LIGHT_STRUCT.js";
6
6
  import { SPOT_LIGHT_STRUCT } from "../shader/chunk/light/SPOT_LIGHT_STRUCT.js";
7
7
  import { CSM_CASCADE_STRUCT } from "../shadow/map/csm/CSM_CASCADE_STRUCT.js";
8
- import { CSM_SHADOWMAP_STRUCT } from "../shadow/map/csm/CSM_SHADOWMAP_STRUCT.js";
8
+ import { DIRECTIONAL_SHADOWMAP_STRUCT } from "../shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.js";
9
9
  import { SHADOWMAP_VIEW_METADATA_STRUCT } from "../shadow/map/shader/SHADOWMAP_VIEW_METADATA_STRUCT.js";
10
+ import { VSM_RECORD_STRUCT } from "../shadow/vsm/VSM_RECORD_STRUCT.js";
11
+ import { VSM_SLOT_STRUCT } from "../shadow/vsm/VSM_SLOT_STRUCT.js";
10
12
 
11
13
  export const LIGHT_DATABASE_SPEC = GPUDatabaseDefinition.from({
12
14
  light_point: POINT_LIGHT_STRUCT,
@@ -16,15 +18,71 @@ export const LIGHT_DATABASE_SPEC = GPUDatabaseDefinition.from({
16
18
  // shadow metadata, indexed by `light.shadow_id` from the matching light record.
17
19
  // Point lights store only the atlas rect — sampling is direction-based and uses no
18
20
  // projection. Spot lights store atlas + projection for their one view. Directional lights
19
- // store where their cascades are, as a range over `shadow_cascade`.
21
+ // store where their cascades are, as a range over `shadow_cascade`, or which virtual shadow map
22
+ // they have, as a link into `shadow_virtual`.
20
23
  shadow_point: vec4f,
21
24
  shadow_spot: SHADOWMAP_VIEW_METADATA_STRUCT,
22
- shadow_directional: CSM_SHADOWMAP_STRUCT,
25
+ shadow_directional: DIRECTIONAL_SHADOWMAP_STRUCT,
23
26
 
24
27
  // one row per cascade of a directional shadow map, a map's cascades a run of consecutive rows
25
28
  // claimed and released by the shadow context: atlas + projection from the CPU, and what the GPU
26
29
  // measured of the casters in front of the cascade, read back to fit the next frame's near plane
27
30
  shadow_cascade: CSM_CASCADE_STRUCT,
31
+
32
+ // one row per virtual shadow map: its light space, clipmap windows, pool, and the main view it
33
+ // selects levels for
34
+ shadow_virtual: VSM_RECORD_STRUCT,
35
+
36
+ // a virtual shadow map's clipmap windows, a run per map, one row per level: the corner of the
37
+ // level's window in its own pages — written by the CPU when the window scrolls
38
+ shadow_virtual_level: vec2i,
39
+
40
+ // a virtual shadow map's page table, a run per map, one page-table entry per cell of every
41
+ // level's window — written by the CPU as pages are installed, evicted and scrolled away
42
+ shadow_virtual_page: u32,
43
+
44
+ // what each slot of a virtual shadow map's pool holds, a run per map — written by the CPU with
45
+ // the page table, read by the pass that finds pages under moving casters
46
+ shadow_virtual_slot: VSM_SLOT_STRUCT,
47
+ });
48
+
49
+ // A directional light's virtual shadow map. Not owning, for the reason the cascade range is not.
50
+ LIGHT_DATABASE_SPEC.add_link({
51
+ table: 'shadow_directional',
52
+ field: 'virtual_map',
53
+ target_database: LIGHT_DATABASE_SPEC,
54
+ target_table: 'shadow_virtual',
55
+ nullable: true,
56
+ owning: false,
57
+ });
58
+
59
+ // A virtual shadow map's level, page table and slot rows. The shadow context claims the runs with the
60
+ // map and gives them back when it evicts it.
61
+ LIGHT_DATABASE_SPEC.add_range({
62
+ table: 'shadow_virtual',
63
+ first_field: 'first_level',
64
+ count_field: 'level_count',
65
+ target_database: LIGHT_DATABASE_SPEC,
66
+ target_table: 'shadow_virtual_level',
67
+ owning: false,
68
+ });
69
+
70
+ LIGHT_DATABASE_SPEC.add_range({
71
+ table: 'shadow_virtual',
72
+ first_field: 'first_page',
73
+ count_field: 'page_count',
74
+ target_database: LIGHT_DATABASE_SPEC,
75
+ target_table: 'shadow_virtual_page',
76
+ owning: false,
77
+ });
78
+
79
+ LIGHT_DATABASE_SPEC.add_range({
80
+ table: 'shadow_virtual',
81
+ first_field: 'first_slot',
82
+ count_field: 'slot_count',
83
+ target_database: LIGHT_DATABASE_SPEC,
84
+ target_table: 'shadow_virtual_slot',
85
+ owning: false,
28
86
  });
29
87
 
30
88
  // A directional shadow map's cascades. Not owning: the shadow context holds the run for the life of
@@ -8,7 +8,7 @@
8
8
  export function parse_rgbe(buffer: ArrayBuffer, type?: BinaryDataType.Float16 | BinaryDataType.Float32): {
9
9
  width: number;
10
10
  height: number;
11
- data: Float32Array | Uint16Array;
11
+ data: any;
12
12
  header: string;
13
13
  gamma: number;
14
14
  exposure: number;
@@ -48,7 +48,7 @@ export function parse_rgbe(
48
48
  case BinaryDataType.Float16:
49
49
 
50
50
  numElements = image_rgba_data.length / 4;
51
- const halfArray = new Uint16Array(numElements * 4);
51
+ const halfArray = new Float16Array(numElements * 4);
52
52
 
53
53
  for (let j = 0; j < numElements; j++) {
54
54
 
@@ -76,4 +76,4 @@ export function parse_rgbe(
76
76
  type: type
77
77
  };
78
78
 
79
- }
79
+ }
@@ -2,8 +2,8 @@
2
2
  *
3
3
  * @param {Uint8Array} sourceArray
4
4
  * @param {number} sourceOffset
5
- * @param {Uint16Array} destArray
5
+ * @param {Float16Array} destArray
6
6
  * @param {number} destOffset
7
7
  */
8
- export function rgbe_byte_to_rgb_half(sourceArray: Uint8Array, sourceOffset: number, destArray: Uint16Array, destOffset: number): void;
8
+ export function rgbe_byte_to_rgb_half(sourceArray: Uint8Array, sourceOffset: number, destArray: Float16Array, destOffset: number): void;
9
9
  //# sourceMappingURL=rgbe_byte_to_rgb_half.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rgbe_byte_to_rgb_half.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.js"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,mDALW,UAAU,gBACV,MAAM,aACN,WAAW,cACX,MAAM,QAchB"}
1
+ {"version":3,"file":"rgbe_byte_to_rgb_half.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,mDALW,UAAU,gBACV,MAAM,uCAEN,MAAM,QAchB"}
@@ -1,16 +1,8 @@
1
- import { to_half_float_uint16 } from "../../../../../core/binary/to_half_float_uint16.js";
2
-
3
- /**
4
- * Precomputed for simplicity
5
- * @type {number}
6
- */
7
- const F16_1 = to_half_float_uint16(1);
8
-
9
1
  /**
10
2
  *
11
3
  * @param {Uint8Array} sourceArray
12
4
  * @param {number} sourceOffset
13
- * @param {Uint16Array} destArray
5
+ * @param {Float16Array} destArray
14
6
  * @param {number} destOffset
15
7
  */
16
8
  export function rgbe_byte_to_rgb_half(sourceArray, sourceOffset, destArray, destOffset) {
@@ -19,10 +11,10 @@ export function rgbe_byte_to_rgb_half(sourceArray, sourceOffset, destArray, dest
19
11
  const scale = Math.pow(2.0, e - 128.0) / 255.0;
20
12
 
21
13
  // clamping to 65504, the maximum representable value in float16
22
- destArray[destOffset + 0] = to_half_float_uint16(Math.min(sourceArray[sourceOffset + 0] * scale, 65504));
23
- destArray[destOffset + 1] = to_half_float_uint16(Math.min(sourceArray[sourceOffset + 1] * scale, 65504));
24
- destArray[destOffset + 2] = to_half_float_uint16(Math.min(sourceArray[sourceOffset + 2] * scale, 65504));
14
+ destArray[destOffset + 0] = Math.min(sourceArray[sourceOffset + 0] * scale, 65504);
15
+ destArray[destOffset + 1] = Math.min(sourceArray[sourceOffset + 1] * scale, 65504);
16
+ destArray[destOffset + 2] = Math.min(sourceArray[sourceOffset + 2] * scale, 65504);
25
17
 
26
- destArray[destOffset + 3] = F16_1;
18
+ destArray[destOffset + 3] = 1;
27
19
 
28
- }
20
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_sh_exp_workgroup_sum.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,oCAFU,MAAM,CAEyB;AAEzC;;;;;;;;;GASG;AACH,yCAFU,SAAS,CA8BhB;0BAjDuB,uCAAuC"}
1
+ {"version":3,"file":"chunk_sh_exp_workgroup_sum.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,oCAFU,MAAM,CAEyB;AAMzC;;;;;;;;;GASG;AACH,yCAFU,SAAS,CA8BhB;0BArDuB,uCAAuC"}
@@ -10,6 +10,10 @@ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
10
10
  */
11
11
  export const SH_EXP_WORKGROUP_SIZE = 256;
12
12
 
13
+
14
+ const MIN_SUBGROUP_SIZE = 4;
15
+ const MAX_PARTIALS_SIZE = Math.ceil(SH_EXP_WORKGROUP_SIZE / MIN_SUBGROUP_SIZE);
16
+
13
17
  /**
14
18
  * Sum of a `vec4` over the workgroup, subgroup first: `subgroupAdd`, then one elected lane per
15
19
  * subgroup claims a slot — invocation indices need not map to subgroups in contiguous blocks — and
@@ -24,7 +28,7 @@ export const chunk_sh_exp_workgroup_sum = CodeChunk.from(
24
28
  //language=WGSL
25
29
  `
26
30
  var<workgroup> sh_exp_partial_count: atomic<u32>;
27
- var<workgroup> sh_exp_partials: array<vec4<f32>, ${SH_EXP_WORKGROUP_SIZE}>;
31
+ var<workgroup> sh_exp_partials: array<vec4<f32>, ${MAX_PARTIALS_SIZE}>;
28
32
 
29
33
  fn sh_exp_workgroup_sum(value: vec4<f32>, local_index: u32) -> vec4<f32> {
30
34
  let subgroup_sum = subgroupAdd(value);
@@ -13,7 +13,7 @@ export class TinyGltf {
13
13
  * @readonly
14
14
  * @type {TextureFormat}
15
15
  */
16
- static readonly "__#258@#UNCOMPRESSED_TARGET": TextureFormat;
16
+ static readonly "__#261@#UNCOMPRESSED_TARGET": TextureFormat;
17
17
  /**
18
18
  * @param {AssetManager} assetManager
19
19
  * @param {AssetRequestScope} [scope]
@@ -48,6 +48,8 @@ export class ParticipatingMedium {
48
48
  * @type {number}
49
49
  */
50
50
  priority: number;
51
+ /** Authored coefficients changed; resident consumers can queue a write without polling. */
52
+ onChanged: Signal;
51
53
  /**
52
54
  * Bumped whenever something that reaches the GPU changes, so the resident media table knows to
53
55
  * repack this medium — the contract {@link ShadeMaterial#version} has. {@link add_lobe} and
@@ -105,4 +107,5 @@ export class ParticipatingMedium {
105
107
  export type MediumPhaseFunction = import("./phase/MediumPhaseFunction.js").MediumPhaseFunction;
106
108
  export type MediumPhaseLobeRecord = import("./phase/MediumPhaseFunction.js").MediumPhaseLobeRecord;
107
109
  export type ShadeMaterial = import("../material/ShadeMaterial.js").ShadeMaterial;
110
+ import Signal from "../../../core/events/signal/Signal.js";
108
111
  //# sourceMappingURL=ParticipatingMedium.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParticipatingMedium.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/medium/ParticipatingMedium.js"],"names":[],"mappings":"AAuBA;;GAEG;AACH;IACI;;;OAGG;IACH,wBAHW,MAAM,EAAE,SACR,mBAAmB,EAa7B;IAVG;;;OAGG;IACH,YAFU,MAAM,EAAE,CAEU;IAE5B;;OAEG;IACH,OAFU,mBAAmB,CAEX;CAEzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH;IACI;;;OAGG;IACH,YAFU,MAAM,EAAE,CAEK;IAEvB;;;;;OAKG;IACH,UAFU,MAAM,CAEH;IAYb;;;;;;;OAOG;IACH,sBAEC;IAED;;;;OAIG;IACH,gCAIC;IAED;;;OAGG;IACH,gDAEC;IAED;;;OAGG;IACH,6BAQC;IAED;;;;;OAKG;IACH,qBAHW,MAAM,EAAE,SACR,mBAAmB,QAe7B;IAED;;OAEG;IACH,oBAIC;IAED;;;;OAIG;IACH,iBAFa;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,qBAAqB,EAAE,CAAA;KAAC,CA8BxG;IAGL;;;OAGG;IACH,gCAFU,OAAO,CAEkC;;CANlD;kCAjMY,OAAO,gCAAgC,EAAE,mBAAmB;oCAC5D,OAAO,gCAAgC,EAAE,qBAAqB;4BAC9D,OAAO,8BAA8B,EAAE,aAAa"}
1
+ {"version":3,"file":"ParticipatingMedium.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/medium/ParticipatingMedium.js"],"names":[],"mappings":"AAwBA;;GAEG;AACH;IACI;;;OAGG;IACH,wBAHW,MAAM,EAAE,SACR,mBAAmB,EAa7B;IAVG;;;OAGG;IACH,YAFU,MAAM,EAAE,CAEU;IAE5B;;OAEG;IACH,OAFU,mBAAmB,CAEX;CAEzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH;IACI;;;OAGG;IACH,YAFU,MAAM,EAAE,CAEK;IAEvB;;;;;OAKG;IACH,UAFU,MAAM,CAEH;IAYb,2FAA2F;IAC3F,kBAAyB;IAEzB;;;;;;;OAOG;IACH,sBAEC;IAED;;;;OAIG;IACH,gCAKC;IAED;;;OAGG;IACH,gDAEC;IAED;;;OAGG;IACH,6BAQC;IAED;;;;;OAKG;IACH,qBAHW,MAAM,EAAE,SACR,mBAAmB,QAgB7B;IAED;;OAEG;IACH,oBAKC;IAED;;;;OAIG;IACH,iBAFa;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,qBAAqB,EAAE,CAAA;KAAC,CA8BxG;IAGL;;;OAGG;IACH,gCAFU,OAAO,CAEkC;;CANlD;kCAvMY,OAAO,gCAAgC,EAAE,mBAAmB;oCAC5D,OAAO,gCAAgC,EAAE,qBAAqB;4BAC9D,OAAO,8BAA8B,EAAE,aAAa;mBAN9C,uCAAuC"}
@@ -1,4 +1,5 @@
1
1
  import { assert } from "../../../core/assert.js";
2
+ import Signal from "../../../core/events/signal/Signal.js";
2
3
  import { MEDIUM_PHASE_LOBE_LIMIT } from "./MEDIUM_STRUCT.js";
3
4
 
4
5
  /**
@@ -86,6 +87,9 @@ export class ParticipatingMedium {
86
87
  */
87
88
  #version = 0;
88
89
 
90
+ /** Authored coefficients changed; resident consumers can queue a write without polling. */
91
+ onChanged = new Signal();
92
+
89
93
  /**
90
94
  * Bumped whenever something that reaches the GPU changes, so the resident media table knows to
91
95
  * repack this medium — the contract {@link ShadeMaterial#version} has. {@link add_lobe} and
@@ -106,6 +110,7 @@ export class ParticipatingMedium {
106
110
  set needsUpdate(value) {
107
111
  if (value) {
108
112
  this.#version++;
113
+ this.onChanged.dispatch();
109
114
  }
110
115
  }
111
116
 
@@ -150,6 +155,7 @@ export class ParticipatingMedium {
150
155
  this.#lobes.push(new ParticipatingMediumLobe(scattering.slice(), phase));
151
156
 
152
157
  this.#version++;
158
+ this.onChanged.dispatch();
153
159
  }
154
160
 
155
161
  /**
@@ -159,6 +165,7 @@ export class ParticipatingMedium {
159
165
  this.#lobes.length = 0;
160
166
 
161
167
  this.#version++;
168
+ this.onChanged.dispatch();
162
169
  }
163
170
 
164
171
  /**
@@ -12,7 +12,9 @@
12
12
  * `weight` is the weight `value` has already been multiplied by. Only the
13
13
  * Node3D writer wants it, and only for rotation: a rotation channel missing
14
14
  * its `w` curve defaults to the identity's 1, which has to be weighted the
15
- * same way the authored channels were.
15
+ * same way the authored channels were. `rest_rotation` is the target's
16
+ * rest rotation from its binding, and the same goes for it: only a Node3D
17
+ * rotation reads it.
16
18
  *
17
19
  * Each writer lives in its own CodeChunk and operates on whatever storage
18
20
  * buffers the importing shader has bound under the documented names —
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_write_object_property.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/chunk_write_object_property.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,0CAFU,SAAS,CA2Bb;0BA1DoB,iCAAiC"}
1
+ {"version":3,"file":"chunk_write_object_property.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/chunk_write_object_property.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,0CAFU,SAAS,CA4Bb;0BA7DoB,iCAAiC"}
@@ -21,7 +21,9 @@ import { ObjectType } from "./ObjectType.js";
21
21
  * `weight` is the weight `value` has already been multiplied by. Only the
22
22
  * Node3D writer wants it, and only for rotation: a rotation channel missing
23
23
  * its `w` curve defaults to the identity's 1, which has to be weighted the
24
- * same way the authored channels were.
24
+ * same way the authored channels were. `rest_rotation` is the target's
25
+ * rest rotation from its binding, and the same goes for it: only a Node3D
26
+ * rotation reads it.
25
27
  *
26
28
  * Each writer lives in its own CodeChunk and operates on whatever storage
27
29
  * buffers the importing shader has bound under the documented names —
@@ -40,12 +42,13 @@ fn write_object_property(
40
42
  mask: u32,
41
43
  value: vec4f,
42
44
  weight: f32,
45
+ rest_rotation: vec4f,
43
46
  ) {
44
47
  let object_type = instance >> 24u;
45
48
 
46
49
  switch(object_type){
47
50
  case ${ObjectType.Node3D}u: {
48
- write_object_property_node3d(instance, property, mask, value, weight);
51
+ write_object_property_node3d(instance, property, mask, value, weight, rest_rotation);
49
52
  }
50
53
  case ${ObjectType.Material}u: {
51
54
  write_object_property_material(instance, property, mask, value);
@@ -35,6 +35,10 @@
35
35
  * channel has to carry the same weight as the channels that were
36
36
  * authored; nothing else here does.
37
37
  *
38
+ * `rest_rotation` is the target's rest rotation, from its binding. Only
39
+ * Rotation reads it: it rides into the slot with the contribution, for
40
+ * the resolve to write when the rotations summed to nothing.
41
+ *
38
42
  * @type {CodeChunk}
39
43
  */
40
44
  export const chunk_write_object_property_node3d: CodeChunk;
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_write_object_property_node3d.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/chunk_write_object_property_node3d.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,iDAFU,SAAS,CA6Bb;0BArEoB,iCAAiC"}
1
+ {"version":3,"file":"chunk_write_object_property_node3d.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/chunk_write_object_property_node3d.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,iDAFU,SAAS,CA8Bb;0BA1EoB,iCAAiC"}
@@ -39,6 +39,10 @@ import { Node3DProperty } from "./Node3DProperty.js";
39
39
  * channel has to carry the same weight as the channels that were
40
40
  * authored; nothing else here does.
41
41
  *
42
+ * `rest_rotation` is the target's rest rotation, from its binding. Only
43
+ * Rotation reads it: it rides into the slot with the contribution, for
44
+ * the resolve to write when the rotations summed to nothing.
45
+ *
42
46
  * @type {CodeChunk}
43
47
  */
44
48
  export const chunk_write_object_property_node3d = CodeChunk.from(
@@ -50,6 +54,7 @@ fn write_object_property_node3d(
50
54
  mask: u32,
51
55
  value: vec4f,
52
56
  weight: f32,
57
+ rest_rotation: vec4f,
53
58
  ) {
54
59
  let node_index = instance & 0x00FFFFFFu;
55
60
 
@@ -58,7 +63,7 @@ fn write_object_property_node3d(
58
63
  pose_accumulator_add_translation(node_index, value.xyz, mask);
59
64
  }
60
65
  case ${Node3DProperty.Rotation}u: {
61
- pose_accumulator_add_rotation(node_index, value, mask, weight);
66
+ pose_accumulator_add_rotation(node_index, value, mask, weight, rest_rotation);
62
67
  }
63
68
  case ${Node3DProperty.Scale}u: {
64
69
  pose_accumulator_add_scale(node_index, value.xyz, mask);
@@ -1 +1 @@
1
- {"version":3,"file":"shader_autoexposure_build_histogram.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.js"],"names":[],"mappings":"AA4HA,gEAIE;8BA5H4B,+BAA+B"}
1
+ {"version":3,"file":"shader_autoexposure_build_histogram.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.js"],"names":[],"mappings":"AA8FA,gEAIE;8BA7F4B,+BAA+B"}
@@ -1,5 +1,6 @@
1
1
  import { chunk_inverse_lerp } from "../../shader/chunk/math/chunk_inverse_lerp.js";
2
2
  import { chunk_rgb_to_luminance } from "../../shader/chunk/color/chunk_rgb_to_luminance.js";
3
+ import { chunk_screen_importance } from "../../shader/chunk/screen_space/chunk_screen_importance.js";
3
4
  import { chunk_texel_coordinate_to_uv } from "../../shader/chunk/texture/chunk_texel_coordinate_to_uv.js";
4
5
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
5
6
  import { ComputeShader } from "../../shader/ComputeShader.js";
@@ -18,36 +19,6 @@ const LUMINANCE_MIN = Math.pow(2, AUTOEXPOSURE_HISTOGRAM_LOG_MIN);
18
19
  const LUMINANCE_MAX = Math.pow(2, AUTOEXPOSURE_HISTOGRAM_LOG_MAX);
19
20
 
20
21
 
21
- /**
22
- * Exposure metering mask (see https://www.unrealengine.com/en-US/tech-blog/how-epic-games-is-handling-auto-exposure-in-4-25)
23
- * Prioritize pixels away from the edge of the screen
24
- * @type {CodeChunk}
25
- */
26
- const chunk_compute_vignette = CodeChunk.from(
27
- //language=WGSL
28
- `
29
- fn compute_vignette(
30
- uv: vec2<f32>,
31
- vertical_aspect: f32,
32
- border_fraction: f32
33
- ) -> f32{
34
-
35
- let fov = border_fraction * vec2(vertical_aspect, 1.0);
36
-
37
- let border = smoothstep(vec2(0.0, 0.0), fov, uv) * (1.0 - smoothstep(vec2(1.0, 1.0) - fov, vec2(1.0, 1.0), uv));
38
- let vignette = border.x * border.y;
39
-
40
- return vignette;
41
- }
42
- `
43
- )
44
-
45
- /**
46
- * How many distinct steps to use for quantization?
47
- * @type {number}
48
- */
49
- const MASKING_QUANTIZATION_STEPS = 64;
50
-
51
22
  /**
52
23
  * NOTE: we do not explicitly initialize groupshared memory, as spec guarantees it to be initialized to default value of 0 already.
53
24
  * @type {CodeChunk}
@@ -93,10 +64,9 @@ fn main(
93
64
  let bin_index = u32( t * ${ (SCENE_LUMINANCE_HISTOGRAM_BIN_COUNT - 1) });
94
65
 
95
66
  let uv = texel_coordinate_to_uv(vec2<f32>(global_id.xy), size);
96
-
97
- let vignette = compute_vignette(uv, f32(size.y) / f32(size.x), 0.13);
98
-
99
- let quantized = max(1u, u32(vignette * ${MASKING_QUANTIZATION_STEPS}));
67
+
68
+ // the metering mask: pixels away from the edge of the screen count for more
69
+ let quantized = screen_importance_weight(uv, f32(size.y) / f32(size.x));
100
70
 
101
71
  atomicAdd(&group_histogram.bins[bin_index], quantized);
102
72
 
@@ -118,7 +88,7 @@ fn main(
118
88
  chunk_rgb_to_luminance,
119
89
  chunk_inverse_lerp,
120
90
  chunk_texel_coordinate_to_uv,
121
- chunk_compute_vignette,
91
+ chunk_screen_importance,
122
92
  ]
123
93
  )
124
94
 
@@ -53,7 +53,7 @@ export class NSS {
53
53
  * @returns {number}
54
54
  */
55
55
  static recommended_jitter_sequence_size(upscale_ratio: number): number;
56
- static "__#187@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
56
+ static "__#192@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
57
57
  /**
58
58
  * @param {GraphicsContext} graphics
59
59
  */
@@ -5,9 +5,13 @@ export class SSR {
5
5
  */
6
6
  constructor(graphics: import("../../GraphicsContext.js").GraphicsContext);
7
7
  frame_index: number;
8
- set spatial_denoising_enabled(value: boolean);
9
- /** Toggle the three spatial passes independently of temporal reprojection. @returns {boolean} */
10
- get spatial_denoising_enabled(): boolean;
8
+ set tile_denoising_enabled(value: boolean);
9
+ /**
10
+ * Opt-in constant-neighborhood coverage tiles. Classification adds overhead;
11
+ * measure the scene/device before enabling it, particularly at low resolutions.
12
+ * @returns {boolean}
13
+ */
14
+ get tile_denoising_enabled(): boolean;
11
15
  set reset_history(value: boolean);
12
16
  /**
13
17
  * When set, will disregard history buffer
@@ -15,6 +19,9 @@ export class SSR {
15
19
  * @type {boolean}
16
20
  */
17
21
  get reset_history(): boolean;
22
+ set spatial_denoising_enabled(value: boolean);
23
+ /** Toggle the three spatial passes independently of temporal reprojection. @returns {boolean} */
24
+ get spatial_denoising_enabled(): boolean;
18
25
  set reprojection_mode(value: number);
19
26
  /** @returns {SSRReprojectionMode} */
20
27
  get reprojection_mode(): number;
@@ -47,7 +54,7 @@ export class SSR {
47
54
  * @param {import("../../view/GPUViewContext.js").GPUViewContext} [options.view_ctx]
48
55
  * @param {ArrayLike<number>} [options.jitter] Raster jitter in internal pixels
49
56
  * @param {number} [options.mip] Higher mip = lower resolution trace
50
- * @returns {{final:number, trace:number, reflections:number, denoised:number, denoised_1:number}}
57
+ * @returns {{final:number, trace:number, reflections:number, denoised:number, denoised_1:number, denoise_tiles:number}}
51
58
  */
52
59
  graph_pass({ graph, input_depth, input_depth_previous, view_ctx, jitter, input_hzb, input_scene_color, input_pbr, input_normal, input_velocity, input_occlusion, input_albedo, resolution, camera_current, camera_previous, input_environment, indirect_lighting_mode, lpv, brick4, mip, }: {
53
60
  graph: import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
@@ -76,6 +83,7 @@ export class SSR {
76
83
  reflections: number;
77
84
  denoised: number;
78
85
  denoised_1: number;
86
+ denoise_tiles: number;
79
87
  };
80
88
  #private;
81
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SSR.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/SSR.js"],"names":[],"mappings":"AAiBA;IAyDI;;;OAGG;IACH,sBAFW,OAAO,0BAA0B,EAAE,eAAe,EAkB5D;IA3DD,oBAAgB;IAMhB,8CAOC;IATD,iGAAiG;IACjG,yCAA2E;IA0B3E,kCAMC;IAZD;;;;OAIG;IACH,6BAAmD;IAbnD,qCAMC;IARD,qCAAqC;IACrC,gCAA2D;IA6C3D;;;;OAIG;IACH,UAHW,MAAM,KACN,MAAM,QAUhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH;QAtBsG,KAAK,EAAhG,OAAO,8DAA8D,EAAE,UAAU;QACjE,WAAW,EAA3B,MAAM;QACW,oBAAoB,GAArC,MAAM;QACU,SAAS,EAAzB,MAAM;QACU,iBAAiB,EAAjC,MAAM;QACU,YAAY,EAA5B,MAAM;QACU,SAAS,EAAzB,MAAM;QACU,YAAY,EAA5B,MAAM;QACU,cAAc,EAA9B,MAAM;QACU,eAAe,EAA/B,MAAM;QACW,iBAAiB,GAAlC,MAAM;QACqB,UAAU,EAArC,UAAU,MAAM,CAAC;QACD,cAAc,EAA9B,MAAM;QACU,eAAe,EAA/B,MAAM;QAC8B,sBAAsB,GAA1D,yBAAyB;QAC6D,MAAM,GAA5F,OAAO,oDAAoD,EAAE,cAAc;QACkB,GAAG,GAAhG,OAAO,sDAAsD,EAAE,mBAAmB;QAClB,QAAQ,GAAxE,OAAO,8BAA8B,EAAE,cAAc;QACzB,MAAM,GAAlC,UAAU,MAAM,CAAC;QACA,GAAG,GAApB,MAAM;QACJ;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,WAAW,EAAC,MAAM,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAC,UAAU,EAAC,MAAM,CAAA;KAAC,CAoQhG;;CACJ;0CA3YyC,oCAAoC"}
1
+ {"version":3,"file":"SSR.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/SSR.js"],"names":[],"mappings":"AAmBA;IAwEI;;;OAGG;IACH,sBAFW,OAAO,0BAA0B,EAAE,eAAe,EAkB5D;IA1ED,oBAAgB;IAWhB,2CAMC;IAZD;;;;OAIG;IACH,sCAAqE;IAoCrE,kCAMC;IAZD;;;;OAIG;IACH,6BAAmD;IAxBnD,8CAOC;IATD,iGAAiG;IACjG,yCAA2E;IAY3E,qCAMC;IARD,qCAAqC;IACrC,gCAA2D;IA6C3D;;;;OAIG;IACH,UAHW,MAAM,KACN,MAAM,QAUhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH;QAtBsG,KAAK,EAAhG,OAAO,8DAA8D,EAAE,UAAU;QACjE,WAAW,EAA3B,MAAM;QACW,oBAAoB,GAArC,MAAM;QACU,SAAS,EAAzB,MAAM;QACU,iBAAiB,EAAjC,MAAM;QACU,YAAY,EAA5B,MAAM;QACU,SAAS,EAAzB,MAAM;QACU,YAAY,EAA5B,MAAM;QACU,cAAc,EAA9B,MAAM;QACU,eAAe,EAA/B,MAAM;QACW,iBAAiB,GAAlC,MAAM;QACqB,UAAU,EAArC,UAAU,MAAM,CAAC;QACD,cAAc,EAA9B,MAAM;QACU,eAAe,EAA/B,MAAM;QAC8B,sBAAsB,GAA1D,yBAAyB;QAC6D,MAAM,GAA5F,OAAO,oDAAoD,EAAE,cAAc;QACkB,GAAG,GAAhG,OAAO,sDAAsD,EAAE,mBAAmB;QAClB,QAAQ,GAAxE,OAAO,8BAA8B,EAAE,cAAc;QACzB,MAAM,GAAlC,UAAU,MAAM,CAAC;QACA,GAAG,GAApB,MAAM;QACJ;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,WAAW,EAAC,MAAM,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,aAAa,EAAC,MAAM,CAAA;KAAC,CA+QtH;;CACJ;0CAvayC,oCAAoC"}
@@ -11,9 +11,11 @@ import { ssr_resolve_shader_LPV } from "./resolve/ssr_resolve_shader_LPV.js";
11
11
  import { ssr_combine_shader } from "./ssr_combine_shader.js";
12
12
  import { ssr_graph_prefilter_color } from "./ssr_graph_prefilter_color.js";
13
13
  import { SSR_PREFILTER_MIP_COUNT } from "./SSR_PREFILTER_MIP_COUNT.js";
14
- import { ssr_reproject_shader } from "./ssr_reproject_shader.js";
15
- import { ssr_spatial_denoise_shader, ssr_spatial_denoise_metadata_shader } from "./ssr_spatial_denoise_shader.js";
14
+ import { ssr_reproject_shader, ssr_reproject_tile_shader } from "./ssr_reproject_shader.js";
15
+ import { ssr_spatial_denoise_shader, ssr_spatial_denoise_metadata_shader,
16
+ ssr_spatial_denoise_tile_shader, ssr_spatial_denoise_metadata_tile_shader } from "./ssr_spatial_denoise_shader.js";
16
17
  import { ssr_trace_shader } from "./ssr_trace_shader.js";
18
+ import { ssr_graph_denoise_tiles } from "./ssr_graph_denoise_tiles.js";
17
19
 
18
20
  export class SSR {
19
21
 
@@ -36,6 +38,21 @@ export class SSR {
36
38
  frame_index = 0;
37
39
  #reprojection_mode = SSRReprojectionMode.Parallax;
38
40
  #spatial_denoising_enabled = true;
41
+ #tile_denoising_enabled = false;
42
+
43
+ /**
44
+ * Opt-in constant-neighborhood coverage tiles. Classification adds overhead;
45
+ * measure the scene/device before enabling it, particularly at low resolutions.
46
+ * @returns {boolean}
47
+ */
48
+ get tile_denoising_enabled() { return this.#tile_denoising_enabled; }
49
+ set tile_denoising_enabled(value) {
50
+ assert.isBoolean(value, 'tile_denoising_enabled');
51
+ if (value !== this.#tile_denoising_enabled) {
52
+ this.#tile_denoising_enabled = value;
53
+ this.reset_history = true;
54
+ }
55
+ }
39
56
 
40
57
  /** Toggle the three spatial passes independently of temporal reprojection. @returns {boolean} */
41
58
  get spatial_denoising_enabled() { return this.#spatial_denoising_enabled; }
@@ -132,7 +149,7 @@ export class SSR {
132
149
  * @param {import("../../view/GPUViewContext.js").GPUViewContext} [options.view_ctx]
133
150
  * @param {ArrayLike<number>} [options.jitter] Raster jitter in internal pixels
134
151
  * @param {number} [options.mip] Higher mip = lower resolution trace
135
- * @returns {{final:number, trace:number, reflections:number, denoised:number, denoised_1:number}}
152
+ * @returns {{final:number, trace:number, reflections:number, denoised:number, denoised_1:number, denoise_tiles:number}}
136
153
  */
137
154
  graph_pass({
138
155
  graph,
@@ -282,7 +299,13 @@ export class SSR {
282
299
  },
283
300
  });
284
301
 
285
- // History validity is captured above and consumed by temporal reprojection.
302
+ const tile_denoising = this.#tile_denoising_enabled
303
+ && (this.#spatial_denoising_enabled || this.#reprojection_mode !== SSRReprojectionMode.CurrentFrame);
304
+ const denoise_tiles = tile_denoising ? ssr_graph_denoise_tiles({
305
+ graph, resolution, input: reflections, metadata: reflection_metadata,
306
+ history, history_metadata, velocity: input_velocity, history_valid: valid, jitter_delta,
307
+ }) : -1;
308
+ const tile_inputs = denoise_tiles >= 0 ? { tDenoiseTiles: denoise_tiles } : {};
286
309
 
287
310
  // denoise
288
311
 
@@ -295,9 +318,10 @@ export class SSR {
295
318
  if (this.#spatial_denoising_enabled) {
296
319
  [denoised, denoised_metadata] = graph_image_pass({
297
320
  graph,
298
- shader: ssr_spatial_denoise_metadata_shader,
321
+ shader: tile_denoising ? ssr_spatial_denoise_metadata_tile_shader : ssr_spatial_denoise_metadata_shader,
299
322
  output_resolution: resolution,
300
323
  inputs: {
324
+ ...tile_inputs,
301
325
  tInput: denoised,
302
326
  tMetadata: denoised_metadata,
303
327
  tDepth: input_depth,
@@ -313,9 +337,10 @@ export class SSR {
313
337
 
314
338
  [denoised, denoised_metadata] = graph_image_pass({
315
339
  graph,
316
- shader: ssr_reproject_shader,
340
+ shader: tile_denoising ? ssr_reproject_tile_shader : ssr_reproject_shader,
317
341
  output: [output, output_metadata, output_geometry],
318
342
  inputs: {
343
+ ...tile_inputs,
319
344
  tInput: denoised,
320
345
  tMetadata: denoised_metadata,
321
346
  tHistory: history,
@@ -337,9 +362,10 @@ export class SSR {
337
362
  // 2 more spatial denoise steps
338
363
  [denoised] = graph_image_pass({
339
364
  graph,
340
- shader: ssr_spatial_denoise_shader,
365
+ shader: tile_denoising ? ssr_spatial_denoise_tile_shader : ssr_spatial_denoise_shader,
341
366
  output_resolution: resolution,
342
367
  inputs: {
368
+ ...tile_inputs,
343
369
  tInput: denoised,
344
370
  tDepth: input_depth,
345
371
  tNormal: input_normal,
@@ -352,9 +378,10 @@ export class SSR {
352
378
 
353
379
  [denoised] = graph_image_pass({
354
380
  graph,
355
- shader: ssr_spatial_denoise_shader,
381
+ shader: tile_denoising ? ssr_spatial_denoise_tile_shader : ssr_spatial_denoise_shader,
356
382
  output_resolution: resolution,
357
383
  inputs: {
384
+ ...tile_inputs,
358
385
  tInput: denoised,
359
386
  tDepth: input_depth,
360
387
  tNormal: input_normal,
@@ -391,6 +418,7 @@ export class SSR {
391
418
  denoised,
392
419
  denoised_1,
393
420
  reflections,
421
+ denoise_tiles,
394
422
  };
395
423
  }
396
424
  }
@@ -0,0 +1,3 @@
1
+ /** Tile width in internal pixels; shared by classification and denoise shader variants. */
2
+ export const SSR_DENOISE_TILE_SIZE: 8;
3
+ //# sourceMappingURL=SSR_DENOISE_TILE_SIZE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSR_DENOISE_TILE_SIZE.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.js"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,sCAAuC"}
@@ -0,0 +1,2 @@
1
+ /** Tile width in internal pixels; shared by classification and denoise shader variants. */
2
+ export const SSR_DENOISE_TILE_SIZE = 8;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A miss can still contain varying GI radiance or useful history. Only a constant,
3
+ * stationary, zero-uncertainty neighborhood may take the denoiser's copy path.
4
+ * Texture names are supplied by shader_ssr_denoise_tile_classify.
5
+ */
6
+ export const chunk_ssr_denoise_tile_active: CodeChunk;
7
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
8
+ //# sourceMappingURL=chunk_ssr_denoise_tile_active.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_ssr_denoise_tile_active.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,sDA8B8C;0BAvCpB,oCAAoC"}