@woosh/meep-engine 3.61.3 → 3.62.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 (266) hide show
  1. package/package.json +1 -1
  2. package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
  3. package/src/engine/graphics3/PickingSystem.js +415 -413
  4. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
  5. package/src/engine/graphics3/decal/GPUDecalRenderer.js +2 -1
  6. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  7. package/src/engine/graphics3/decal/shader_decal_composite.js +26 -16
  8. package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -1
  9. package/src/engine/graphics3/decal/shader_decal_tile_copy.js +6 -11
  10. package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
  11. package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +6 -2
  12. package/src/engine/graphics3/highlight/shader_highlight_outline.d.ts.map +1 -1
  13. package/src/engine/graphics3/highlight/shader_highlight_outline.js +167 -150
  14. package/src/engine/graphics3/shader_picking_gather.d.ts.map +1 -1
  15. package/src/engine/graphics3/shader_picking_gather.js +133 -120
  16. package/src/shade/device/mock/SoftwareGPUTexture.d.ts.map +1 -1
  17. package/src/shade/device/mock/SoftwareGPUTexture.js +11 -0
  18. package/src/shade/device/pipeline/rp_validate_and_rewrite_for_color_attachments.js +1 -1
  19. package/src/shade/playground/contact_shadows/ContactShadowLab.js +6 -6
  20. package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts.map +1 -1
  21. package/src/shade/playground/contact_shadows/shader_contact_lab_composite.js +6 -4
  22. package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts.map +1 -1
  23. package/src/shade/playground/contact_shadows/shader_contact_lab_reference.js +6 -4
  24. package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts.map +1 -1
  25. package/src/shade/playground/contact_shadows/shader_contact_shadow_march.js +6 -4
  26. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +1 -1
  27. package/src/shade/playground/ssr_variance/capture.js +1 -1
  28. package/src/shade/renderer/Renderer.d.ts +2 -2
  29. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  30. package/src/shade/renderer/Renderer.js +40 -53
  31. package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
  32. package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +3 -1
  33. package/src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.d.ts.map +1 -1
  34. package/src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.js +5 -4
  35. package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
  36. package/src/shade/renderer/deferred/shader_deferred_main.js +6 -4
  37. package/src/shade/renderer/extension/GBufferTextures.d.ts +5 -1
  38. package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
  39. package/src/shade/renderer/extension/GBufferTextures.js +5 -1
  40. package/src/shade/renderer/extension/ViewTextures.d.ts +11 -7
  41. package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
  42. package/src/shade/renderer/extension/ViewTextures.js +17 -13
  43. package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.d.ts +2 -0
  44. package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.d.ts.map +1 -1
  45. package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.js +2 -0
  46. package/src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.d.ts.map +1 -1
  47. package/src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.js +8 -5
  48. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts +7 -5
  49. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  50. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +29 -16
  51. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts +9 -3
  52. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts.map +1 -1
  53. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.js +40 -32
  54. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
  55. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +14 -15
  56. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_debug_draw.d.ts.map +1 -1
  57. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_debug_draw.js +7 -3
  58. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_diffuse.js +1 -1
  59. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.d.ts.map +1 -1
  60. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.js +5 -3
  61. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.d.ts.map +1 -1
  62. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.js +1 -3
  63. package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.js +1 -1
  64. package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.js +2 -2
  65. package/src/shade/renderer/global_illumination/lpv/shader_diffuse_LPV.js +1 -1
  66. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  67. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +14 -1
  68. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  69. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +10 -1
  70. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +2 -2
  71. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
  72. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +5 -3
  73. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +1 -1
  74. package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.d.ts.map +1 -1
  75. package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js +5 -3
  76. package/src/shade/renderer/global_illumination/sharc/shader/debug/shader_colored_hash.js +1 -1
  77. package/src/shade/renderer/global_illumination/sharc/shader/debug/shader_sharc_debug_radiance.js +1 -1
  78. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +1 -1
  79. package/src/shade/renderer/material/GPUMaterialManager.d.ts +22 -9
  80. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  81. package/src/shade/renderer/material/GPUMaterialManager.js +159 -65
  82. package/src/shade/renderer/material/MATERIAL_MASK.d.ts +19 -0
  83. package/src/shade/renderer/material/MATERIAL_MASK.d.ts.map +1 -0
  84. package/src/shade/renderer/material/MATERIAL_MASK.js +19 -0
  85. package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.d.ts +8 -8
  86. package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.d.ts.map +1 -1
  87. package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.js +11 -92
  88. package/src/shade/renderer/material/dispatch/chunk_material_quad_keys.d.ts.map +1 -1
  89. package/src/shade/renderer/material/dispatch/chunk_material_quad_keys.js +10 -2
  90. package/src/shade/renderer/material/dispatch/gbuffer_compute.js +2 -2
  91. package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.d.ts +7 -7
  92. package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.d.ts.map +1 -1
  93. package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.js +20 -16
  94. package/src/shade/renderer/material/dispatch/shader_material_pixel_count.d.ts.map +1 -1
  95. package/src/shade/renderer/material/dispatch/shader_material_pixel_count.js +3 -1
  96. package/src/shade/renderer/material/dispatch/shader_material_pixel_scatter.d.ts.map +1 -1
  97. package/src/shade/renderer/material/dispatch/shader_material_pixel_scatter.js +3 -1
  98. package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
  99. package/src/shade/renderer/material/standard/fragment_gbuffer.js +26 -25
  100. package/src/shade/renderer/material/standard/material_gbuffer_vertex.d.ts +10 -8
  101. package/src/shade/renderer/material/standard/material_gbuffer_vertex.d.ts.map +1 -1
  102. package/src/shade/renderer/material/standard/material_gbuffer_vertex.js +16 -13
  103. package/src/shade/renderer/material/template/ShadeMaterialTemplate.d.ts +1 -1
  104. package/src/shade/renderer/material/template/ShadeMaterialTemplate.js +1 -1
  105. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts +5 -2
  106. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
  107. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +7 -4
  108. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts +3 -3
  109. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts.map +1 -1
  110. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +12 -10
  111. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +2 -2
  112. package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.d.ts.map +1 -1
  113. package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.js +6 -4
  114. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +9 -7
  115. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  116. package/src/shade/renderer/postprocess/gtao/GTAO.js +11 -8
  117. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts +3 -3
  118. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
  119. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +17 -12
  120. package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.js +1 -1
  121. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +1 -1
  122. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +4 -4
  123. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.js +2 -2
  124. package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.js +41 -41
  125. package/src/shade/renderer/postprocess/ssr/prefilter/chunk_load_neighbourhood_sample.js +1 -1
  126. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +3 -3
  127. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts.map +1 -1
  128. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +5 -2
  129. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +4 -4
  130. package/src/shade/renderer/postprocess/ssr/ssr_combine_shader.d.ts.map +1 -1
  131. package/src/shade/renderer/postprocess/ssr/ssr_combine_shader.js +4 -2
  132. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts +2 -1
  133. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts.map +1 -1
  134. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.js +10 -2
  135. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +1 -1
  136. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -4
  137. package/src/shade/renderer/postprocess/taa/shader_reprojection_map.d.ts.map +1 -1
  138. package/src/shade/renderer/postprocess/taa/shader_reprojection_map.js +6 -4
  139. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +6 -8
  140. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
  141. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +29 -33
  142. package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts.map +1 -1
  143. package/src/shade/renderer/rasterize/TemplatePassDescriptor.js +1 -0
  144. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +6 -3
  145. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -1
  146. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +8 -3
  147. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
  148. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +3 -0
  149. package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.d.ts +1 -0
  150. package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.js +5 -0
  151. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +8 -3
  152. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
  153. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +54 -5
  154. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +1 -0
  155. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  156. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +1 -1
  157. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +1 -1
  158. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  159. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +2 -1
  160. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts +7 -2
  161. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts.map +1 -1
  162. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +73 -9
  163. package/src/shade/renderer/rasterize/native/viz/shader_vertex.js +4 -4
  164. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
  165. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +23 -40
  166. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.d.ts.map +1 -1
  167. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +55 -76
  168. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts +4 -2
  169. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  170. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +6 -2
  171. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts +4 -2
  172. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  173. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +6 -2
  174. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +5 -2
  175. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
  176. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +43 -2
  177. package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.d.ts +39 -0
  178. package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.d.ts.map +1 -0
  179. package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.js +45 -0
  180. package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.d.ts +26 -0
  181. package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.d.ts.map +1 -0
  182. package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.js +48 -0
  183. package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.d.ts +40 -0
  184. package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.d.ts.map +1 -0
  185. package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.js +172 -0
  186. package/src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.d.ts.map +1 -1
  187. package/src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.js +6 -4
  188. package/src/shade/renderer/restir/di/chunk_restir_spatial_reuse.js +1 -1
  189. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +2 -2
  190. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.d.ts +9 -0
  191. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.d.ts.map +1 -0
  192. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.js +18 -0
  193. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.d.ts +20 -0
  194. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.d.ts.map +1 -0
  195. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.js +26 -0
  196. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts +60 -18
  197. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts.map +1 -1
  198. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.js +163 -45
  199. package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.d.ts.map +1 -1
  200. package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.js +19 -18
  201. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.d.ts +13 -0
  202. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.d.ts.map +1 -0
  203. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js +22 -0
  204. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.d.ts +8 -1
  205. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.d.ts.map +1 -1
  206. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js +10 -8
  207. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.d.ts +22 -0
  208. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.d.ts.map +1 -0
  209. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.js +32 -0
  210. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.d.ts +11 -1
  211. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.d.ts.map +1 -1
  212. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.js +14 -6
  213. package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.d.ts +14 -0
  214. package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.d.ts.map +1 -0
  215. package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.js +24 -0
  216. package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.d.ts +17 -0
  217. package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.d.ts.map +1 -0
  218. package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.js +27 -0
  219. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts +7 -1
  220. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts.map +1 -1
  221. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.js +8 -1
  222. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_load_world_space_normal.js +1 -1
  223. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +10 -10
  224. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +8 -0
  225. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  226. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +9 -0
  227. package/src/shade/renderer/shader/util/shader_decode_octahedral_normal.js +1 -1
  228. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts +3 -3
  229. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts.map +1 -1
  230. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.js +3 -3
  231. package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts.map +1 -1
  232. package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.js +6 -4
  233. package/src/shade/renderer/shadow/ray/RTXShadows.d.ts +6 -4
  234. package/src/shade/renderer/shadow/ray/RTXShadows.d.ts.map +1 -1
  235. package/src/shade/renderer/shadow/ray/RTXShadows.js +16 -5
  236. package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.d.ts.map +1 -1
  237. package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.js +7 -7
  238. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +2 -2
  239. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts +4 -2
  240. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts.map +1 -1
  241. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +79 -74
  242. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
  243. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +7 -7
  244. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.d.ts.map +1 -1
  245. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +7 -3
  246. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts +7 -5
  247. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  248. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +29 -16
  249. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts +5 -5
  250. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
  251. package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +8 -8
  252. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  253. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +13 -14
  254. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +2 -1
  255. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  256. package/src/shade/renderer/water/GPUWaterRenderer.js +6 -4
  257. package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
  258. package/src/shade/renderer/water/chunk_water_transport.js +11 -9
  259. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  260. package/src/shade/renderer/water/shader_water.js +13 -11
  261. package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.d.ts +0 -7
  262. package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.d.ts.map +0 -1
  263. package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.js +0 -6
  264. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts +0 -3
  265. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +0 -1
  266. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +0 -104
@@ -1 +1 @@
1
- {"version":3,"file":"shader_generate_rays.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js"],"names":[],"mappings":"AA2BA,0CAEG;AAEH;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAkHvC,iDAIE;6BAvJ2B,yCAAyC;8BAoBxC,qCAAqC"}
1
+ {"version":3,"file":"shader_generate_rays.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js"],"names":[],"mappings":"AA8BA,0CAEG;AAEH;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AA+GvC,iDAIE;6BAvJ2B,yCAAyC;8BAuBxC,qCAAqC"}
@@ -7,6 +7,9 @@ import {
7
7
  chunk_project_position_from_depth
8
8
  } from "../../../../shader/chunk/camera/chunk_project_position_from_depth.js";
9
9
  import { chunk_decode_g_buffer_normal } from "../../../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
10
+ import {
11
+ chunk_decode_g_buffer_face_normal
12
+ } from "../../../../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
10
13
  import { chunk_mat4_extract_position } from "../../../../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
11
14
  import { chunk_offset_ray_from_depth } from "../../../../shader/chunk/geometry/ray/chunk_offset_ray_from_depth.js";
12
15
  import { RAY_STRUCT } from "../../../../shader/chunk/geometry/ray/RAY_STRUCT.js";
@@ -53,6 +56,7 @@ resources.createGroup()
53
56
  resources.createGroup()
54
57
  .addTexture("texture_depth")
55
58
  .addTexture("texture_normal", "uint")
59
+ .addTexture("texture_pbr")
56
60
  .addTexture("texture_noise", "uint", "2d", false, HILBERT_R2_INDEX_TEXTURE)
57
61
  .addUniform("camera", CAMERA_UNIFORM_STRUCT)
58
62
 
@@ -92,13 +96,8 @@ fn main(
92
96
  camera.view_projection_matrix_inverse
93
97
  );
94
98
 
95
- let g_buffer_sample_normal = textureLoad( texture_normal,
96
- pixel_position,
97
- 0
98
- );
99
-
100
- let geometric_normal = decode_g_buffer_normal( g_buffer_sample_normal.zw );
101
- let shading_normal = decode_g_buffer_normal( g_buffer_sample_normal.xy );
99
+ let geometric_normal = decode_g_buffer_face_normal( textureLoad( texture_pbr, pixel_position, 0 ) );
100
+ let shading_normal = decode_g_buffer_normal( textureLoad( texture_normal, pixel_position, 0 ).x );
102
101
 
103
102
  let jitter = spatio_temporal_noise_r2_64(pixel_position, settings.frame_index, texture_noise);
104
103
 
@@ -134,6 +133,7 @@ fn main(
134
133
  }
135
134
  `, [
136
135
  chunk_decode_g_buffer_normal,
136
+ chunk_decode_g_buffer_face_normal,
137
137
  chunk_directional_lights_iteration_mask,
138
138
  chunk_sample_directional_light_record,
139
139
  chunk_spatio_temporal_noise_r2_64,
@@ -1 +1 @@
1
- {"version":3,"file":"shader_scene_sdf_soft_shadows.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js"],"names":[],"mappings":"AAuDA,sDA+GC;AAmED,wDASE;0BAjOwB,uCAAuC;4BACrC,gCAAgC"}
1
+ {"version":3,"file":"shader_scene_sdf_soft_shadows.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js"],"names":[],"mappings":"AA2DA,sDA+GC;AAmED,wDASE;0BAlOwB,uCAAuC;4BACrC,gCAAgC"}
@@ -10,6 +10,9 @@ import { AABB3_STRUCT } from "../../../shader/chunk/geometry/aabb3/AABB3_STRUCT.
10
10
  import { chunk_aabb3_distance_to_ray_v2 } from "../../../shader/chunk/geometry/aabb3/chunk_aabb3_distance_to_ray_v2.js";
11
11
  import { chunk_mat4_compose_transform } from "../../../shader/chunk/geometry/mat4/chunk_mat4_compose_transform.js";
12
12
  import { chunk_decode_g_buffer_normal } from "../../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
13
+ import {
14
+ chunk_decode_g_buffer_face_normal
15
+ } from "../../../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
13
16
  import { RAY_STRUCT } from "../../../shader/chunk/geometry/ray/RAY_STRUCT.js";
14
17
  import { chunk_v3_matrix4_project } from "../../../shader/chunk/geometry/vec3/chunk_v3_matrix4_project.js";
15
18
  import { chunk_light_get_sun } from "../../../shader/chunk/light/sky/chunk_sample_sky_color.js";
@@ -39,6 +42,7 @@ resources.createGroup()
39
42
  resources.createGroup({ label: "g-buffer" })
40
43
  .addTexture("gBufferDepth")
41
44
  .addTexture("gBufferNormals", "uint")
45
+ .addTexture("gBufferPBR")
42
46
 
43
47
  resources.createGroup()
44
48
  .addStorageBuffer("light_data", WebGPUArray.u32)
@@ -191,10 +195,9 @@ fn main(
191
195
 
192
196
  let jitter = spatio_temporal_noise_r2_64(i_coord, sdf_metadata.frame_index, tNoise);
193
197
 
194
- let g_buffer_normals = textureLoad(gBufferNormals, i_coord, 0);
195
198
 
196
- let geometric_normal = decode_g_buffer_normal(g_buffer_normals.zw);
197
- let shading_normal = decode_g_buffer_normal(g_buffer_normals.xy);
199
+ let geometric_normal = decode_g_buffer_face_normal(textureLoad(gBufferPBR, i_coord, 0));
200
+ let shading_normal = decode_g_buffer_normal(textureLoad(gBufferNormals, i_coord, 0).x);
198
201
 
199
202
  let position_ws = project_position_from_depth(uv, texel_depth, camera.view_projection_matrix_inverse);
200
203
 
@@ -222,6 +225,7 @@ fn main(
222
225
  chunk_light_get_sun,
223
226
  chunk_is_background,
224
227
  chunk_decode_g_buffer_normal,
228
+ chunk_decode_g_buffer_face_normal,
225
229
  chunk_project_position_from_depth,
226
230
  chunk_texel_coordinate_to_uv,
227
231
  chunk_scene_sdf_ray_occlusion,
@@ -4,16 +4,18 @@
4
4
  * @param {FrameGraph} options.graph
5
5
  * @param {GPUViewContext} options.view
6
6
  * @param {number} options.input_depth
7
- * @param {number} options.input_normals
8
- * @param {number} options.input_viz_mesh
7
+ * @param {number} options.input_pbr the G-buffer's PBR target, for its face normal
8
+ * @param {number} options.input_visibility the visibility buffer
9
+ * @param {number} options.input_visible_meshlets the frame's visible-meshlet table, which resolves it
9
10
  * @returns {number} texture with shadows
10
11
  */
11
- export function graph_draw_sdf_shadows({ graph, view, input_depth, input_normals, input_viz_mesh, }: {
12
+ export function graph_draw_sdf_shadows({ graph, view, input_depth, input_pbr, input_visibility, input_visible_meshlets, }: {
12
13
  graph: FrameGraph;
13
14
  view: GPUViewContext;
14
15
  input_depth: number;
15
- input_normals: number;
16
- input_viz_mesh: number;
16
+ input_pbr: number;
17
+ input_visibility: number;
18
+ input_visible_meshlets: number;
17
19
  }): number;
18
20
  export const shader_draw_sdf_shadows: ImageShader;
19
21
  import { ImageShader } from "../../shader/ImageShader.js";
@@ -1 +1 @@
1
- {"version":3,"file":"graph_draw_sdf_shadows.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js"],"names":[],"mappings":"AAqHA;;;;;;;;;GASG;AACH;IAP+B,KAAK;IACD,IAAI;IACZ,WAAW,EAA3B,MAAM;IACU,aAAa,EAA7B,MAAM;IACU,cAAc,EAA9B,MAAM;IACJ,MAAM,CA6FlB;AAhHD,kDASG;4BA9FyB,6BAA6B"}
1
+ {"version":3,"file":"graph_draw_sdf_shadows.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js"],"names":[],"mappings":"AA8HA;;;;;;;;;;GAUG;AACH;IAR+B,KAAK;IACD,IAAI;IACZ,WAAW,EAA3B,MAAM;IACU,SAAS,EAAzB,MAAM;IACU,gBAAgB,EAAhC,MAAM;IACU,sBAAsB,EAAtC,MAAM;IACJ,MAAM,CAgGlB;AApHD,kDASG;4BAjGyB,6BAA6B"}
@@ -14,11 +14,17 @@ import { GEOMETRY_METADATA_STRUCT } from "../../geometry/GEOMETRY_METADATA_STRUC
14
14
  import { BVH2_NODE_STRUCT } from "../../shader/chunk/bvh/BVH2_NODE_STRUCT.js";
15
15
  import { BVH_STRUCT } from "../../shader/chunk/bvh/BVH_STRUCT.js";
16
16
  import { chunk_project_position_from_depth } from "../../shader/chunk/camera/chunk_project_position_from_depth.js";
17
- import { chunk_decode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
17
+ import {
18
+ chunk_decode_g_buffer_face_normal
19
+ } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
18
20
  import { RAY_STRUCT } from "../../shader/chunk/geometry/ray/RAY_STRUCT.js";
19
21
  import { chunk_scene_sdf_soft_shadow } from "../../shader/chunk/sdf/chunk_scene_sdf_soft_shadow.js";
20
22
  import { chunk_sdf_hard_shadow } from "../../shader/chunk/sdf/chunk_sdf_hard_shadow.js";
21
23
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
24
+ import {
25
+ chunk_visibility_decode,
26
+ VISIBLE_MESHLETS_RESOURCE
27
+ } from "../../rasterize/visibility/chunk_visibility_decode.js";
22
28
  import { ImageShader } from "../../shader/ImageShader.js";
23
29
  import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
24
30
  import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
@@ -35,8 +41,9 @@ resources.createGroup()
35
41
  .add(MESH_SDF_ATLAS_RESOURCE)
36
42
  .add(MESH_SDF_SAMPLER_RESOURCE)
37
43
  .addTexture("gBufferDepth")
38
- .addTexture("gBufferNormals", "uint")
39
- .addTexture("vizBufferMesh", "uint")
44
+ .addTexture("gBufferPBR")
45
+ .addTexture("visibility", "uint")
46
+ .add(VISIBLE_MESHLETS_RESOURCE)
40
47
 
41
48
  resources.createGroup()
42
49
  .addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT))
@@ -73,9 +80,10 @@ fn main(
73
80
  return vec4(1.0);
74
81
  }
75
82
 
76
- let geometric_normal = decode_g_buffer_normal(textureLoad(gBufferNormals, coord_i, 0).zw);
83
+ let geometric_normal = decode_g_buffer_face_normal(textureLoad(gBufferPBR, coord_i, 0));
77
84
 
78
- let mesh_id = textureLoad(vizBufferMesh, coord_i, 0).x;
85
+ // a surface is here: the depth is not the background's
86
+ let mesh_id = visibility_decode(textureLoad(visibility, coord_i, 0).x).mesh;
79
87
 
80
88
  let position_ws = project_position_from_depth(uv, depth, camera.view_projection_matrix_inverse);
81
89
 
@@ -99,7 +107,8 @@ fn main(
99
107
  `, [
100
108
  RAY_STRUCT.declaration_chunk,
101
109
  chunk_project_position_from_depth,
102
- chunk_decode_g_buffer_normal,
110
+ chunk_decode_g_buffer_face_normal,
111
+ chunk_visibility_decode,
103
112
  chunk_scene_sdf_soft_shadow,
104
113
  chunk_sdf_hard_shadow,
105
114
  ]);
@@ -121,16 +130,18 @@ export const shader_draw_sdf_shadows = new ImageShader({
121
130
  * @param {FrameGraph} options.graph
122
131
  * @param {GPUViewContext} options.view
123
132
  * @param {number} options.input_depth
124
- * @param {number} options.input_normals
125
- * @param {number} options.input_viz_mesh
133
+ * @param {number} options.input_pbr the G-buffer's PBR target, for its face normal
134
+ * @param {number} options.input_visibility the visibility buffer
135
+ * @param {number} options.input_visible_meshlets the frame's visible-meshlet table, which resolves it
126
136
  * @returns {number} texture with shadows
127
137
  */
128
138
  export function graph_draw_sdf_shadows({
129
139
  graph,
130
140
  view,
131
141
  input_depth,
132
- input_normals,
133
- input_viz_mesh,
142
+ input_pbr,
143
+ input_visibility,
144
+ input_visible_meshlets,
134
145
  }) {
135
146
 
136
147
 
@@ -159,7 +170,7 @@ export function graph_draw_sdf_shadows({
159
170
  /**
160
171
  * @type {GPUTextureContext}
161
172
  */
162
- const normals = resources.get(data.normals);
173
+ const pbr = resources.get(data.pbr);
163
174
  /**
164
175
  * @type {GPUTextureContext}
165
176
  */
@@ -167,7 +178,7 @@ export function graph_draw_sdf_shadows({
167
178
  /**
168
179
  * @type {GPUTextureContext}
169
180
  */
170
- const viz_mesh = resources.get(data.viz_mesh);
181
+ const visibility = resources.get(data.visibility);
171
182
 
172
183
  const buffer_settings = {
173
184
  slice: pingpong(current_time_in_seconds() / 5, 1),
@@ -178,8 +189,9 @@ export function graph_draw_sdf_shadows({
178
189
  bindings: sdf.write_bindings({
179
190
  settings: buffer_settings,
180
191
  gBufferDepth: depth.obtainView(),
181
- gBufferNormals: normals.obtainView(),
182
- vizBufferMesh: viz_mesh.obtainView(),
192
+ gBufferPBR: pbr.obtainView(),
193
+ visibility: visibility.obtainView(),
194
+ visible_meshlets: resources.get(data.visible_meshlets),
183
195
  geometries: geometries.buffer_metadata,
184
196
  scene_database: view.scene.scene_database_buffer,
185
197
  tlas: view.scene.tlas.buffer,
@@ -206,8 +218,9 @@ export function graph_draw_sdf_shadows({
206
218
  const pass_builder = graph.add("SDF shadows", pass_data, execute);
207
219
 
208
220
  pass_data.depth = pass_builder.read(input_depth);
209
- pass_data.normals = pass_builder.read(input_normals);
210
- pass_data.viz_mesh = pass_builder.read(input_viz_mesh);
221
+ pass_data.pbr = pass_builder.read(input_pbr);
222
+ pass_data.visibility = pass_builder.read(input_visibility);
223
+ pass_data.visible_meshlets = pass_builder.read(input_visible_meshlets);
211
224
 
212
225
  pass_data.output = pass_builder.create('sdf', TextureResourceDescriptor.from({
213
226
  format: "rgba8unorm",
@@ -138,15 +138,15 @@ export class VirtualTextureManager {
138
138
  * @param {Object} args
139
139
  * @param {FrameGraph} args.graph
140
140
  * @param {GPUViewContext} args.view
141
- * @param {number} args.texture_viz_mesh graph handle
142
- * @param {number} args.texture_viz_triangle graph handle
141
+ * @param {number} args.texture_visibility graph handle, the visibility buffer
142
+ * @param {number} args.visible_meshlets graph handle, the frame's visible-meshlet table, which resolves it
143
143
  * @param {GPUBuffer} args.material_metadata_buffer
144
144
  */
145
- graph_feedback({ graph, view, texture_viz_mesh, texture_viz_triangle, material_metadata_buffer, }: {
145
+ graph_feedback({ graph, view, texture_visibility, visible_meshlets, material_metadata_buffer, }: {
146
146
  graph: FrameGraph;
147
147
  view: GPUViewContext;
148
- texture_viz_mesh: number;
149
- texture_viz_triangle: number;
148
+ texture_visibility: number;
149
+ visible_meshlets: number;
150
150
  material_metadata_buffer: GPUBuffer;
151
151
  }): void;
152
152
  destroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualTextureManager.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/virtual/VirtualTextureManager.js"],"names":[],"mappings":"AAmHA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IA4KI;;;OAGG;IACH,+BAIC;IAvBD;;OAEG;IACH;;;;;;;;;;MAUE;IAYF;;;OAGG;IACH,8BAIC;IAED;;OAEG;IACH,sBAEC;IAED;;OAEG;IACH,kBAEC;IAED;;;OAGG;IACH,2EAIC;IAED;;OAEG;IACH,qCAIC;IAED;;OAEG;IACH,mCAIC;IAED;;OAEG;IACH,6BAIC;IAED;;OAEG;IACH,sCAIC;IAED;;OAEG;IACH,gCAIC;IAED;;;;OAIG;IACH,uIAQC;IAED;;;;OAIG;IACH,+EAIC;IA8DD;;;;;;;OAOG;IACH,sBAHW,mBAAmB,GACjB,MAAM,CA6FlB;IAED;;;;;OAKG;IACH,wBAFW,mBAAmB,QAgF7B;IA8ED;;;;;;;;;OASG;IACH,wBAFW,WAAW,QAoFrB;IA8KD;;;;;;OAMG;IACH,wBAqBC;IAED;;;OAGG;IACH,eAkHC;IAID;;;;;;;;;;;;OAYG;IACH;QAN4B,KAAK,EAAtB,UAAU;QACW,IAAI,EAAzB,cAAc;QACD,gBAAgB,EAA7B,MAAM;QACO,oBAAoB,EAAjC,MAAM;QACU,wBAAwB;aA6FlD;IAED,gBA8BC;;CACJ;yBAvvCY,OAAO,8DAA8D,EAAE,UAAU;uCACjF,OAAO,iEAAiE,EAAE,wBAAwB;wBAClG,OAAO,oCAAoC,EAAE,SAAS;6BACtD,OAAO,8BAA8B,EAAE,cAAc;kCACrD,OAAO,0BAA0B,EAAE,mBAAmB;gCAPnC,sBAAsB"}
1
+ {"version":3,"file":"VirtualTextureManager.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/virtual/VirtualTextureManager.js"],"names":[],"mappings":"AAmHA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IA4KI;;;OAGG;IACH,+BAIC;IAvBD;;OAEG;IACH;;;;;;;;;;MAUE;IAYF;;;OAGG;IACH,8BAIC;IAED;;OAEG;IACH,sBAEC;IAED;;OAEG;IACH,kBAEC;IAED;;;OAGG;IACH,2EAIC;IAED;;OAEG;IACH,qCAIC;IAED;;OAEG;IACH,mCAIC;IAED;;OAEG;IACH,6BAIC;IAED;;OAEG;IACH,sCAIC;IAED;;OAEG;IACH,gCAIC;IAED;;;;OAIG;IACH,uIAQC;IAED;;;;OAIG;IACH,+EAIC;IA8DD;;;;;;;OAOG;IACH,sBAHW,mBAAmB,GACjB,MAAM,CA6FlB;IAED;;;;;OAKG;IACH,wBAFW,mBAAmB,QAgF7B;IA8ED;;;;;;;;;OASG;IACH,wBAFW,WAAW,QAoFrB;IA8KD;;;;;;OAMG;IACH,wBAqBC;IAED;;;OAGG;IACH,eAkHC;IAID;;;;;;;;;;;;OAYG;IACH;QAN4B,KAAK,EAAtB,UAAU;QACW,IAAI,EAAzB,cAAc;QACD,kBAAkB,EAA/B,MAAM;QACO,gBAAgB,EAA7B,MAAM;QACU,wBAAwB;aA6FlD;IAED,gBA8BC;;CACJ;yBAvvCY,OAAO,8DAA8D,EAAE,UAAU;uCACjF,OAAO,iEAAiE,EAAE,wBAAwB;wBAClG,OAAO,oCAAoC,EAAE,SAAS;6BACtD,OAAO,8BAA8B,EAAE,cAAc;kCACrD,OAAO,0BAA0B,EAAE,mBAAmB;gCAPnC,sBAAsB"}
@@ -1171,15 +1171,15 @@ export class VirtualTextureManager {
1171
1171
  * @param {Object} args
1172
1172
  * @param {FrameGraph} args.graph
1173
1173
  * @param {GPUViewContext} args.view
1174
- * @param {number} args.texture_viz_mesh graph handle
1175
- * @param {number} args.texture_viz_triangle graph handle
1174
+ * @param {number} args.texture_visibility graph handle, the visibility buffer
1175
+ * @param {number} args.visible_meshlets graph handle, the frame's visible-meshlet table, which resolves it
1176
1176
  * @param {GPUBuffer} args.material_metadata_buffer
1177
1177
  */
1178
1178
  graph_feedback({
1179
1179
  graph,
1180
1180
  view,
1181
- texture_viz_mesh,
1182
- texture_viz_triangle,
1181
+ texture_visibility,
1182
+ visible_meshlets,
1183
1183
  material_metadata_buffer,
1184
1184
  }) {
1185
1185
 
@@ -1228,8 +1228,8 @@ export class VirtualTextureManager {
1228
1228
  group_count_y,
1229
1229
  group_count_z: 1,
1230
1230
  bindings: {
1231
- viz_buffer_triangle: resources.get(data.viz_triangle).obtainView(),
1232
- viz_buffer_mesh: resources.get(data.viz_mesh).obtainView(),
1231
+ visibility: resources.get(data.visibility).obtainView(),
1232
+ visible_meshlets: resources.get(data.visible_meshlets),
1233
1233
  view: view.uniform_buffer.buffer,
1234
1234
  vt_params: { stride, jitter, mip_bias },
1235
1235
  scene_database: scene_ctx.scene_database_buffer,
@@ -1242,8 +1242,8 @@ export class VirtualTextureManager {
1242
1242
  });
1243
1243
  });
1244
1244
 
1245
- pass_data.viz_mesh = pass.read(texture_viz_mesh);
1246
- pass_data.viz_triangle = pass.read(texture_viz_triangle);
1245
+ pass_data.visibility = pass.read(texture_visibility);
1246
+ pass_data.visible_meshlets = pass.read(visible_meshlets);
1247
1247
 
1248
1248
  pass_data.requests = pass.create("vt_requests", BufferResourceDescriptor.from(
1249
1249
  config.hash_capacity * 4,
@@ -1 +1 @@
1
- {"version":3,"file":"build_shader_vt_feedback.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/virtual/build_shader_vt_feedback.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAJ6B,eAAe,EAAjC,SAAS;IACM,aAAa,EAA5B,MAAM;IACJ,aAAa,CAmKzB;AA9MD;;;;;;;;GAQG;AACH,qDAI8B;AAS9B,2CAA4C;0BA9BlB,oCAAoC;8BAChC,+BAA+B;6BAjBhC,mCAAmC"}
1
+ {"version":3,"file":"build_shader_vt_feedback.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/virtual/build_shader_vt_feedback.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAJ6B,eAAe,EAAjC,SAAS;IACM,aAAa,EAA5B,MAAM;IACJ,aAAa,CAkKzB;AA7MD;;;;;;;;GAQG;AACH,qDAI8B;AAS9B,2CAA4C;0BA9BlB,oCAAoC;8BAChC,+BAA+B;6BAjBhC,mCAAmC"}
@@ -4,14 +4,14 @@ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
4
4
  import { GEOMETRY_ATTRIBUTE_DATA_TYPE } from "../../geometry/GEOMETRY_ATTRIBUTE_DATA_TYPE.js";
5
5
  import { MESHLET_METADATA_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
6
6
  import {
7
- VIZ_BUFFER_INVALID_MESH_VALUE
8
- } from "../../rasterize/native/viz/VIZ_BUFFER_INVALID_MESH_VALUE.js";
7
+ chunk_visibility_decode,
8
+ VISIBLE_MESHLETS_RESOURCE
9
+ } from "../../rasterize/visibility/chunk_visibility_decode.js";
9
10
  import { MATERIAL_METADATA_STRUCT } from "../../material/MATERIAL_METADATA_STRUCT.js";
10
11
  import { chunk_scene_database_access } from "../../scene/chunk_scene_database_access.js";
11
12
  import { RENDER_GLOBAL_MIP_BIAS } from "../../postprocess/taa/RENDER_GLOBAL_MIP_BIAS.js";
12
13
  import { chunk_barycentric_full } from "../../shader/chunk/geometry/triangle/chunk_barycentric_full.js";
13
14
  import { chunk_barycentric_interpolate_uv } from "../../shader/chunk/geometry/triangle/chunk_barycentric_interpolate_uv.js";
14
- import { chunk_decode_meshlet_element } from "../../shader/chunk/geometry/meshlet/chunk_decode_meshlet_element.js";
15
15
  import {
16
16
  chunk_read_meshlet_triangle_vertices
17
17
  } from "../../shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_vertices.js";
@@ -77,8 +77,8 @@ export function build_shader_vt_feedback({ chunk_vt_lookup, hash_capacity }) {
77
77
  resources.setImmediate("vt_params", VT_FEEDBACK_PARAMS_STRUCT);
78
78
 
79
79
  resources.createGroup()
80
- .addTexture("viz_buffer_triangle", "uint")
81
- .addTexture("viz_buffer_mesh", "uint")
80
+ .addTexture("visibility", "uint")
81
+ .add(VISIBLE_MESHLETS_RESOURCE)
82
82
  .addUniform("view", VIEW_UNIFORM_STRUCT)
83
83
  .addStorageBuffer("scene_database", WebGPUArray.from(u32))
84
84
  .addStorageBuffer("meshlet_metadata", WebGPUArray.from(MESHLET_METADATA_STRUCT))
@@ -149,13 +149,15 @@ fn main(
149
149
  return;
150
150
  }
151
151
 
152
- let mesh_index = textureLoad(viz_buffer_mesh, vec2<i32>(pixel), 0).r;
152
+ let visibility_word = textureLoad(visibility, vec2<i32>(pixel), 0).r;
153
153
 
154
- if (mesh_index == ${VIZ_BUFFER_INVALID_MESH_VALUE}u) {
154
+ if (visibility_word == VISIBILITY_NONE) {
155
155
  return;
156
156
  }
157
157
 
158
- let mesh = scene_read_mesh(&scene_database, mesh_index);
158
+ let visibility_texel = visibility_decode(visibility_word);
159
+
160
+ let mesh = scene_read_mesh(&scene_database, visibility_texel.mesh);
159
161
 
160
162
  let stack_id = material_metadata[mesh.material].vt_stack;
161
163
 
@@ -166,11 +168,8 @@ fn main(
166
168
  let info = vt_stacks[stack_id];
167
169
 
168
170
  // ── UV + gradients, mirroring fragment_gbuffer ──────────────────
169
- let encoded_meshlet_triangle = textureLoad(viz_buffer_triangle, vec2<i32>(pixel), 0).r;
170
-
171
- let decoded = decode_meshlet_element(encoded_meshlet_triangle);
172
- let meshlet_id = decoded[0];
173
- let meshlet_triangle_id = decoded[1];
171
+ let meshlet_id = visibility_texel.meshlet;
172
+ let meshlet_triangle_id = visibility_texel.triangle;
174
173
 
175
174
  let node = scene_read_node(&scene_database, mesh.node);
176
175
 
@@ -218,7 +217,7 @@ fn main(
218
217
  chunk_vt_request_key,
219
218
  chunk_hash_lowbias32,
220
219
  chunk_scene_database_access,
221
- chunk_decode_meshlet_element,
220
+ chunk_visibility_decode,
222
221
  chunk_read_meshlet_triangle_vertices,
223
222
  chunk_barycentric_full,
224
223
  chunk_barycentric_interpolate_uv,
@@ -36,13 +36,14 @@ export class GPUWaterRenderer {
36
36
  /** Optional single-pixel readback on the next rendered water frame. No per-frame readback. */
37
37
  request_probe(uv: any): Promise<any>;
38
38
  dispose(): void;
39
- avboit_prepare({ graph, view_ctx, camera, color_texture, depth_texture, normal_texture, hzb_texture, environment_texture, light_cluster_parameters, light_cluster_lookup, light_cluster_data, shadowmap_atlas, shader_switches, probes }: {
39
+ avboit_prepare({ graph, view_ctx, camera, color_texture, depth_texture, normal_texture, pbr_texture, hzb_texture, environment_texture, light_cluster_parameters, light_cluster_lookup, light_cluster_data, shadowmap_atlas, shader_switches, probes }: {
40
40
  graph: any;
41
41
  view_ctx: any;
42
42
  camera: any;
43
43
  color_texture: any;
44
44
  depth_texture: any;
45
45
  normal_texture: any;
46
+ pbr_texture: any;
46
47
  hzb_texture: any;
47
48
  environment_texture: any;
48
49
  light_cluster_parameters: any;
@@ -1 +1 @@
1
- {"version":3,"file":"GPUWaterRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/water/GPUWaterRenderer.js"],"names":[],"mappings":"AAsBA,sFAAsF;AACtF;IACI,WAAa;IACb,mBAAe;IACf,yBAAqB;IACrB,aAAS;IACT,WAAa;IACb;;;;;;;;;;;MAE6B;IAmB7B;;;OAGG;IACH;;;;;MAA8F;IAC9F;;;OAGG;IACH,wBAAyD;IAMzD,oCAIC;IAED,8FAA8F;IAC9F,qCAgBC;IAED,gBASC;IAuDD;;;;;;;;;;;;;;;;;MAyIC;IAQD;;;;;YAMC;IAED;;;;;;;;;;MAOC;IAED;;;;;;;;;;;;;;MAwBC;IAED,gGAAgG;IAChG,mEAYC;;CAyBJ;gCAvX+B,uCAAuC"}
1
+ {"version":3,"file":"GPUWaterRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/water/GPUWaterRenderer.js"],"names":[],"mappings":"AAsBA,sFAAsF;AACtF;IACI,WAAa;IACb,mBAAe;IACf,yBAAqB;IACrB,aAAS;IACT,WAAa;IACb;;;;;;;;;;;MAE6B;IAmB7B;;;OAGG;IACH;;;;;MAA8F;IAC9F;;;OAGG;IACH,wBAAyD;IAMzD,oCAIC;IAED,8FAA8F;IAC9F,qCAgBC;IAED,gBASC;IAuDD;;;;;;;;;;;;;;;;;;MA2IC;IAQD;;;;;YAMC;IAED;;;;;;;;;;MAOC;IAED;;;;;;;;;;;;;;MAwBC;IAED,gGAAgG;IAChG,mEAYC;;CAyBJ;gCAzX+B,uCAAuC"}
@@ -152,7 +152,7 @@ export class GPUWaterRenderer {
152
152
  pass.make_side_effect();
153
153
  }
154
154
 
155
- avboit_prepare({ graph, view_ctx, camera, color_texture, depth_texture, normal_texture,
155
+ avboit_prepare({ graph, view_ctx, camera, color_texture, depth_texture, normal_texture, pbr_texture,
156
156
  hzb_texture, environment_texture, light_cluster_parameters, light_cluster_lookup, light_cluster_data,
157
157
  shadowmap_atlas, shader_switches = ShaderSwitchSet.EMPTY, probes }) {
158
158
  assert.defined(probes, 'probes');
@@ -196,6 +196,7 @@ export class GPUWaterRenderer {
196
196
  trace: encoder.allocateTransientValueBuffer(WATER_TRACE_STRUCT, settings),
197
197
  tDepth: resources.get(data.scene_depth).obtainView(DEFAULT_DEPTH_TEXTURE_VIEW),
198
198
  tNormal: resources.get(data.normal).obtainView(),
199
+ tPBR: resources.get(data.pbr).obtainView(),
199
200
  tHZB: resources.get(data.hzb).obtainView(),
200
201
  tScene: resources.get(data.color).obtainView(),
201
202
  };
@@ -212,7 +213,7 @@ export class GPUWaterRenderer {
212
213
  render.end();
213
214
  });
214
215
  for (const [name, handle] of Object.entries({ camera, color: color_texture, scene_depth: depth_texture,
215
- normal: normal_texture, hzb: hzb_texture })) { data[name] = pass.read(handle); }
216
+ normal: normal_texture, pbr: pbr_texture, hzb: hzb_texture })) { data[name] = pass.read(handle); }
216
217
  const target = (name, format) => pass.create(`Water ${name}`, TextureResourceDescriptor.from({
217
218
  resolution, format, usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING
218
219
  | (probe !== null && format !== "depth32float" ? GPUTextureUsage.COPY_SRC : 0),
@@ -240,7 +241,8 @@ export class GPUWaterRenderer {
240
241
  const shared = {
241
242
  camera: resources.get(d.camera), trace: encoder.allocateTransientValueBuffer(WATER_TRACE_STRUCT, settings),
242
243
  tDepth: resources.get(d.scene_depth).obtainView(DEFAULT_DEPTH_TEXTURE_VIEW),
243
- tNormal: resources.get(d.normal).obtainView(), tHZB: resources.get(d.hzb).obtainView(),
244
+ tNormal: resources.get(d.normal).obtainView(), tPBR: resources.get(d.pbr).obtainView(),
245
+ tHZB: resources.get(d.hzb).obtainView(),
244
246
  tScene: resources.get(d.color).obtainView(),
245
247
  receiver: resources.get(d.receiver).obtainView(), trace_metadata: resources.get(d.trace_metadata).obtainView(),
246
248
  ...geometry_bindings(graphics, encoder, resources, d),
@@ -274,7 +276,7 @@ export class GPUWaterRenderer {
274
276
  draw(render, resources.get(d.commands), graphics.device);
275
277
  render.end();
276
278
  });
277
- for (const key of ['camera','scene_depth','normal','hzb','color','receiver','trace_metadata','interface_depth',
279
+ for (const key of ['camera','scene_depth','normal','pbr','hzb','color','receiver','trace_metadata','interface_depth',
278
280
  'lod_bodies','candidates','cells','commands']) {
279
281
  finalize_data[key] = finalize.read(data[key]);
280
282
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_water_transport.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/water/chunk_water_transport.js"],"names":[],"mappings":"AAUA,0DAEG;AAEH,8CAsBG;AAIH,mDAU6F;AAI7F,sDAmCoE;0BAzF1C,iCAAiC"}
1
+ {"version":3,"file":"chunk_water_transport.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/water/chunk_water_transport.js"],"names":[],"mappings":"AAWA,0DAEG;AAEH,8CAsBG;AAIH,mDAWmC;AAInC,sDAmCoE;0BA3F1C,iCAAiC"}
@@ -1,5 +1,6 @@
1
1
  import { CodeChunk } from '../shader/compiler/CodeChunk.js';
2
2
  import { chunk_decode_g_buffer_normal } from '../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js';
3
+ import { chunk_decode_g_buffer_face_normal } from '../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js';
3
4
  import { chunk_inv_project_position } from '../shader/chunk/screen_space/chunk_inv_project_position.js';
4
5
  import { chunk_is_background } from '../shader/chunk/depth/chunk_is_background.js';
5
6
  import { chunk_screen_space_newton_ray } from '../shader/chunk/screen_space/chunk_screen_space_newton_ray.js';
@@ -40,30 +41,31 @@ fn water_transport(event: WaterEvent, original: vec3f, receiver: vec3f,
40
41
  // is where the surface is, and the normal it was shaded with, which is what lit it.
41
42
  export const chunk_water_receiver_texel = CodeChunk.from(/* language=WGSL */ `
42
43
  struct WaterReceiverTexel { depth: f32, position: vec3f, face_normal: vec3f, shading_normal: vec3f }
43
- fn water_receiver_texel(depth: texture_2d<f32>, normals: texture_2d<u32>, coord: vec2i,
44
+ fn water_receiver_texel(depth: texture_2d<f32>, normals: texture_2d<u32>, pbr: texture_2d<f32>, coord: vec2i,
44
45
  inverse_projection: mat4x4f, inverse_view: mat4x4f) -> WaterReceiverTexel {
45
46
  let d = textureLoad(depth, coord, 0).r;
46
47
  let center = texel_coordinate_to_uv(vec2f(coord), textureDimensions(depth, 0));
47
48
  let position = inverse_view * vec4f(inv_project_position(vec3f(center, d), inverse_projection), 1.0);
48
- let encoded = textureLoad(normals, coord, 0);
49
- return WaterReceiverTexel(d, position.xyz, decode_g_buffer_normal(encoded.zw), decode_g_buffer_normal(encoded.xy));
49
+ return WaterReceiverTexel(d, position.xyz, decode_g_buffer_face_normal(textureLoad(pbr, coord, 0)),
50
+ decode_g_buffer_normal(textureLoad(normals, coord, 0).x));
50
51
  }
51
- `, [chunk_decode_g_buffer_normal, chunk_inv_project_position, chunk_texel_coordinate_to_uv]);
52
+ `, [chunk_decode_g_buffer_normal, chunk_decode_g_buffer_face_normal, chunk_inv_project_position,
53
+ chunk_texel_coordinate_to_uv]);
52
54
 
53
55
  // Filtering radiance across a silhouette must not introduce a surface that the ray never hit.
54
56
  // The center depth/face normal define receiver ownership; taps must lie on that same local plane.
55
57
  export const chunk_water_receiver_radiance = CodeChunk.from(/* language=WGSL */ `
56
58
  // Depth is stored at the texel center. Reconstruct the lookup on that texel's tangent
57
59
  // plane so subpixel lookup motion does not quantize water thickness.
58
- fn water_receiver_path(depth: texture_2d<f32>, normals: texture_2d<u32>, uv: vec2f,
60
+ fn water_receiver_path(depth: texture_2d<f32>, pbr: texture_2d<f32>, uv: vec2f,
59
61
  inverse_projection: mat4x4f, world_to_view: mat4x4f, origin: vec3f) -> f32 {
60
- let receiver = screen_space_ray_load_receiver(uv, depth, normals, inverse_projection, world_to_view);
62
+ let receiver = screen_space_ray_load_receiver(uv, depth, pbr, inverse_projection, world_to_view);
61
63
  return distance(origin, screen_space_ray_lookup_position(uv, receiver, inverse_projection).xyz);
62
64
  }
63
65
  fn water_receiver_radiance(scene: texture_2d<f32>, depth: texture_2d<f32>, normals: texture_2d<u32>,
64
- uv: vec2f, inverse_projection: mat4x4f, inverse_view: mat4x4f, surface: vec3f, surface_normal: vec3f, below_interface: bool) -> vec4f {
66
+ pbr: texture_2d<f32>, uv: vec2f, inverse_projection: mat4x4f, inverse_view: mat4x4f, surface: vec3f, surface_normal: vec3f, below_interface: bool) -> vec4f {
65
67
  let size = vec2i(textureDimensions(depth, 0));
66
- let center = water_receiver_texel(depth, normals, clamp(vec2i(uv * vec2f(size)), vec2i(0), size-1),
68
+ let center = water_receiver_texel(depth, normals, pbr, clamp(vec2i(uv * vec2f(size)), vec2i(0), size-1),
67
69
  inverse_projection, inverse_view);
68
70
  if (is_background(center.depth)
69
71
  || (below_interface && dot(center.position - surface, surface_normal) > WATER_LEVEL_TOLERANCE)) { return vec4f(0.0); }
@@ -75,7 +77,7 @@ fn water_receiver_radiance(scene: texture_2d<f32>, depth: texture_2d<f32>, norma
75
77
  for (var y = 0; y < 2; y++) {
76
78
  for (var x = 0; x < 2; x++) {
77
79
  let coord = clamp(base + vec2i(x,y), vec2i(0), size-1);
78
- let tap = water_receiver_texel(depth, normals, coord, inverse_projection, inverse_view);
80
+ let tap = water_receiver_texel(depth, normals, pbr, coord, inverse_projection, inverse_view);
79
81
  if (is_background(tap.depth) || (below_interface && dot(tap.position - surface, surface_normal) > WATER_LEVEL_TOLERANCE)
80
82
  || dot(center.face_normal, tap.face_normal) < 0.95
81
83
  || abs(dot(tap.position - center.position, center.face_normal)) > 0.02) { continue; }
@@ -1 +1 @@
1
- {"version":3,"file":"shader_water.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/water/shader_water.js"],"names":[],"mappings":"AAwpBA,kEAAsH;AACtH,gFAAgF;AAChF,wFAEC;AArmBD,8CAKwB;AAwCxB;;;;GAIG;AACH,mEAA8D;AAgP9D,+CAsFmB;AA2MnB,4CAAmG;AACnG,uGAAuG;AACvG,qDACgE;AAChE,0DAAyC;yCA5nBA,8DAA8D;6BA2B1E,gCAAgC;4CAJjB,mDAAmD;0BAPrE,iCAAiC;iCAQ1B,+BAA+B"}
1
+ {"version":3,"file":"shader_water.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/water/shader_water.js"],"names":[],"mappings":"AA0pBA,kEAAsH;AACtH,gFAAgF;AAChF,wFAEC;AAtmBD,8CAKwB;AAyCxB;;;;GAIG;AACH,mEAA8D;AAgP9D,+CAsFmB;AA2MnB,4CAAmG;AACnG,uGAAuG;AACvG,qDACgE;AAChE,0DAAyC;yCA9nBA,8DAA8D;6BA4B1E,gCAAgC;4CAJjB,mDAAmD;0BARrE,iCAAiC;iCAS1B,+BAA+B"}