@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.
- package/package.json +1 -1
- package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem.js +415 -413
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +2 -1
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +26 -16
- package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_tile_copy.js +6 -11
- package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +6 -2
- package/src/engine/graphics3/highlight/shader_highlight_outline.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/shader_highlight_outline.js +167 -150
- package/src/engine/graphics3/shader_picking_gather.d.ts.map +1 -1
- package/src/engine/graphics3/shader_picking_gather.js +133 -120
- package/src/shade/device/mock/SoftwareGPUTexture.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUTexture.js +11 -0
- package/src/shade/device/pipeline/rp_validate_and_rewrite_for_color_attachments.js +1 -1
- package/src/shade/playground/contact_shadows/ContactShadowLab.js +6 -6
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts.map +1 -1
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.js +6 -4
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts.map +1 -1
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.js +6 -4
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts.map +1 -1
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.js +6 -4
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +1 -1
- package/src/shade/playground/ssr_variance/capture.js +1 -1
- package/src/shade/renderer/Renderer.d.ts +2 -2
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +40 -53
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +3 -1
- package/src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.js +5 -4
- package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_deferred_main.js +6 -4
- package/src/shade/renderer/extension/GBufferTextures.d.ts +5 -1
- package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/GBufferTextures.js +5 -1
- package/src/shade/renderer/extension/ViewTextures.d.ts +11 -7
- package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/ViewTextures.js +17 -13
- package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.d.ts +2 -0
- package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.d.ts.map +1 -1
- package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.js +2 -0
- package/src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.d.ts.map +1 -1
- package/src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.js +8 -5
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts +7 -5
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +29 -16
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts +9 -3
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.js +40 -32
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +14 -15
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_debug_draw.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_debug_draw.js +7 -3
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_diffuse.js +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.js +5 -3
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.js +1 -3
- package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.js +1 -1
- package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.js +2 -2
- package/src/shade/renderer/global_illumination/lpv/shader_diffuse_LPV.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +14 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +10 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +5 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +1 -1
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js +5 -3
- package/src/shade/renderer/global_illumination/sharc/shader/debug/shader_colored_hash.js +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/debug/shader_sharc_debug_radiance.js +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts +22 -9
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +159 -65
- package/src/shade/renderer/material/MATERIAL_MASK.d.ts +19 -0
- package/src/shade/renderer/material/MATERIAL_MASK.d.ts.map +1 -0
- package/src/shade/renderer/material/MATERIAL_MASK.js +19 -0
- package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.d.ts +8 -8
- package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.js +11 -92
- package/src/shade/renderer/material/dispatch/chunk_material_quad_keys.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/chunk_material_quad_keys.js +10 -2
- package/src/shade/renderer/material/dispatch/gbuffer_compute.js +2 -2
- package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.d.ts +7 -7
- package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.js +20 -16
- package/src/shade/renderer/material/dispatch/shader_material_pixel_count.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/shader_material_pixel_count.js +3 -1
- package/src/shade/renderer/material/dispatch/shader_material_pixel_scatter.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/shader_material_pixel_scatter.js +3 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.js +26 -25
- package/src/shade/renderer/material/standard/material_gbuffer_vertex.d.ts +10 -8
- package/src/shade/renderer/material/standard/material_gbuffer_vertex.d.ts.map +1 -1
- package/src/shade/renderer/material/standard/material_gbuffer_vertex.js +16 -13
- package/src/shade/renderer/material/template/ShadeMaterialTemplate.d.ts +1 -1
- package/src/shade/renderer/material/template/ShadeMaterialTemplate.js +1 -1
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts +5 -2
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +7 -4
- package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts +3 -3
- package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +12 -10
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +2 -2
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.js +6 -4
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +9 -7
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +11 -8
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts +3 -3
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +17 -12
- package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.js +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +4 -4
- package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.js +2 -2
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.js +41 -41
- package/src/shade/renderer/postprocess/ssr/prefilter/chunk_load_neighbourhood_sample.js +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +3 -3
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +5 -2
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +4 -4
- package/src/shade/renderer/postprocess/ssr/ssr_combine_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_combine_shader.js +4 -2
- package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts +2 -1
- package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.js +10 -2
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -4
- package/src/shade/renderer/postprocess/taa/shader_reprojection_map.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/shader_reprojection_map.js +6 -4
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +6 -8
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +29 -33
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.js +1 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +6 -3
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +8 -3
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +3 -0
- package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.d.ts +1 -0
- package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.js +5 -0
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +8 -3
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +54 -5
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +1 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +2 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts +7 -2
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +73 -9
- package/src/shade/renderer/rasterize/native/viz/shader_vertex.js +4 -4
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +23 -40
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +55 -76
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts +4 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +6 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts +4 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +6 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +5 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +43 -2
- package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.d.ts +39 -0
- package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.js +45 -0
- package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.d.ts +26 -0
- package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.js +48 -0
- package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.d.ts +40 -0
- package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.js +172 -0
- package/src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.js +6 -4
- package/src/shade/renderer/restir/di/chunk_restir_spatial_reuse.js +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +2 -2
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.js +18 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.js +26 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts +60 -18
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.js +163 -45
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.js +19 -18
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js +22 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.d.ts +8 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js +10 -8
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.js +32 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.d.ts +11 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.js +14 -6
- package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.js +24 -0
- package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.js +27 -0
- package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts +7 -1
- package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.js +8 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_load_world_space_normal.js +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +10 -10
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +8 -0
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +9 -0
- package/src/shade/renderer/shader/util/shader_decode_octahedral_normal.js +1 -1
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts +3 -3
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts.map +1 -1
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.js +3 -3
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts.map +1 -1
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.js +6 -4
- package/src/shade/renderer/shadow/ray/RTXShadows.d.ts +6 -4
- package/src/shade/renderer/shadow/ray/RTXShadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/RTXShadows.js +16 -5
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.js +7 -7
- package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +2 -2
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts +4 -2
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +79 -74
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +7 -7
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +7 -3
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts +7 -5
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +29 -16
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts +5 -5
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +8 -8
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +13 -14
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +2 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +6 -4
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_transport.js +11 -9
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +13 -11
- package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.d.ts +0 -7
- package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.d.ts.map +0 -1
- package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.js +0 -6
- package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts +0 -3
- package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +0 -1
- 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
|
-
*
|
|
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
|
|
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
|
|
873
|
-
* written on,
|
|
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
|
-
#
|
|
873
|
+
#textures_pbr = new Array(2);
|
|
877
874
|
|
|
878
875
|
/**
|
|
879
876
|
*
|
|
880
877
|
* @returns {GPUTextureContext}
|
|
881
878
|
*/
|
|
882
|
-
get
|
|
883
|
-
const tx = this.#
|
|
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
|
|
894
|
-
const tx = this.#
|
|
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
|
|
1863
|
-
//
|
|
1864
|
-
//
|
|
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:
|
|
1886
|
+
mipLevelCount: 1,
|
|
1890
1887
|
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC,
|
|
1891
1888
|
}));
|
|
1892
1889
|
|
|
1893
|
-
this.#
|
|
1894
|
-
label: `
|
|
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[
|
|
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.#
|
|
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.#
|
|
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:
|
|
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
|
|
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.
|
|
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
|
|
2799
|
-
let
|
|
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
|
-
|
|
2809
|
-
|
|
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
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
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.
|
|
2904
|
-
record_view_textures.
|
|
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
|
-
|
|
2930
|
-
|
|
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
|
-
|
|
2978
|
-
|
|
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
|
-
|
|
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":"
|
|
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":"
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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":"
|
|
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
|
|
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
|
-
*
|
|
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;
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
28
|
+
set visibility(handle: number);
|
|
29
29
|
/**
|
|
30
|
-
* Which mesh each pixel came 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
|
|
35
|
-
set
|
|
36
|
+
get visibility(): number;
|
|
37
|
+
set visible_meshlets(handle: number);
|
|
36
38
|
/**
|
|
37
|
-
*
|
|
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
|
|
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;
|
|
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
|
-
*
|
|
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
|
-
#
|
|
20
|
-
#
|
|
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
|
|
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
|
|
60
|
-
return this.read(this.#
|
|
61
|
+
get visibility() {
|
|
62
|
+
return this.read(this.#visibility);
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
set
|
|
64
|
-
this.#
|
|
65
|
+
set visibility(handle) {
|
|
66
|
+
this.#visibility = this.publish(handle);
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
/**
|
|
68
|
-
*
|
|
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
|
|
73
|
-
return this.read(this.#
|
|
76
|
+
get visible_meshlets() {
|
|
77
|
+
return this.read(this.#visible_meshlets);
|
|
74
78
|
}
|
|
75
79
|
|
|
76
|
-
set
|
|
77
|
-
this.#
|
|
80
|
+
set visible_meshlets(handle) {
|
|
81
|
+
this.#visible_meshlets = this.publish(handle);
|
|
78
82
|
}
|
|
79
83
|
}
|
|
@@ -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
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"G_BUFFER_COLOR_TARGETS.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.js"],"names":[],"mappings":"
|
|
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
|
-
|
|
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.
|
|
8
|
-
* @param {number} options.
|
|
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,
|
|
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
|
-
|
|
17
|
-
|
|
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":"
|
|
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"}
|