@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":"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))