@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
@@ -20,7 +20,8 @@ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
20
20
  import {
21
21
  SCREEN_DEPTH_RESOURCE,
22
22
  SCREEN_HZB_RESOURCE,
23
- SCREEN_NORMAL_RESOURCE
23
+ SCREEN_NORMAL_RESOURCE,
24
+ SCREEN_PBR_RESOURCE
24
25
  } from "../shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.js";
25
26
  import { ShaderResourceDescriptor } from "../shader/resource/ShaderResourceDescriptor.js";
26
27
  import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
@@ -75,6 +76,7 @@ function water_resources(finalize = false) {
75
76
  .add(TRACE_RESOURCE)
76
77
  .add(SCREEN_DEPTH_RESOURCE)
77
78
  .add(SCREEN_NORMAL_RESOURCE)
79
+ .add(SCREEN_PBR_RESOURCE)
78
80
  .add(SCREEN_HZB_RESOURCE)
79
81
  .addTexture("tScene")
80
82
  .add(SCENE_DATABASE_RESOURCE)
@@ -383,7 +385,7 @@ fn water_hzb_crossing(origin: vec3f, direction: vec3f, budget: u32,
383
385
  fn water_exact_receiver(ray: Ray, input: ScreenSpaceRayHit) -> ScreenSpaceRayHit {
384
386
  var hit = input;
385
387
  if (hit.status != 0u) { return hit; }
386
- let receiver = screen_space_ray_load_receiver(hit.uv, tDepth, tNormal,
388
+ let receiver = screen_space_ray_load_receiver(hit.uv, tDepth, tPBR,
387
389
  camera.projection_matrix_inverse, camera.view_matrix);
388
390
  let travel = plane_ray_raycast(ray.origin, ray.direction, receiver.plane);
389
391
  // Keep the analytic distance rather than the projection of the texel center onto the ray.
@@ -392,14 +394,14 @@ fn water_exact_receiver(ray: Ray, input: ScreenSpaceRayHit) -> ScreenSpaceRayHit
392
394
  hit.uv = project_position(ray_at(ray.origin, ray.direction, travel), camera.projection_matrix).xy;
393
395
  // Reprojection can change texel ownership at a silhouette. Validate that lookup
394
396
  // again; the analytic travel above already checked the ray's bounded interval.
395
- let checked = screen_space_ray_validate(Ray(ray.origin,ray.direction,1e20),hit.uv,tDepth,tNormal,
397
+ let checked = screen_space_ray_validate(Ray(ray.origin,ray.direction,1e20),hit.uv,tDepth,tPBR,
396
398
  camera.projection_matrix,camera.projection_matrix_inverse,camera.view_matrix,trace.distance_tolerance);
397
399
  hit.status = checked.status;
398
400
  hit.residual = checked.residual;
399
401
  // The plane can carry a hit on the last texel before the sky across that edge. The texel the
400
402
  // traversal stopped on is still a receiver: accept it where it passes on its own.
401
403
  if (checked.status == 2u) {
402
- let unsnapped = screen_space_ray_validate(ray, input.uv, tDepth, tNormal, camera.projection_matrix,
404
+ let unsnapped = screen_space_ray_validate(ray, input.uv, tDepth, tPBR, camera.projection_matrix,
403
405
  camera.projection_matrix_inverse, camera.view_matrix, trace.distance_tolerance);
404
406
  if (unsnapped.status == 0u) { hit = unsnapped; }
405
407
  }
@@ -431,7 +433,7 @@ fn water_hzb_hit(ray: Ray, budget: u32) -> ScreenSpaceRayHit {
431
433
  `, [chunk_screen_space_newton_ray, chunk_ffx_sssr_advance_ray, chunk_ffx_sssr_load_depth, chunk_project_direction,
432
434
  chunk_ray_at]);
433
435
 
434
- for (const resource of [CAMERA_RESOURCE, TRACE_RESOURCE, SCREEN_DEPTH_RESOURCE, SCREEN_HZB_RESOURCE, SCREEN_NORMAL_RESOURCE]) {
436
+ for (const resource of [CAMERA_RESOURCE, TRACE_RESOURCE, SCREEN_DEPTH_RESOURCE, SCREEN_HZB_RESOURCE, SCREEN_PBR_RESOURCE]) {
435
437
  chunk_water_screen_ray.requireResource(resource);
436
438
  }
437
439
 
@@ -448,7 +450,7 @@ struct WaterReceiver {
448
450
  // A screen-space receiver must lie below the surface point the ray entered at: the refracted ray runs
449
451
  // downward from it, so any point on the ray is lower, and one that is not is a root off the ray.
450
452
  fn water_receiver_submerged(uv: vec2f, surface: vec3f, normal: vec3f) -> bool {
451
- let receiver = water_receiver_texel(tDepth, tNormal, vec2i(uv * vec2f(textureDimensions(tDepth, 0))),
453
+ let receiver = water_receiver_texel(tDepth, tNormal, tPBR, vec2i(uv * vec2f(textureDimensions(tDepth, 0))),
452
454
  camera.projection_matrix_inverse, camera.view_matrix_inverse);
453
455
  return dot(receiver.position - surface, normal) <= WATER_LEVEL_TOLERANCE;
454
456
  }
@@ -485,7 +487,7 @@ fn fs_main(in: WaterVertexOut, @builtin(front_facing) above: bool) -> WaterRecei
485
487
  if (above && trace.mode == 0u) {
486
488
  // Mayer et al. §2.2: a root within one pixel of the ray is accepted as is. Like the paper,
487
489
  // this can converge past a thin occluder; traversal is only the fallback for failures.
488
- hit = screen_space_newton_ray(ray, uv, tDepth, tNormal, camera.projection_matrix,
490
+ hit = screen_space_newton_ray(ray, uv, tDepth, tPBR, camera.projection_matrix,
489
491
  camera.projection_matrix_inverse, camera.view_matrix, trace.max_updates, trace.distance_tolerance);
490
492
  newton_updates = hit.iterations;
491
493
  newton_failure = hit.status;
@@ -569,7 +571,7 @@ fn fs_main(in: WaterVertexOut, @builtin(front_facing) above: bool) -> WaterOptic
569
571
  // vignette validation. Its two-pixel rule must not reject normal-incidence refraction.
570
572
  let confidence = ffx_sssr_validate_hit(vec3f(reflected.uv, projected.z), uv,
571
573
  reflection_direction, dimensions, max(trace.distance_tolerance, 0.02), 0.05);
572
- let radiance = water_receiver_radiance(tScene, tDepth, tNormal, reflected.uv,
574
+ let radiance = water_receiver_radiance(tScene, tDepth, tNormal, tPBR, reflected.uv,
573
575
  camera.projection_matrix_inverse, camera.view_matrix_inverse, in.world, interface_normal, false);
574
576
  reflection = mix(reflection, radiance.rgb,
575
577
  confidence * min(radiance.a * 2.0, 1.0) * smoothstep(0.05, 0.5, reflected.distance)
@@ -584,14 +586,14 @@ fn fs_main(in: WaterVertexOut, @builtin(front_facing) above: bool) -> WaterOptic
584
586
  let lookup = select(uv, receiver_data.xy, valid);
585
587
  // The surface height here stands for the one above the displaced receiver: they differ by the
586
588
  // wave height across a few metres, against a tolerance the gather already allows.
587
- let gathered = water_receiver_radiance(tScene, tDepth, tNormal, lookup,
589
+ let gathered = water_receiver_radiance(tScene, tDepth, tNormal, tPBR, lookup,
588
590
  camera.projection_matrix_inverse, camera.view_matrix_inverse, in.world, interface_normal, above);
589
591
  var path = bitcast<f32>(metadata.x);
590
592
  var color = original.rgb;
591
593
  // the receiver seen through the surface: refracted, or the pixel's own when there is none
592
594
  var receiver_coord = coord;
593
595
  if (valid && gathered.a > 0.0) {
594
- path = min(water_receiver_path(tDepth, tNormal, lookup, camera.projection_matrix_inverse,
596
+ path = min(water_receiver_path(tDepth, tPBR, lookup, camera.projection_matrix_inverse,
595
597
  camera.view_matrix, origin), limit);
596
598
  color = gathered.rgb;
597
599
  receiver_coord = vec2i(lookup * dimensions);
@@ -600,7 +602,7 @@ fn fs_main(in: WaterVertexOut, @builtin(front_facing) above: bool) -> WaterOptic
600
602
  // (WATER_OPTICS_PLAN_2026_10_02.md §4.3). Seen from under the surface, the receiver is above it.
601
603
  // Its light is rebuilt on the normal it was shaded with: its triangle's turns at every edge of a
602
604
  // tessellated floor, and every edge would show through the water.
603
- let receiver_texel = water_receiver_texel(tDepth, tNormal, receiver_coord, camera.projection_matrix_inverse,
605
+ let receiver_texel = water_receiver_texel(tDepth, tNormal, tPBR, receiver_coord, camera.projection_matrix_inverse,
604
606
  camera.view_matrix_inverse);
605
607
  if (above && !is_background(receiver_texel.depth)) {
606
608
  let camera_ws = camera.view_matrix_inverse[3].xyz;
@@ -1,7 +0,0 @@
1
- /**
2
- * How many mip levels to generate for each buffer
3
- * Lower resolution versions are used for further rendering passes that work on fractional resolution, such as 1/2 or 1/4
4
- * @type {number}
5
- */
6
- export const G_BUFFER_MIP_LEVELS: number;
7
- //# sourceMappingURL=G_BUFFER_MIP_LEVELS.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"G_BUFFER_MIP_LEVELS.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kCAFU,MAAM,CAEqB"}
@@ -1,6 +0,0 @@
1
- /**
2
- * How many mip levels to generate for each buffer
3
- * Lower resolution versions are used for further rendering passes that work on fractional resolution, such as 1/2 or 1/4
4
- * @type {number}
5
- */
6
- export const G_BUFFER_MIP_LEVELS = 5;
@@ -1,3 +0,0 @@
1
- export const shader_downsample_encoded_normal: ImageShader;
2
- import { ImageShader } from "../../shader/ImageShader.js";
3
- //# sourceMappingURL=shader_downsample_encoded_normal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shader_downsample_encoded_normal.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js"],"names":[],"mappings":"AA8FA,2DASG;4BA/FyB,6BAA6B"}
@@ -1,104 +0,0 @@
1
- import { chunk_decode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
2
- import { chunk_encode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.js";
3
- import { chunk_texel_coordinate_to_uv } from "../../shader/chunk/texture/chunk_texel_coordinate_to_uv.js";
4
- import { chunk_uv_to_texel_coordinate } from "../../shader/chunk/texture/chunk_uv_to_texel_coordinate.js";
5
- import {
6
- chunk_texture_sample_bilinear_exact
7
- } from "../../shader/chunk/texture/sample/chunk_texture_sample_bilinear_exact.js";
8
- import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
9
- import { ImageShader } from "../../shader/ImageShader.js";
10
- import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
11
- import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
12
-
13
- const resources = new ShaderResourceSetDescriptor();
14
-
15
- // per-pass, eight bytes, read-only: immediate data rather than a uniform buffer
16
- resources.setImmediate("output_resolution", "vec2<f32>");
17
- resources.createGroup()
18
- .addTexture("tInput", "uint")
19
- ;
20
-
21
- const body = CodeChunk.from(
22
- //language=WGSL
23
- `
24
- @fragment
25
- fn main(
26
- @builtin(position) coord: vec4<f32>,
27
- @location(0) uv: vec2<f32>,
28
- ) -> @location(0) vec4<u32> {
29
-
30
- let output_texel_uv_size = 1.0 / output_resolution;
31
-
32
- let input_size_f = vec2<f32>(textureDimensions(tInput,0));
33
-
34
- // get scale
35
- let scale = input_size_f / output_resolution ;
36
-
37
- // sample quad
38
- const offsets = array<vec2<u32>,4>(
39
- vec2(0,0),
40
- vec2(1,0),
41
- vec2(0,1),
42
- vec2(1,1),
43
- );
44
-
45
- // TODO we can potentially skip decoding
46
-
47
- var direction_sum_0 = vec3();
48
- var direction_sum_1 = vec3();
49
-
50
- for(var i = 0; i < 4; i++){
51
-
52
- let input_coord = vec2<u32>( coord.xy * scale + offset );
53
-
54
- if(input_coord >= vec2<u32>(input_size_f)){
55
- // outside of the sampling region
56
- continue;
57
- }
58
-
59
- // distance to center
60
- let input_uv = texel_coordinate_to_uv(input_coord, vec2<u32>(input_size_f));
61
-
62
- let output_coord = uv_to_texel_coordinate(input_uv, vec2<u32>(output_resolution));
63
-
64
- let distance = distance(output_coord, coord.xy);
65
-
66
- let texel = textureLoad(
67
- tInput,
68
- input_coord,
69
- 0
70
- );
71
-
72
- let normal_0 = decode_g_buffer_normal(texel.xy);
73
- let normal_1 = decode_g_buffer_normal(texel.zw);
74
-
75
- let weight = saturate( 1.7 - distance);
76
-
77
- direction_sum_0 += normal_0 * weight;
78
- direction_sum_1 += normal_1 * weight;
79
- }
80
-
81
- return vec4(
82
- encode_g_buffer_normal(normalize(direction_sum_0)),
83
- encode_g_buffer_normal(normalize(direction_sum_1)),
84
- );
85
- }
86
- `, [
87
- chunk_texture_sample_bilinear_exact,
88
- chunk_texel_coordinate_to_uv,
89
- chunk_uv_to_texel_coordinate,
90
- chunk_decode_g_buffer_normal,
91
- chunk_encode_g_buffer_normal,
92
- ]
93
- );
94
-
95
- export const shader_downsample_encoded_normal = new ImageShader({
96
- descriptor: ShaderDescriptor.from({
97
- label: "Reduce RGBA octahedral normal",
98
- resources,
99
- body,
100
- }),
101
- targets: [{
102
- format: "rgba16uint"
103
- }]
104
- });