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