@woosh/meep-engine 3.12.0 → 3.13.1

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 (301) hide show
  1. package/package.json +1 -1
  2. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  3. package/src/core/geom/3d/shape/ConvexHullShape3D.js +41 -25
  4. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  5. package/src/core/geom/3d/shape/PosedShape3D.js +7 -2
  6. package/src/engine/graphics3/decal/GPUDecalRenderer.js +3 -3
  7. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  8. package/src/engine/graphics3/decal/shader_decal_composite.js +4 -2
  9. package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
  10. package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +2 -3
  11. package/src/engine/graphics3/highlight/shader_highlight_outline.js +150 -150
  12. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  13. package/src/shade/RENDERER_CONTRACT.md +2 -1
  14. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +18 -0
  15. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
  16. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +73 -0
  17. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +755 -0
  18. package/src/shade/device/ShadeGPUCommandContext.d.ts +10 -16
  19. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  20. package/src/shade/device/ShadeGPUCommandContext.js +801 -994
  21. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +107 -0
  22. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -0
  23. package/src/shade/device/pass/ShadeGPUComputePassEncoder.js +222 -0
  24. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +168 -0
  25. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -0
  26. package/src/shade/device/pass/ShadeGPURenderPassEncoder.js +317 -0
  27. package/src/shade/device/timing/GPUTimerArray.d.ts +4 -9
  28. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  29. package/src/shade/device/timing/GPUTimerArray.js +261 -289
  30. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +20 -2
  31. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts +59 -0
  32. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts.map +1 -0
  33. package/src/shade/device/timing/ShadeGPUContextProfiler.js +182 -0
  34. package/src/shade/device/timing/profile/GPUProfileSession.d.ts +4 -4
  35. package/src/shade/device/timing/profile/GPUProfileSession.js +4 -4
  36. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  37. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +3 -1
  38. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
  39. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +3 -1
  40. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
  41. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +3 -1
  42. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +2 -2
  43. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +2 -2
  44. package/src/shade/renderer/Renderer.d.ts +0 -6
  45. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  46. package/src/shade/renderer/Renderer.js +0 -29
  47. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  48. package/src/shade/renderer/animation/GPUAnimationManager.js +1 -3
  49. package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
  50. package/src/shade/renderer/animation/shader_animation_tick.js +128 -125
  51. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  52. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +8 -18
  53. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
  54. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +100 -98
  55. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
  56. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +215 -212
  57. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts +1 -1
  58. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
  59. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +135 -120
  60. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
  61. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +77 -75
  62. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
  63. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +375 -371
  64. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +3 -3
  65. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +1 -1
  66. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  67. package/src/shade/renderer/buffer/table/GPUDatabase.js +14 -19
  68. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.d.ts.map +1 -1
  69. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.js +7 -2
  70. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  71. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +325 -319
  72. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
  73. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +3 -1
  74. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
  75. package/src/shade/renderer/deferred/shader_tonemap_HDR.js +4 -1
  76. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +2 -2
  77. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
  78. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +167 -167
  79. package/src/shade/renderer/fow/GPUFogOfWarRenderer.js +3 -3
  80. package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
  81. package/src/shade/renderer/fow/shader_fog_of_war.js +3 -1
  82. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -102
  83. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +125 -121
  85. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +766 -774
  87. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
  88. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +72 -69
  89. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  90. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +5 -10
  91. package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +129 -129
  92. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  93. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +5 -3
  94. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  95. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -1
  96. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.js +3 -1
  98. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts.map +1 -1
  99. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.js +114 -112
  100. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts.map +1 -1
  101. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.js +4 -1
  102. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  103. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +187 -184
  104. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
  105. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +4 -1
  106. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  107. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +6 -8
  108. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
  109. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +3 -1
  110. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.d.ts.map +1 -1
  111. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +3 -1
  112. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +3 -3
  113. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +3 -3
  114. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
  115. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  116. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +145 -142
  117. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
  118. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +87 -82
  119. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  120. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +143 -140
  121. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +2 -2
  122. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -1
  123. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +43 -8
  124. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
  125. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +4 -5
  126. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
  127. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +88 -84
  128. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
  129. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +194 -191
  130. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  131. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +33 -69
  132. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  133. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +6 -1
  134. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
  135. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +23 -7
  136. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
  137. package/src/shade/renderer/light/environment/execute_filter_environment_map.js +1 -2
  138. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
  139. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +6 -1
  140. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
  141. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +234 -219
  142. package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +2 -2
  143. package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +191 -191
  144. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.d.ts.map +1 -1
  145. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js +85 -82
  146. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  147. package/src/shade/renderer/particles/graph_particles.js +5 -3
  148. package/src/shade/renderer/particles/prototypeParticleSystem.js +3 -4
  149. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  150. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +132 -117
  151. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  152. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +79 -77
  153. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  154. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +111 -99
  155. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  156. package/src/shade/renderer/particles/sort/shader_particle_sort.js +187 -158
  157. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  158. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +7 -10
  159. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  160. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +4 -1
  161. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.d.ts.map +1 -1
  162. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.js +3 -1
  163. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.d.ts.map +1 -1
  164. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.js +4 -2
  165. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +147 -147
  166. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts.map +1 -1
  167. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +121 -119
  168. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.d.ts.map +1 -1
  169. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.js +1 -2
  170. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.d.ts.map +1 -1
  171. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.js +4 -1
  172. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.d.ts.map +1 -1
  173. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.js +4 -1
  174. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.d.ts.map +1 -1
  175. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.js +4 -1
  176. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.d.ts.map +1 -1
  177. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.js +4 -1
  178. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.d.ts.map +1 -1
  179. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +2 -4
  180. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.d.ts.map +1 -1
  181. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.js +4 -1
  182. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.d.ts.map +1 -1
  183. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.js +4 -1
  184. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.d.ts.map +1 -1
  185. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.js +4 -1
  186. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  187. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +269 -266
  188. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  189. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +273 -270
  190. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.d.ts.map +1 -1
  191. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.js +4 -1
  192. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  193. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +8 -11
  194. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
  195. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +5 -1
  196. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  197. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +11 -8
  198. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  199. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +7 -8
  200. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.d.ts.map +1 -1
  201. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +3 -1
  202. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  203. package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
  204. package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +70 -68
  205. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +1 -1
  206. package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +70 -68
  207. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
  208. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +3 -1
  209. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
  210. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +4 -1
  211. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +1 -1
  212. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +103 -101
  213. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  214. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -2
  215. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.d.ts.map +1 -1
  216. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.js +3 -1
  217. package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
  218. package/src/shade/renderer/postprocess/taa/shader_taa.js +4 -1
  219. package/src/shade/renderer/postprocess/upscale-dither/fragment_shader_upscale_dither.js +5 -5
  220. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  221. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +339 -341
  222. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
  223. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +114 -109
  224. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
  225. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +118 -115
  226. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
  227. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +69 -65
  228. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +722 -722
  229. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  230. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +1 -9
  231. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  232. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +1 -6
  233. package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
  234. package/src/shade/renderer/restir/di/graph_restir_di.js +2 -3
  235. package/src/shade/renderer/restir/di/graph_restir_di_denoise.d.ts.map +1 -1
  236. package/src/shade/renderer/restir/di/graph_restir_di_denoise.js +1 -2
  237. package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
  238. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +139 -136
  239. package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
  240. package/src/shade/renderer/restir/di/shader_restir_di_resample.js +131 -129
  241. package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
  242. package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +101 -99
  243. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  244. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +379 -383
  245. package/src/shade/renderer/scene/Mesh.d.ts.map +1 -1
  246. package/src/shade/renderer/scene/Mesh.js +4 -6
  247. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
  248. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +147 -144
  249. package/src/shade/renderer/shader/ComputeShader.d.ts +2 -2
  250. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  251. package/src/shade/renderer/shader/ComputeShader.js +14 -17
  252. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +2 -2
  253. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  254. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +189 -189
  255. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  256. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +3 -1
  257. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +16 -7
  258. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  259. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1342 -1326
  260. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +13 -0
  261. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  262. package/src/shade/renderer/shadow/map/Shadowmap.js +14 -0
  263. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts +79 -0
  264. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -0
  265. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +196 -0
  266. package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts +91 -0
  267. package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts.map +1 -0
  268. package/src/shade/renderer/shadow/map/ShadowmapRegistry.js +156 -0
  269. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.d.ts.map +1 -1
  270. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.js +5 -1
  271. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.d.ts.map +1 -1
  272. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +3 -1
  273. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +73 -73
  274. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
  275. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +151 -148
  276. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts.map +1 -1
  277. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +4 -2
  278. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.d.ts.map +1 -1
  279. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.js +18 -4
  280. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
  281. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +7 -8
  282. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.d.ts.map +1 -1
  283. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.js +6 -2
  284. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.d.ts.map +1 -1
  285. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.js +129 -127
  286. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  287. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +5 -3
  288. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
  289. package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +2 -5
  290. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  291. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +233 -231
  292. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  293. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
  294. package/src/shade/wgsl/validate_wgsl_source.d.ts.map +1 -1
  295. package/src/shade/wgsl/validate_wgsl_source.js +8 -3
  296. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts +0 -21
  297. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts.map +0 -1
  298. package/src/shade/device/timing/profile/make_profiling_pass_encoder.js +0 -114
  299. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts +0 -20
  300. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts.map +0 -1
  301. package/src/shade/device/timing/profile/parse_workgroup_size.js +0 -43
@@ -1,192 +1,192 @@
1
- import {
2
- VIZ_BUFFER_INVALID_MESH_VALUE
3
- } from "../../rasterize/native/viz/VIZ_BUFFER_INVALID_MESH_VALUE.js";
4
- import { ATORUS_UNIFORMS_STRUCT } from "../../postprocess/denoise/fragment_shader_denoise_ao.js";
5
- import { chunk_filter_gaussian } from "../../shader/chunk/filter/chunk_filter_gaussian.js";
6
- import {
7
- METRO_L1_IRRADIANCE_STRUCT
8
- } from "../../shader/chunk/spherical_harmonics/l1i/chunk_convert_to_irradiance_sh.js";
9
- import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
10
- import { ImageShader } from "../../shader/ImageShader.js";
11
- import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
12
- import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
13
- import { chunk_texture_load_sh } from "./chunk_texture_load_sh.js";
14
- import { LIGHTMAP_SH_COLOR_TARGETS_DESCRIPTOR } from "./LIGHTMAP_SH_COLOR_TARGETS_DESCRIPTOR.js";
15
- import { LIGHTMAP_SH_FRAGMENT_OUTPUT } from "./LIGHTMAP_SH_FRAGMENT_OUTPUT.js";
16
-
17
-
18
- const resources = new ShaderResourceSetDescriptor();
19
-
20
- resources.createGroup()
21
- .addUniform("settings", ATORUS_UNIFORMS_STRUCT);
22
-
23
- resources.createGroup()
24
- .addTexture("viz_buffer", "uint")
25
- .addTexture("lightmap_Y", "unfilterable-float")
26
- .addTexture("lightmap_CoCg", "unfilterable-float")
27
-
28
- /**
29
- * We can use this to derive a single variance value
30
- * @type {CodeChunk}
31
- */
32
- export const chunk_estimate_sh_similarity = CodeChunk.from(
33
- //language=WGSL
34
- `
35
- fn estimate_sh_similarity(
36
- a: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref},
37
- b: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref}
38
- ) -> f32 {
39
- // extract dominant luma direction
40
- // Metro encodes SH coeffcients in axis-aligned way (L11, L1_1, L10) with L00 being in forth position (w)
41
-
42
- let a_luma_direction = a.Y.xyz / a.Y.w;
43
- let b_luma_direction = b.Y.xyz / b.Y.w;
44
-
45
- const DIRECTION_PHI = 10.0;
46
-
47
- // Soften the direction, so that there is always some similarity. The exponent argument is a
48
- // DISTANCE (0 = aligned, 1 = opposite), so aligned directions get the highest weight.
49
- let direction_similarity = exp( - max(0.0001, ( 1.0 - dot(a_luma_direction, b_luma_direction) ) * 0.5) / DIRECTION_PHI);
50
-
51
- const LUMA_PHI = 10.0;
52
-
53
- let luma_similarity = exp( - max(0.0001, abs( a.Y.w - b.Y.w )) / LUMA_PHI);
54
-
55
- const COLOR_PHI = 3.0;
56
-
57
- let color_similarity = exp( min(0.0, -dot(vec2(a.CoCg * a.Y.w), vec2(b.CoCg * b.Y.w))) / COLOR_PHI );
58
-
59
- return luma_similarity * color_similarity * direction_similarity;
60
- }
61
- `, [
62
- METRO_L1_IRRADIANCE_STRUCT.declaration_chunk,
63
- ]
64
- );
65
-
66
- const chunk_edge_stopping_weight = CodeChunk.from(
67
- //language=WGSL
68
- `
69
- fn edge_stopping_weight(
70
- center_viz: vec2u,
71
- sample_viz: vec2u,
72
- center_sh: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref},
73
- sample_sh: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref},
74
- ) -> f32{
75
- var result: f32 = 1.0;
76
-
77
- // different meshes
78
- result *= select(0.0,1.0,center_viz.x == sample_viz.x);
79
-
80
- result *= estimate_sh_similarity(center_sh, sample_sh);
81
-
82
- return saturate(result);
83
- }
84
- `, [
85
- METRO_L1_IRRADIANCE_STRUCT.declaration_chunk,
86
- chunk_estimate_sh_similarity
87
- ]
88
- );
89
-
90
-
91
- const body = CodeChunk.from(
92
- //language=WGSL
93
- `
94
-
95
- @fragment
96
- fn main(
97
- @builtin(position) coord: vec4<f32>,
98
- ) -> ${LIGHTMAP_SH_FRAGMENT_OUTPUT.wgsl_ref}{
99
- let ipos = vec2<i32>(coord.xy);
100
- let screen_size = vec2<i32>(textureDimensions(lightmap_Y));
101
-
102
- let center_sh = texture_load_sh(ipos);
103
-
104
- var accummulated_sample = center_sh;
105
- var sum_weight = 1.0;
106
-
107
- let center_viz = textureLoad(viz_buffer, ipos, 0).rg;
108
-
109
- if(center_viz.x == ${VIZ_BUFFER_INVALID_MESH_VALUE}){
110
- // not a valid sample
111
- discard ;
112
- }
113
-
114
- // TODO compute variance and mean
115
- // use similarity measure code for variance
116
-
117
- // TODO drive blur using variance
118
-
119
- // TODO use G-buffer to drive world-space edge-weight metric
120
-
121
- // TODO for texels with very high variance we can relax the directional component (L1 of SH)
122
-
123
- const KERNEL_SIZE = 7;
124
-
125
- for(var y = -KERNEL_SIZE; y <= KERNEL_SIZE; y++){
126
- for(var x = -KERNEL_SIZE; x <= KERNEL_SIZE; x++){
127
-
128
- if(x == 0 && y == 0){
129
- // skip center sample
130
- continue;
131
- }
132
-
133
- let offset = vec2<i32>(x, y);
134
-
135
- let p = ipos + offset;
136
- let inside = all(p >= vec2(0, 0)) && all(p < screen_size);
137
-
138
- if(!inside){
139
- continue;
140
- }
141
-
142
- const GAUSSIAN_SIGMA = KERNEL_SIZE*0.25;
143
-
144
- let kernel = filter_gaussian( GAUSSIAN_SIGMA, f32(x) ) * filter_gaussian( GAUSSIAN_SIGMA, f32(y) );
145
-
146
- let sample_viz = textureLoad(viz_buffer, p, 0).rg;
147
-
148
- let sample_sh = texture_load_sh(p);
149
-
150
- // edge-stopping function
151
- let edge_weight = edge_stopping_weight(
152
- center_viz,
153
- sample_viz,
154
- center_sh,
155
- sample_sh
156
- );
157
-
158
- let weight = edge_weight * kernel;
159
-
160
-
161
- accummulated_sample.Y += sample_sh.Y * weight;
162
- accummulated_sample.CoCg += sample_sh.CoCg * weight;
163
-
164
- sum_weight += weight;
165
-
166
- }
167
- }
168
-
169
- accummulated_sample.Y /= sum_weight;
170
- accummulated_sample.CoCg /= sum_weight;
171
-
172
- return ${LIGHTMAP_SH_FRAGMENT_OUTPUT.make({
173
- Y:"accummulated_sample.Y",
174
- CoCg:"accummulated_sample.CoCg"
175
- })};
176
- }
177
- `, [
178
- chunk_edge_stopping_weight,
179
- chunk_texture_load_sh,
180
- LIGHTMAP_SH_FRAGMENT_OUTPUT.declaration_chunk,
181
- METRO_L1_IRRADIANCE_STRUCT.declaration_chunk,
182
- chunk_filter_gaussian,
183
- ]);
184
-
185
- export const shader_lightmap_denoise_sh = ImageShader.from({
186
- descriptor: ShaderDescriptor.from({
187
- label: "Light Map / denoise SH",
188
- body,
189
- resources,
190
- }),
191
- targets: LIGHTMAP_SH_COLOR_TARGETS_DESCRIPTOR
1
+ import {
2
+ VIZ_BUFFER_INVALID_MESH_VALUE
3
+ } from "../../rasterize/native/viz/VIZ_BUFFER_INVALID_MESH_VALUE.js";
4
+ import { ATORUS_UNIFORMS_STRUCT } from "../../postprocess/denoise/fragment_shader_denoise_ao.js";
5
+ import { chunk_filter_gaussian } from "../../shader/chunk/filter/chunk_filter_gaussian.js";
6
+ import {
7
+ METRO_L1_IRRADIANCE_STRUCT
8
+ } from "../../shader/chunk/spherical_harmonics/l1i/chunk_convert_to_irradiance_sh.js";
9
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
10
+ import { ImageShader } from "../../shader/ImageShader.js";
11
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
12
+ import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
13
+ import { chunk_texture_load_sh } from "./chunk_texture_load_sh.js";
14
+ import { LIGHTMAP_SH_COLOR_TARGETS_DESCRIPTOR } from "./LIGHTMAP_SH_COLOR_TARGETS_DESCRIPTOR.js";
15
+ import { LIGHTMAP_SH_FRAGMENT_OUTPUT } from "./LIGHTMAP_SH_FRAGMENT_OUTPUT.js";
16
+
17
+
18
+ const resources = new ShaderResourceSetDescriptor();
19
+
20
+ // per-pass, four bytes, read-only: immediate data rather than a uniform buffer
21
+ resources.setImmediate("settings", ATORUS_UNIFORMS_STRUCT);
22
+
23
+ resources.createGroup()
24
+ .addTexture("viz_buffer", "uint")
25
+ .addTexture("lightmap_Y", "unfilterable-float")
26
+ .addTexture("lightmap_CoCg", "unfilterable-float")
27
+
28
+ /**
29
+ * We can use this to derive a single variance value
30
+ * @type {CodeChunk}
31
+ */
32
+ export const chunk_estimate_sh_similarity = CodeChunk.from(
33
+ //language=WGSL
34
+ `
35
+ fn estimate_sh_similarity(
36
+ a: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref},
37
+ b: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref}
38
+ ) -> f32 {
39
+ // extract dominant luma direction
40
+ // Metro encodes SH coeffcients in axis-aligned way (L11, L1_1, L10) with L00 being in forth position (w)
41
+
42
+ let a_luma_direction = a.Y.xyz / a.Y.w;
43
+ let b_luma_direction = b.Y.xyz / b.Y.w;
44
+
45
+ const DIRECTION_PHI = 10.0;
46
+
47
+ // Soften the direction, so that there is always some similarity. The exponent argument is a
48
+ // DISTANCE (0 = aligned, 1 = opposite), so aligned directions get the highest weight.
49
+ let direction_similarity = exp( - max(0.0001, ( 1.0 - dot(a_luma_direction, b_luma_direction) ) * 0.5) / DIRECTION_PHI);
50
+
51
+ const LUMA_PHI = 10.0;
52
+
53
+ let luma_similarity = exp( - max(0.0001, abs( a.Y.w - b.Y.w )) / LUMA_PHI);
54
+
55
+ const COLOR_PHI = 3.0;
56
+
57
+ let color_similarity = exp( min(0.0, -dot(vec2(a.CoCg * a.Y.w), vec2(b.CoCg * b.Y.w))) / COLOR_PHI );
58
+
59
+ return luma_similarity * color_similarity * direction_similarity;
60
+ }
61
+ `, [
62
+ METRO_L1_IRRADIANCE_STRUCT.declaration_chunk,
63
+ ]
64
+ );
65
+
66
+ const chunk_edge_stopping_weight = CodeChunk.from(
67
+ //language=WGSL
68
+ `
69
+ fn edge_stopping_weight(
70
+ center_viz: vec2u,
71
+ sample_viz: vec2u,
72
+ center_sh: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref},
73
+ sample_sh: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref},
74
+ ) -> f32{
75
+ var result: f32 = 1.0;
76
+
77
+ // different meshes
78
+ result *= select(0.0,1.0,center_viz.x == sample_viz.x);
79
+
80
+ result *= estimate_sh_similarity(center_sh, sample_sh);
81
+
82
+ return saturate(result);
83
+ }
84
+ `, [
85
+ METRO_L1_IRRADIANCE_STRUCT.declaration_chunk,
86
+ chunk_estimate_sh_similarity
87
+ ]
88
+ );
89
+
90
+
91
+ const body = CodeChunk.from(
92
+ //language=WGSL
93
+ `
94
+
95
+ @fragment
96
+ fn main(
97
+ @builtin(position) coord: vec4<f32>,
98
+ ) -> ${LIGHTMAP_SH_FRAGMENT_OUTPUT.wgsl_ref}{
99
+ let ipos = vec2<i32>(coord.xy);
100
+ let screen_size = vec2<i32>(textureDimensions(lightmap_Y));
101
+
102
+ let center_sh = texture_load_sh(ipos);
103
+
104
+ var accummulated_sample = center_sh;
105
+ var sum_weight = 1.0;
106
+
107
+ let center_viz = textureLoad(viz_buffer, ipos, 0).rg;
108
+
109
+ if(center_viz.x == ${VIZ_BUFFER_INVALID_MESH_VALUE}){
110
+ // not a valid sample
111
+ discard ;
112
+ }
113
+
114
+ // TODO compute variance and mean
115
+ // use similarity measure code for variance
116
+
117
+ // TODO drive blur using variance
118
+
119
+ // TODO use G-buffer to drive world-space edge-weight metric
120
+
121
+ // TODO for texels with very high variance we can relax the directional component (L1 of SH)
122
+
123
+ const KERNEL_SIZE = 7;
124
+
125
+ for(var y = -KERNEL_SIZE; y <= KERNEL_SIZE; y++){
126
+ for(var x = -KERNEL_SIZE; x <= KERNEL_SIZE; x++){
127
+
128
+ if(x == 0 && y == 0){
129
+ // skip center sample
130
+ continue;
131
+ }
132
+
133
+ let offset = vec2<i32>(x, y);
134
+
135
+ let p = ipos + offset;
136
+ let inside = all(p >= vec2(0, 0)) && all(p < screen_size);
137
+
138
+ if(!inside){
139
+ continue;
140
+ }
141
+
142
+ const GAUSSIAN_SIGMA = KERNEL_SIZE*0.25;
143
+
144
+ let kernel = filter_gaussian( GAUSSIAN_SIGMA, f32(x) ) * filter_gaussian( GAUSSIAN_SIGMA, f32(y) );
145
+
146
+ let sample_viz = textureLoad(viz_buffer, p, 0).rg;
147
+
148
+ let sample_sh = texture_load_sh(p);
149
+
150
+ // edge-stopping function
151
+ let edge_weight = edge_stopping_weight(
152
+ center_viz,
153
+ sample_viz,
154
+ center_sh,
155
+ sample_sh
156
+ );
157
+
158
+ let weight = edge_weight * kernel;
159
+
160
+
161
+ accummulated_sample.Y += sample_sh.Y * weight;
162
+ accummulated_sample.CoCg += sample_sh.CoCg * weight;
163
+
164
+ sum_weight += weight;
165
+
166
+ }
167
+ }
168
+
169
+ accummulated_sample.Y /= sum_weight;
170
+ accummulated_sample.CoCg /= sum_weight;
171
+
172
+ return ${LIGHTMAP_SH_FRAGMENT_OUTPUT.make({
173
+ Y:"accummulated_sample.Y",
174
+ CoCg:"accummulated_sample.CoCg"
175
+ })};
176
+ }
177
+ `, [
178
+ chunk_edge_stopping_weight,
179
+ chunk_texture_load_sh,
180
+ LIGHTMAP_SH_FRAGMENT_OUTPUT.declaration_chunk,
181
+ METRO_L1_IRRADIANCE_STRUCT.declaration_chunk,
182
+ chunk_filter_gaussian,
183
+ ]);
184
+
185
+ export const shader_lightmap_denoise_sh = ImageShader.from({
186
+ descriptor: ShaderDescriptor.from({
187
+ label: "Light Map / denoise SH",
188
+ body,
189
+ resources,
190
+ }),
191
+ targets: LIGHTMAP_SH_COLOR_TARGETS_DESCRIPTOR
192
192
  })
@@ -1 +1 @@
1
- {"version":3,"file":"shader_lightmap_accummulate_tile.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js"],"names":[],"mappings":"AAoDA,2DA8BE;4BA7E0B,gCAAgC"}
1
+ {"version":3,"file":"shader_lightmap_accummulate_tile.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js"],"names":[],"mappings":"AAuDA,2DA8BE;4BAhF0B,gCAAgC"}
@@ -1,83 +1,86 @@
1
- import { vec2u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
- import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
3
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
4
- import { INDIRECT_MATERIAL_ARRAY_TYPE } from "../../../material/resident/INDIRECT_MATERIAL_ARRAY_TYPE.js";
5
- import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
6
- import { ImageShader } from "../../../shader/ImageShader.js";
7
- import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
8
- import { ShaderDescriptor } from "../../../shader/ShaderDescriptor.js";
9
- import { sr_create_group_RTX } from "../../../geometry/sr_create_group_RTX.js";
10
-
11
- const PUSH_CONSTANTS = WebGPUStruct.from({
12
- /**
13
- * Offset into the light map where the tile maps onto
14
- */
15
- offset: vec2u,
16
-
17
- });
18
-
19
- const resources = new ShaderResourceSetDescriptor();
20
-
21
- sr_create_group_RTX(resources);
22
-
23
- resources.createGroup()
24
- .addUniform("materials", INDIRECT_MATERIAL_ARRAY_TYPE)
25
- .addTexture("textures", "unfilterable-float", "2d-array")
26
- .addTexture("tNoise", "uint")
27
-
28
- resources.createGroup()
29
- .addStorageBuffer("light_data", WebGPUArray.u32)
30
- .addTexture("tEnvironment", "unfilterable-float", "2d")
31
-
32
- resources.createGroup()
33
- .addUniform("settings", PUSH_CONSTANTS)
34
- .addTexture("viz_buffer", "uint") // [mesh, triangle]
35
-
36
-
37
- const body = CodeChunk.from(
38
- //language=WGSL
39
- `
40
-
41
- @fragment
42
- fn main(
43
- @builtin(position) coord: vec4<f32>,
44
- ) -> @location(0) vec4<f32>{
45
-
46
- let ipos = vec2<i32>(coord.xy);
47
-
48
-
49
- }
50
- `
51
- );
52
-
53
- export const shader_lightmap_accummulate_tile = ImageShader.from({
54
- descriptor: ShaderDescriptor.from({
55
- label: "Lightmap accummulate tile",
56
- body,
57
- resources,
58
- }),
59
- targets: [
60
- // Y
61
- {
62
- format: "rgba32float",
63
- blend: {
64
- color: {
65
- operation: "add",
66
- srcFactor: "one",
67
- dstFactor: "one",
68
- }
69
- }
70
- },
71
- // CoCg
72
- {
73
- format: "rg32float",
74
- blend: {
75
- color: {
76
- operation: "add",
77
- srcFactor: "one",
78
- dstFactor: "one",
79
- }
80
- }
81
- }
82
- ]
1
+ import { vec2u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
+ import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
3
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
4
+ import { INDIRECT_MATERIAL_ARRAY_TYPE } from "../../../material/resident/INDIRECT_MATERIAL_ARRAY_TYPE.js";
5
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
6
+ import { ImageShader } from "../../../shader/ImageShader.js";
7
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
8
+ import { ShaderDescriptor } from "../../../shader/ShaderDescriptor.js";
9
+ import { sr_create_group_RTX } from "../../../geometry/sr_create_group_RTX.js";
10
+
11
+ const PUSH_CONSTANTS = WebGPUStruct.from({
12
+ /**
13
+ * Offset into the light map where the tile maps onto
14
+ */
15
+ offset: vec2u,
16
+
17
+ });
18
+
19
+ const resources = new ShaderResourceSetDescriptor();
20
+
21
+ // per-dispatch, eight bytes, read-only: immediate data rather than a uniform buffer. The material
22
+ // table beside it is scene state and stays bound.
23
+ resources.setImmediate("settings", PUSH_CONSTANTS);
24
+
25
+ sr_create_group_RTX(resources);
26
+
27
+ resources.createGroup()
28
+ .addUniform("materials", INDIRECT_MATERIAL_ARRAY_TYPE)
29
+ .addTexture("textures", "unfilterable-float", "2d-array")
30
+ .addTexture("tNoise", "uint")
31
+
32
+ resources.createGroup()
33
+ .addStorageBuffer("light_data", WebGPUArray.u32)
34
+ .addTexture("tEnvironment", "unfilterable-float", "2d")
35
+
36
+ resources.createGroup()
37
+ .addTexture("viz_buffer", "uint") // [mesh, triangle]
38
+
39
+
40
+ const body = CodeChunk.from(
41
+ //language=WGSL
42
+ `
43
+
44
+ @fragment
45
+ fn main(
46
+ @builtin(position) coord: vec4<f32>,
47
+ ) -> @location(0) vec4<f32>{
48
+
49
+ let ipos = vec2<i32>(coord.xy);
50
+
51
+
52
+ }
53
+ `
54
+ );
55
+
56
+ export const shader_lightmap_accummulate_tile = ImageShader.from({
57
+ descriptor: ShaderDescriptor.from({
58
+ label: "Lightmap accummulate tile",
59
+ body,
60
+ resources,
61
+ }),
62
+ targets: [
63
+ // Y
64
+ {
65
+ format: "rgba32float",
66
+ blend: {
67
+ color: {
68
+ operation: "add",
69
+ srcFactor: "one",
70
+ dstFactor: "one",
71
+ }
72
+ }
73
+ },
74
+ // CoCg
75
+ {
76
+ format: "rg32float",
77
+ blend: {
78
+ color: {
79
+ operation: "add",
80
+ srcFactor: "one",
81
+ dstFactor: "one",
82
+ }
83
+ }
84
+ }
85
+ ]
83
86
  })
@@ -1 +1 @@
1
- {"version":3,"file":"graph_particles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH;IApBkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,GAAG;QACI,QAAQ;QACR,OAAO;QACP,SAAS;QACT,IAAI;QACJ,UAAU;QACV,WAAW;QACX,IAAI;QACJ,QAAQ;QACR,cAAc;QACd,aAAa;QACb,SAAS;;IAChB,QAAQ,EAAvB,MAAM;IACS,KAAK;QACC,EAAE,EAAvB,MAAM;QACe,IAAI,EAAzB,MAAM;QACe,KAAK,EAA1B,MAAM;QACe,WAAW,EAAhC,MAAM;;;;;;;;EAoFhB"}
1
+ {"version":3,"file":"graph_particles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH;IApBkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,GAAG;QACI,QAAQ;QACR,OAAO;QACP,SAAS;QACT,IAAI;QACJ,UAAU;QACV,WAAW;QACX,IAAI;QACJ,QAAQ;QACR,cAAc;QACd,aAAa;QACb,SAAS;;IAChB,QAAQ,EAAvB,MAAM;IACS,KAAK;QACC,EAAE,EAAvB,MAAM;QACe,IAAI,EAAzB,MAAM;QACe,KAAK,EAA1B,MAAM;QACe,WAAW,EAAhC,MAAM;;;;;;;;EAsFhB"}
@@ -92,8 +92,10 @@ export function graph_particles({ graph, gpu, capacity, frame }) {
92
92
  bindings: {
93
93
  emitters: gr_emitters, program: gr_program, vm_constants: gr_constants,
94
94
  pool, spawn_requests: gr_spawn, alive_out: alive_write, dead, counters,
95
- u_dt: frame.dt, u_time: frame.time, u_frame: frame.index,
96
- u_count: frame.spawn_count, u_capacity: capacity,
95
+ settings: {
96
+ u_dt: frame.dt, u_time: frame.time, u_frame: frame.index,
97
+ u_count: frame.spawn_count, u_capacity: capacity,
98
+ },
97
99
  },
98
100
  group_count: [Math.ceil(frame.spawn_count / PARTICLE_EMIT_WORKGROUP_SIZE), 1, 1],
99
101
  });
@@ -111,7 +113,7 @@ export function graph_particles({ graph, gpu, capacity, frame }) {
111
113
  bindings: {
112
114
  emitters: gr_emitters, program: gr_program, vm_constants: gr_constants,
113
115
  pool, alive_in: gr_alive_read, alive_out: alive_write, dead, counters,
114
- u_dt: frame.dt, u_time: frame.time, u_frame: frame.index,
116
+ settings: { u_dt: frame.dt, u_time: frame.time, u_frame: frame.index },
115
117
  },
116
118
  command: gr_dispatch,
117
119
  });
@@ -177,7 +177,6 @@ async function main() {
177
177
  if (requests.length > 0) device.queue.writeBuffer(spawnRequests, 0, requests);
178
178
 
179
179
  const cmd = ShadeGPUCommandContext.create(graphics);
180
- const u = (type, value) => cmd.allocateTransientValueBuffer(type, value, GPUBufferUsage.UNIFORM);
181
180
  const colorView = context.getCurrentTexture().createView();
182
181
 
183
182
  // --- geometry pass: clear colour + reverse-Z depth (far = 0), lit, writes depth ---
@@ -196,19 +195,19 @@ async function main() {
196
195
  if (requests.length > 0) {
197
196
  shader_particle_emit.dispatchThreads({
198
197
  encoder: cmd,
199
- bindings: { emitters, program, vm_constants: constants, pool, spawn_requests: spawnRequests, alive_out: aliveWrite, dead, counters, u_dt: u(f32, dt), u_time: u(f32, now / 1000), u_frame: u(u32, system.frame), u_count: u(u32, requests.length), u_capacity: u(u32, CAPACITY) },
198
+ bindings: { emitters, program, vm_constants: constants, pool, spawn_requests: spawnRequests, alive_out: aliveWrite, dead, counters, settings: { u_dt: dt, u_time: now / 1000, u_frame: system.frame, u_count: requests.length, u_capacity: CAPACITY } },
200
199
  thread_count_x: requests.length,
201
200
  });
202
201
  }
203
202
  shader_particle_simulate.dispatchIndirect({
204
203
  encoder: cmd,
205
- bindings: { emitters, program, vm_constants: constants, pool, alive_in: aliveRead, alive_out: aliveWrite, dead, counters, u_dt: u(f32, dt), u_time: u(f32, now / 1000), u_frame: u(u32, system.frame) },
204
+ bindings: { emitters, program, vm_constants: constants, pool, alive_in: aliveRead, alive_out: aliveWrite, dead, counters, settings: { u_dt: dt, u_time: now / 1000, u_frame: system.frame } },
206
205
  command: dispatchArgs,
207
206
  });
208
207
  // Snapshot the final alive count (next frame's simulate input) + write this frame's draw args.
209
208
  shader_particle_build_indirect.dispatch({
210
209
  encoder: cmd,
211
- bindings: { counters, dispatch_args: dispatchArgs, draw_args: drawArgs, u_workgroup_size: u(u32, PARTICLE_SIMULATE_WORKGROUP_SIZE) },
210
+ bindings: { counters, dispatch_args: dispatchArgs, draw_args: drawArgs, u_workgroup_size: PARTICLE_SIMULATE_WORKGROUP_SIZE },
212
211
  group_count_x: 1,
213
212
  });
214
213
 
@@ -1 +1 @@
1
- {"version":3,"file":"shader_particle_emit.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_emit.js"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;GAYG;AAEH,2CAHU,aAAa,CAGwB;AA+E/C,iDAIG;8BAlH2B,+BAA+B"}
1
+ {"version":3,"file":"shader_particle_emit.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_emit.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;GAYG;AAEH,2CAHU,aAAa,CAGwB;AA6F/C,iDAIG;8BAhI2B,+BAA+B"}