@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 +1 @@
1
- {"version":3,"file":"shader_autoexposure_adapt.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js"],"names":[],"mappings":"AASA,sDAsBE;AA4EF,sDAIG;6BA9G0B,mCAAmC;8BAElC,+BAA+B"}
1
+ {"version":3,"file":"shader_autoexposure_adapt.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js"],"names":[],"mappings":"AASA,sDAsBE;AAgFF,sDAIG;6BAlH0B,mCAAmC;8BAElC,+BAA+B"}
@@ -31,10 +31,14 @@ export const ADAPTATION_SETTINGS_STRUCT = WebGPUStruct.from({
31
31
  compensation: f32,
32
32
  })
33
33
 
34
+
35
+ // per-dispatch, 20 bytes, read-only: immediate data rather than a uniform buffer. goal and previous
36
+ // stay bound - they hold GPU-computed exposure state, not values the CPU has at encode time.
37
+ resources.setImmediate("settings", ADAPTATION_SETTINGS_STRUCT);
38
+
34
39
  resources.createGroup()
35
40
  .addUniform("goal", F32_CONTAINER_STRUCT)
36
41
  .addUniform("previous", F32_CONTAINER_STRUCT)
37
- .addUniform("settings", ADAPTATION_SETTINGS_STRUCT)
38
42
  .addStorageBuffer("adapted", F32_CONTAINER_STRUCT, true)
39
43
  .addStorageBuffer("out_multiplier", F32_CONTAINER_STRUCT, true)
40
44
  ;
@@ -1 +1 @@
1
- {"version":3,"file":"fragment_shader_gtao.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js"],"names":[],"mappings":"AAoEA;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,8CAA+C;AAE/C;;;;GAIG;AACH,iCAFU,MAAM,CAEoB;AAmQpC,+CA6BG;4BAtWyB,6BAA6B"}
1
+ {"version":3,"file":"fragment_shader_gtao.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js"],"names":[],"mappings":"AAyEA;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,8CAA+C;AAE/C;;;;GAIG;AACH,iCAFU,MAAM,CAEoB;AAiQpC,+CA6BG;4BA1WyB,6BAA6B"}
@@ -11,24 +11,29 @@ import { chunk_fast_acos } from "../../shader/chunk/math/fast/chunk_fast_acos.js
11
11
  import { PI_DECLARATION } from "../../shader/chunk/math/PI_DECLARATION.js";
12
12
  import { PI_HALF_DECLARATION } from "../../shader/chunk/math/PI_HALF_DECLARATION.js";
13
13
  import { chunk_spatio_temporal_noise_r2_64 } from "../../shader/chunk/noise/chunk_spatio_temporal_noise_r2_64.js";
14
- import { chunk_texture_sample_nearest_uv } from "../../shader/chunk/texture/sample/chunk_texture_sample_nearest_uv.js";
15
14
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
16
15
  import { ImageShader } from "../../shader/ImageShader.js";
17
16
  import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
18
17
  import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
19
18
  import { HILBERT_R2_INDEX_TEXTURE } from "../../texture/noise/HILBERT_R2_INDEX_TEXTURE.js";
19
+ import { SAMPLER_NEAREST } from "../../texture/SAMPLER_LINEAR_UPSCALE.js";
20
20
  import { chunk_integrate_bent_normal_fast } from "./chunk_integrate_bent_normal_fast.js";
21
21
  import { GTAO_RENDER_SETTINGS } from "./GTAO_RENDER_SETTINGS.js";
22
22
 
23
23
  const resources = new ShaderResourceSetDescriptor();
24
+
25
+ // per-pass, four bytes, read-only: immediate data rather than a uniform buffer.
26
+ //
27
+ // The uniform carried a `frame_index: 0` default, which does not travel: immediate data has no
28
+ // default, and a dispatch that never wrote its slots is refused rather than reading zero. GTAO
29
+ // passes frame_index on every dispatch, so nothing relied on it.
30
+ resources.setImmediate("settings", GTAO_RENDER_SETTINGS);
24
31
  resources.createGroup()
25
32
  .addTexture("tDepth")
33
+ .addSampler("sPoint", "non-filtering", SAMPLER_NEAREST)
26
34
  .addTexture("tNormal", "uint")
27
35
  .addTexture("tNoise", "uint", "2d", false, HILBERT_R2_INDEX_TEXTURE)
28
36
  .addUniform("camera", CAMERA_UNIFORM_STRUCT)
29
- .addUniform("settings", GTAO_RENDER_SETTINGS, {
30
- frame_index: 0,
31
- })
32
37
  ;
33
38
 
34
39
  const QualityType = {
@@ -238,12 +243,11 @@ fn main(
238
243
 
239
244
  let sampleScreenPos0 = uv + sampleOffset;
240
245
 
241
- // TODO replace with an actual texture sampler
242
- let SZ0 = texture_sample_nearest_uv(tDepth, sampleScreenPos0, mipLevel).x;
246
+ let SZ0 = textureSampleLevel(tDepth, sPoint, sampleScreenPos0, mipLevel).x;
243
247
  let samplePos0 = project_position_from_depth(sampleScreenPos0, SZ0, camera.view_projection_matrix_inverse);
244
248
 
245
249
  let sampleScreenPos1 = uv - sampleOffset;
246
- let SZ1 = texture_sample_nearest_uv(tDepth, sampleScreenPos1, mipLevel).x;
250
+ let SZ1 = textureSampleLevel(tDepth, sPoint, sampleScreenPos1, mipLevel).x;
247
251
  let samplePos1 = project_position_from_depth(sampleScreenPos1, SZ1, camera.view_projection_matrix_inverse);
248
252
 
249
253
  let sampleDelta0 = (samplePos0 - position_ws); // using lpfloat for sampleDelta causes precision issues
@@ -326,7 +330,6 @@ fn main(
326
330
  }
327
331
  `, [
328
332
  chunk_get_view_space_depth,
329
- chunk_texture_sample_nearest_uv,
330
333
  PI_DECLARATION,
331
334
  PI_HALF_DECLARATION,
332
335
 
@@ -1 +1 @@
1
- {"version":3,"file":"fragment_shader_gtao_with_irradiance.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js"],"names":[],"mappings":"AA2EA;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,8CAA+C;AAE/C;;;;GAIG;AACH,iCAFU,MAAM,CAEoB;AA4TpC,+DAkCG;4BAxayB,6BAA6B"}
1
+ {"version":3,"file":"fragment_shader_gtao_with_irradiance.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js"],"names":[],"mappings":"AA4EA;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,8CAA+C;AAE/C;;;;GAIG;AACH,iCAFU,MAAM,CAEoB;AA0TpC,+DAkCG;4BAxayB,6BAA6B"}
@@ -14,28 +14,29 @@ import { chunk_fast_acos } from "../../shader/chunk/math/fast/chunk_fast_acos.js
14
14
  import { PI_DECLARATION } from "../../shader/chunk/math/PI_DECLARATION.js";
15
15
  import { PI_HALF_DECLARATION } from "../../shader/chunk/math/PI_HALF_DECLARATION.js";
16
16
  import { chunk_spatio_temporal_noise_r2_64 } from "../../shader/chunk/noise/chunk_spatio_temporal_noise_r2_64.js";
17
- import { chunk_texture_sample_nearest_uv } from "../../shader/chunk/texture/sample/chunk_texture_sample_nearest_uv.js";
18
17
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
19
18
  import { ImageShader } from "../../shader/ImageShader.js";
20
19
  import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
21
20
  import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
22
21
  import { HILBERT_R2_INDEX_TEXTURE } from "../../texture/noise/HILBERT_R2_INDEX_TEXTURE.js";
23
22
  import { BLACK_PIXEL_TEXTURE } from "../../texture/util/BLACK_PIXEL_TEXTURE.js";
23
+ import { SAMPLER_NEAREST } from "../../texture/SAMPLER_LINEAR_UPSCALE.js";
24
24
  import { chunk_is_background } from "../../shader/chunk/depth/chunk_is_background.js";
25
25
  import { chunk_integrate_bent_normal_fast } from "./chunk_integrate_bent_normal_fast.js";
26
26
  import { chunk_horizon_integrate_lighting_sample } from "./chunk_integrate_lighting_sample.js";
27
27
  import { GTAO_RENDER_SETTINGS } from "./GTAO_RENDER_SETTINGS.js";
28
28
 
29
29
  const resources = new ShaderResourceSetDescriptor();
30
+
31
+ // see fragment_shader_gtao — the same per-pass settings, carried as immediate data
32
+ resources.setImmediate("settings", GTAO_RENDER_SETTINGS);
30
33
  resources.createGroup()
31
34
  .addTexture("tDepth")
35
+ .addSampler("sPoint", "non-filtering", SAMPLER_NEAREST)
32
36
  .addTexture("tNormal", "uint")
33
37
  .addTexture("tColor", "unfilterable-float", "2d", false, BLACK_PIXEL_TEXTURE)
34
38
  .addTexture("tNoise", "uint", "2d", false, HILBERT_R2_INDEX_TEXTURE)
35
39
  .addUniform("camera", CAMERA_UNIFORM_STRUCT)
36
- .addUniform("settings", GTAO_RENDER_SETTINGS, {
37
- frame_index: 0,
38
- })
39
40
  ;
40
41
 
41
42
  const QualityType = {
@@ -262,12 +263,11 @@ fn main(
262
263
 
263
264
  let sampleScreenPos0 = uv + sampleOffset;
264
265
 
265
- // TODO replace with an actual texture sampler
266
- let SZ0 = texture_sample_nearest_uv(tDepth, sampleScreenPos0, mipLevel).x;
266
+ let SZ0 = textureSampleLevel(tDepth, sPoint, sampleScreenPos0, mipLevel).x;
267
267
  let samplePos0 = project_position_from_depth(sampleScreenPos0, SZ0, camera.view_projection_matrix_inverse);
268
268
 
269
269
  let sampleScreenPos1 = uv - sampleOffset;
270
- let SZ1 = texture_sample_nearest_uv(tDepth, sampleScreenPos1, mipLevel).x;
270
+ let SZ1 = textureSampleLevel(tDepth, sPoint, sampleScreenPos1, mipLevel).x;
271
271
  let samplePos1 = project_position_from_depth(sampleScreenPos1, SZ1, camera.view_projection_matrix_inverse);
272
272
 
273
273
  let sampleDelta0 = (samplePos0 - position_ws); // using lpfloat for sampleDelta causes precision issues
@@ -383,7 +383,6 @@ fn main(
383
383
  }
384
384
  `, [
385
385
  chunk_get_view_space_depth,
386
- chunk_texture_sample_nearest_uv,
387
386
  PI_DECLARATION,
388
387
  PI_HALF_DECLARATION,
389
388
 
@@ -1 +1 @@
1
- {"version":3,"file":"shader_motion_blur_reconstruct.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js"],"names":[],"mappings":"AAsKA;;;;;;;;;;;;GAYG;AACH,yDASG;4BA3LyB,6BAA6B"}
1
+ {"version":3,"file":"shader_motion_blur_reconstruct.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js"],"names":[],"mappings":"AAwKA;;;;;;;;;;;;GAYG;AACH,yDASG;4BA7LyB,6BAA6B"}
@@ -12,6 +12,9 @@ import {
12
12
  } from "./MOTION_BLUR_CONFIG.js";
13
13
 
14
14
  const resources = new ShaderResourceSetDescriptor();
15
+
16
+ // per-pass, four bytes, read-only: immediate data rather than a uniform buffer holding one f32
17
+ resources.setImmediate("uStrength", F32_CONTAINER_STRUCT);
15
18
  resources.createGroup()
16
19
  // Post-TAA HDR color we're blurring.
17
20
  .addTexture("tColor", "float")
@@ -30,7 +33,6 @@ resources.createGroup()
30
33
  // cone/cylinder weight ratios are scale-invariant, so this just
31
34
  // spreads the sample distribution wider without changing the
32
35
  // per-tap weighting balance.
33
- .addUniform("uStrength", F32_CONTAINER_STRUCT)
34
36
  ;
35
37
 
36
38
  const body = CodeChunk.from(
@@ -49,7 +49,7 @@ export class NSS {
49
49
  * @returns {number}
50
50
  */
51
51
  static recommended_jitter_sequence_size(upscale_ratio: number): number;
52
- static "__#132@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
52
+ static "__#136@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
53
53
  /**
54
54
  * @param {GraphicsContext} graphics
55
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shader_nss_concat.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/shader_nss_concat.js"],"names":[],"mappings":"AA6DA,8CAIG;;8BA9D2B,+BAA+B;AAI7D;;;;;;;;;;;;;GAaG;AACH,4CAE+B;6BAtBF,mCAAmC"}
1
+ {"version":3,"file":"shader_nss_concat.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/shader_nss_concat.js"],"names":[],"mappings":"AA+DA,8CAIG;;8BAhE2B,+BAA+B;AAI7D;;;;;;;;;;;;;GAaG;AACH,4CAE+B;6BAtBF,mCAAmC"}
@@ -1,68 +1,70 @@
1
- import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
- import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
3
- import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
4
- import { ComputeShader } from "../../shader/ComputeShader.js";
5
- import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
6
- import { NSS_WORKGROUP_SIZE } from "./NSS_CONSTANTS.js";
7
-
8
- /**
9
- * Concatenate two 3D tensors along the channel-group (z) axis.
10
- *
11
- * For an output coord (x, y, z):
12
- * - if z < `split_groups`, copy from `tA` at (x, y, z)
13
- * - otherwise, copy from `tB` at (x, y, z - split_groups)
14
- *
15
- * `split_groups` is `tA`'s channel-group count (channels / 4) and is
16
- * also the z-offset where `tB` starts in the output.
17
- *
18
- * Used by NSS's U-Net to merge a decoder activation with its
19
- * symmetric encoder skip (e.g. conv8_out (16ch) + conv4_out (32ch) ->
20
- * 48ch concat input for conv9).
21
- */
22
- const CONCAT_SETTINGS = WebGPUStruct.from({
23
- split_groups: u32,
24
- }, "NSSConcatSettings").pack();
25
-
26
- const resources = new ShaderResourceSetDescriptor();
27
- resources.createGroup()
28
- .addTexture("tA", "float", "3d")
29
- .addTexture("tB", "float", "3d")
30
- .addStorageTexture("tOutput", "rgba16float", "3d", "write-only")
31
- .addUniform("settings", CONCAT_SETTINGS)
32
- ;
33
-
34
- const body = CodeChunk.from(
35
- //language=WGSL
36
- `
37
- @compute @workgroup_size(${NSS_WORKGROUP_SIZE}, ${NSS_WORKGROUP_SIZE}, 1)
38
- fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
39
- let dim = textureDimensions(tOutput);
40
-
41
- if (any(gid >= dim)) {
42
- return;
43
- }
44
-
45
- let st = vec2<i32>(gid.xy);
46
- let z = gid.z;
47
-
48
- var v: vec4<f32>;
49
- if (z < settings.split_groups) {
50
- v = textureLoad(tA, vec3<i32>(st, i32(z)), 0);
51
- } else {
52
- v = textureLoad(tB, vec3<i32>(st, i32(z - settings.split_groups)), 0);
53
- }
54
-
55
- textureStore(tOutput, vec3<i32>(st, i32(z)), v);
56
- }
57
- `, [
58
- CONCAT_SETTINGS.declaration_chunk,
59
- ]
60
- );
61
-
62
- export const shader_nss_concat = ComputeShader.from({
63
- label: "NSS / concat",
64
- body,
65
- resources,
66
- });
67
-
68
- export { CONCAT_SETTINGS as NSS_CONCAT_SETTINGS_STRUCT };
1
+ import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
+ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
3
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
4
+ import { ComputeShader } from "../../shader/ComputeShader.js";
5
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
6
+ import { NSS_WORKGROUP_SIZE } from "./NSS_CONSTANTS.js";
7
+
8
+ /**
9
+ * Concatenate two 3D tensors along the channel-group (z) axis.
10
+ *
11
+ * For an output coord (x, y, z):
12
+ * - if z < `split_groups`, copy from `tA` at (x, y, z)
13
+ * - otherwise, copy from `tB` at (x, y, z - split_groups)
14
+ *
15
+ * `split_groups` is `tA`'s channel-group count (channels / 4) and is
16
+ * also the z-offset where `tB` starts in the output.
17
+ *
18
+ * Used by NSS's U-Net to merge a decoder activation with its
19
+ * symmetric encoder skip (e.g. conv8_out (16ch) + conv4_out (32ch) ->
20
+ * 48ch concat input for conv9).
21
+ */
22
+ const CONCAT_SETTINGS = WebGPUStruct.from({
23
+ split_groups: u32,
24
+ }, "NSSConcatSettings").pack();
25
+
26
+ const resources = new ShaderResourceSetDescriptor();
27
+
28
+ // per-pass, four bytes, read-only: immediate data rather than a uniform buffer
29
+ resources.setImmediate("settings", CONCAT_SETTINGS);
30
+ resources.createGroup()
31
+ .addTexture("tA", "float", "3d")
32
+ .addTexture("tB", "float", "3d")
33
+ .addStorageTexture("tOutput", "rgba16float", "3d", "write-only")
34
+ ;
35
+
36
+ const body = CodeChunk.from(
37
+ //language=WGSL
38
+ `
39
+ @compute @workgroup_size(${NSS_WORKGROUP_SIZE}, ${NSS_WORKGROUP_SIZE}, 1)
40
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
41
+ let dim = textureDimensions(tOutput);
42
+
43
+ if (any(gid >= dim)) {
44
+ return;
45
+ }
46
+
47
+ let st = vec2<i32>(gid.xy);
48
+ let z = gid.z;
49
+
50
+ var v: vec4<f32>;
51
+ if (z < settings.split_groups) {
52
+ v = textureLoad(tA, vec3<i32>(st, i32(z)), 0);
53
+ } else {
54
+ v = textureLoad(tB, vec3<i32>(st, i32(z - settings.split_groups)), 0);
55
+ }
56
+
57
+ textureStore(tOutput, vec3<i32>(st, i32(z)), v);
58
+ }
59
+ `, [
60
+ CONCAT_SETTINGS.declaration_chunk,
61
+ ]
62
+ );
63
+
64
+ export const shader_nss_concat = ComputeShader.from({
65
+ label: "NSS / concat",
66
+ body,
67
+ resources,
68
+ });
69
+
70
+ export { CONCAT_SETTINGS as NSS_CONCAT_SETTINGS_STRUCT };
@@ -1 +1 @@
1
- {"version":3,"file":"depth_max_shader.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/depth_max_shader.js"],"names":[],"mappings":"AAuDA,2CAWG;4BAjEyB,6BAA6B"}
1
+ {"version":3,"file":"depth_max_shader.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/depth_max_shader.js"],"names":[],"mappings":"AAyDA,2CAWG;4BAnEyB,6BAA6B"}
@@ -1,68 +1,70 @@
1
- import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
- import { ImageShader } from "../../shader/ImageShader.js";
3
- import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
4
- import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
5
-
6
- const resources = new ShaderResourceSetDescriptor();
7
-
8
- resources.createGroup()
9
- .addUniform("output_resolution", "vec2<u32>")
10
- .addTexture("tInput");
11
-
12
- const body = CodeChunk.from(
13
- //language=WGSL
14
- `
15
- @fragment
16
- fn main(
17
- @builtin(position) coord : vec4<f32>,
18
- @location(0) uv: vec2<f32>,
19
- ) -> @location(0) f32 {
20
-
21
-
22
- let target_coord_i = vec2<u32>(coord.xy);
23
-
24
- let source_resolution = textureDimensions(tInput);
25
-
26
- let scale = vec2f(source_resolution) / vec2f(output_resolution);
27
-
28
- let scale_i = vec2u(ceil(scale));
29
-
30
- let source_coord_i = target_coord_i * 2;
31
-
32
- // compute bounds in source texture
33
- let source_bounds_max = min(
34
- source_coord_i + scale_i,
35
- source_resolution - 1
36
- );
37
-
38
- let source_bounds_min = source_coord_i;
39
-
40
- var max_value = 0.0;
41
-
42
- for(var y = source_bounds_min.y ; y <= source_bounds_max.y ; y++){
43
- for(var x = source_bounds_min.x ; x<= source_bounds_max.x ; x++){
44
-
45
- let depth = textureLoad(tInput, vec2u(x,y), 0).r;
46
-
47
- max_value = max(depth, max_value);
48
- }
49
- }
50
-
51
- return max_value;
52
- }
53
- `
54
- )
55
-
56
- export const depth_max_shader = new ImageShader({
57
- descriptor: ShaderDescriptor.from({
58
- label: "Depth Reduce / max",
59
- body,
60
- resources,
61
- }),
62
- targets: [
63
- {
64
- format: "r32float"
65
- }
66
- ]
67
- });
68
-
1
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
+ import { ImageShader } from "../../shader/ImageShader.js";
3
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
4
+ import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
5
+
6
+ const resources = new ShaderResourceSetDescriptor();
7
+
8
+ // per-pass, eight bytes, read-only: immediate data rather than a uniform buffer
9
+ resources.setImmediate("output_resolution", "vec2<u32>");
10
+
11
+ resources.createGroup()
12
+ .addTexture("tInput");
13
+
14
+ const body = CodeChunk.from(
15
+ //language=WGSL
16
+ `
17
+ @fragment
18
+ fn main(
19
+ @builtin(position) coord : vec4<f32>,
20
+ @location(0) uv: vec2<f32>,
21
+ ) -> @location(0) f32 {
22
+
23
+
24
+ let target_coord_i = vec2<u32>(coord.xy);
25
+
26
+ let source_resolution = textureDimensions(tInput);
27
+
28
+ let scale = vec2f(source_resolution) / vec2f(output_resolution);
29
+
30
+ let scale_i = vec2u(ceil(scale));
31
+
32
+ let source_coord_i = target_coord_i * 2;
33
+
34
+ // compute bounds in source texture
35
+ let source_bounds_max = min(
36
+ source_coord_i + scale_i,
37
+ source_resolution - 1
38
+ );
39
+
40
+ let source_bounds_min = source_coord_i;
41
+
42
+ var max_value = 0.0;
43
+
44
+ for(var y = source_bounds_min.y ; y <= source_bounds_max.y ; y++){
45
+ for(var x = source_bounds_min.x ; x<= source_bounds_max.x ; x++){
46
+
47
+ let depth = textureLoad(tInput, vec2u(x,y), 0).r;
48
+
49
+ max_value = max(depth, max_value);
50
+ }
51
+ }
52
+
53
+ return max_value;
54
+ }
55
+ `
56
+ )
57
+
58
+ export const depth_max_shader = new ImageShader({
59
+ descriptor: ShaderDescriptor.from({
60
+ label: "Depth Reduce / max",
61
+ body,
62
+ resources,
63
+ }),
64
+ targets: [
65
+ {
66
+ format: "r32float"
67
+ }
68
+ ]
69
+ });
70
+
@@ -1 +1 @@
1
- {"version":3,"file":"ssr_resolve_shader_IBL.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js"],"names":[],"mappings":"AA6TA;;;GAGG;AACH,qCAFU,WAAW,CAelB;4BA5TyB,gCAAgC"}
1
+ {"version":3,"file":"ssr_resolve_shader_IBL.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js"],"names":[],"mappings":"AA+TA;;;GAGG;AACH,qCAFU,WAAW,CAelB;4BA9TyB,gCAAgC"}
@@ -30,6 +30,9 @@ const RESOLVE_UNIFORMS = WebGPUStruct.from({
30
30
  });
31
31
 
32
32
  const resources = new ShaderResourceSetDescriptor();
33
+
34
+ // per-pass, four bytes, read-only: immediate data rather than a uniform buffer
35
+ resources.setImmediate("settings", RESOLVE_UNIFORMS);
33
36
  resources.createGroup()
34
37
  .addTexture("tTrace", "uint")
35
38
  .addTexture("tDepth")
@@ -44,7 +47,6 @@ resources.createGroup()
44
47
  addressModeU: "clamp-to-edge",
45
48
  addressModeV: "clamp-to-edge",
46
49
  }))
47
- .addUniform("settings", RESOLVE_UNIFORMS)
48
50
  .addUniform("camera", CAMERA_UNIFORM_STRUCT)
49
51
  ;
50
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"ssr_resolve_shader_LPV.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js"],"names":[],"mappings":"AA0VA;;;GAGG;AACH,qCAFU,WAAW,CAelB;4BAtVyB,gCAAgC"}
1
+ {"version":3,"file":"ssr_resolve_shader_LPV.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js"],"names":[],"mappings":"AA6VA;;;GAGG;AACH,qCAFU,WAAW,CAelB;4BAzVyB,gCAAgC"}
@@ -33,6 +33,10 @@ const RESOLVE_UNIFORMS = WebGPUStruct.from({
33
33
  });
34
34
 
35
35
  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);
36
40
  resources.createGroup()
37
41
  .addTexture("tTrace", "uint")
38
42
  .addTexture("tDepth")
@@ -47,7 +51,6 @@ resources.createGroup()
47
51
  addressModeU: "clamp-to-edge",
48
52
  addressModeV: "clamp-to-edge",
49
53
  }))
50
- .addUniform("settings", RESOLVE_UNIFORMS)
51
54
  .addUniform("camera", CAMERA_UNIFORM_STRUCT)
52
55
  ;
53
56
 
@@ -1 +1 @@
1
- {"version":3,"file":"shader_downsample_encoded_normal.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js"],"names":[],"mappings":"AA4FA,2DASG;4BA7FyB,6BAA6B"}
1
+ {"version":3,"file":"shader_downsample_encoded_normal.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js"],"names":[],"mappings":"AA8FA,2DASG;4BA/FyB,6BAA6B"}