@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
@@ -35,12 +35,12 @@ import { TonemapDisplaySettings } from "./deferred/tonemap/TonemapDisplaySetting
35
35
  import { FrameContext } from "./extension/FrameContext.js";
36
36
  import { FramePhase } from "./extension/FramePhase.js";
37
37
  import { GBufferTextures } from "./extension/GBufferTextures.js";
38
+ import { VISIBILITY_FORMAT } from "./rasterize/visibility/VISIBILITY_BUFFER.js";
38
39
  import { PresentTarget } from "./extension/PresentTarget.js";
39
40
  import { RenderExtensionRegistry } from "./extension/RenderExtensionRegistry.js";
40
41
  import { SceneColor } from "./extension/SceneColor.js";
41
42
  import { ViewTextures } from "./extension/ViewTextures.js";
42
43
  import { G_BUFFER_COLOR_TARGETS } from "./gbuffer/G_BUFFER_COLOR_TARGETS.js";
43
- import { G_BUFFER_MIP_LEVELS } from "./gbuffer/G_BUFFER_MIP_LEVELS.js";
44
44
  import { shader_brick4_diffuse } from "./global_illumination/brick4/gpu/draw/shader_brick4_diffuse.js";
45
45
  import {
46
46
  shader_brick4_indirect_lighting
@@ -142,13 +142,10 @@ const METRICS = new MetricCollection();
142
142
  METRICS.create({ name: 'frame_time' });
143
143
 
144
144
  /**
145
- * Depth and G-buffer textures carry {@link G_BUFFER_MIP_LEVELS} mip levels.
146
- * WebGPU's createTexture validation requires mipLevelCount <= floor(log2(max(w,h))) + 1,
147
- * so the internal resolution must never drop below 2^(G_BUFFER_MIP_LEVELS - 1)
148
- * or texture allocation will fail.
145
+ * The smallest internal resolution along either axis: a texture is at least one texel wide.
149
146
  * @type {number}
150
147
  */
151
- const INTERNAL_RESOLUTION_MIN = 1 << (G_BUFFER_MIP_LEVELS - 1);
148
+ const INTERNAL_RESOLUTION_MIN = 1;
152
149
 
153
150
  MetricCollectionConsoleMonitor.from(METRICS);
154
151
 
@@ -869,18 +866,18 @@ export class Renderer {
869
866
  #textures_taa_history = new Array(2);
870
867
 
871
868
  /**
872
- * The G-buffer normal, ping-ponged as depth is: reprojection asks which surface a history texel was
873
- * written on, and only last frame's normal says.
869
+ * The G-buffer's PBR target, ping-ponged as depth is: it holds the face normal, and reprojection
870
+ * asks which surface a history texel was written on, which only last frame's face normal says.
874
871
  * @type {GPUTextureContext[]}
875
872
  */
876
- #textures_normal = new Array(2);
873
+ #textures_pbr = new Array(2);
877
874
 
878
875
  /**
879
876
  *
880
877
  * @returns {GPUTextureContext}
881
878
  */
882
- get texture_normal_current() {
883
- const tx = this.#textures_normal;
879
+ get texture_pbr_current() {
880
+ const tx = this.#textures_pbr;
884
881
 
885
882
  return tx[this.#frame_count % tx.length];
886
883
  }
@@ -890,8 +887,8 @@ export class Renderer {
890
887
  *
891
888
  * @returns {GPUTextureContext}
892
889
  */
893
- get texture_normal_previous() {
894
- const tx = this.#textures_normal;
890
+ get texture_pbr_previous() {
891
+ const tx = this.#textures_pbr;
895
892
 
896
893
  return tx[(this.#frame_count - 1 + tx.length) % tx.length];
897
894
  }
@@ -1859,9 +1856,9 @@ export class Renderer {
1859
1856
  this.#update_output_resolution();
1860
1857
 
1861
1858
  // The depth ping-pong and the visibility target are created at the internal resolution
1862
- // below, so it has to be real by then rather than the 1x1 it is declared at: a 1x1 texture
1863
- // cannot carry G_BUFFER_MIP_LEVELS mips. Only the texture drawn into is resized per frame,
1864
- // so frame 0's previous depth is used at the size it was created at.
1859
+ // below, so it has to be real by then rather than the 1x1 it is declared at. Only the
1860
+ // texture drawn into is resized per frame, so frame 0's previous depth is used at the size
1861
+ // it was created at.
1865
1862
  this.#update_internal_resolution();
1866
1863
 
1867
1864
  this.#graphics = new GraphicsContext(device);
@@ -1886,14 +1883,14 @@ export class Renderer {
1886
1883
  label: `Depth ${i}`,
1887
1884
  size: resolution_internal,
1888
1885
  format: 'depth32float',
1889
- mipLevelCount: G_BUFFER_MIP_LEVELS,
1886
+ mipLevelCount: 1,
1890
1887
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC,
1891
1888
  }));
1892
1889
 
1893
- this.#textures_normal[i] = graphics.textures.contextFromDescriptor(TextureDescriptor.from({
1894
- label: `Normal ${i}`,
1890
+ this.#textures_pbr[i] = graphics.textures.contextFromDescriptor(TextureDescriptor.from({
1891
+ label: `PBR ${i}`,
1895
1892
  size: resolution_internal,
1896
- format: G_BUFFER_COLOR_TARGETS[1].format,
1893
+ format: G_BUFFER_COLOR_TARGETS[0].format,
1897
1894
  mipLevelCount: 1,
1898
1895
  // storage too, for the compute material dispatch, which can be chosen on any frame
1899
1896
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING,
@@ -2145,7 +2142,7 @@ export class Renderer {
2145
2142
  #destroy_render_targets() {
2146
2143
  const targets = [
2147
2144
  ...this.#textures_depth,
2148
- ...this.#textures_normal,
2145
+ ...this.#textures_pbr,
2149
2146
  ...this.#textures_taa_history,
2150
2147
  ...(this.#vis_render_target?.color_attachments ?? []),
2151
2148
  ];
@@ -2155,7 +2152,7 @@ export class Renderer {
2155
2152
  }
2156
2153
 
2157
2154
  this.#textures_depth.fill(undefined);
2158
- this.#textures_normal.fill(undefined);
2155
+ this.#textures_pbr.fill(undefined);
2159
2156
  this.#textures_taa_history.fill(undefined);
2160
2157
 
2161
2158
  this.#vis_render_target = undefined;
@@ -2178,13 +2175,9 @@ export class Renderer {
2178
2175
 
2179
2176
  vis_rt.color_attachments = [
2180
2177
  textures.contextFromDescriptor(TextureDescriptor.from({
2178
+ label: "Visibility",
2181
2179
  size: internal_resolution_array,
2182
- format: "r32uint",
2183
- usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING
2184
- })),
2185
- textures.contextFromDescriptor(TextureDescriptor.from({
2186
- size: internal_resolution_array,
2187
- format: "r32uint",
2180
+ format: VISIBILITY_FORMAT,
2188
2181
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING
2189
2182
  })),
2190
2183
  ];
@@ -2395,10 +2388,10 @@ export class Renderer {
2395
2388
  }
2396
2389
 
2397
2390
  // cycle depth attachment, then size the target this frame draws into. Previous depth is not
2398
- // attached, so it keeps the size it was drawn at. The normal cycles with it, the same way.
2391
+ // attached, so it keeps the size it was drawn at. The PBR target cycles with it, the same way.
2399
2392
  this.#vis_render_target.depth_attachment = this.texture_depth_current;
2400
2393
  this.#vis_render_target.resize(this.#internal_resolution.x, this.#internal_resolution.y);
2401
- this.texture_normal_current.resize(this.#internal_resolution.x, this.#internal_resolution.y);
2394
+ this.texture_pbr_current.resize(this.#internal_resolution.x, this.#internal_resolution.y);
2402
2395
  this.#postprocess.update(this.#frame_count);
2403
2396
 
2404
2397
  // Advance whichever upscaler we're going to ask for jitter on this
@@ -2788,6 +2781,7 @@ export class Renderer {
2788
2781
  buckets: gr_render_buckets,
2789
2782
  depth: gr_raster_depth,
2790
2783
  color_targets: gr_raster_color_targets,
2784
+ visible_meshlets: gr_raster_visible_meshlets,
2791
2785
  } = graph_rasterize_scene({
2792
2786
  job: raster_main,
2793
2787
  graph,
@@ -2795,8 +2789,8 @@ export class Renderer {
2795
2789
  });
2796
2790
 
2797
2791
  // `let` rather than `const` because an extension at `AfterGBuffer` may publish replacements
2798
- let gr_viz_buffer_triangle = gr_raster_color_targets[0];
2799
- let gr_viz_buffer_mesh = gr_raster_color_targets[1];
2792
+ let gr_visibility = gr_raster_color_targets[0];
2793
+ let gr_visible_meshlets = gr_raster_visible_meshlets;
2800
2794
 
2801
2795
  // Virtual texture feedback: derive per-pixel page usage from the viz
2802
2796
  // buffer (no extra geometry pass) into a unique-request hash set and
@@ -2805,8 +2799,8 @@ export class Renderer {
2805
2799
  graphics.virtual_textures.graph_feedback({
2806
2800
  graph,
2807
2801
  view: view_ctx,
2808
- texture_viz_mesh: gr_viz_buffer_mesh,
2809
- texture_viz_triangle: gr_viz_buffer_triangle,
2802
+ texture_visibility: gr_visibility,
2803
+ visible_meshlets: gr_visible_meshlets,
2810
2804
  material_metadata_buffer: graphics.materials.metadata_table.buffer,
2811
2805
  });
2812
2806
  }
@@ -2836,9 +2830,9 @@ export class Renderer {
2836
2830
  const mat_g = material_pass.graph_viz_render({
2837
2831
  graph,
2838
2832
  view: view_ctx,
2839
- texture_viz_mesh: gr_viz_buffer_mesh,
2840
- texture_viz_triangle: gr_viz_buffer_triangle,
2841
- texture_normal: graph_import_texture(graph, this.texture_normal_current, "normal"),
2833
+ texture_visibility: gr_visibility,
2834
+ visible_meshlets: gr_visible_meshlets,
2835
+ texture_pbr: graph_import_texture(graph, this.texture_pbr_current, "pbr"),
2842
2836
  });
2843
2837
 
2844
2838
  // update texture references
@@ -2849,10 +2843,6 @@ export class Renderer {
2849
2843
  let gr_texture_material_albedo_ao = mat_g.g_albedo;
2850
2844
  let gr_texture_material_emissive = mat_g.g_emissive;
2851
2845
 
2852
- // do mips for G-buffer
2853
- // mipmap_nearest(command_ctx, this.texture_depth_current);
2854
- // this.gBuffer.mipmap(command_ctx);
2855
-
2856
2846
  // Update lights position
2857
2847
  command_ctx.pushDebugGroup("Shade");
2858
2848
 
@@ -2900,8 +2890,8 @@ export class Renderer {
2900
2890
 
2901
2891
  record_view_textures.depth = gr_texture_depth_current;
2902
2892
  record_view_textures.depth_previous = gr_texture_depth_previous;
2903
- record_view_textures.visibility_mesh = gr_viz_buffer_mesh;
2904
- record_view_textures.visibility_triangle = gr_viz_buffer_triangle;
2893
+ record_view_textures.visibility = gr_visibility;
2894
+ record_view_textures.visible_meshlets = gr_visible_meshlets;
2905
2895
 
2906
2896
  this.#extensions.run(frame);
2907
2897
 
@@ -2926,8 +2916,8 @@ export class Renderer {
2926
2916
 
2927
2917
  gr_texture_depth_current = record_view_textures.depth;
2928
2918
  gr_texture_depth_previous = record_view_textures.depth_previous;
2929
- gr_viz_buffer_mesh = record_view_textures.visibility_mesh;
2930
- gr_viz_buffer_triangle = record_view_textures.visibility_triangle;
2919
+ gr_visibility = record_view_textures.visibility;
2920
+ gr_visible_meshlets = record_view_textures.visible_meshlets;
2931
2921
 
2932
2922
  // Velocity pass with three branches: rotation-reprojection
2933
2923
  // background, rigid per-object foreground (mesh.global delta),
@@ -2974,8 +2964,8 @@ export class Renderer {
2974
2964
  let gr_velocity = graph_add_per_object_velocity({
2975
2965
  graph,
2976
2966
  texture_depth: gr_texture_depth_current,
2977
- texture_viz_mesh: gr_viz_buffer_mesh,
2978
- texture_viz_triangle: gr_viz_buffer_triangle,
2967
+ texture_visibility: gr_visibility,
2968
+ buffer_visible_meshlets: gr_visible_meshlets,
2979
2969
  buffer_scene_database: gr_scene_database_for_velocity,
2980
2970
  buffer_meshlet_metadata: gr_meshlet_metadata_for_velocity,
2981
2971
  buffer_meshlet_data: gr_meshlet_data_for_velocity,
@@ -2984,19 +2974,14 @@ export class Renderer {
2984
2974
  skinning_active,
2985
2975
  resolution,
2986
2976
  view: view_ctx,
2987
- enable_mipmap: true
2988
2977
  });
2989
2978
 
2990
- // gr_velocity = graph_mipmap_nearest(graph, gr_velocity, G_BUFFER_MIP_LEVELS);
2991
-
2992
2979
  // rg8unorm: r is the history confidence, g records which texel won the nearest-depth search,
2993
2980
  // so the TAA resolve can reproject with exactly the velocity this pass validated.
2994
2981
  let [gr_occlusion_clip] = graph_image_pass({
2995
2982
  graph,
2996
2983
  shader: shader_depth_occlusion_clip,
2997
2984
  output_resolution: view_ctx.resolution,
2998
- // mipmaps are going to be necessary for half-resolution post-process passes
2999
- output_mipmaps: true,
3000
2985
  inputs: {
3001
2986
  camera_current: gr_buffer_camera_current,
3002
2987
  camera_previous: gr_buffer_camera_previous,
@@ -3129,7 +3114,8 @@ export class Renderer {
3129
3114
  input_depth: gr_texture_depth_current,
3130
3115
  input_velocity: gr_velocity,
3131
3116
  input_normal: gr_texture_normal,
3132
- input_normal_previous: graph_import_texture(graph, this.texture_normal_previous, "normal previous"),
3117
+ input_pbr: gr_texture_pbr,
3118
+ input_pbr_previous: graph_import_texture(graph, this.texture_pbr_previous, "pbr previous"),
3133
3119
  input_occlusion: gr_occlusion_clip,
3134
3120
  input_hzb: gr_texture_hzb,
3135
3121
  // NOTE: AO is blended into the G-buffer
@@ -3295,6 +3281,7 @@ export class Renderer {
3295
3281
  depth_texture: gr_texture_depth_current,
3296
3282
 
3297
3283
  normal_texture: gr_texture_normal,
3284
+ pbr_texture: gr_texture_pbr,
3298
3285
  hzb_texture: gr_texture_hzb,
3299
3286
  environment_texture: gr_texture_environment,
3300
3287
 
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_read_gBuffer_material.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/deferred/chunk_read_gBuffer_material.js"],"names":[],"mappings":"AAUA,oDAwDE;0BA3DwB,iCAAiC"}
1
+ {"version":3,"file":"chunk_read_gBuffer_material.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/deferred/chunk_read_gBuffer_material.js"],"names":[],"mappings":"AAWA,oDAyDE;0BA5DwB,iCAAiC"}
@@ -1,6 +1,7 @@
1
1
  import { BSDF_ROUGHNESS_MINIMUM } from "../light/environment/DEFINES.js";
2
2
  import { chunk_MIN_DIELECTRICS_F0 } from "../shader/chunk/brdf/chunk_MIN_DIELECTRICS_F0.js";
3
3
  import { chunk_rgbe9995_decode } from "../shader/chunk/color/rgbe9995/chunk_rgbe9995_decode.js";
4
+ import { chunk_decode_g_buffer_albedo } from "../shader/chunk/material/chunk_decode_g_buffer_albedo.js";
4
5
  import { chunk_decode_g_buffer_metalness } from "../shader/chunk/material/chunk_decode_g_buffer_metalness.js";
5
6
  import { chunk_decode_g_buffer_roughness } from "../shader/chunk/material/chunk_decode_g_buffer_roughness.js";
6
7
  import { chunk_metalness_to_specular_color } from "../shader/chunk/material/chunk_metalness_to_specular_color.js";
@@ -27,7 +28,7 @@ fn read_gBuffer_material(
27
28
  0
28
29
  );
29
30
 
30
- let albedo = albedo_ao_sample.rgb;
31
+ let albedo = decode_g_buffer_albedo(albedo_ao_sample.rgb);
31
32
 
32
33
  let emissive = rgbe9995_decode( textureLoad(
33
34
  gBufferEmissive,
@@ -61,6 +62,7 @@ fn read_gBuffer_material(
61
62
  chunk_metalness_to_specular_color,
62
63
  chunk_MIN_DIELECTRICS_F0,
63
64
  chunk_decode_g_buffer_roughness,
65
+ chunk_decode_g_buffer_albedo,
64
66
  chunk_decode_g_buffer_metalness,
65
67
  chunk_rgbe9995_decode
66
68
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_ss_trace_contact_shadow_soft.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.js"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,6CAFU,SAAS,CAsMlB;AAED,2DAiDC;0BAhQyB,iCAAiC"}
1
+ {"version":3,"file":"chunk_ss_trace_contact_shadow_soft.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,6CAFU,SAAS,CAqMlB;AAED,2DAiDC;0BA/PyB,iCAAiC"}
@@ -1,7 +1,9 @@
1
1
  import { chunk_project_position_from_depth } from "../shader/chunk/camera/chunk_project_position_from_depth.js";
2
2
  import { chunk_get_view_space_depth } from "../shader/chunk/depth/chunk_get_view_space_depth.js";
3
3
  import { chunk_cone_sample_direction } from "../shader/chunk/geometry/cone/chunk_cone_sample_direction.js";
4
- import { chunk_decode_g_buffer_normal } from "../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
4
+ import {
5
+ chunk_decode_g_buffer_face_normal
6
+ } from "../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
5
7
  import { PI_DECLARATION } from "../shader/chunk/math/PI_DECLARATION.js";
6
8
  import { chunk_random } from "../shader/chunk/random/chunk_random.js";
7
9
  import { chunk_ndc_to_texel_coordinate } from "../shader/chunk/texture/chunk_ndc_to_texel_coordinate.js";
@@ -177,8 +179,7 @@ fn ss_trace_pixel_occlusion(
177
179
  var confidence = 1.0;
178
180
 
179
181
  // validate hit
180
- let hit_normal_texel = textureLoad(gBufferNormal, screen_coord_u, 0);
181
- let hit_geometric_normal = decode_g_buffer_normal(hit_normal_texel.zw);
182
+ let hit_geometric_normal = decode_g_buffer_face_normal(textureLoad(gBufferPBR, screen_coord_u, 0));
182
183
 
183
184
  const DEG2RAD = 0.017453292519943295;
184
185
  const NORMAL_HIT_THRESHOLD = cos( 15.0 * DEG2RAD );
@@ -209,7 +210,7 @@ fn ss_trace_pixel_occlusion(
209
210
  chunk_get_view_space_depth,
210
211
  chunk_texel_coordinate_to_uv,
211
212
  chunk_project_position_from_depth,
212
- chunk_decode_g_buffer_normal,
213
+ chunk_decode_g_buffer_face_normal,
213
214
  ]
214
215
  )
215
216
 
@@ -1 +1 @@
1
- {"version":3,"file":"shader_deferred_main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/deferred/shader_deferred_main.js"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,oCAFU,MAAM,CAEwB;AAgGxC;;;;;;;;GAQG;AACH,mCAFU,WAAW,CAelB;4BAtIyB,0BAA0B"}
1
+ {"version":3,"file":"shader_deferred_main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/deferred/shader_deferred_main.js"],"names":[],"mappings":"AA2BA;;;;GAIG;AACH,oCAFU,MAAM,CAEwB;AA+FxC;;;;;;;;GAQG;AACH,mCAFU,WAAW,CAelB;4BArIyB,0BAA0B"}
@@ -4,6 +4,9 @@ import { chunk_project_position_from_depth } from "../shader/chunk/camera/chunk_
4
4
  import { chunk_get_view_space_depth } from "../shader/chunk/depth/chunk_get_view_space_depth.js";
5
5
  import { chunk_mat4_extract_position } from "../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
6
6
  import { chunk_decode_g_buffer_normal } from "../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
7
+ import {
8
+ chunk_decode_g_buffer_face_normal
9
+ } from "../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
7
10
  import { DIRECTIONAL_LIGHT_STRUCT } from "../shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js";
8
11
  import { INCIDENT_LIGHT_STRUCT } from "../shader/chunk/light/INCIDENT_LIGHT_STRUCT.js";
9
12
  import { POINT_LIGHT_STRUCT } from "../shader/chunk/light/POINT_LIGHT_STRUCT.js";
@@ -80,10 +83,8 @@ fn main(
80
83
 
81
84
  let view_direction = normalize(camera_position_ws - position_ws);
82
85
 
83
- let g_buffer_sample_normal = textureLoad(gBufferNormal, i_coord, 0);
84
-
85
- let shading_normal = decode_g_buffer_normal(g_buffer_sample_normal.xy);
86
- let geometric_normal = decode_g_buffer_normal(g_buffer_sample_normal.zw);
86
+ let shading_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, i_coord, 0).x);
87
+ let geometric_normal = decode_g_buffer_face_normal(textureLoad(gBufferPBR, i_coord, 0));
87
88
 
88
89
  let geometry = ${GEOMETRIC_SHADING_INFO_STRUCT.wgsl_ref}(
89
90
  shading_normal,
@@ -113,6 +114,7 @@ fn main(
113
114
  GEOMETRIC_SHADING_INFO_STRUCT.declaration_chunk,
114
115
  MATERIAL_SHADING_INFO_STRUCT.declaration_chunk,
115
116
  chunk_decode_g_buffer_normal,
117
+ chunk_decode_g_buffer_face_normal,
116
118
  chunk_project_position_from_depth,
117
119
  chunk_mat4_extract_position,
118
120
  chunk_read_gBuffer_material,
@@ -36,12 +36,16 @@ export class GBufferTextures extends FrameRecord {
36
36
  republish_albedo(handle: number): void;
37
37
  set normal(handle: number);
38
38
  /**
39
+ * The shading normal, octahedral at 16 bits per axis packed into one `r32uint`
40
+ * (`decode_g_buffer_normal`).
41
+ *
39
42
  * @returns {number}
40
43
  */
41
44
  get normal(): number;
42
45
  set pbr(handle: number);
43
46
  /**
44
- * Roughness, metalness and what else the standard material carries.
47
+ * Metalness and roughness, and in `ba` the face normal: octahedral at 8 bits per axis
48
+ * (`decode_g_buffer_face_normal`).
45
49
  *
46
50
  * @returns {number}
47
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GBufferTextures.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/extension/GBufferTextures.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH;IAMI,0CAKC;IAED,2CAEC;IAWD,2BAEC;IAXD;;;;OAIG;IACH,qBAEC;IAMD;;;;;;;;;OASG;IACH,yBAFW,MAAM,QAIhB;IASD,2BAEC;IATD;;OAEG;IACH,qBAEC;IAeD,wBAEC;IAXD;;;;OAIG;IACH,kBAEC;IAaD,6BAEC;IATD;;OAEG;IACH,uBAEC;;CAKJ;4BA/F2B,kBAAkB"}
1
+ {"version":3,"file":"GBufferTextures.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/extension/GBufferTextures.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH;IAMI,0CAKC;IAED,2CAEC;IAWD,2BAEC;IAXD;;;;OAIG;IACH,qBAEC;IAMD;;;;;;;;;OASG;IACH,yBAFW,MAAM,QAIhB;IAYD,2BAEC;IAZD;;;;;OAKG;IACH,qBAEC;IAgBD,wBAEC;IAZD;;;;;OAKG;IACH,kBAEC;IAaD,6BAEC;IATD;;OAEG;IACH,uBAEC;;CAKJ;4BAnG2B,kBAAkB"}
@@ -61,6 +61,9 @@ export class GBufferTextures extends FrameRecord {
61
61
  }
62
62
 
63
63
  /**
64
+ * The shading normal, octahedral at 16 bits per axis packed into one `r32uint`
65
+ * (`decode_g_buffer_normal`).
66
+ *
64
67
  * @returns {number}
65
68
  */
66
69
  get normal() {
@@ -72,7 +75,8 @@ export class GBufferTextures extends FrameRecord {
72
75
  }
73
76
 
74
77
  /**
75
- * Roughness, metalness and what else the standard material carries.
78
+ * Metalness and roughness, and in `ba` the face normal: octahedral at 8 bits per axis
79
+ * (`decode_g_buffer_face_normal`).
76
80
  *
77
81
  * @returns {number}
78
82
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * What the frame knows about where each pixel came from: this frame's depth, last frame's depth,
3
- * and the visibility buffer's mesh and triangle rows.
3
+ * the visibility buffer, and the visible-meshlet table that resolves it.
4
4
  *
5
5
  * Carried from {@link FramePhase.AfterGBuffer} through {@link FramePhase.BeforePresent}, and
6
6
  * writable wherever it is carried — an extension that rasterizes geometry which should own depth
@@ -25,20 +25,24 @@ export class ViewTextures extends FrameRecord {
25
25
  * @returns {number}
26
26
  */
27
27
  get depth_previous(): number;
28
- set visibility_mesh(handle: number);
28
+ set visibility(handle: number);
29
29
  /**
30
- * Which mesh each pixel came from. What an outline or a selection highlight is derived from.
30
+ * Which triangle of which mesh each pixel came from: one word a pixel, `VISIBILITY_FORMAT`, a slot of
31
+ * {@link visible_meshlets} and the triangle within that meshlet, or `VISIBILITY_NONE` where no surface
32
+ * is. `visibility_decode` reads it. What an outline or a selection highlight is derived from.
31
33
  *
32
34
  * @returns {number}
33
35
  */
34
- get visibility_mesh(): number;
35
- set visibility_triangle(handle: number);
36
+ get visibility(): number;
37
+ set visible_meshlets(handle: number);
36
38
  /**
37
- * Which triangle each pixel came from.
39
+ * The frame's visible-meshlet table: the meshlet, and the mesh row it was drawn for, at each slot
40
+ * {@link visibility} names. Published with it: a pass that writes its own words into the visibility
41
+ * buffer appends its meshlets here.
38
42
  *
39
43
  * @returns {number}
40
44
  */
41
- get visibility_triangle(): number;
45
+ get visible_meshlets(): number;
42
46
  #private;
43
47
  }
44
48
  import { FrameRecord } from "./FrameRecord.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ViewTextures.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/extension/ViewTextures.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH;IAMI,0CAKC;IASD,0BAEC;IATD;;OAEG;IACH,oBAEC;IAgBD,mCAEC;IAZD;;;;;OAKG;IACH,6BAEC;IAeD,oCAEC;IAXD;;;;OAIG;IACH,8BAEC;IAeD,wCAEC;IAXD;;;;OAIG;IACH,kCAEC;;CAKJ;4BA7E2B,kBAAkB"}
1
+ {"version":3,"file":"ViewTextures.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/extension/ViewTextures.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH;IAMI,0CAKC;IASD,0BAEC;IATD;;OAEG;IACH,oBAEC;IAgBD,mCAEC;IAZD;;;;;OAKG;IACH,6BAEC;IAiBD,+BAEC;IAbD;;;;;;OAMG;IACH,yBAEC;IAiBD,qCAEC;IAbD;;;;;;OAMG;IACH,+BAEC;;CAKJ;4BAjF2B,kBAAkB"}
@@ -3,7 +3,7 @@ import { FrameRecord } from "./FrameRecord.js";
3
3
 
4
4
  /**
5
5
  * What the frame knows about where each pixel came from: this frame's depth, last frame's depth,
6
- * and the visibility buffer's mesh and triangle rows.
6
+ * the visibility buffer, and the visible-meshlet table that resolves it.
7
7
  *
8
8
  * Carried from {@link FramePhase.AfterGBuffer} through {@link FramePhase.BeforePresent}, and
9
9
  * writable wherever it is carried — an extension that rasterizes geometry which should own depth
@@ -16,8 +16,8 @@ import { FrameRecord } from "./FrameRecord.js";
16
16
  export class ViewTextures extends FrameRecord {
17
17
  #depth = -1;
18
18
  #depth_previous = -1;
19
- #visibility_mesh = -1;
20
- #visibility_triangle = -1;
19
+ #visibility = -1;
20
+ #visible_meshlets = -1;
21
21
 
22
22
  static is_present_at(phase) {
23
23
  return phase === FramePhase.AfterGBuffer
@@ -52,28 +52,32 @@ export class ViewTextures extends FrameRecord {
52
52
  }
53
53
 
54
54
  /**
55
- * Which mesh each pixel came from. What an outline or a selection highlight is derived from.
55
+ * Which triangle of which mesh each pixel came from: one word a pixel, `VISIBILITY_FORMAT`, a slot of
56
+ * {@link visible_meshlets} and the triangle within that meshlet, or `VISIBILITY_NONE` where no surface
57
+ * is. `visibility_decode` reads it. What an outline or a selection highlight is derived from.
56
58
  *
57
59
  * @returns {number}
58
60
  */
59
- get visibility_mesh() {
60
- return this.read(this.#visibility_mesh);
61
+ get visibility() {
62
+ return this.read(this.#visibility);
61
63
  }
62
64
 
63
- set visibility_mesh(handle) {
64
- this.#visibility_mesh = this.publish(handle);
65
+ set visibility(handle) {
66
+ this.#visibility = this.publish(handle);
65
67
  }
66
68
 
67
69
  /**
68
- * Which triangle each pixel came from.
70
+ * The frame's visible-meshlet table: the meshlet, and the mesh row it was drawn for, at each slot
71
+ * {@link visibility} names. Published with it: a pass that writes its own words into the visibility
72
+ * buffer appends its meshlets here.
69
73
  *
70
74
  * @returns {number}
71
75
  */
72
- get visibility_triangle() {
73
- return this.read(this.#visibility_triangle);
76
+ get visible_meshlets() {
77
+ return this.read(this.#visible_meshlets);
74
78
  }
75
79
 
76
- set visibility_triangle(handle) {
77
- this.#visibility_triangle = this.publish(handle);
80
+ set visible_meshlets(handle) {
81
+ this.#visible_meshlets = this.publish(handle);
78
82
  }
79
83
  }
@@ -1,4 +1,6 @@
1
1
  /**
2
+ * The G-buffer's albedo target: `rgb` the albedo sRGB-encoded, as `encode_g_buffer_albedo` writes it and
3
+ * `decode_g_buffer_albedo` reads it, `a` the ambient occlusion, linear.
2
4
  *
3
5
  * @type {GPUTextureFormat}
4
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"G_BUFFER_ALBEDO_FORMAT.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sDAAmD"}
1
+ {"version":3,"file":"G_BUFFER_ALBEDO_FORMAT.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,sDAAmD"}
@@ -1,4 +1,6 @@
1
1
  /**
2
+ * The G-buffer's albedo target: `rgb` the albedo sRGB-encoded, as `encode_g_buffer_albedo` writes it and
3
+ * `decode_g_buffer_albedo` reads it, `a` the ambient occlusion, linear.
2
4
  *
3
5
  * @type {GPUTextureFormat}
4
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"G_BUFFER_COLOR_TARGETS.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qCAFU,qBAAqB,CAW5B"}
1
+ {"version":3,"file":"G_BUFFER_COLOR_TARGETS.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qCAFU,qBAAqB,CAY5B"}
@@ -1,14 +1,17 @@
1
+ import { G_BUFFER_ALBEDO_FORMAT } from "./G_BUFFER_ALBEDO_FORMAT.js";
2
+
1
3
  /**
2
4
  * @readonly
3
5
  * @type {GPUColorTargetState[]}
4
6
  */
5
7
  export const G_BUFFER_COLOR_TARGETS = Object.freeze([
6
- // metalness, roughness
7
- { format: 'rg8unorm' },
8
- // octahedral-encoded normal
9
- { format:'rgba16uint'},
10
- // albedo + AO
8
+ // metalness, roughness, and the face normal in ba: octahedral, 8 bits per axis
9
+ // (chunk_encode_g_buffer_face_normal)
11
10
  { format: 'rgba8unorm' },
11
+ // the shading normal: octahedral, 16 bits per axis, packed (chunk_encode_g_buffer_normal)
12
+ { format: 'r32uint' },
13
+ // albedo + AO
14
+ { format: G_BUFFER_ALBEDO_FORMAT },
12
15
  // emissive RGB
13
16
  { format: 'r32uint' },
14
17
  ]);
@@ -4,17 +4,19 @@
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
  * @param settings
10
11
  * @returns {number} texture with shadows
11
12
  */
12
- export function graph_draw_sdf_normals({ graph, view, input_depth, input_normals, input_viz_mesh, }: {
13
+ export function graph_draw_sdf_normals({ graph, view, input_depth, input_pbr, input_visibility, input_visible_meshlets, }: {
13
14
  graph: FrameGraph;
14
15
  view: GPUViewContext;
15
16
  input_depth: number;
16
- input_normals: number;
17
- input_viz_mesh: number;
17
+ input_pbr: number;
18
+ input_visibility: number;
19
+ input_visible_meshlets: number;
18
20
  }): number;
19
21
  export const shader_sdf_visualize: ImageShader;
20
22
  import { ImageShader } from "../../shader/ImageShader.js";
@@ -1 +1 @@
1
- {"version":3,"file":"shader_sdf_visualize.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/shader_sdf_visualize.js"],"names":[],"mappings":"AA4JA;;;;;;;;;;GAUG;AACH;IAR+B,KAAK;IACD,IAAI;IACZ,WAAW,EAA3B,MAAM;IACU,aAAa,EAA7B,MAAM;IACU,cAAc,EAA9B,MAAM;IAEJ,MAAM,CAmGlB;AAvHD,+CASG;4BApIyB,6BAA6B"}
1
+ {"version":3,"file":"shader_sdf_visualize.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/shader_sdf_visualize.js"],"names":[],"mappings":"AAqKA;;;;;;;;;;;GAWG;AACH;IAT+B,KAAK;IACD,IAAI;IACZ,WAAW,EAA3B,MAAM;IACU,SAAS,EAAzB,MAAM;IACU,gBAAgB,EAAhC,MAAM;IACU,sBAAsB,EAAtC,MAAM;IAEJ,MAAM,CAsGlB;AA3HD,+CASG;4BAvIyB,6BAA6B"}