@woosh/meep-engine 3.17.2 → 3.18.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 (263) hide show
  1. package/editor/actions/concrete/ComponentAddAction.d.ts +1 -0
  2. package/editor/actions/concrete/ComponentAddAction.d.ts.map +1 -1
  3. package/editor/actions/concrete/ComponentAddAction.js +4 -0
  4. package/editor/actions/concrete/ComponentRemoveAction.d.ts +1 -0
  5. package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -1
  6. package/editor/actions/concrete/ComponentRemoveAction.js +4 -0
  7. package/editor/actions/concrete/EntityCreateAction.d.ts +1 -0
  8. package/editor/actions/concrete/EntityCreateAction.d.ts.map +1 -1
  9. package/editor/actions/concrete/EntityCreateAction.js +7 -0
  10. package/editor/actions/concrete/EntityRemoveAction.d.ts +1 -0
  11. package/editor/actions/concrete/EntityRemoveAction.d.ts.map +1 -1
  12. package/editor/actions/concrete/EntityRemoveAction.js +4 -0
  13. package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +10 -0
  14. package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -1
  15. package/editor/actions/concrete/PatchTerrainHeightAction.js +107 -85
  16. package/editor/actions/concrete/TransformModifyAction.d.ts +1 -0
  17. package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
  18. package/editor/actions/concrete/TransformModifyAction.js +4 -0
  19. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
  20. package/editor/particles/effect/ParticleEffectDocument.js +10 -6
  21. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
  22. package/editor/particles/effect/ParticleReferenceSimulation.js +98 -4
  23. package/editor/particles/effect/make_starter_particle_effect.d.ts.map +1 -1
  24. package/editor/particles/effect/make_starter_particle_effect.js +0 -2
  25. package/editor/tools/engine/ToolEngine.d.ts +30 -0
  26. package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
  27. package/editor/tools/engine/ToolEngine.js +257 -188
  28. package/editor/view/ecs/EntityList.d.ts.map +1 -1
  29. package/editor/view/ecs/EntityList.js +6 -5
  30. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
  31. package/editor/view/particles/effect/ParticleEmitterInspectorView.js +17 -9
  32. package/package.json +1 -1
  33. package/src/CODEC_LAYOUT_VERIFICATION.md +1 -2
  34. package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.d.ts +56 -0
  35. package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.d.ts.map +1 -0
  36. package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.js +73 -0
  37. package/src/core/binary/meshopt/meshopt_decode_vertex_buffer.d.ts.map +1 -1
  38. package/src/core/binary/meshopt/meshopt_decode_vertex_buffer.js +18 -63
  39. package/src/core/binary/meshopt/meshopt_encode_byte_group.d.ts +53 -0
  40. package/src/core/binary/meshopt/meshopt_encode_byte_group.d.ts.map +1 -0
  41. package/src/core/binary/meshopt/meshopt_encode_byte_group.js +140 -0
  42. package/src/core/binary/meshopt/meshopt_encode_data_block.d.ts +32 -0
  43. package/src/core/binary/meshopt/meshopt_encode_data_block.d.ts.map +1 -0
  44. package/src/core/binary/meshopt/meshopt_encode_data_block.js +77 -0
  45. package/src/core/binary/meshopt/meshopt_encode_index_sequence.d.ts +46 -0
  46. package/src/core/binary/meshopt/meshopt_encode_index_sequence.d.ts.map +1 -0
  47. package/src/core/binary/meshopt/meshopt_encode_index_sequence.js +146 -0
  48. package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.d.ts +40 -0
  49. package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.d.ts.map +1 -0
  50. package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.js +700 -0
  51. package/src/core/binary/meshopt/meshopt_write_uint_var.d.ts +24 -0
  52. package/src/core/binary/meshopt/meshopt_write_uint_var.d.ts.map +1 -0
  53. package/src/core/binary/meshopt/meshopt_write_uint_var.js +39 -0
  54. package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
  55. package/src/core/math/random/seededRandom_Mulberry32.js +4 -2
  56. package/src/core/process/undo/Action.d.ts +19 -0
  57. package/src/core/process/undo/Action.d.ts.map +1 -1
  58. package/src/core/process/undo/Action.js +17 -0
  59. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +78 -0
  60. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -0
  61. package/src/engine/graphics3/GPUParticleEmitterSystem.js +310 -0
  62. package/src/engine/graphics3/GraphicsEngine.d.ts +17 -0
  63. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
  64. package/src/engine/graphics3/GraphicsEngine.js +30 -10
  65. package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +1 -1
  66. package/src/engine/graphics3/particles/particle_gpu_records.js +0 -2
  67. package/src/engine/interpolation/InterpolationSystem.d.ts +7 -0
  68. package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
  69. package/src/engine/interpolation/InterpolationSystem.js +10 -0
  70. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  71. package/src/engine/network/NetworkSession.js +14 -34
  72. package/src/engine/network/time/RenderPlayout.d.ts +76 -0
  73. package/src/engine/network/time/RenderPlayout.d.ts.map +1 -0
  74. package/src/engine/network/time/RenderPlayout.js +163 -0
  75. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  76. package/src/engine/network/transport/adapters/WebSocketTransport.js +11 -4
  77. package/src/engine/physics/ecs/PhysicsSystem.d.ts +4 -12
  78. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  79. package/src/engine/physics/ecs/PhysicsSystem.js +39 -13
  80. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  81. package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
  82. package/src/engine/sound/simulation/core/VolumeField.js +4 -1
  83. package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +23 -2
  84. package/src/shade/playground/particle_system/README.md +139 -139
  85. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
  86. package/src/shade/playground/particle_system/particle_prototype.js +0 -2
  87. package/src/shade/playground/particle_system/particle_scene.d.ts +6 -9
  88. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  89. package/src/shade/playground/particle_system/particle_scene.js +6 -13
  90. package/src/shade/playground/ssr_reprojection/README.md +103 -0
  91. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.d.ts +17 -0
  92. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.d.ts.map +1 -0
  93. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +68 -0
  94. package/src/shade/playground/ssr_reprojection/index.html +79 -0
  95. package/src/shade/playground/ssr_reprojection/main.d.ts +2 -0
  96. package/src/shade/playground/ssr_reprojection/main.d.ts.map +1 -0
  97. package/src/shade/playground/ssr_reprojection/main.js +245 -0
  98. package/src/shade/playground/ssr_reprojection/scene.d.ts +18 -0
  99. package/src/shade/playground/ssr_reprojection/scene.d.ts.map +1 -0
  100. package/src/shade/playground/ssr_reprojection/scene.js +51 -0
  101. package/src/shade/renderer/Renderer.d.ts +2 -23
  102. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  103. package/src/shade/renderer/Renderer.js +185 -218
  104. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -8
  105. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  106. package/src/shade/renderer/animation/GPUAnimationManager.js +12 -12
  107. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
  108. package/src/shade/renderer/buffer/table/GPUTypedTable.js +6 -0
  109. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  110. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +7 -0
  111. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts +4 -0
  112. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts.map +1 -0
  113. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.js +51 -0
  114. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.d.ts.map +1 -1
  115. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.js +5 -35
  116. package/src/shade/renderer/particles/DESIGN.md +703 -514
  117. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +16 -4
  118. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  119. package/src/shade/renderer/particles/GPUParticleSystem.js +1189 -991
  120. package/src/shade/renderer/particles/ParticleConstants.d.ts +64 -0
  121. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  122. package/src/shade/renderer/particles/ParticleConstants.js +71 -0
  123. package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts +57 -0
  124. package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts.map +1 -0
  125. package/src/shade/renderer/particles/bounds/chunk_particle_bounds.js +181 -0
  126. package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.d.ts +7 -0
  127. package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.d.ts.map +1 -0
  128. package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.js +12 -0
  129. package/src/shade/renderer/particles/bounds/graph_particle_bounds.d.ts +33 -0
  130. package/src/shade/renderer/particles/bounds/graph_particle_bounds.d.ts.map +1 -0
  131. package/src/shade/renderer/particles/bounds/graph_particle_bounds.js +67 -0
  132. package/src/shade/renderer/particles/bounds/shader_particle_bounds.d.ts +40 -0
  133. package/src/shade/renderer/particles/bounds/shader_particle_bounds.d.ts.map +1 -0
  134. package/src/shade/renderer/particles/bounds/shader_particle_bounds.js +187 -0
  135. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +15 -2
  136. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
  137. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +14 -8
  138. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +58 -4
  139. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
  140. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +79 -4
  141. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts +23 -1
  142. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts.map +1 -1
  143. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.js +35 -2
  144. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +4 -2
  145. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
  146. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +5 -8
  147. package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -1
  148. package/src/shade/renderer/particles/data/particle_emitter_record.js +0 -6
  149. package/src/shade/renderer/particles/graph_particles.d.ts +25 -3
  150. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  151. package/src/shade/renderer/particles/graph_particles.js +108 -31
  152. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +6 -4
  153. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  154. package/src/shade/renderer/particles/graph_particles_avboit.js +5 -5
  155. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +5 -0
  156. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  157. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +27 -6
  158. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +4 -0
  159. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
  160. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +6 -1
  161. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +35 -27
  162. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
  163. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +424 -425
  164. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts +20 -0
  165. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts.map +1 -0
  166. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +4 -0
  167. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
  168. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +38 -2
  169. package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.d.ts +22 -0
  170. package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.d.ts.map +1 -0
  171. package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.js +42 -0
  172. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +1 -1
  173. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts.map +1 -1
  174. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.js +53 -22
  175. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts.map +1 -1
  176. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.js +213 -216
  177. package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts +50 -0
  178. package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts.map +1 -0
  179. package/src/shade/renderer/particles/shaders/shader_particle_render.js +1 -1
  180. package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.d.ts +36 -0
  181. package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.d.ts.map +1 -0
  182. package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.js +102 -0
  183. package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts +102 -0
  184. package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts.map +1 -0
  185. package/src/shade/renderer/particles/warmup/graph_particle_warmup.js +329 -0
  186. package/src/shade/renderer/particles/warmup/shader_particle_warmup.d.ts +112 -0
  187. package/src/shade/renderer/particles/warmup/shader_particle_warmup.d.ts.map +1 -0
  188. package/src/shade/renderer/particles/warmup/shader_particle_warmup.js +318 -0
  189. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts +35 -0
  190. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -0
  191. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +108 -0
  192. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts +3 -0
  193. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -0
  194. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +70 -0
  195. package/src/shade/renderer/particles/warmup/warmup_schedule.d.ts +62 -0
  196. package/src/shade/renderer/particles/warmup/warmup_schedule.d.ts.map +1 -0
  197. package/src/shade/renderer/particles/warmup/warmup_schedule.js +55 -0
  198. package/src/shade/renderer/postprocess/PostProcess.d.ts.map +1 -1
  199. package/src/shade/renderer/postprocess/PostProcess.js +2 -1
  200. package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +286 -0
  201. package/src/shade/renderer/postprocess/ssr/SSR.d.ts +57 -21
  202. package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
  203. package/src/shade/renderer/postprocess/ssr/SSR.js +230 -129
  204. package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.d.ts +11 -0
  205. package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.d.ts.map +1 -0
  206. package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.js +6 -0
  207. package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.d.ts +4 -0
  208. package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.d.ts.map +1 -0
  209. package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.js +32 -0
  210. package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.d.ts +4 -0
  211. package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.d.ts.map +1 -0
  212. package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.js +41 -0
  213. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts +3 -0
  214. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -0
  215. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +30 -0
  216. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts +4 -0
  217. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -0
  218. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +70 -0
  219. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts +21 -0
  220. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +1 -0
  221. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.js +363 -0
  222. package/src/shade/renderer/postprocess/ssr/resolve/chunk_get_neighbour_weight.js +1 -1
  223. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts +2 -0
  224. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts.map +1 -0
  225. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.js +24 -0
  226. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts +1 -6
  227. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
  228. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +16 -332
  229. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts +1 -6
  230. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
  231. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +25 -358
  232. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +0 -5
  233. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
  234. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +201 -276
  235. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts +1 -0
  236. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  237. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +167 -143
  238. package/src/shade/renderer/shader/graph/graph_create_buffer.d.ts +15 -0
  239. package/src/shade/renderer/shader/graph/graph_create_buffer.d.ts.map +1 -0
  240. package/src/shade/renderer/shader/graph/graph_create_buffer.js +20 -0
  241. package/src/shade/renderer/view/GPUViewContext.d.ts +3 -4
  242. package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
  243. package/src/shade/renderer/view/GPUViewContext.js +5 -5
  244. package/src/core/binary/meshopt/__meshopt_test_streams.d.ts +0 -24
  245. package/src/core/binary/meshopt/__meshopt_test_streams.d.ts.map +0 -1
  246. package/src/core/binary/meshopt/__meshopt_test_streams.js +0 -237
  247. package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts +0 -84
  248. package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts.map +0 -1
  249. package/src/core/geom/3d/atlas/atlas_test_fixtures.js +0 -266
  250. package/src/engine/asset/loaders/gltf_test_fixtures.d.ts +0 -97
  251. package/src/engine/asset/loaders/gltf_test_fixtures.d.ts.map +0 -1
  252. package/src/engine/asset/loaders/gltf_test_fixtures.js +0 -359
  253. package/src/shade/renderer/animation/skin_test_fixtures.d.ts +0 -86
  254. package/src/shade/renderer/animation/skin_test_fixtures.d.ts.map +0 -1
  255. package/src/shade/renderer/animation/skin_test_fixtures.js +0 -250
  256. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts +0 -16
  257. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts.map +0 -1
  258. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.js +0 -27
  259. package/src/shade/renderer/particles/particle_test_fixtures.d.ts +0 -151
  260. package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +0 -1
  261. package/src/shade/renderer/particles/particle_test_fixtures.js +0 -229
  262. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.js +0 -23
  263. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +0 -457
@@ -31,6 +31,7 @@ export class PostProcess {
31
31
  this.ssr.frame_index = frame_index;
32
32
  }
33
33
 
34
- reset_history() {
34
+ reset_history() {
35
+ this.ssr.reset_history = true;
35
36
  }
36
37
  }
@@ -0,0 +1,286 @@
1
+ # SSR reprojection proposal
2
+
3
+ Status: implemented 2026-09-08, with the limitations below. The unused, invalid
4
+ FidelityFX reprojection translation was removed. This document retains the review
5
+ rationale and test plan, followed by implementation and validation details.
6
+
7
+ ## Objective and order of work
8
+
9
+ Keep reflection history attached to the reflected image under camera motion, while
10
+ rejecting history whose correspondence cannot be established. Prefer a small,
11
+ testable implementation over completing the abandoned denoiser port.
12
+
13
+ 1. Repair history validity, motion-vector selection, and final blend confidence.
14
+ 2. Add virtual-image reprojection for coherent, approximately planar reflections.
15
+ 3. Add richer motion handling or temporal statistics only when a reproducible scene
16
+ demonstrates the need. Profile metadata traffic before committing to its format.
17
+
18
+ The exact geometric guarantee in step 2 is for a static planar ideal mirror and a
19
+ static reflected point under a perspective camera. Roughness, curvature, mixed
20
+ lighting sources, and moving geometry make this an approximation. They must not
21
+ silently inherit the same confidence guarantee.
22
+
23
+ ## Problems identified in the original implementation
24
+
25
+ - `ssr_reproject_shader.js` uses the largest 3x3 velocity, whereas depth-clip validates
26
+ the nearest-depth pixel's velocity. Use `depth_clip_validated_velocity()` for the
27
+ existing surface candidate. This restores agreement with depth-clip; it does not
28
+ prove that the selected neighboring surface describes the reflection itself.
29
+ - `SSR.reset_history` is not consumed, and `PostProcess.reset_history()` is empty.
30
+ Implement explicit validity for first use, reset, resize, and skipped rendering.
31
+ Publish a history generation only after it has been produced successfully. Keep
32
+ radiance, metadata, previous geometry, and camera state from the same view and
33
+ frame. Do not infer availability solely from global frame-number parity.
34
+ - Confidence is currently applied before clamp damping and variance reweighting.
35
+ Apply it to the final normalized history weight, with current weight equal to
36
+ one minus that result. Hard invalidation must return the current sample before
37
+ reading or clipping history. Zero times an invalid value is not a safe reset.
38
+ Treat velocity magnitude as a tuning heuristic, separate from geometric validity.
39
+ - Define the coordinate contract explicitly: pixel centers, internal resolution,
40
+ UV Y direction, reverse-Z, and each frame's jitter. GPU camera uniforms include
41
+ projection offsets, while camera velocity uses the underlying camera matrices.
42
+ Do not assume the existing velocity and a new matrix lookup address the same
43
+ history grid. Reconstruct from the current raster grid and project into the
44
+ previous raster grid, adding jitter conversion exactly once where needed.
45
+
46
+ ## Parallax geometry
47
+
48
+ For camera position C, reflector point P, and Euclidean reflected-ray length L,
49
+ all in world space:
50
+
51
+ ```text
52
+ V = P + normalize(P - C) * L
53
+ virtualUV = project(previousViewProjection, V)
54
+ ```
55
+
56
+ V is the virtual image point behind the mirror. For an ideal planar reflection it
57
+ also equals `H - 2 * N * dot(H - P, N)`, where H is the physical hit and N is the unit
58
+ mirror normal. Projecting H itself addresses the directly visible object, not its
59
+ reflection. Validate clip W and UV bounds before sampling. Invalid hit metadata
60
+ must disable the virtual candidate; a miss is not a valid zero-distance hit.
61
+
62
+ Keep surface and virtual candidates separate, including their validation results.
63
+ Choose a supported candidate; do not interpolate UVs across unrelated history.
64
+ Prefer virtual correspondence when the reflection is smooth and coherent. A valid
65
+ surface correspondence is only a fallback heuristic for reflection radiance.
66
+
67
+ For virtual-candidate reflector validation, reconstruct the previous geometry at
68
+ that candidate and compare it to the reflector's local plane and normal in a common
69
+ coordinate system. The corresponding point on a mirror usually changes between
70
+ frames. Comparing against the old location of the current reflector point, or
71
+ comparing virtual depth with G-buffer surface depth, rejects correct parallax.
72
+ Use roughness/material agreement and identity where available. Plane agreement
73
+ alone cannot distinguish disconnected coplanar surfaces.
74
+
75
+ Validate the radiance sampling footprint too. A valid center does not make adjacent
76
+ Catmull-Rom taps valid. Start with validated bilinear taps, renormalizing only the
77
+ accepted nonnegative weights and rejecting an empty footprint. Keep higher-order
78
+ reconstruction as a measured quality improvement, not a prerequisite for correctness.
79
+
80
+ ## Metadata must describe the signal being accumulated
81
+
82
+ Resolve already reconstructs hit positions and reuses neighboring traces. Produce
83
+ full-resolution distance plus support/confidence there, using the same accepted
84
+ contributions as radiance. A neighbor's distance from its original ray origin is
85
+ not the distance from the receiving pixel. Reconstruct that distance when reused.
86
+
87
+ A simple initial policy is to enable virtual reprojection only for a dominant,
88
+ coherent group of finite SSR hits. A representative distance is acceptable within
89
+ that group; substantial distance disagreement or mixed fallback contributions
90
+ reduces support. Two equally weighted depths must not become a trusted imaginary
91
+ surface at their average. Do not average invalid hits into the estimate.
92
+
93
+ The spatial filter before temporal reprojection also changes the radiance mixture.
94
+ Its accepted contributions must propagate or conservatively reduce metadata support.
95
+ Keeping center metadata while borrowing unrelated neighboring radiance breaks the
96
+ contract just as it does in resolve. This is part of step 2, not optional cleanup.
97
+
98
+ SSR/environment/LPV mixtures generally do not share one correspondence. Initially
99
+ disable finite-hit reprojection when its support is insufficient and shorten history
100
+ on source transitions. Separate histories and direction-based distant-environment
101
+ reprojection remain possible later; LPV radiance is not necessarily at infinity.
102
+
103
+ Do not change the packed trace format first. Although it has spare bits, first prove
104
+ which distance the resolved signal requires. Start with explicit metadata and test
105
+ its semantics. Consider half precision/packing afterward using a screen-error budget,
106
+ finite representable ranges, and real scenes at different world scales. One extra
107
+ RG16F history pair alone costs about 16.6 MB at 1920x1080, before previous geometry
108
+ or other transient metadata. Reuse existing frame resources where lifetimes permit.
109
+
110
+ ## Adversarial assessment
111
+
112
+ | Challenge | Consequence for the design |
113
+ | --- | --- |
114
+ | Mirror is static but the reflected object moves sideways | Mirror depth, normal, and roughness can all agree while virtual correspondence is wrong. Previous hit distance can also agree. Exact handling requires reflected-object motion/previous hit correspondence; otherwise use radiance disagreement or a reactive signal to shorten history and acknowledge residual ambiguity. |
115
+ | Reflector moves or bends | Extending the current ray and projecting with previous camera matrices is insufficient. Support previous reflector geometry/transforms later; do not claim surface velocity alone solves this. |
116
+ | Rough rays alternate between near and far objects | A single distance and large history weight produce false stability. Reduce support for a broad or inconsistent mixture; do not invent a trusted mean depth. |
117
+ | Two mirrors are coplanar with identical normals | Plane/normal tests cannot establish identity. Use available identity and radiance/support checks; ambiguity must reduce confidence. |
118
+ | Only the bilinear center passes depth validation | Invalid adjacent radiance can still bleed through. Validate the actual taps used to reconstruct history. |
119
+ | Stable shader always rejects history | It avoids trails but fails denoising. Include a positive accumulation control, not just rejection tests. |
120
+ | Large motion with accurate correspondence | A fixed 128-pixel cutoff is resolution dependent and discards valid samples. Keep this heuristic separate and tune using pixel uncertainty/footprint rather than treating speed as proof of invalidity. |
121
+ | New moments and counters hide a wrong lookup | More statistical state cannot repair correspondence. Defer that state until the geometry and support contract pass. |
122
+
123
+ An ordinary reflection G-buffer cannot completely disambiguate all these scenes.
124
+ The first implementation should improve camera parallax without promising exact
125
+ dynamic-scene reconstruction. If motion support is added later, keep it inside
126
+ candidate construction/validation rather than patching the temporal blend.
127
+
128
+ ## Small test plan using the current software tools
129
+
130
+ Use Vitest with `ComputeShaderEmulator.fromCodeChunk()` for production math helpers,
131
+ `fromImageShader()` for production fragment passes, and `CPUBitmapData` for fixtures.
132
+ Reuse the patterns in `taa/shader_taa.spec.js` and
133
+ `taa/shader_depth_occlusion_clip.spec.js`. Most fixtures need only 16x16 or 32x16
134
+ textures and a few selected pixels; no scene loader, full renderer, golden images,
135
+ or new test framework is required. Use wider textures only when a motion case needs
136
+ an in-bounds lookup. Test behavioral contracts, not shader source text.
137
+
138
+ | Test group | Small fixture and independent expectation | Failure it should expose |
139
+ | --- | --- | --- |
140
+ | 1. Planar correspondence | Fix physical hit H and a plane. In JS reflect H across the plane, then intersect the current camera-to-image ray with the plane to obtain P and L. Run the production WGSL candidate helper and compare previous UV to an independently projected mirrored H. Parameterize lateral/forward camera movement, an oblique view, and jitter-only motion. Require subpixel error with a stated tolerance, initially 0.05 pixel for ordinary scales. Include stationary and valid L=0 mathematical controls. | Surface sticking, projecting physical H, wrong matrix order, double jitter, UV sign/half-pixel errors. The oracle must not repeat the implementation's ray-extension formula. |
141
+ | 2. Rejection cannot be undone | Put distinct finite colors in current/history, and give current a varied neighborhood so clipping cannot conceal wrong reuse. Exercise history invalidity, off-screen/behind-camera candidate, and zero confidence. Vary current variance from 0 to 10000 while history variance is 0. Require current output for hard rejection; lowering confidence must not increase history influence when other inputs are fixed. | Blend/variance logic restoring rejected history; reset reading stale data; edge clamping masquerading as a valid lookup. |
142
+ | 3. Validate the location actually used | A depth-clip fixture selects a slow center velocity while another neighbor is faster. Distinct history colors distinguish their destinations. Add one two-surface boundary with invalid bright neighboring taps and one valid tap. Assert selected correspondence and absence of invalid-tap influence. | A second dilation after depth-clip, confidence borrowed from the other candidate, unvalidated filtering footprints. |
143
+ | 4. Support follows resolved radiance | Feed tiny resolve/filter fixtures with all misses, a coherent borrowed hit, and two substantially different hit distances or an SSR/fallback transition. Dispatch the production metadata-producing helpers/passes and the pre-temporal filter. Misses have no virtual support, coherent reuse remains eligible, ambiguous mixtures cannot become highly trusted solely by averaging. | Center-ray metadata attached to borrowed/filtered radiance; invalid zeros contaminating distance; source changes keeping stale confidence. |
144
+ | 5. Useful accumulation and lifecycle | Manually ping-pong tiny textures for 8 deterministic frames of the planar scene with balanced synthetic noise; require lower error than raw input against the analytical signal. Then invalidate history and require the current sample. Separately record the real host path with `SoftwareGPUDevice` across first frame, next frame, reset, resize, and a skipped frame; check generation/validity and resource identity. | An always-reject implementation passing the suite; correct helper behavior never wired into SSR; old metadata paired with new radiance. |
145
+
146
+ Keep these five groups in at most two shader spec files and one host lifecycle spec.
147
+ Add parameter rows only for a newly observed failure. Compile helpers once per file.
148
+ For hard-rejection tests, compare complete output including variance; for valid
149
+ accumulation use error bounds rather than frozen implementation-specific blend values.
150
+ The dynamic reflected-object counterexample is a documented limitation of the first
151
+ phase, not a test that should bless visibly wrong correspondence as correct forever.
152
+
153
+ ### What the emulator can and cannot establish
154
+
155
+ - Fragment dispatch, matrix/vector helpers, texture loads, and level-zero filtered
156
+ sampling already work. Manually writing results into the next `CPUBitmapData` is
157
+ sufficient for temporal sequences.
158
+ - Mip levels are currently ignored by the emulator texture intrinsics. These tests
159
+ do not validate HZB traversal or roughness-dependent radiance mip selection. Use
160
+ synthetic accepted hits and level-zero radiance for reprojection tests.
161
+ - `SoftwareGPURenderPassEncoder` records draws and bindings but does not rasterize
162
+ or write attachment pixels. Use it for host lifecycle/wiring, not image assertions.
163
+ - Derivatives throw in point-wise fragment emulation; workgroup barriers are no-ops.
164
+ Keep the initial reprojection pass point-wise and express local consistency using
165
+ explicit neighboring loads. No workgroup-denoiser emulation is needed.
166
+ - Do not assume all GPU numeric and format behavior is reproduced. The current
167
+ texture-load intrinsic constructs a Float32Array even for integer-backed textures,
168
+ which can lose packed-u32 low bits. Exercise codecs as direct helper calls rather
169
+ than claiming packed-trace integration coverage. Float16Array can model explicit
170
+ half-precision storage when evaluating a future metadata format.
171
+ - Software success does not establish GPU performance, driver validation, or visual
172
+ quality on curved/rough materials. A small manual mirror/moving-object scene and
173
+ actual GPU timing remain useful before shipping; no native GPU is required in CI.
174
+
175
+ ## Adversarial probes performed during the initial review
176
+
177
+ Three temporary adversarial Vitest probes ran successfully through the existing
178
+ emulator (removed after review; permanent regression coverage is described below):
179
+
180
+ 1. Production SSR at zero velocity confidence returned approximately 1.079, 1.098,
181
+ and 1.100 for current radiance 1 and history 1.1 as current variance increased
182
+ from 0 to 10 to 10000. An experimental final-confidence gate returned exactly
183
+ current radiance and variance in all three cases. This checks the suggested
184
+ ordering, not a complete implementation of lifecycle or invalid-value handling.
185
+ 2. With a depth-clip selection of the center pixel, the old helper returned the
186
+ neighboring 8-pixel vector while `depth_clip_validated_velocity()` returned the
187
+ selected 1-pixel vector, including an 8-bit-quantized selection value.
188
+ 3. A prototype WGSL virtual-point helper matched independently mirrored hit geometry
189
+ for three camera positions. Moving only the reflected object by one world unit
190
+ produced 142.86 pixels of lookup error at focal length 1000 pixels and virtual
191
+ depth 7, despite unchanged mirror geometry. This falsifies the stronger claim
192
+ that reflector validation alone establishes dynamic reflection correspondence.
193
+
194
+ ## Implemented design and validation
195
+
196
+ - Resolve emits radiance and an RG32F distance/support attachment in both IBL and
197
+ LPV paths. Distances are measured from the receiving pixel. Missing, background,
198
+ off-screen, non-finite, and zero-length hits cannot supply trusted metadata.
199
+ - The first spatial pass propagates weighted distance moments and suppresses
200
+ support for broad mixtures. The two post-temporal spatial passes retain their
201
+ radiance-only interface to avoid unnecessary metadata traffic.
202
+ - Temporal reprojection prefers the virtual image for support at least 0.75 and
203
+ roughness at most 0.2. Four bilinear taps are individually checked against
204
+ previous depth, world-space reflector plane/normal, roughness, support, and
205
+ reflected distance. Confidence includes the accepted footprint weight.
206
+ - Surface fallback uses the existing depth-clip velocity selection and a single
207
+ previous-minus-current raster jitter correction. A failed smooth finite virtual
208
+ candidate limits surface confidence to one quarter. Radiance disagreement reduces
209
+ confidence further. These constants are initial heuristics, not geometric proofs.
210
+ - Reset, resize, missing previous depth, skipped frames, and a different view disable
211
+ history. Radiance, distance/support, and normal/roughness ping-pong together. A
212
+ generation is committed only after successful graph execution and command
213
+ submission; abandoned/failed graphs and intervening resets cannot publish it.
214
+ - Existing chunks supply coordinate reconstruction, NDC/UV conversion, depth and
215
+ material decoding, plane construction/distance, screen bounds, bilinear weights,
216
+ finite checks, depth-clip velocity, YCoCg conversion/clipping, and statistics.
217
+ Three SSR-specific chunks hold metadata moments, candidate math/blending, and
218
+ validated history sampling. No FidelityFX port or duplicate general math library
219
+ was introduced; the already-used edge-stopping chunks remain in use.
220
+
221
+ Persistent overhead is **32 bytes per internal pixel** beyond the existing radiance
222
+ pair: an RG32F metadata pair plus an RGBA16F normal/roughness pair. That is about
223
+ **66.4 MB at 1920x1080** (63.3 MiB). Resolve and pre-temporal filtering also produce
224
+ transient RG32F metadata; two such full-size attachments total another 33.2 MB
225
+ before graph lifetime reuse. Previous depth is borrowed from the existing view
226
+ resources. Reducing formats is deliberately deferred until screen-space error and
227
+ GPU bandwidth are measured; this is a material cost of the initial implementation.
228
+
229
+ Permanent coverage uses three spec files, with 14 tests organized around the five
230
+ small groups above:
231
+
232
+ - `ssr_reprojection.spec.js`: independent planar mirror oracle, translation,
233
+ rotation and jitter, hard reset without bound history textures, final-confidence
234
+ weighting, validated velocity, invalid bilinear taps, depth/normal/roughness/source
235
+ rejection, camera parallax, and an eight-frame positive denoising control.
236
+ - `ssr_metadata.spec.js`: actual resolve and spatial fragment emulation, all misses,
237
+ zero-length self hits, borrowed hit distance, fallback/mixed-distance support,
238
+ plus WGSL validation for both resolve variants, both spatial variants, and temporal.
239
+ - `SSR.spec.js`: real frame-graph/software-device recording through the final
240
+ spatial passes, matching radiance/metadata/geometry resource identities, resets,
241
+ resize, skipped frames, view changes, failed/abandoned graphs, and submission timing.
242
+
243
+ Validation: all 14 SSR tests pass. Related TAA/depth-clip, normal call-site and plane
244
+ chunk suites pass (38 tests, one existing skipped test). Declaration emission is
245
+ clean and all consumer API pins compile. The repository type-error ratchet remains
246
+ blocked at 899 errors against a budget of 897. An in-memory declaration comparison
247
+ with these SSR-related changes reverted yields exactly the same 899 diagnostics:
248
+ no additional consumer-visible type errors are introduced here. The budget was not
249
+ changed.
250
+
251
+ The software render device validates host recording, not pixels. Actual pixel
252
+ assertions execute production fragment shaders through the emulator. LPV shader
253
+ composition is validated, but its atlas sampling is not exercised by these fixtures.
254
+ The new SSR reflection lab at `src/shade/playground/ssr_reprojection/` renders the
255
+ production IBL path on a native NVIDIA GPU. All six SSR shader variants compile on
256
+ that GPU. Visual controls for parallax/surface/current-frame comparison, moving
257
+ objects, occlusion, camera cuts, resolution and final TAA were exercised. The SSR-off
258
+ control visibly removes the reflected targets. There is still no isolated GPU timing
259
+ or quantitative native image-quality measurement. The emulator limitations above
260
+ still apply. A moving reflected object or curved reflector still
261
+ requires conservative rejection and may retain residual trails; exact dynamic
262
+ reflection correspondence is outside this first implementation.
263
+
264
+ ## Long-term boundary
265
+
266
+ Keep geometry/candidate construction, candidate validation, and temporal accumulation
267
+ as small independent production helpers. Their contract is a history location,
268
+ support/confidence, and validity; temporal accumulation should not need to know
269
+ whether a location came from SSR, a later ray tracer, or reflected-object motion.
270
+ Keep history ownership and generation on the host explicit. Preserve independent
271
+ geometric oracles and positive accumulation controls as algorithms evolve.
272
+
273
+ AMD's [reflection denoiser documentation](https://gpuopen.com/manuals/fidelityfx_sdk/techniques/denoiser/)
274
+ describes separate mirror-parallax and surface reprojection paths. The integration
275
+ choices, limitations, and test strategy above are specific to this engine.
276
+
277
+ The playground README describes the repeatable visual checks and independent
278
+ planar reflection guides. Its comparison modes share production shader code;
279
+ changing mode invalidates history, and Parallax remains the default.
280
+
281
+ Follow-up visual validation found that zero resolve variance could make spatial
282
+ denoising nearly inert. The first spatial pass now bootstraps variance from local
283
+ luminance and propagates the resulting uncertainty; later passes only consume it.
284
+ A same-frame GPU probe and a zero-variance noisy-input regression now cover actual
285
+ filter effect, not only graph wiring. See the playground README for measurements
286
+ and the remaining sharpness/noise tradeoff. The SSR suite now contains 16 tests.
@@ -1,16 +1,23 @@
1
1
  export class SSR {
2
2
  /**
3
3
  *
4
- * @param {GraphicsContext} graphics
4
+ * @param {import("../../GraphicsContext.js").GraphicsContext} graphics
5
5
  */
6
- constructor(graphics: GraphicsContext);
6
+ constructor(graphics: import("../../GraphicsContext.js").GraphicsContext);
7
7
  frame_index: number;
8
+ set spatial_denoising_enabled(arg: boolean);
9
+ /** Toggle the three spatial passes independently of temporal reprojection. @returns {boolean} */
10
+ get spatial_denoising_enabled(): boolean;
11
+ set reset_history(arg: boolean);
8
12
  /**
9
13
  * When set, will disregard history buffer
10
14
  * Useful for camera cuts and large scene changes such as scene load
11
15
  * @type {boolean}
12
16
  */
13
- reset_history: boolean;
17
+ get reset_history(): boolean;
18
+ set reprojection_mode(arg: number);
19
+ /** @returns {SSRReprojectionMode} */
20
+ get reprojection_mode(): number;
14
21
  /**
15
22
  *
16
23
  * @param {number} x
@@ -18,30 +25,59 @@ export class SSR {
18
25
  */
19
26
  resize(x: number, y: number): void;
20
27
  /**
21
- *
22
- * @param {FrameGraph} graph
23
- * @param {number} input_depth
24
- * @param {number} input_hzb
25
- * @param {number} input_scene_color
26
- * @param {number} input_albedo
27
- * @param {number} input_pbr
28
- * @param {number} input_normal
29
- * @param {number} input_velocity
30
- * @param {number} input_occlusion
31
- * @param {number[]} resolution
32
- * @param {number} camera_current
33
- * @param {number} camera_previous
34
- * @param {GPULightProbeVolume} [lpv]
35
- * @param {GPUViewContext} view_ctx
36
- * @param {number} [mip] higher mip = lower resolution trace
37
- * @returns {{final:number, trace:number, reflections:number, denoised: number}}
28
+ * Records SSR for one view; history becomes available after successful submission.
29
+ * @param {object} options
30
+ * @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} options.graph
31
+ * @param {number} options.input_depth
32
+ * @param {number} [options.input_depth_previous] Same view and frame as camera_previous
33
+ * @param {number} options.input_hzb
34
+ * @param {number} options.input_scene_color
35
+ * @param {number} options.input_albedo
36
+ * @param {number} options.input_pbr
37
+ * @param {number} options.input_normal
38
+ * @param {number} options.input_velocity
39
+ * @param {number} options.input_occlusion
40
+ * @param {number} [options.input_environment]
41
+ * @param {ArrayLike<number>} options.resolution
42
+ * @param {number} options.camera_current
43
+ * @param {number} options.camera_previous
44
+ * @param {ShadeIndirectLightingMode} [options.indirect_lighting_mode] Explicit GI fallback selection
45
+ * @param {import("../../global_illumination/brick4/Brick4LightMap.js").Brick4LightMap} [options.brick4]
46
+ * @param {import("../../global_illumination/lpv/GPULightProbeVolume.js").GPULightProbeVolume} [options.lpv]
47
+ * @param {import("../../view/GPUViewContext.js").GPUViewContext} [options.view_ctx]
48
+ * @param {ArrayLike<number>} [options.jitter] Raster jitter in internal pixels
49
+ * @param {number} [options.mip] Higher mip = lower resolution trace
50
+ * @returns {{final:number, trace:number, reflections:number, denoised:number, denoised_1:number}}
38
51
  */
39
- graph_pass({ graph, input_depth, input_hzb, input_scene_color, input_pbr, input_normal, input_velocity, input_occlusion, input_albedo, resolution, camera_current, camera_previous, input_environment, lpv, mip, }: FrameGraph): {
52
+ 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
+ graph: import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
54
+ input_depth: number;
55
+ input_depth_previous?: number;
56
+ input_hzb: number;
57
+ input_scene_color: number;
58
+ input_albedo: number;
59
+ input_pbr: number;
60
+ input_normal: number;
61
+ input_velocity: number;
62
+ input_occlusion: number;
63
+ input_environment?: number;
64
+ resolution: ArrayLike<number>;
65
+ camera_current: number;
66
+ camera_previous: number;
67
+ indirect_lighting_mode?: ShadeIndirectLightingMode;
68
+ brick4?: import("../../global_illumination/brick4/Brick4LightMap.js").Brick4LightMap;
69
+ lpv?: import("../../global_illumination/lpv/GPULightProbeVolume.js").GPULightProbeVolume;
70
+ view_ctx?: import("../../view/GPUViewContext.js").GPUViewContext;
71
+ jitter?: ArrayLike<number>;
72
+ mip?: number;
73
+ }): {
40
74
  final: number;
41
75
  trace: number;
42
76
  reflections: number;
43
77
  denoised: number;
78
+ denoised_1: number;
44
79
  };
45
80
  #private;
46
81
  }
82
+ import { ShadeIndirectLightingMode } from "../../ShadeIndirectLightingMode.js";
47
83
  //# sourceMappingURL=SSR.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SSR.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/SSR.js"],"names":[],"mappings":"AAcA;IAiBI;;;OAGG;IACH,uCAUC;IAvBD,oBAAgB;IAEhB;;;;OAIG;IACH,eAFU,OAAO,CAEK;IAkBtB;;;;OAIG;IACH,UAHW,MAAM,KACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH;eAFoB,MAAM;eAAQ,MAAM;qBAAc,MAAM;kBAAY,MAAM;MAwN7E;;CACJ"}
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,EAiB5D;IA1DD,oBAAgB;IAMhB,4CAOC;IATD,iGAAiG;IACjG,yCAA2E;IA0B3E,gCAMC;IAZD;;;;OAIG;IACH,6BAAmD;IAbnD,mCAMC;IARD,qCAAqC;IACrC,gCAA2D;IA4C3D;;;;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;;eACG,MAAM;eAAQ,MAAM;qBAAc,MAAM;kBAAW,MAAM;oBAAa,MAAM;MAkQ/F;;CACJ;0CAxYyC,oCAAoC"}