@woosh/meep-engine 3.17.1 → 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 (265) 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/engine/sound/simulation/core/OcclusionSolver.d.ts +0 -29
  254. package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +0 -1
  255. package/src/shade/renderer/animation/skin_test_fixtures.d.ts +0 -86
  256. package/src/shade/renderer/animation/skin_test_fixtures.d.ts.map +0 -1
  257. package/src/shade/renderer/animation/skin_test_fixtures.js +0 -250
  258. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts +0 -16
  259. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts.map +0 -1
  260. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.js +0 -27
  261. package/src/shade/renderer/particles/particle_test_fixtures.d.ts +0 -151
  262. package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +0 -1
  263. package/src/shade/renderer/particles/particle_test_fixtures.js +0 -229
  264. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.js +0 -23
  265. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +0 -457
@@ -1,367 +1,34 @@
1
- import { SamplerDescriptor } from "../../../../descriptor/texture/SamplerDescriptor.js";
2
- import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
3
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
4
- import { CAMERA_UNIFORM_STRUCT } from "../../../camera/CAMERA_UNIFORM_STRUCT.js";
5
- import { chunk_get_ibl_radiance } from "../../../deferred/indirect/chunk_get_ibl_radiance.js";
6
- import { DEPTH_STENCIL_FOREGROUND_ONLY } from "../../../depth/DEPTH_STENCIL_FOREGROUND_ONLY.js";
7
1
  import { LPV_SHADER_RESOURCE_GROUP } from "../../../global_illumination/probe/octahedral/LPV_SHADER_RESOURCE_GROUP.js";
8
- import { chunk_direction_world_to_view } from "../../../shader/chunk/camera/chunk_direction_world_to_view.js";
9
- import { chunk_project_position_from_depth } from "../../../shader/chunk/camera/chunk_project_position_from_depth.js";
10
- import { chunk_screen_coordinate_to_view } from "../../../shader/chunk/camera/chunk_screen_coordinate_to_view.js";
11
- import { chunk_rgb_to_luminance } from "../../../shader/chunk/color/chunk_rgb_to_luminance.js";
12
- import { chunk_rgb_to_YCoCg } from "../../../shader/chunk/color/YCoCg/chunk_rgb_to_YCoCg.js";
13
- import { chunk_decode_g_buffer_normal } from "../../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
14
- import { chunk_v3_matrix4_project } from "../../../shader/chunk/geometry/vec3/chunk_v3_matrix4_project.js";
15
2
  import { chunk_lpv_sample_irradiance } from "../../../shader/chunk/light/lpv/chunk_lpv_sample_irradiance.js";
16
3
  import { chunk_lpv_sample_radiance } from "../../../shader/chunk/light/lpv/chunk_lpv_sample_radiance.js";
17
- import { chunk_decode_g_buffer_roughness } from "../../../shader/chunk/material/chunk_decode_g_buffer_roughness.js";
18
- import { RECIPROCAL_PI_DECLARATION } from "../../../shader/chunk/math/RECIPROCAL_PI_DECLARATION.js";
19
- import { chunk_murmur3_vec3u } from "../../../shader/chunk/random/murmur/chunk_murmur3_vec3u.js";
20
- import { chunk_texel_coordinate_to_uv } from "../../../shader/chunk/texture/chunk_texel_coordinate_to_uv.js";
21
4
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
22
- import { ImageShader } from "../../../shader/ImageShader.js";
23
5
  import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
24
- import { ShaderDescriptor } from "../../../shader/ShaderDescriptor.js";
25
- import { chunk_ssr_hit_unpack } from "../chunk_ssr_hit_unpack.js";
26
- import { chunk_is_background } from "../../../shader/chunk/depth/chunk_is_background.js";
27
- import { chunk_get_neighbour_weight } from "./chunk_get_neighbour_weight.js";
28
- import { chunk_get_ray_mip_level } from "./chunk_get_ray_mip_level.js";
29
- import { chunk_reconstruct_pdf } from "./chunk_reconstruct_pdf.js";
30
-
31
- const RESOLVE_UNIFORMS = WebGPUStruct.from({
32
- frame_index: u32,
33
- });
6
+ import { build_ssr_resolve_shader } from "./build_ssr_resolve_shader.js";
34
7
 
35
8
  const resources = new ShaderResourceSetDescriptor();
36
-
37
- // per-pass, four bytes, read-only: immediate data rather than a uniform buffer. lpv_metadata
38
- // beside it is a scene buffer and stays bound.
39
- resources.setImmediate("settings", RESOLVE_UNIFORMS);
40
- resources.createGroup()
41
- .addTexture("tTrace", "uint")
42
- .addTexture("tDepth")
43
- .addTexture("tPBR")
44
- .addTexture("tNormal", "uint")
45
- .addTexture("tColor", "float")
46
- .addTexture("tAlbedoAO", "unfilterable-float")
47
- .addTexture("tEnvironment") // pre-filtered environment map
48
- .addSampler("sLinear", "filtering", SamplerDescriptor.from({
49
- magFilter: "linear",
50
- mipmapFilter: "linear",
51
- addressModeU: "clamp-to-edge",
52
- addressModeV: "clamp-to-edge",
53
- }))
54
- .addUniform("camera", CAMERA_UNIFORM_STRUCT)
55
- ;
56
-
57
- resources.addGroup(LPV_SHADER_RESOURCE_GROUP)
58
-
9
+ resources.addGroup(LPV_SHADER_RESOURCE_GROUP);
59
10
  resources.createGroup()
11
+ .addTexture("tEnvironment")
60
12
  .addTexture("lpv_atlas_radiance", "uint")
61
- .addTexture("lpv_atlas_depth", "float")
62
-
63
-
64
- const body = CodeChunk.from(
65
- //language=WGSL
66
- `
67
- // optimized 7x7 neighbourhood offsets. Optimized for noise diffusion and TAA artifact avoidance
68
- const NEIGHBOR_OFFSETS = array<vec2<i32>, 48>(
69
- vec2<i32>(2, -3),
70
- vec2<i32>(3, -1),
71
- vec2<i32>(0, -2),
72
- vec2<i32>(1, -3),
73
- vec2<i32>(3, 0),
74
- vec2<i32>(2, -1),
75
- vec2<i32>(3, -2),
76
- vec2<i32>(2, 2),
77
- vec2<i32>(3, 1),
78
- vec2<i32>(1, 3),
79
- vec2<i32>(3, 3),
80
- vec2<i32>(0, 2),
81
- vec2<i32>(2, 1),
82
- vec2<i32>(1, -1),
83
- vec2<i32>(3, -3),
84
- vec2<i32>(2, -2),
85
- vec2<i32>(0, -3),
86
- vec2<i32>(1, 0),
87
- vec2<i32>(-2, -1),
88
- vec2<i32>(-3, -2),
89
- vec2<i32>(-1, -3),
90
- vec2<i32>(-3, 1),
91
- vec2<i32>(-2, 0),
92
- vec2<i32>(-3, -1),
93
- vec2<i32>(-3, 2),
94
- vec2<i32>(-1, 1),
95
- vec2<i32>(-2, 3),
96
- vec2<i32>(0, 3),
97
- vec2<i32>(1, 2),
98
- vec2<i32>(-1, 0),
99
- vec2<i32>(-3, 3),
100
- vec2<i32>(-2, 2),
101
- vec2<i32>(0, 1),
102
- vec2<i32>(-1, 3),
103
- vec2<i32>(2, 3),
104
- vec2<i32>(3, 2),
105
- vec2<i32>(1, 1),
106
- vec2<i32>(2, 0),
107
- vec2<i32>(0, -1),
108
- vec2<i32>(-1, 2),
109
- vec2<i32>(-2, 1),
110
- vec2<i32>(-3, 0),
111
- vec2<i32>(-2, -2),
112
- vec2<i32>(-1, -1),
113
- vec2<i32>(-3, -3),
114
- vec2<i32>(1, -2),
115
- vec2<i32>(-2, -3),
116
- vec2<i32>(-1, -2),
117
- );
118
-
119
- @fragment
120
- fn main(
121
- @builtin(position) coord: vec4<f32>,
122
- @location(0) uv: vec2<f32>,
123
- ) -> @location(0) vec4<f32> {
124
-
125
- let coord_i = vec2<i32>(coord.xy);
126
-
127
- let texel_depth = textureLoad(tDepth, coord_i, 0 ).r;
128
-
129
- let this_pbr = textureLoad(tPBR, coord_i, 0);
130
- let this_roughness = decode_g_buffer_roughness(this_pbr);
131
-
132
- let this_normal_ws = decode_g_buffer_normal( textureLoad(tNormal, coord_i, 0).xy );
133
- let this_normal_vs = direction_world_to_view(this_normal_ws, camera);
134
-
135
- let this_position_vs = screen_coordinate_to_view(vec2u(coord_i), tDepth, camera);
136
- let view_direction_vs = normalize(-this_position_vs);
137
-
138
- let render_resolution = textureDimensions(tColor,0).xy;
139
-
140
- let tan_half_fov = camera.device_depth_to_view_space.w;
141
- let focal_length_px = f32(render_resolution.y) / (2.0 * tan_half_fov);
142
-
143
- let trace_texel = textureLoad(tTrace, coord_i, 0);
144
-
145
- let this_hit = ssr_hit_unpack(trace_texel.xy);
146
-
147
-
148
- let this_hit_uv = texel_coordinate_to_uv(vec2f(this_hit.position.xy), render_resolution);
149
- let this_hit_position_vs = screen_coordinate_to_view(this_hit.position, tDepth, camera);
150
- let this_hit_normal_ws = decode_g_buffer_normal( textureLoad(tNormal, this_hit.position, 0).xy );
151
- let this_hit_normal_vs = direction_world_to_view(this_hit_normal_ws, camera);
152
-
153
- let this_ray_direction = normalize(this_hit_position_vs - this_position_vs);
154
-
155
- // TODO special case for background pixels
156
-
157
- let this_confidence = this_hit.confidence;
158
-
159
- // assume that the center pixel is "ideal", so it's weight is 1.0
160
- // we could compute proper weight, but those failed at grazing angles when we tried.
161
- let distribution_weight = 1.0;
162
-
163
- let this_weight = this_confidence * distribution_weight;
164
-
165
- var weight_sum:f32 = this_weight;
166
- var max_confidence = this_confidence; // keep track of confidence for final weighting
167
-
168
- let this_mip = get_ray_mip_level(
169
- this_position_vs,
170
- this_hit_position_vs,
171
- this_hit_normal_vs,
172
- this_roughness,
173
- focal_length_px,
174
- );
175
-
176
- let this_hit_color_sample = textureSampleLevel(tColor, sLinear, this_hit_uv, this_mip).rgb;
177
-
178
- let this_hit_luma = rgb_to_luminance(this_hit_color_sample);
179
-
180
- var result = this_hit_color_sample * this_weight;
181
- // weight the seed like every neighbour tap — both accumulators divide by weight_sum
182
- var result_luma_moment2 = this_hit_luma * this_hit_luma * this_weight;
183
-
184
- const NEIGHBOUR_SAMPLE_COUNT = 4;
185
-
186
- let hash_seed = murmur3_vec3u(vec3u(vec2u(coord_i), settings.frame_index));
187
-
188
- for(var i = 0u; i < NEIGHBOUR_SAMPLE_COUNT; i++){
189
-
190
- let heighbour_index = ( hash_seed + i ) % 48;
191
-
192
- let neighbour_coord = coord_i + NEIGHBOR_OFFSETS[heighbour_index];
193
-
194
- let neighbour_normal_ws = decode_g_buffer_normal(textureLoad(tNormal, neighbour_coord, 0).xy);
195
- let neighbour_normal_vs = direction_world_to_view(neighbour_normal_ws, camera);
196
-
197
- let neighbour_pbr = textureLoad(tPBR, neighbour_coord, 0);
198
- let neighbour_roughness = decode_g_buffer_roughness(neighbour_pbr);
199
-
200
- let sample_hit = ssr_hit_unpack(textureLoad(tTrace, neighbour_coord, 0).xy);
201
-
202
- // reconstruct ray hit position
203
- let sample_hit_depth = textureLoad(tDepth, sample_hit.position, 0).r;
204
- let sample_hit_uv = texel_coordinate_to_uv(vec2f(sample_hit.position), render_resolution);
205
- let sample_hit_position_vs = project_position_from_depth(
206
- sample_hit_uv,
207
- sample_hit_depth,
208
- camera.projection_matrix_inverse,
209
- );
210
-
211
- let sample_direction = normalize(sample_hit_position_vs - this_position_vs);
212
-
213
- // check visibility
214
- let sample_hit_normal_ws = decode_g_buffer_normal( textureLoad(tNormal, sample_hit.position.xy, 0).xy );
215
- let sample_hit_normal_vs = direction_world_to_view(sample_hit_normal_ws, camera);
216
-
217
- let ray_hit_valid = step( 0, dot(-sample_direction, sample_hit_normal_vs));
218
- let ray_cast_valid = step( 0, dot(sample_direction, this_normal_vs) );
219
-
220
- // NOTE: we assume that visibility between the center sample and the neighbour is the same. This is incorrect, but thanks to normal visibility weighing and BRDF weighing - it's not noticeable in practice.
221
- // technically view direction for the neighbour is different, but it's close enough as an approximation
222
- let neighbour_view_direction = view_direction_vs;
223
-
224
- let neighbour_position_vs = screen_coordinate_to_view(
225
- vec2u(neighbour_coord),
226
- tDepth,
227
- camera,
228
- );
229
- let neighbour_ray_direction = normalize(sample_hit_position_vs - neighbour_position_vs);
230
-
231
- // reconstruct PDF for the neighbouring ray
232
- // we need this to weigh the neighbour
233
- let sample_pdf = reconstruct_pdf(
234
- neighbour_normal_vs,
235
- neighbour_view_direction,
236
- neighbour_ray_direction,
237
- neighbour_roughness
238
- );
239
-
240
- let sample_visibility = ray_cast_valid * ray_hit_valid;
241
- let confidence_visible = sample_hit.confidence * sample_visibility;
242
-
243
- let normalization_weight = get_neighbour_weight(
244
- sample_pdf,
245
- sample_direction,
246
- view_direction_vs,
247
- this_normal_vs,
248
- this_roughness,
249
- );
250
-
251
- max_confidence = max(max_confidence, confidence_visible );
252
- let weight = confidence_visible * normalization_weight;
253
-
254
- weight_sum += weight;
255
-
256
- let sample_mip = get_ray_mip_level(
257
- neighbour_position_vs,
258
- sample_hit_position_vs,
259
- sample_hit_normal_vs,
260
- neighbour_roughness,
261
- focal_length_px,
262
- );
263
-
264
- let sample_color = textureSampleLevel(tColor, sLinear, sample_hit_uv, sample_mip).rgb;
265
-
266
- result += sample_color * weight;
267
-
268
- let sample_luma = rgb_to_luminance(sample_color);
269
-
270
- // track second moment for variance
271
- result_luma_moment2 += sample_luma * sample_luma * weight;
272
- }
273
-
274
- if(weight_sum < 1e-5){
275
- // no valid samples,
276
-
277
- // TODO search further
278
- }
279
-
280
- if(weight_sum > 1e-5 ){
281
- // only normalize if we got some valid samples
282
- result /= weight_sum;
283
- result_luma_moment2 /= weight_sum;
284
- }
285
-
286
- let view_direction_ws = ( camera.view_matrix_inverse * vec4(view_direction_vs, 0.0) ).xyz;
287
- let this_position_ws = v3_matrix4_project( this_position_vs, camera.view_matrix_inverse );
288
-
289
-
290
- if(this_confidence > 0.05) {
291
- // sample secondary bounce from LPV, only sample irradiance
292
- // it's cheap and gives good results for background pixels
293
-
294
- let this_hit_position_ws = v3_matrix4_project( this_hit_position_vs, camera.view_matrix_inverse );
295
- let this_hit_direction_ws = normalize(this_hit_position_ws - this_position_ws);
296
-
297
- let hit_irradiance = lpv_sample_irradiance(
298
- this_hit_position_ws,
299
- this_hit_normal_ws,
300
- this_hit_direction_ws,
301
- );
302
-
303
- let this_hit_albedo = textureLoad(tAlbedoAO, this_hit.position, 0).rgb;
304
-
305
- result += this_hit_albedo * hit_irradiance * RECIPROCAL_PI;
306
- }
307
-
308
- // process GI
309
-
310
- let gi_radiance = lpv_sample_radiance(
311
- this_position_ws,
312
- this_normal_ws,
313
- view_direction_ws,
314
- this_roughness,
315
- );
316
-
317
- // NOTE: we don't apply Fresnel here because it's added after denoising
318
-
319
- let color = mix(gi_radiance, result, max_confidence);
320
-
321
- // compute variance
322
- let luma = rgb_to_luminance(result);
323
- let variance = max(result_luma_moment2 - luma*luma, 0.0);
324
-
325
- return vec4(color, variance);
326
- }
327
- `, [
328
- chunk_decode_g_buffer_roughness,
329
- chunk_direction_world_to_view,
330
- chunk_screen_coordinate_to_view,
331
- chunk_decode_g_buffer_normal,
332
- chunk_rgb_to_YCoCg,
333
- chunk_get_ibl_radiance,
334
- chunk_ssr_hit_unpack,
335
- chunk_texel_coordinate_to_uv,
336
- chunk_get_neighbour_weight,
337
- chunk_is_background,
338
- chunk_murmur3_vec3u,
339
- chunk_reconstruct_pdf,
340
- chunk_get_ray_mip_level,
341
- chunk_project_position_from_depth,
342
- chunk_lpv_sample_radiance,
343
- chunk_lpv_sample_irradiance,
344
- chunk_v3_matrix4_project,
345
- RECIPROCAL_PI_DECLARATION,
346
- chunk_rgb_to_luminance,
347
- ]
348
- );
349
-
350
- /**
351
- * Maps traced SSR out to actual color
352
- * @type {ImageShader}
353
- */
354
- export const ssr_resolve_shader_LPV = new ImageShader({
355
- descriptor: ShaderDescriptor.from({
356
- label: "SSR resolve",
357
- resources,
358
- body
359
- }),
360
- targets: [
361
- // TODO output rgbe5559 color and f16 variance to reduce memory bandwidth
362
- {
363
- format: "rgba16float"
364
- }
365
- ],
366
- depthStencil: DEPTH_STENCIL_FOREGROUND_ONLY,
367
- });
13
+ .addTexture("lpv_atlas_depth", "float");
14
+
15
+ export const ssr_resolve_shader_LPV = build_ssr_resolve_shader({
16
+ label: "SSR resolve / LPV",
17
+ resources,
18
+ sample_radiance: CodeChunk.from(
19
+ //language=WGSL
20
+ `
21
+ fn ssr_sample_radiance(
22
+ position_ws: vec3f, normal_ws: vec3f, view_direction_ws: vec3f, roughness: f32, coord: vec2u,
23
+ ) -> vec3f {
24
+ return lpv_sample_radiance(position_ws, normal_ws, view_direction_ws, roughness);
25
+ }
26
+ `, [chunk_lpv_sample_radiance]),
27
+ sample_hit_irradiance: CodeChunk.from(
28
+ //language=WGSL
29
+ `
30
+ fn ssr_sample_hit_irradiance(position_ws: vec3f, normal_ws: vec3f, direction_ws: vec3f) -> vec3f {
31
+ return lpv_sample_irradiance(position_ws, normal_ws, direction_ws);
32
+ }
33
+ `, [chunk_lpv_sample_irradiance]),
34
+ });
@@ -5,11 +5,6 @@
5
5
  * @type {CodeChunk}
6
6
  */
7
7
  export const chunk_ssr_history_color_bounding_box_YCoCg: CodeChunk;
8
- /**
9
- * Weight samples more heavily when variance is low (less noise)
10
- * @type {CodeChunk}
11
- */
12
- export const chunk_ssr_variance_weight: CodeChunk;
13
8
  export const ssr_reproject_shader: ImageShader;
14
9
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
15
10
  import { ImageShader } from "../../shader/ImageShader.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ssr_reproject_shader.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js"],"names":[],"mappings":"AA8BA;;;;;GAKG;AACH,yDAFU,SAAS,CA+ElB;AAED;;;GAGG;AACH,wCAFU,SAAS,CASlB;AA4ID,+CASG;0BA7QuB,oCAAoC;4BAClC,6BAA6B"}
1
+ {"version":3,"file":"ssr_reproject_shader.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,yDAFU,SAAS,CA+ElB;AA2ED,+CAGG;0BAjMuB,oCAAoC;4BAClC,6BAA6B"}