@woosh/meep-engine 3.12.0 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/package.json +1 -1
  2. package/src/engine/graphics3/decal/GPUDecalRenderer.js +3 -3
  3. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  4. package/src/engine/graphics3/decal/shader_decal_composite.js +4 -2
  5. package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
  6. package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +2 -3
  7. package/src/engine/graphics3/highlight/shader_highlight_outline.js +150 -150
  8. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  9. package/src/shade/RENDERER_CONTRACT.md +2 -1
  10. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +18 -0
  11. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
  12. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +73 -0
  13. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +750 -0
  14. package/src/shade/device/ShadeGPUCommandContext.d.ts +10 -16
  15. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  16. package/src/shade/device/ShadeGPUCommandContext.js +801 -994
  17. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +107 -0
  18. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -0
  19. package/src/shade/device/pass/ShadeGPUComputePassEncoder.js +222 -0
  20. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +168 -0
  21. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -0
  22. package/src/shade/device/pass/ShadeGPURenderPassEncoder.js +317 -0
  23. package/src/shade/device/timing/GPUTimerArray.d.ts +4 -9
  24. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  25. package/src/shade/device/timing/GPUTimerArray.js +261 -289
  26. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +20 -2
  27. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts +59 -0
  28. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts.map +1 -0
  29. package/src/shade/device/timing/ShadeGPUContextProfiler.js +182 -0
  30. package/src/shade/device/timing/profile/GPUProfileSession.d.ts +4 -4
  31. package/src/shade/device/timing/profile/GPUProfileSession.js +4 -4
  32. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  33. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +3 -1
  34. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
  35. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +3 -1
  36. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
  37. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +3 -1
  38. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +2 -2
  39. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +2 -2
  40. package/src/shade/renderer/Renderer.d.ts +0 -6
  41. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  42. package/src/shade/renderer/Renderer.js +0 -29
  43. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  44. package/src/shade/renderer/animation/GPUAnimationManager.js +1 -3
  45. package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
  46. package/src/shade/renderer/animation/shader_animation_tick.js +128 -125
  47. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  48. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +8 -18
  49. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
  50. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +100 -98
  51. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
  52. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +215 -212
  53. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts +1 -1
  54. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
  55. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +135 -120
  56. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
  57. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +77 -75
  58. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
  59. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +375 -371
  60. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +3 -3
  61. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +1 -1
  62. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  63. package/src/shade/renderer/buffer/table/GPUDatabase.js +14 -19
  64. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.d.ts.map +1 -1
  65. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.js +7 -2
  66. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  67. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +325 -319
  68. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
  69. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +3 -1
  70. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
  71. package/src/shade/renderer/deferred/shader_tonemap_HDR.js +4 -1
  72. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +2 -2
  73. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
  74. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +167 -167
  75. package/src/shade/renderer/fow/GPUFogOfWarRenderer.js +3 -3
  76. package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
  77. package/src/shade/renderer/fow/shader_fog_of_war.js +3 -1
  78. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -102
  79. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
  80. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +125 -121
  81. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
  82. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +766 -774
  83. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +72 -69
  85. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +5 -10
  87. package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +129 -129
  88. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  89. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +5 -3
  90. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  91. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -1
  92. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.d.ts.map +1 -1
  93. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.js +3 -1
  94. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts.map +1 -1
  95. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.js +114 -112
  96. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.js +4 -1
  98. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  99. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +187 -184
  100. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
  101. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +4 -1
  102. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  103. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +6 -8
  104. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
  105. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +3 -1
  106. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.d.ts.map +1 -1
  107. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +3 -1
  108. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +3 -3
  109. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +3 -3
  110. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
  111. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  112. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +145 -142
  113. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
  114. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +87 -82
  115. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  116. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +143 -140
  117. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +2 -2
  118. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -1
  119. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +43 -8
  120. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
  121. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +4 -5
  122. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
  123. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +88 -84
  124. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
  125. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +194 -191
  126. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  127. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +33 -69
  128. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  129. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +6 -1
  130. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
  131. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +23 -7
  132. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
  133. package/src/shade/renderer/light/environment/execute_filter_environment_map.js +1 -2
  134. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
  135. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +6 -1
  136. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
  137. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +234 -219
  138. package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +2 -2
  139. package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +191 -191
  140. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.d.ts.map +1 -1
  141. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js +85 -82
  142. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  143. package/src/shade/renderer/particles/graph_particles.js +5 -3
  144. package/src/shade/renderer/particles/prototypeParticleSystem.js +3 -4
  145. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  146. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +132 -117
  147. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  148. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +79 -77
  149. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  150. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +111 -99
  151. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  152. package/src/shade/renderer/particles/sort/shader_particle_sort.js +187 -158
  153. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  154. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +7 -10
  155. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  156. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +4 -1
  157. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.d.ts.map +1 -1
  158. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.js +3 -1
  159. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.d.ts.map +1 -1
  160. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.js +4 -2
  161. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +147 -147
  162. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts.map +1 -1
  163. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +121 -119
  164. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.d.ts.map +1 -1
  165. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.js +1 -2
  166. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.d.ts.map +1 -1
  167. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.js +4 -1
  168. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.d.ts.map +1 -1
  169. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.js +4 -1
  170. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.d.ts.map +1 -1
  171. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.js +4 -1
  172. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.d.ts.map +1 -1
  173. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.js +4 -1
  174. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.d.ts.map +1 -1
  175. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +2 -4
  176. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.d.ts.map +1 -1
  177. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.js +4 -1
  178. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.d.ts.map +1 -1
  179. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.js +4 -1
  180. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.d.ts.map +1 -1
  181. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.js +4 -1
  182. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  183. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +269 -266
  184. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  185. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +273 -270
  186. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.d.ts.map +1 -1
  187. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.js +4 -1
  188. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  189. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +8 -11
  190. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
  191. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +5 -1
  192. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  193. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +11 -8
  194. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  195. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +7 -8
  196. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.d.ts.map +1 -1
  197. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +3 -1
  198. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  199. package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
  200. package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +70 -68
  201. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +1 -1
  202. package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +70 -68
  203. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
  204. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +3 -1
  205. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
  206. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +4 -1
  207. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +1 -1
  208. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +103 -101
  209. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  210. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -2
  211. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.d.ts.map +1 -1
  212. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.js +3 -1
  213. package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
  214. package/src/shade/renderer/postprocess/taa/shader_taa.js +4 -1
  215. package/src/shade/renderer/postprocess/upscale-dither/fragment_shader_upscale_dither.js +5 -5
  216. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  217. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +339 -341
  218. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
  219. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +114 -109
  220. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
  221. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +118 -115
  222. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
  223. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +69 -65
  224. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +722 -722
  225. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  226. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +1 -9
  227. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  228. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +1 -6
  229. package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
  230. package/src/shade/renderer/restir/di/graph_restir_di.js +2 -3
  231. package/src/shade/renderer/restir/di/graph_restir_di_denoise.d.ts.map +1 -1
  232. package/src/shade/renderer/restir/di/graph_restir_di_denoise.js +1 -2
  233. package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
  234. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +139 -136
  235. package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
  236. package/src/shade/renderer/restir/di/shader_restir_di_resample.js +131 -129
  237. package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
  238. package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +101 -99
  239. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  240. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +379 -383
  241. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
  242. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +147 -144
  243. package/src/shade/renderer/shader/ComputeShader.d.ts +2 -2
  244. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  245. package/src/shade/renderer/shader/ComputeShader.js +14 -17
  246. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +2 -2
  247. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  248. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +189 -189
  249. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  250. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +3 -1
  251. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  252. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +14 -18
  253. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.d.ts.map +1 -1
  254. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.js +5 -1
  255. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.d.ts.map +1 -1
  256. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +3 -1
  257. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +73 -73
  258. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
  259. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +151 -148
  260. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts.map +1 -1
  261. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +4 -2
  262. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.d.ts.map +1 -1
  263. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.js +18 -4
  264. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
  265. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +7 -8
  266. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.d.ts.map +1 -1
  267. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.js +6 -2
  268. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.d.ts.map +1 -1
  269. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.js +129 -127
  270. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  271. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +5 -3
  272. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
  273. package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +2 -5
  274. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  275. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +233 -231
  276. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  277. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
  278. package/src/shade/wgsl/validate_wgsl_source.d.ts.map +1 -1
  279. package/src/shade/wgsl/validate_wgsl_source.js +8 -3
  280. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts +0 -21
  281. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts.map +0 -1
  282. package/src/shade/device/timing/profile/make_profiling_pass_encoder.js +0 -114
  283. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts +0 -20
  284. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts.map +0 -1
  285. package/src/shade/device/timing/profile/parse_workgroup_size.js +0 -43
@@ -1 +1 @@
1
- {"version":3,"file":"execute_filter_environment_map.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/execute_filter_environment_map.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,8GAoCC"}
1
+ {"version":3,"file":"execute_filter_environment_map.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/execute_filter_environment_map.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,8GAoCC"}
@@ -1,6 +1,5 @@
1
1
  import { assert } from "../../../../core/assert.js";
2
2
  import { TextureViewDescriptor } from "../../../descriptor/texture/TextureViewDescriptor.js";
3
- import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
4
3
  import { shader_convolve_reflection_map } from "./shader_convolve_reflection_map.js";
5
4
 
6
5
  /**
@@ -32,7 +31,7 @@ export function execute_filter_environment_map(
32
31
  group_count_x: dispatch_x,
33
32
  group_count_y: dispatch_y,
34
33
  bindings: {
35
- read_lod: encoder.allocateTransientValueBuffer(u32, i - 1),
34
+ read_lod: i - 1,
36
35
  input: map.obtainView(TextureViewDescriptor.from({
37
36
  baseMipLevel: i - 1,
38
37
  mipLevelCount: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"shader_convolve_reflection_map.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/shader_convolve_reflection_map.js"],"names":[],"mappings":"AAwHA,2DAII;8BA1G0B,+BAA+B"}
1
+ {"version":3,"file":"shader_convolve_reflection_map.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/shader_convolve_reflection_map.js"],"names":[],"mappings":"AA6HA,2DAII;8BA/G0B,+BAA+B"}
@@ -25,8 +25,13 @@ import { chunk_sphere_probe_lod_to_roughness } from "./chunk_sphere_probe_lod_to
25
25
  import { BSDF_ROUGHNESS_MINIMUM } from "./DEFINES.js";
26
26
 
27
27
  const resources = new ShaderResourceSetDescriptor();
28
+
29
+ // per-dispatch, four bytes, read-only: immediate data rather than a uniform buffer. The convolve
30
+ // walks the mip chain one dispatch at a time, so a buffer was allocated and filled per level to
31
+ // carry a single mip index.
32
+ resources.setImmediate("read_lod", "u32");
33
+
28
34
  resources.createGroup()
29
- .addUniform("read_lod", "u32")
30
35
  .addTexture("input")
31
36
  .addStorageTexture("output", "rgba16float")
32
37
  ;
@@ -1 +1 @@
1
- {"version":3,"file":"graph_draw_lightmap_viz_buffer.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js"],"names":[],"mappings":"AA8CA;;;;;;;GAOG;AACH,8FAFa,MAAM,CAuKlB"}
1
+ {"version":3,"file":"graph_draw_lightmap_viz_buffer.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js"],"names":[],"mappings":"AA8CA;;;;;;;GAOG;AACH,8FAFa,MAAM,CAsLlB"}
@@ -1,220 +1,235 @@
1
- import { assert } from "../../../../../core/assert.js";
2
- import { vec2f } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
3
- import {
4
- VIZ_BUFFER_INVALID_MESH_VALUE
5
- } from "../../../rasterize/native/viz/VIZ_BUFFER_INVALID_MESH_VALUE.js";
6
- import { DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR } from "../../../texture/DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR.js";
7
- import {
8
- lightmap_to_viz_buffer_resources,
9
- shader_lightmap_to_viz_buffer,
10
- shader_lightmap_to_viz_buffer_points,
11
- shader_lightmap_to_viz_buffer_wireframe
12
- } from "./shader_lightmap_to_viz_buffer.js";
13
-
14
- const offsets =
15
- [
16
- { x: -2, y: -2 },
17
- { x: 2, y: -2 },
18
- { x: -2, y: 2 },
19
- { x: 2, y: 2 },
20
-
21
- { x: -1, y: -2 },
22
- { x: 1, y: -2 },
23
- { x: -2, y: -1 },
24
- { x: 2, y: -1 },
25
- { x: -2, y: 1 },
26
- { x: 2, y: 1 },
27
- { x: -1, y: 2 },
28
- { x: 1, y: 2 },
29
-
30
- { x: -2, y: 0 },
31
- { x: 2, y: 0 },
32
- { x: 0, y: -2 },
33
- { x: 0, y: 2 },
34
-
35
- { x: -1, y: -1 },
36
- { x: 1, y: -1 },
37
- { x: -1, y: 1 },
38
- { x: 1, y: 1 },
39
- { x: -1, y: 0 },
40
- { x: 1, y: 0 },
41
- { x: 0, y: -1 },
42
- { x: 0, y: 1 },
43
-
44
- { x: 0, y: 0 },
45
- ];
46
-
47
- /**
48
- *
49
- * @param {FrameGraph} graph
50
- * @param {number} output Viz buffer texture
51
- * @param {GPUSceneContext} scene
52
- * @param {boolean} [force]
53
- * @returns {number} written output ID
54
- */
55
- export function graph_draw_lightmap_viz_buffer({
56
- graph,
57
- output,
58
- scene,
59
- force = false,
60
- }) {
61
- assert.defined(scene, 'scene');
62
- assert.defined(graph, 'graph');
63
- assert.isNonNegativeInteger(output, 'output');
64
-
65
-
66
- const data = {};
67
-
68
- /**
69
- *
70
- * @param data
71
- * @param {FramePassResources} resources
72
- * @param {GraphicsExecutionContext} context
73
- */
74
- function execute(data, resources, context) {
75
-
76
- const meshes = scene.scene.instances.instances;
77
-
78
- const mesh_count = meshes.length;
79
-
80
- if (mesh_count <= 0) {
81
- // nothing to do
82
- return;
83
- }
84
-
85
- /**
86
- * @type {GPUTextureContext}
87
- */
88
- const viz_buffer = resources.get(data.viz_buffer);
89
-
90
-
91
- const bindings = lightmap_to_viz_buffer_resources.generateBindings({
92
- uv_offset: context.encoder.allocateTransientValueBuffer(vec2f, [
93
- 0,
94
- 0,
95
- ], GPUBufferUsage.UNIFORM),
96
- scene_database: scene.scene_database_buffer,
97
- geometries: scene.geometries.buffer_metadata,
98
- });
99
-
100
- /*
101
- We perform conservative rasterization by
102
- 1. First drawing all vertices to make sure that extreme corners are painted in
103
- 2. Draw wireframe, outlining each edge, this ensures that tiny edges are occupying at least 1 pixel
104
- 3. Finally, draw triangles as normal
105
- */
106
-
107
- const viz_buffer_view = viz_buffer.obtainView(DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR);
108
-
109
- // points
110
- {
111
- const pass = context.encoder.constructRenderPass({
112
- pipeline: shader_lightmap_to_viz_buffer_points,
113
- bindings,
114
- colorAttachments: [
115
- {
116
- loadOp: "clear",
117
- storeOp: "store",
118
- clearValue: [VIZ_BUFFER_INVALID_MESH_VALUE, VIZ_BUFFER_INVALID_MESH_VALUE, 0, 0],
119
- view: viz_buffer_view
120
- }
121
- ]
122
- });
123
-
124
- for (let i = 0; i < mesh_count; i++) {
125
- const mesh = meshes[i];
126
- const geometry = mesh.geometry;
127
-
128
- const mesh_id = i;
129
-
130
- pass.draw(
131
- geometry.getVertexCount(),
132
- 1,
133
- 0,
134
- mesh_id
135
- );
136
- }
137
-
138
- pass.end();
139
- }
140
-
141
- // Lines
142
- {
143
-
144
- const pass = context.encoder.constructRenderPass({
145
- pipeline: shader_lightmap_to_viz_buffer_wireframe,
146
- bindings,
147
- colorAttachments: [
148
- {
149
- loadOp: "load",
150
- storeOp: "store",
151
- clearValue: [VIZ_BUFFER_INVALID_MESH_VALUE, VIZ_BUFFER_INVALID_MESH_VALUE, 0, 0],
152
- view: viz_buffer_view
153
- }
154
- ]
155
- });
156
-
157
- for (let i = 0; i < mesh_count; i++) {
158
- const mesh = meshes[i];
159
- const geometry = mesh.geometry;
160
-
161
- const mesh_id = i;
162
-
163
- // line-list: 3 edges x 2 vertices per triangle = 6 per triangle, i.e. 2x the
164
- // index count — with only getIndexCount() vertices half the triangles got no edges
165
- pass.draw(
166
- geometry.getIndexCount() * 2,
167
- 1,
168
- 0,
169
- mesh_id
170
- );
171
- }
172
-
173
- pass.end();
174
- }
175
-
176
- // triangles
177
- {
178
-
179
- const pass = context.encoder.constructRenderPass({
180
- pipeline: shader_lightmap_to_viz_buffer,
181
- bindings,
182
- colorAttachments: [
183
- {
184
- loadOp: "load",
185
- storeOp: "store",
186
- clearValue: [VIZ_BUFFER_INVALID_MESH_VALUE, VIZ_BUFFER_INVALID_MESH_VALUE, 0, 0],
187
- view: viz_buffer_view
188
- }
189
- ]
190
- });
191
-
192
- for (let i = 0; i < mesh_count; i++) {
193
- const mesh = meshes[i];
194
- const geometry = mesh.geometry;
195
-
196
- const mesh_id = i;
197
-
198
- pass.draw(
199
- geometry.getIndexCount(),
200
- 1,
201
- 0,
202
- mesh_id
203
- );
204
- }
205
-
206
- pass.end();
207
- }
208
- }
209
-
210
- const pass = graph.add("Draw lightmap viz buffer", data, execute);
211
-
212
- if (force) {
213
- // force this pass to run regardless of network structure
214
- pass.make_side_effect();
215
- }
216
-
217
- data.viz_buffer = pass.write(output);
218
-
219
- return data.viz_buffer;
1
+ import { assert } from "../../../../../core/assert.js";
2
+ import { vec2f } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
3
+ import {
4
+ VIZ_BUFFER_INVALID_MESH_VALUE
5
+ } from "../../../rasterize/native/viz/VIZ_BUFFER_INVALID_MESH_VALUE.js";
6
+ import { DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR } from "../../../texture/DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR.js";
7
+ import {
8
+ lightmap_to_viz_buffer_resources,
9
+ shader_lightmap_to_viz_buffer,
10
+ shader_lightmap_to_viz_buffer_points,
11
+ shader_lightmap_to_viz_buffer_wireframe
12
+ } from "./shader_lightmap_to_viz_buffer.js";
13
+
14
+ const offsets =
15
+ [
16
+ { x: -2, y: -2 },
17
+ { x: 2, y: -2 },
18
+ { x: -2, y: 2 },
19
+ { x: 2, y: 2 },
20
+
21
+ { x: -1, y: -2 },
22
+ { x: 1, y: -2 },
23
+ { x: -2, y: -1 },
24
+ { x: 2, y: -1 },
25
+ { x: -2, y: 1 },
26
+ { x: 2, y: 1 },
27
+ { x: -1, y: 2 },
28
+ { x: 1, y: 2 },
29
+
30
+ { x: -2, y: 0 },
31
+ { x: 2, y: 0 },
32
+ { x: 0, y: -2 },
33
+ { x: 0, y: 2 },
34
+
35
+ { x: -1, y: -1 },
36
+ { x: 1, y: -1 },
37
+ { x: -1, y: 1 },
38
+ { x: 1, y: 1 },
39
+ { x: -1, y: 0 },
40
+ { x: 1, y: 0 },
41
+ { x: 0, y: -1 },
42
+ { x: 0, y: 1 },
43
+
44
+ { x: 0, y: 0 },
45
+ ];
46
+
47
+ /**
48
+ *
49
+ * @param {FrameGraph} graph
50
+ * @param {number} output Viz buffer texture
51
+ * @param {GPUSceneContext} scene
52
+ * @param {boolean} [force]
53
+ * @returns {number} written output ID
54
+ */
55
+ export function graph_draw_lightmap_viz_buffer({
56
+ graph,
57
+ output,
58
+ scene,
59
+ force = false,
60
+ }) {
61
+ assert.defined(scene, 'scene');
62
+ assert.defined(graph, 'graph');
63
+ assert.isNonNegativeInteger(output, 'output');
64
+
65
+
66
+ const data = {};
67
+
68
+ /**
69
+ *
70
+ * @param data
71
+ * @param {FramePassResources} resources
72
+ * @param {GraphicsExecutionContext} context
73
+ */
74
+ function execute(data, resources, context) {
75
+
76
+ const meshes = scene.scene.instances.instances;
77
+
78
+ const mesh_count = meshes.length;
79
+
80
+ if (mesh_count <= 0) {
81
+ // nothing to do
82
+ return;
83
+ }
84
+
85
+ /**
86
+ * @type {GPUTextureContext}
87
+ */
88
+ const viz_buffer = resources.get(data.viz_buffer);
89
+
90
+
91
+ const binding_values = {
92
+ uv_offset: [0, 0],
93
+ scene_database: scene.scene_database_buffer,
94
+ geometries: scene.geometries.buffer_metadata,
95
+ };
96
+
97
+ const bindings = lightmap_to_viz_buffer_resources.generateBindings(binding_values);
98
+
99
+
100
+ /*
101
+ We perform conservative rasterization by
102
+ 1. First drawing all vertices to make sure that extreme corners are painted in
103
+ 2. Draw wireframe, outlining each edge, this ensures that tiny edges are occupying at least 1 pixel
104
+ 3. Finally, draw triangles as normal
105
+ */
106
+
107
+ const viz_buffer_view = viz_buffer.obtainView(DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR);
108
+
109
+ // points
110
+ {
111
+ const pass = context.encoder.constructRenderPass({
112
+ pipeline: shader_lightmap_to_viz_buffer_points,
113
+ bindings,
114
+ // built by hand rather than through ImageShader.draw, so the immediate `uv_offset`
115
+ // is written here. Per pass rather than hoisted: the encoder serialises into one
116
+ // reusable buffer, so a value written once would go stale if anything else wrote an
117
+ // immediate between these passes.
118
+ immediate: context.encoder.writeImmediate(lightmap_to_viz_buffer_resources, binding_values),
119
+ colorAttachments: [
120
+ {
121
+ loadOp: "clear",
122
+ storeOp: "store",
123
+ clearValue: [VIZ_BUFFER_INVALID_MESH_VALUE, VIZ_BUFFER_INVALID_MESH_VALUE, 0, 0],
124
+ view: viz_buffer_view
125
+ }
126
+ ]
127
+ });
128
+
129
+ for (let i = 0; i < mesh_count; i++) {
130
+ const mesh = meshes[i];
131
+ const geometry = mesh.geometry;
132
+
133
+ const mesh_id = i;
134
+
135
+ pass.draw(
136
+ geometry.getVertexCount(),
137
+ 1,
138
+ 0,
139
+ mesh_id
140
+ );
141
+ }
142
+
143
+ pass.end();
144
+ }
145
+
146
+ // Lines
147
+ {
148
+
149
+ const pass = context.encoder.constructRenderPass({
150
+ pipeline: shader_lightmap_to_viz_buffer_wireframe,
151
+ bindings,
152
+ // built by hand rather than through ImageShader.draw, so the immediate `uv_offset`
153
+ // is written here. Per pass rather than hoisted: the encoder serialises into one
154
+ // reusable buffer, so a value written once would go stale if anything else wrote an
155
+ // immediate between these passes.
156
+ immediate: context.encoder.writeImmediate(lightmap_to_viz_buffer_resources, binding_values),
157
+ colorAttachments: [
158
+ {
159
+ loadOp: "load",
160
+ storeOp: "store",
161
+ clearValue: [VIZ_BUFFER_INVALID_MESH_VALUE, VIZ_BUFFER_INVALID_MESH_VALUE, 0, 0],
162
+ view: viz_buffer_view
163
+ }
164
+ ]
165
+ });
166
+
167
+ for (let i = 0; i < mesh_count; i++) {
168
+ const mesh = meshes[i];
169
+ const geometry = mesh.geometry;
170
+
171
+ const mesh_id = i;
172
+
173
+ // line-list: 3 edges x 2 vertices per triangle = 6 per triangle, i.e. 2x the
174
+ // index count — with only getIndexCount() vertices half the triangles got no edges
175
+ pass.draw(
176
+ geometry.getIndexCount() * 2,
177
+ 1,
178
+ 0,
179
+ mesh_id
180
+ );
181
+ }
182
+
183
+ pass.end();
184
+ }
185
+
186
+ // triangles
187
+ {
188
+
189
+ const pass = context.encoder.constructRenderPass({
190
+ pipeline: shader_lightmap_to_viz_buffer,
191
+ bindings,
192
+ // built by hand rather than through ImageShader.draw, so the immediate `uv_offset`
193
+ // is written here. Per pass rather than hoisted: the encoder serialises into one
194
+ // reusable buffer, so a value written once would go stale if anything else wrote an
195
+ // immediate between these passes.
196
+ immediate: context.encoder.writeImmediate(lightmap_to_viz_buffer_resources, binding_values),
197
+ colorAttachments: [
198
+ {
199
+ loadOp: "load",
200
+ storeOp: "store",
201
+ clearValue: [VIZ_BUFFER_INVALID_MESH_VALUE, VIZ_BUFFER_INVALID_MESH_VALUE, 0, 0],
202
+ view: viz_buffer_view
203
+ }
204
+ ]
205
+ });
206
+
207
+ for (let i = 0; i < mesh_count; i++) {
208
+ const mesh = meshes[i];
209
+ const geometry = mesh.geometry;
210
+
211
+ const mesh_id = i;
212
+
213
+ pass.draw(
214
+ geometry.getIndexCount(),
215
+ 1,
216
+ 0,
217
+ mesh_id
218
+ );
219
+ }
220
+
221
+ pass.end();
222
+ }
223
+ }
224
+
225
+ const pass = graph.add("Draw lightmap viz buffer", data, execute);
226
+
227
+ if (force) {
228
+ // force this pass to run regardless of network structure
229
+ pass.make_side_effect();
230
+ }
231
+
232
+ data.viz_buffer = pass.write(output);
233
+
234
+ return data.viz_buffer;
220
235
  }
@@ -21,9 +21,9 @@ import { chunk_lightmap_geometry_uv_to_atlas } from "../../chunk_lightmap_geomet
21
21
 
22
22
 
23
23
  export const lightmap_to_viz_buffer_resources = new ShaderResourceSetDescriptor()
24
- lightmap_to_viz_buffer_resources.createGroup()
25
- .addUniform("uv_offset", "vec2f");
26
24
 
25
+ // per-draw, eight bytes, read-only: immediate data rather than a uniform buffer
26
+ lightmap_to_viz_buffer_resources.setImmediate("uv_offset", "vec2f");
27
27
  lightmap_to_viz_buffer_resources.createGroup()
28
28
  .addStorageBuffer("scene_database", WebGPUArray.from(u32))
29
29
  .addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT))