@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,120 +1,133 @@
1
- import {
2
- VIZ_BUFFER_INVALID_MESH_VALUE
3
- } from "../../shade/renderer/rasterize/native/viz/VIZ_BUFFER_INVALID_MESH_VALUE.js";
4
- import { CodeChunk } from "../../shade/renderer/shader/compiler/CodeChunk.js";
5
- import { ComputeShader } from "../../shade/renderer/shader/ComputeShader.js";
6
- import {
7
- ShaderResourceSetDescriptor
8
- } from "../../shade/renderer/shader/resource/ShaderResourceSetDescriptor.js";
9
- import { u32 } from "../../shade/renderer/shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
10
- import { WebGPUArray } from "../../shade/renderer/shader/type/WebGPUArray.js";
11
-
12
- /**
13
- * Words a query occupies, on the way in and on the way back: a pixel's x and y going in, the mesh
14
- * row and the depth's bit pattern coming out.
15
- *
16
- * @type {number}
17
- */
18
- export const PICKING_GATHER_STRIDE_WORDS = 2;
19
-
20
- /**
21
- * The `x` of a query whose point is not on the view at all.
22
- *
23
- * A pick names a fraction of the view and a caller is free to ask outside it, so a query carries
24
- * either a pixel or this. No pixel can collide with it: `maxTextureDimension2D` is nowhere near
25
- * 2^32 - 1 in any WebGPU profile, so there is no view this is a column of.
26
- *
27
- * @type {number}
28
- */
29
- export const PICKING_QUERY_OFF_VIEW = 0xFFFFFFFF;
30
-
31
- /**
32
- * @type {number}
33
- */
34
- export const PICKING_GATHER_WORKGROUP_SIZE = 64;
35
-
36
- const resources = new ShaderResourceSetDescriptor();
37
-
38
- // per-dispatch, four bytes, read-only: immediate data rather than a uniform buffer
39
- resources.setImmediate("query_count", u32);
40
-
41
- resources.createGroup()
42
- // The frame's visibility buffer — the `meshes` row the rasterizer wrote at each pixel — and the
43
- // depth it wrote with it. Both are read as *bindings*, which is the whole reason this pass is a
44
- // dispatch: see the note on {@link shader_picking_gather}.
45
- .addTexture("viz_mesh", "uint")
46
- .addTexture("viz_depth", "depth");
47
-
48
- resources.createGroup()
49
- // x, y per query; `PICKING_QUERY_OFF_VIEW` in x for a query that is off the view
50
- .addStorageBuffer("queries", WebGPUArray.u32)
51
- // mesh row, then the depth's bits, per query
52
- .addStorageBuffer("results", WebGPUArray.u32, true);
53
-
54
- const body = CodeChunk.from(
55
- //language=WGSL
56
- `
57
- const PICKING_STRIDE : u32 = ${PICKING_GATHER_STRIDE_WORDS}u;
58
- const PICKING_OFF_VIEW : u32 = ${PICKING_QUERY_OFF_VIEW}u;
59
- const PICKING_VIZ_INVALID : u32 = ${VIZ_BUFFER_INVALID_MESH_VALUE}u;
60
-
61
- @compute @workgroup_size(${PICKING_GATHER_WORKGROUP_SIZE},1,1)
62
- fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
63
- let index = gid.x;
64
-
65
- /*
66
- The dispatch is sized to ceil(query_count / 64) workgroups, so the tail carries up to 63 idle
67
- threads. Guarded on the immediate rather than on arrayLength: both buffers come from the
68
- transient pool, which matches approximately, so their lengths are pool state rather than the
69
- number of queries — a thread past the end would read a previous tenant's pixel and write a row
70
- nobody asked for.
71
- */
72
- if index >= query_count {
73
- return;
74
- }
75
-
76
- let base = index * PICKING_STRIDE;
77
-
78
- let x = queries[base];
79
- let y = queries[base + 1u];
80
-
81
- /*
82
- Every slot is written, the off-view ones included. A pooled buffer arrives carrying whatever its
83
- last tenant left, and a query off the view has to read back as nothing rather than as that — so
84
- the pass defines the whole of its output instead of a clear being encoded ahead of it.
85
- */
86
- if x == PICKING_OFF_VIEW {
87
- results[base] = PICKING_VIZ_INVALID;
88
- results[base + 1u] = 0u;
89
-
90
- return;
91
- }
92
-
93
- let at = vec2<i32>(i32(x), i32(y));
94
-
95
- results[base] = textureLoad(viz_mesh, at, 0).r;
96
- results[base + 1u] = bitcast<u32>(textureLoad(viz_depth, at, 0));
97
- }
98
- `);
99
-
100
- /**
101
- * Reads the visibility buffer's mesh row and the frame's depth at a handful of pixels, into a
102
- * buffer small enough to read back on a click.
103
- *
104
- * **A dispatch rather than a copy, twice over.** The obvious shape for this is
105
- * `copyTextureToBuffer` of a 1x1 region per query, and it is not legal WebGPU for either texture.
106
- * The visibility buffer is a render attachment the renderer never gave `COPY_SRC` — and should not
107
- * have to, since the flag is for the whole frame and a pick happens on a click — while a depth
108
- * format may not be sub-region copied **at all**: "if the format is a depth-or-stencil format [...]
109
- * the subresource size is equal to size", so the only legal copy of a 1065x1668 depth buffer is all
110
- * 7 MB of it. Both textures are already `TEXTURE_BINDING`, because the frame shades from them, and
111
- * `textureLoad` has neither restriction.
112
- *
113
- * One thread per query. Nothing is sampled, filtered or interpolated: the answer has to be the row
114
- * the rasterizer wrote at that exact pixel, which is what makes a pick as precise as the frame.
115
- */
116
- export const shader_picking_gather = ComputeShader.from({
117
- label: "Picking/Gather",
118
- resources,
119
- body,
120
- });
1
+ import {
2
+ VIZ_BUFFER_INVALID_MESH_VALUE
3
+ } from "../../shade/renderer/rasterize/native/viz/VIZ_BUFFER_INVALID_MESH_VALUE.js";
4
+ import {
5
+ chunk_visibility_decode,
6
+ VISIBLE_MESHLETS_RESOURCE
7
+ } from "../../shade/renderer/rasterize/visibility/chunk_visibility_decode.js";
8
+ import { CodeChunk } from "../../shade/renderer/shader/compiler/CodeChunk.js";
9
+ import { ComputeShader } from "../../shade/renderer/shader/ComputeShader.js";
10
+ import {
11
+ ShaderResourceSetDescriptor
12
+ } from "../../shade/renderer/shader/resource/ShaderResourceSetDescriptor.js";
13
+ import { u32 } from "../../shade/renderer/shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
14
+ import { WebGPUArray } from "../../shade/renderer/shader/type/WebGPUArray.js";
15
+
16
+ /**
17
+ * Words a query occupies, on the way in and on the way back: a pixel's x and y going in, the mesh
18
+ * row and the depth's bit pattern coming out.
19
+ *
20
+ * @type {number}
21
+ */
22
+ export const PICKING_GATHER_STRIDE_WORDS = 2;
23
+
24
+ /**
25
+ * The `x` of a query whose point is not on the view at all.
26
+ *
27
+ * A pick names a fraction of the view and a caller is free to ask outside it, so a query carries
28
+ * either a pixel or this. No pixel can collide with it: `maxTextureDimension2D` is nowhere near
29
+ * 2^32 - 1 in any WebGPU profile, so there is no view this is a column of.
30
+ *
31
+ * @type {number}
32
+ */
33
+ export const PICKING_QUERY_OFF_VIEW = 0xFFFFFFFF;
34
+
35
+ /**
36
+ * @type {number}
37
+ */
38
+ export const PICKING_GATHER_WORKGROUP_SIZE = 64;
39
+
40
+ const resources = new ShaderResourceSetDescriptor();
41
+
42
+ // per-dispatch, four bytes, read-only: immediate data rather than a uniform buffer
43
+ resources.setImmediate("query_count", u32);
44
+
45
+ resources.createGroup()
46
+ // The frame's visibility buffer, with the table that resolves each pixel to the `meshes` row it was
47
+ // drawn for, and the depth written with it. Read as *bindings*, which is the whole reason this pass
48
+ // is a dispatch: see the note on {@link shader_picking_gather}.
49
+ .addTexture("visibility", "uint")
50
+ .add(VISIBLE_MESHLETS_RESOURCE)
51
+ .addTexture("viz_depth", "depth");
52
+
53
+ resources.createGroup()
54
+ // x, y per query; `PICKING_QUERY_OFF_VIEW` in x for a query that is off the view
55
+ .addStorageBuffer("queries", WebGPUArray.u32)
56
+ // mesh row, then the depth's bits, per query
57
+ .addStorageBuffer("results", WebGPUArray.u32, true);
58
+
59
+ const body = CodeChunk.from(
60
+ //language=WGSL
61
+ `
62
+ const PICKING_STRIDE : u32 = ${PICKING_GATHER_STRIDE_WORDS}u;
63
+ const PICKING_OFF_VIEW : u32 = ${PICKING_QUERY_OFF_VIEW}u;
64
+ const PICKING_VIZ_INVALID : u32 = ${VIZ_BUFFER_INVALID_MESH_VALUE}u;
65
+
66
+ @compute @workgroup_size(${PICKING_GATHER_WORKGROUP_SIZE},1,1)
67
+ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
68
+ let index = gid.x;
69
+
70
+ /*
71
+ The dispatch is sized to ceil(query_count / 64) workgroups, so the tail carries up to 63 idle
72
+ threads. Guarded on the immediate rather than on arrayLength: both buffers come from the
73
+ transient pool, which matches approximately, so their lengths are pool state rather than the
74
+ number of queries — a thread past the end would read a previous tenant's pixel and write a row
75
+ nobody asked for.
76
+ */
77
+ if index >= query_count {
78
+ return;
79
+ }
80
+
81
+ let base = index * PICKING_STRIDE;
82
+
83
+ let x = queries[base];
84
+ let y = queries[base + 1u];
85
+
86
+ /*
87
+ Every slot is written, the off-view ones included. A pooled buffer arrives carrying whatever its
88
+ last tenant left, and a query off the view has to read back as nothing rather than as that — so
89
+ the pass defines the whole of its output instead of a clear being encoded ahead of it.
90
+ */
91
+ if x == PICKING_OFF_VIEW {
92
+ results[base] = PICKING_VIZ_INVALID;
93
+ results[base + 1u] = 0u;
94
+
95
+ return;
96
+ }
97
+
98
+ let at = vec2<i32>(i32(x), i32(y));
99
+
100
+ let word = textureLoad(visibility, at, 0).r;
101
+
102
+ var row = PICKING_VIZ_INVALID;
103
+
104
+ if word != VISIBILITY_NONE {
105
+ row = visibility_decode(word).mesh;
106
+ }
107
+
108
+ results[base] = row;
109
+ results[base + 1u] = bitcast<u32>(textureLoad(viz_depth, at, 0));
110
+ }
111
+ `, [chunk_visibility_decode]);
112
+
113
+ /**
114
+ * Reads the visibility buffer's mesh row and the frame's depth at a handful of pixels, into a
115
+ * buffer small enough to read back on a click.
116
+ *
117
+ * **A dispatch rather than a copy, twice over.** The obvious shape for this is
118
+ * `copyTextureToBuffer` of a 1x1 region per query, and it is not legal WebGPU for either texture.
119
+ * The visibility buffer is a render attachment the renderer never gave `COPY_SRC` — and should not
120
+ * have to, since the flag is for the whole frame and a pick happens on a click — while a depth
121
+ * format may not be sub-region copied **at all**: "if the format is a depth-or-stencil format [...]
122
+ * the subresource size is equal to size", so the only legal copy of a 1065x1668 depth buffer is all
123
+ * 7 MB of it. Both textures are already `TEXTURE_BINDING`, because the frame shades from them, and
124
+ * `textureLoad` has neither restriction.
125
+ *
126
+ * One thread per query. Nothing is sampled, filtered or interpolated: the answer has to be the row
127
+ * the rasterizer wrote at that exact pixel, which is what makes a pick as precise as the frame.
128
+ */
129
+ export const shader_picking_gather = ComputeShader.from({
130
+ label: "Picking/Gather",
131
+ resources,
132
+ body,
133
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"SoftwareGPUTexture.d.ts","sourceRoot":"","sources":["../../../../../src/shade/device/mock/SoftwareGPUTexture.js"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,yEAFgB,UAAU;IAkEtB;;;;;;OAMG;IACH,6EAFa,kBAAkB,CAI9B;IAnCD;;;;OAIG;IACH,iFAFW,OAAO,EAqBjB;IAzDD;;;;;;OAMG;IACH,uBAEC;IAuCG,WAAuC;IACvC,YAAyC;IACzC,wBAAiE;IAEjE,YAA+B;IAC/B,eAA6C;IAC7C,WAA6B;IAC7B,iBAA8C;IAC9C,mBAAkD;IActD;;OAEG;IACH,2BAEC;IAED;;;;OAIG;IACH,wCAEC;IAED;;;;;;;;;OASG;IACH,8BAUC;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,GACJ,WAAW,CAgBvB;IAED;;;;;;;;;;;;;OAaG;IACH,kEAUC;IAwCD;;;OAGG;IACH,gBAOC;IAGL;;;OAGG;IACH,+BAFU,OAAO,CAEgC;;CANhD;sCAlRqC,4BAA4B"}
1
+ {"version":3,"file":"SoftwareGPUTexture.d.ts","sourceRoot":"","sources":["../../../../../src/shade/device/mock/SoftwareGPUTexture.js"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,yEAFgB,UAAU;IAkEtB;;;;;;OAMG;IACH,6EAFa,kBAAkB,CAI9B;IAnCD;;;;OAIG;IACH,iFAFW,OAAO,EAqBjB;IAzDD;;;;;;OAMG;IACH,uBAEC;IAuCG,WAAuC;IACvC,YAAyC;IACzC,wBAAiE;IAEjE,YAA+B;IAC/B,eAA6C;IAC7C,WAA6B;IAC7B,iBAA8C;IAC9C,mBAAkD;IActD;;OAEG;IACH,2BAEC;IAED;;;;OAIG;IACH,wCAEC;IAED;;;;;;;;;OASG;IACH,8BAUC;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,GACJ,WAAW,CAgBvB;IAED;;;;;;;;;;;;;OAaG;IACH,kEAUC;IAmDD;;;OAGG;IACH,gBAOC;IAGL;;;OAGG;IACH,+BAFU,OAAO,CAEgC;;CANhD;sCA7RqC,4BAA4B"}
@@ -266,6 +266,17 @@ export class SoftwareGPUTexture extends SoftwareGPUObjectBase {
266
266
  + ` nor one of its viewFormats (${this.#view_formats.join(', ') || 'none'})`;
267
267
  }
268
268
 
269
+ /*
270
+ The levels a view covers must be levels the texture has: at least one, all of them below its
271
+ mipLevelCount. An unset count is every level from the base on.
272
+ */
273
+ const base_mip_level = descriptor?.baseMipLevel ?? 0;
274
+ const mip_level_count = descriptor?.mipLevelCount ?? (this.mipLevelCount - base_mip_level);
275
+
276
+ if (mip_level_count < 1 || base_mip_level + mip_level_count > this.mipLevelCount) {
277
+ return `levels ${base_mip_level} to ${base_mip_level + mip_level_count - 1} of '${this.label}', which has ${this.mipLevelCount}`;
278
+ }
279
+
269
280
  return null;
270
281
  }
271
282
 
@@ -48,7 +48,7 @@ for (const tuple of compatible_tuples) {
48
48
  */
49
49
  function is_compatible(a, b) {
50
50
  // Identical formats are always compatible — including formats with no tuple entry (e.g. the
51
- // gbuffer's rgba16uint / r32uint), which the rewrite loop still checks when some OTHER target
51
+ // gbuffer's r32uint targets), which the rewrite loop still checks when some OTHER target
52
52
  // triggered a rewrite. Guard the lookup so an unlisted source is treated as incompatible and
53
53
  // reaches the descriptive error below, rather than throwing a raw TypeError.
54
54
  if (a === b) {
@@ -344,7 +344,7 @@ export class ContactShadowLab {
344
344
  step_count: this.march_steps,
345
345
  },
346
346
  gBufferDepth: depth,
347
- gBufferNormal: gbuffer.normal,
347
+ gBufferPBR: gbuffer.pbr,
348
348
  camera: view.camera.buffer,
349
349
  tContactShadow: TextureResourceDescriptor.from({
350
350
  resolution: [width, height],
@@ -363,7 +363,7 @@ export class ContactShadowLab {
363
363
  contact = graph_contact_shadow_linear({
364
364
  graph,
365
365
  depth,
366
- normal: gbuffer.normal,
366
+ pbr: gbuffer.pbr,
367
367
  camera: view.camera.buffer,
368
368
  resolution,
369
369
  settings,
@@ -372,7 +372,7 @@ export class ContactShadowLab {
372
372
 
373
373
  const traced = this.reference || this.measuring;
374
374
 
375
- const reference = traced ? this.#record_reference(graph, view, depth, gbuffer.normal, width, height) : -1;
375
+ const reference = traced ? this.#record_reference(graph, view, depth, gbuffer.pbr, width, height) : -1;
376
376
 
377
377
  let flags = 0;
378
378
 
@@ -427,7 +427,7 @@ export class ContactShadowLab {
427
427
  * One ray per pixel from its G-buffer position toward the sun, through the scene's BVH
428
428
  * ({@link shader_contact_lab_reference}): visibility, 1 lit and 0 shadowed.
429
429
  */
430
- #record_reference(graph, view, depth, normal, width, height) {
430
+ #record_reference(graph, view, depth, pbr, width, height) {
431
431
  const data = {};
432
432
  const pass = graph.add('Contact lab / ray-traced reference', data, (data, resources, context) => {
433
433
  const scene_ctx = view.scene;
@@ -444,7 +444,7 @@ export class ContactShadowLab {
444
444
  bindings: {
445
445
  settings: { normal_offset: this.reference_normal_offset },
446
446
  gBufferDepth: resources.get(data.depth).obtainView(MIP_0),
447
- gBufferNormal: resources.get(data.normal).obtainView(MIP_0),
447
+ gBufferPBR: resources.get(data.pbr).obtainView(MIP_0),
448
448
  camera: view.camera.buffer,
449
449
  view: view.uniform_buffer,
450
450
  tlas: scene_ctx.tlas.buffer,
@@ -463,7 +463,7 @@ export class ContactShadowLab {
463
463
  });
464
464
 
465
465
  data.depth = pass.read(depth);
466
- data.normal = pass.read(normal);
466
+ data.pbr = pass.read(pbr);
467
467
  data.output = pass.create('contact lab / reference', TextureResourceDescriptor.from({
468
468
  resolution: [width, height],
469
469
  format: 'r32float',
@@ -1 +1 @@
1
- {"version":3,"file":"shader_contact_lab_composite.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/contact_shadows/shader_contact_lab_composite.js"],"names":[],"mappings":";;;6BA4BU,MAAM;;;;;;;;;oCAgBN,MAAM;;;;;AAwKhB;;;;;;;;;;;;;;;GAeG;AACH,2CAFU,WAAW,CAkBlB;4BArOyB,sCAAsC"}
1
+ {"version":3,"file":"shader_contact_lab_composite.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/contact_shadows/shader_contact_lab_composite.js"],"names":[],"mappings":";;;6BA+BU,MAAM;;;;;;;;;oCAgBN,MAAM;;;;;AAuKhB;;;;;;;;;;;;;;;GAeG;AACH,2CAFU,WAAW,CAkBlB;4BApOyB,sCAAsC"}
@@ -4,6 +4,9 @@ import { chunk_project_position_from_depth } from "../../renderer/shader/chunk/c
4
4
  import { chunk_is_background } from "../../renderer/shader/chunk/depth/chunk_is_background.js";
5
5
  import { chunk_mat4_extract_position } from "../../renderer/shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
6
6
  import { chunk_decode_g_buffer_normal } from "../../renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
7
+ import {
8
+ chunk_decode_g_buffer_face_normal
9
+ } from "../../renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
7
10
  import { chunk_directional_lights_iteration_mask } from "../../renderer/shader/chunk/light/io/chunk_directional_lights_iteration_mask.js";
8
11
  import { chunk_get_directional_light_info_by_index } from "../../renderer/shader/chunk/light/io/chunk_get_directional_light_info_by_index.js";
9
12
  import { REFLECTED_LIGHT_STRUCT } from "../../renderer/shader/chunk/light/REFLECTED_LIGHT_STRUCT.js";
@@ -123,11 +126,9 @@ fn main(
123
126
  let position_ws = project_position_from_depth(uv, texel_depth, camera.view_projection_matrix_inverse);
124
127
  let view_direction = normalize(mat4_extract_position(camera.transform) - position_ws);
125
128
 
126
- let g_buffer_sample_normal = textureLoad(gBufferNormal, i_coord, 0);
127
-
128
129
  let geometry = ${GEOMETRIC_SHADING_INFO_STRUCT.wgsl_ref}(
129
- decode_g_buffer_normal(g_buffer_sample_normal.xy),
130
- decode_g_buffer_normal(g_buffer_sample_normal.zw),
130
+ decode_g_buffer_normal(textureLoad(gBufferNormal, i_coord, 0).x),
131
+ decode_g_buffer_face_normal(textureLoad(gBufferPBR, i_coord, 0)),
131
132
  position_ws,
132
133
  view_direction,
133
134
  );
@@ -201,6 +202,7 @@ fn main(
201
202
  chunk_project_position_from_depth,
202
203
  chunk_mat4_extract_position,
203
204
  chunk_decode_g_buffer_normal,
205
+ chunk_decode_g_buffer_face_normal,
204
206
  chunk_read_gBuffer_material,
205
207
  chunk_directional_lights_iteration_mask,
206
208
  chunk_get_directional_light_info_by_index,
@@ -1 +1 @@
1
- {"version":3,"file":"shader_contact_lab_reference.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/contact_shadows/shader_contact_lab_reference.js"],"names":[],"mappings":"AAuGA;;;;;;;;;;;GAWG;AACH,2CAFU,aAAa,CAMpB;8BAxG2B,wCAAwC"}
1
+ {"version":3,"file":"shader_contact_lab_reference.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/contact_shadows/shader_contact_lab_reference.js"],"names":[],"mappings":"AAyGA;;;;;;;;;;;GAWG;AACH,2CAFU,aAAa,CAMpB;8BAxG2B,wCAAwC"}
@@ -4,7 +4,9 @@ import { INDIRECT_MATERIAL_ARRAY_TYPE } from "../../renderer/material/resident/I
4
4
  import { chunk_ray_shaded_query_occluded } from "../../renderer/path_tracer/shader/chunk_ray_shaded_query_occluded.js";
5
5
  import { chunk_project_position_from_depth } from "../../renderer/shader/chunk/camera/chunk_project_position_from_depth.js";
6
6
  import { chunk_is_background } from "../../renderer/shader/chunk/depth/chunk_is_background.js";
7
- import { chunk_decode_g_buffer_normal } from "../../renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
7
+ import {
8
+ chunk_decode_g_buffer_face_normal
9
+ } from "../../renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
8
10
  import { chunk_offset_ray } from "../../renderer/shader/chunk/geometry/ray/chunk_offset_ray.js";
9
11
  import { RAY_STRUCT } from "../../renderer/shader/chunk/geometry/ray/RAY_STRUCT.js";
10
12
  import { chunk_directional_lights_iteration_mask } from "../../renderer/shader/chunk/light/io/chunk_directional_lights_iteration_mask.js";
@@ -38,7 +40,7 @@ resources.createGroup()
38
40
 
39
41
  resources.createGroup()
40
42
  .addTexture("gBufferDepth")
41
- .addTexture("gBufferNormal", "uint")
43
+ .addTexture("gBufferPBR")
42
44
  .addUniform("camera", CAMERA_UNIFORM_STRUCT)
43
45
  .addUniform("view", VIEW_UNIFORM_STRUCT)
44
46
  .addStorageTexture("tReference", "r32float", "2d", "write-only");
@@ -66,7 +68,7 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
66
68
  if (!is_background(depth) && directional_bits != 0u) {
67
69
  let uv = texel_coordinate_to_uv(vec2<f32>(id.xy), size);
68
70
  let position_ws = project_position_from_depth(uv, depth, camera.view_projection_matrix_inverse);
69
- let geometric_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, id.xy, 0).zw);
71
+ let geometric_normal = decode_g_buffer_face_normal(textureLoad(gBufferPBR, id.xy, 0));
70
72
 
71
73
  let sun = get_directional_light_info_by_index(&light_data, countTrailingZeros(directional_bits));
72
74
 
@@ -93,7 +95,7 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
93
95
  chunk_is_background,
94
96
  chunk_texel_coordinate_to_uv,
95
97
  chunk_project_position_from_depth,
96
- chunk_decode_g_buffer_normal,
98
+ chunk_decode_g_buffer_face_normal,
97
99
  chunk_offset_ray,
98
100
  chunk_directional_lights_iteration_mask,
99
101
  chunk_get_directional_light_info_by_index,
@@ -1 +1 @@
1
- {"version":3,"file":"shader_contact_shadow_march.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/contact_shadows/shader_contact_shadow_march.js"],"names":[],"mappings":"AA6EA;;;;;;;GAOG;AACH,0CAFU,aAAa,CAMpB;8BAjF2B,wCAAwC"}
1
+ {"version":3,"file":"shader_contact_shadow_march.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/contact_shadows/shader_contact_shadow_march.js"],"names":[],"mappings":"AA+EA;;;;;;;GAOG;AACH,0CAFU,aAAa,CAMpB;8BAjF2B,wCAAwC"}
@@ -3,7 +3,9 @@ import { chunk_ss_trace_pixel_occlusion } from "../../renderer/deferred/chunk_ss
3
3
  import { chunk_project_position_from_depth } from "../../renderer/shader/chunk/camera/chunk_project_position_from_depth.js";
4
4
  import { chunk_get_view_space_depth } from "../../renderer/shader/chunk/depth/chunk_get_view_space_depth.js";
5
5
  import { chunk_is_background } from "../../renderer/shader/chunk/depth/chunk_is_background.js";
6
- import { chunk_decode_g_buffer_normal } from "../../renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
6
+ import {
7
+ chunk_decode_g_buffer_face_normal
8
+ } from "../../renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
7
9
  import { chunk_texel_coordinate_to_uv } from "../../renderer/shader/chunk/texture/chunk_texel_coordinate_to_uv.js";
8
10
  import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
9
11
  import { ComputeShader } from "../../renderer/shader/ComputeShader.js";
@@ -23,7 +25,7 @@ resources.setImmediate("settings", SETTINGS);
23
25
 
24
26
  resources.createGroup()
25
27
  .addTexture("gBufferDepth")
26
- .addTexture("gBufferNormal", "uint")
28
+ .addTexture("gBufferPBR")
27
29
  .addUniform("camera", CAMERA_UNIFORM_STRUCT)
28
30
  .addStorageTexture("tContactShadow", "r32float", "2d", "write-only");
29
31
 
@@ -47,7 +49,7 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
47
49
 
48
50
  let uv = texel_coordinate_to_uv(vec2<f32>(id.xy), size);
49
51
  let position_ws = project_position_from_depth(uv, depth, camera.view_projection_matrix_inverse);
50
- let geometric_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, id.xy, 0).zw);
52
+ let geometric_normal = decode_g_buffer_face_normal(textureLoad(gBufferPBR, id.xy, 0));
51
53
 
52
54
  // the same window as the wavefront pass: an occluder may sit up to 2 × thickness × its distance in front
53
55
  let thickness = 2.0 * settings.surface_thickness * get_view_space_depth(depth, camera);
@@ -70,7 +72,7 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
70
72
  chunk_texel_coordinate_to_uv,
71
73
  chunk_project_position_from_depth,
72
74
  chunk_get_view_space_depth,
73
- chunk_decode_g_buffer_normal,
75
+ chunk_decode_g_buffer_face_normal,
74
76
  chunk_ss_trace_pixel_occlusion,
75
77
  ]
76
78
  );
@@ -16,7 +16,7 @@ const shader = new ImageShader({
16
16
  body:CodeChunk.from(/* language=WGSL */ `
17
17
  @fragment fn main(@builtin(position) coord:vec4f) -> @location(0) vec4f {
18
18
  let p = vec2i(coord.xy);
19
- if (decode_g_buffer_normal(textureLoad(tNormal,p,0).xy).y < 0.99) { return vec4f(-1.0); }
19
+ if (decode_g_buffer_normal(textureLoad(tNormal,p,0).x).y < 0.99) { return vec4f(-1.0); }
20
20
  let a = textureLoad(tBefore,p,0);
21
21
  let b = textureLoad(tAfter,p,0);
22
22
  let difference = abs(a.rgb-b.rgb);
@@ -21,7 +21,7 @@ struct Capture { @location(0) radiance: vec4f, @location(1) mask: vec4f }
21
21
  let p = vec2i(coord.xy);
22
22
  var output: Capture;
23
23
  output.radiance = textureLoad(tSource, p, 0);
24
- output.mask = vec4f(select(0.0, 1.0, decode_g_buffer_normal(textureLoad(tNormal, p, 0).xy).y > 0.99));
24
+ output.mask = vec4f(select(0.0, 1.0, decode_g_buffer_normal(textureLoad(tNormal, p, 0).x).y > 0.99));
25
25
  return output;
26
26
  }`, [chunk_decode_g_buffer_normal]) }),
27
27
  targets: [{ format: 'rgba32float' }, { format: 'rgba32float' }],
@@ -316,13 +316,13 @@ export class Renderer {
316
316
  *
317
317
  * @returns {GPUTextureContext}
318
318
  */
319
- get texture_normal_current(): GPUTextureContext;
319
+ get texture_pbr_current(): GPUTextureContext;
320
320
  /**
321
321
  * At the size last frame was drawn at, as {@link texture_depth_previous} is.
322
322
  *
323
323
  * @returns {GPUTextureContext}
324
324
  */
325
- get texture_normal_previous(): GPUTextureContext;
325
+ get texture_pbr_previous(): GPUTextureContext;
326
326
  /**
327
327
  *
328
328
  * @param {number} ratio
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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"}