@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
|
@@ -65,7 +65,7 @@ fn main(
|
|
|
65
65
|
|
|
66
66
|
let phi_luma = phi_visibility * std_dev;
|
|
67
67
|
|
|
68
|
-
let current_normal = decode_g_buffer_normal(textureLoad(tNormal, ipos, 0).
|
|
68
|
+
let current_normal = decode_g_buffer_normal(textureLoad(tNormal, ipos, 0).x);
|
|
69
69
|
let center_depth = textureLoad(tDepth, ipos, 0).r;
|
|
70
70
|
|
|
71
71
|
// the centre at weight 1, so the edge-stopping functions cannot leave nothing
|
|
@@ -91,7 +91,7 @@ fn main(
|
|
|
91
91
|
|
|
92
92
|
let texel = textureLoad(tInput, p, 0);
|
|
93
93
|
|
|
94
|
-
let sample_normal = decode_g_buffer_normal(textureLoad(tNormal, p, 0).
|
|
94
|
+
let sample_normal = decode_g_buffer_normal(textureLoad(tNormal, p, 0).x);
|
|
95
95
|
let sample_depth = textureLoad(tDepth, p, 0).r;
|
|
96
96
|
|
|
97
97
|
let w = compute_edge_stopping_weight(
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
2
|
-
import { chunk_rgb_to_luminance } from "../../shader/chunk/color/chunk_rgb_to_luminance.js";
|
|
3
|
-
import { chunk_decode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
|
|
4
|
-
import { chunk_get_std_dev } from "../../shader/chunk/math/statistics/chunk_get_std_dev.js";
|
|
5
|
-
import { chunk_is_on_screen_i32 } from "../../shader/chunk/texture/chunk_is_on_screen_i32.js";
|
|
6
|
-
import { chunk_ffx_dnsr_reflections_get_edge_stopping_normal_weight } from "./prefilter/chunk_ffx_dnsr_reflections_get_edge_stopping_normal_weight.js";
|
|
7
|
-
import { chunk_ffx_dnsr_reflections_get_edge_stopping_depth_weight } from "./prefilter/chunk_ffx_dnsr_reflections_get_edge_stopping_depth_weight.js";
|
|
8
|
-
|
|
9
|
-
/** Bootstrap variance from spatial samples when resolve has too few rays to estimate noise. */
|
|
10
|
-
export const chunk_ssr_spatial_variance = CodeChunk.from(/* language=WGSL */ `
|
|
11
|
-
fn ssr_spatial_variance(
|
|
12
|
-
radiance: texture_2d<f32>, depth: texture_2d<f32>, normals: texture_2d<u32>, p: vec2i,
|
|
13
|
-
) -> f32 {
|
|
14
|
-
let center_luma = rgb_to_luminance(textureLoad(radiance,p,0).rgb);
|
|
15
|
-
let center_normal = decode_g_buffer_normal(textureLoad(normals,p,0).
|
|
16
|
-
let center_depth = textureLoad(depth,p,0).r;
|
|
17
|
-
let size = vec2i(textureDimensions(radiance));
|
|
18
|
-
let kernel = array<f32,3>(0.25,0.125,0.0625);
|
|
19
|
-
var moments = vec2f(0.0);
|
|
20
|
-
var sum_weight = 0.0;
|
|
21
|
-
for (var y = -1; y <= 1; y++) {
|
|
22
|
-
for (var x = -1; x <= 1; x++) {
|
|
23
|
-
let q = p + vec2i(x,y);
|
|
24
|
-
if (!is_on_screen_i32(q,size)) { continue; }
|
|
25
|
-
let sample_normal = decode_g_buffer_normal(textureLoad(normals,q,0).
|
|
26
|
-
let sample_depth = textureLoad(depth,q,0).r;
|
|
27
|
-
let weight = kernel[abs(x)+abs(y)]
|
|
28
|
-
* ffx_dnsr_reflections_get_edge_stopping_normal_weight(center_normal,sample_normal)
|
|
29
|
-
* ffx_dnsr_reflections_get_edge_stopping_depth_weight(center_depth,sample_depth);
|
|
30
|
-
// Differences about the centre avoid cancellation for a constant HDR signal.
|
|
31
|
-
let delta = rgb_to_luminance(textureLoad(radiance,q,0).rgb)-center_luma;
|
|
32
|
-
moments += vec2f(delta,delta*delta)*weight;
|
|
33
|
-
sum_weight += weight;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
moments /= max(sum_weight,1e-8);
|
|
37
|
-
let sigma = get_std_dev(moments.x,moments.y);
|
|
38
|
-
return sigma*sigma;
|
|
39
|
-
}
|
|
40
|
-
`, [chunk_rgb_to_luminance, chunk_decode_g_buffer_normal, chunk_get_std_dev, chunk_is_on_screen_i32,
|
|
41
|
-
chunk_ffx_dnsr_reflections_get_edge_stopping_normal_weight, chunk_ffx_dnsr_reflections_get_edge_stopping_depth_weight]);
|
|
1
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
2
|
+
import { chunk_rgb_to_luminance } from "../../shader/chunk/color/chunk_rgb_to_luminance.js";
|
|
3
|
+
import { chunk_decode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
|
|
4
|
+
import { chunk_get_std_dev } from "../../shader/chunk/math/statistics/chunk_get_std_dev.js";
|
|
5
|
+
import { chunk_is_on_screen_i32 } from "../../shader/chunk/texture/chunk_is_on_screen_i32.js";
|
|
6
|
+
import { chunk_ffx_dnsr_reflections_get_edge_stopping_normal_weight } from "./prefilter/chunk_ffx_dnsr_reflections_get_edge_stopping_normal_weight.js";
|
|
7
|
+
import { chunk_ffx_dnsr_reflections_get_edge_stopping_depth_weight } from "./prefilter/chunk_ffx_dnsr_reflections_get_edge_stopping_depth_weight.js";
|
|
8
|
+
|
|
9
|
+
/** Bootstrap variance from spatial samples when resolve has too few rays to estimate noise. */
|
|
10
|
+
export const chunk_ssr_spatial_variance = CodeChunk.from(/* language=WGSL */ `
|
|
11
|
+
fn ssr_spatial_variance(
|
|
12
|
+
radiance: texture_2d<f32>, depth: texture_2d<f32>, normals: texture_2d<u32>, p: vec2i,
|
|
13
|
+
) -> f32 {
|
|
14
|
+
let center_luma = rgb_to_luminance(textureLoad(radiance,p,0).rgb);
|
|
15
|
+
let center_normal = decode_g_buffer_normal(textureLoad(normals,p,0).x);
|
|
16
|
+
let center_depth = textureLoad(depth,p,0).r;
|
|
17
|
+
let size = vec2i(textureDimensions(radiance));
|
|
18
|
+
let kernel = array<f32,3>(0.25,0.125,0.0625);
|
|
19
|
+
var moments = vec2f(0.0);
|
|
20
|
+
var sum_weight = 0.0;
|
|
21
|
+
for (var y = -1; y <= 1; y++) {
|
|
22
|
+
for (var x = -1; x <= 1; x++) {
|
|
23
|
+
let q = p + vec2i(x,y);
|
|
24
|
+
if (!is_on_screen_i32(q,size)) { continue; }
|
|
25
|
+
let sample_normal = decode_g_buffer_normal(textureLoad(normals,q,0).x);
|
|
26
|
+
let sample_depth = textureLoad(depth,q,0).r;
|
|
27
|
+
let weight = kernel[abs(x)+abs(y)]
|
|
28
|
+
* ffx_dnsr_reflections_get_edge_stopping_normal_weight(center_normal,sample_normal)
|
|
29
|
+
* ffx_dnsr_reflections_get_edge_stopping_depth_weight(center_depth,sample_depth);
|
|
30
|
+
// Differences about the centre avoid cancellation for a constant HDR signal.
|
|
31
|
+
let delta = rgb_to_luminance(textureLoad(radiance,q,0).rgb)-center_luma;
|
|
32
|
+
moments += vec2f(delta,delta*delta)*weight;
|
|
33
|
+
sum_weight += weight;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
moments /= max(sum_weight,1e-8);
|
|
37
|
+
let sigma = get_std_dev(moments.x,moments.y);
|
|
38
|
+
return sigma*sigma;
|
|
39
|
+
}
|
|
40
|
+
`, [chunk_rgb_to_luminance, chunk_decode_g_buffer_normal, chunk_get_std_dev, chunk_is_on_screen_i32,
|
|
41
|
+
chunk_ffx_dnsr_reflections_get_edge_stopping_normal_weight, chunk_ffx_dnsr_reflections_get_edge_stopping_depth_weight]);
|
|
@@ -22,7 +22,7 @@ fn load_neighbourhood_sample(
|
|
|
22
22
|
sample.radiance = rv.xyz;
|
|
23
23
|
|
|
24
24
|
// shading normal
|
|
25
|
-
sample.normal = decode_g_buffer_normal( textureLoad(tNormal, texel_coordinate, 0).
|
|
25
|
+
sample.normal = decode_g_buffer_normal( textureLoad(tNormal, texel_coordinate, 0).x );
|
|
26
26
|
|
|
27
27
|
sample.depth = get_view_space_depth(
|
|
28
28
|
textureLoad(tDepth, texel_coordinate, 0).r,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
2
|
import { chunk_rgb_to_luminance } from "../../../shader/chunk/color/chunk_rgb_to_luminance.js";
|
|
3
3
|
import { chunk_decode_g_buffer_normal } from "../../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
|
|
4
|
-
import { chunk_is_finite } from "../../../shader/chunk/math/chunk_is_finite.js";
|
|
4
|
+
import { chunk_is_finite } from "../../../shader/chunk/math/chunk_is_finite.js";
|
|
5
5
|
import { F16_MAX_DEFINITION } from "../../../shader/chunk/math/F16_MAX_DEFINITION.js";
|
|
6
6
|
import { chunk_decode_g_buffer_roughness } from "../../../shader/chunk/material/chunk_decode_g_buffer_roughness.js";
|
|
7
7
|
import { chunk_project_position_from_depth } from "../../../shader/chunk/camera/chunk_project_position_from_depth.js";
|
|
@@ -45,7 +45,7 @@ fn ssr_temporal_accumulate(current: vec4f, previous: vec4f, previous_age: f32,
|
|
|
45
45
|
// uncertainty keeps a chance cluster of misses from clipping a valid mean to
|
|
46
46
|
// black. Real geometry and coherent lighting changes can still rectify it.
|
|
47
47
|
let size = vec2i(textureDimensions(tInput));
|
|
48
|
-
let center_normal = decode_g_buffer_normal(textureLoad(tNormal, st, 0).
|
|
48
|
+
let center_normal = decode_g_buffer_normal(textureLoad(tNormal, st, 0).x);
|
|
49
49
|
let center_depth = textureLoad(tDepth, st, 0).r;
|
|
50
50
|
let center_roughness = decode_g_buffer_roughness(textureLoad(tPBR, st, 0));
|
|
51
51
|
var first = vec3f(0.0);
|
|
@@ -71,7 +71,7 @@ fn ssr_temporal_accumulate(current: vec4f, previous: vec4f, previous_age: f32,
|
|
|
71
71
|
for (var x = -2; x <= 2; x++) {
|
|
72
72
|
let p = st + vec2i(x,y);
|
|
73
73
|
if (any(p < vec2i(0)) || any(p >= size)) { continue; }
|
|
74
|
-
let normal = decode_g_buffer_normal(textureLoad(tNormal, p, 0).
|
|
74
|
+
let normal = decode_g_buffer_normal(textureLoad(tNormal, p, 0).x);
|
|
75
75
|
let depth = textureLoad(tDepth, p, 0).r;
|
|
76
76
|
if (is_background(depth)) { continue; }
|
|
77
77
|
let roughness = decode_g_buffer_roughness(textureLoad(tPBR, p, 0));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_ssr_add_hit_irradiance.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_ssr_add_hit_irradiance.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,4CAFU,wBAAwB,CAQhC;AAEF;;;GAGG;AACH,gDAFU,SAAS,CAcR;AAEX;;;;;GAKG;AACH,+CAFU,SAAS,CA0BZ;AAKP;;;;;;;;GAQG;AACH,yDAFU,SAAS,CAuBZ;AAKP;;;;;;;;;;;GAWG;AACH,2CAFU,eAAe,CAE2D;yCArH3C,sDAAsD;0BAJrE,uCAAuC;gCACjC,6CAA6C"}
|
|
@@ -2,6 +2,7 @@ import { INDIRECT_LIGHTING } from "../../../INDIRECT_LIGHTING.js";
|
|
|
2
2
|
import { ShadeIndirectLightingMode } from "../../../ShadeIndirectLightingMode.js";
|
|
3
3
|
import { chunk_v3_matrix4_project } from "../../../shader/chunk/geometry/vec3/chunk_v3_matrix4_project.js";
|
|
4
4
|
import { chunk_lpv_sample_irradiance } from "../../../shader/chunk/light/lpv/chunk_lpv_sample_irradiance.js";
|
|
5
|
+
import { chunk_decode_g_buffer_albedo } from "../../../shader/chunk/material/chunk_decode_g_buffer_albedo.js";
|
|
5
6
|
import { RECIPROCAL_PI_DECLARATION } from "../../../shader/chunk/math/RECIPROCAL_PI_DECLARATION.js";
|
|
6
7
|
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
7
8
|
import { CodeChunkChoice } from "../../../shader/compiler/CodeChunkChoice.js";
|
|
@@ -63,13 +64,14 @@ fn ssr_add_hit_irradiance(
|
|
|
63
64
|
let hit_position_ws = v3_matrix4_project(hit_position_vs, camera.view_matrix_inverse);
|
|
64
65
|
let hit_direction_ws = normalize(hit_position_ws - position_ws);
|
|
65
66
|
let hit_irradiance = lpv_sample_irradiance(hit_position_ws, hit_normal_ws, hit_direction_ws);
|
|
66
|
-
let hit_albedo = textureLoad(tAlbedoAO, hit_coord, 0).rgb;
|
|
67
|
+
let hit_albedo = decode_g_buffer_albedo(textureLoad(tAlbedoAO, hit_coord, 0).rgb);
|
|
67
68
|
*result += hit_albedo * hit_irradiance * RECIPROCAL_PI;
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
`, [
|
|
71
72
|
chunk_lpv_sample_irradiance,
|
|
72
73
|
chunk_v3_matrix4_project,
|
|
74
|
+
chunk_decode_g_buffer_albedo,
|
|
73
75
|
RECIPROCAL_PI_DECLARATION,
|
|
74
76
|
]);
|
|
75
77
|
|
|
@@ -98,12 +100,13 @@ fn ssr_add_hit_irradiance(
|
|
|
98
100
|
) {
|
|
99
101
|
if (confidence > 0.05) {
|
|
100
102
|
let hit_irradiance = textureLoad(tIndirectDiffuse, hit_coord, 0).rgb;
|
|
101
|
-
let hit_albedo = textureLoad(tAlbedoAO, hit_coord, 0).rgb;
|
|
103
|
+
let hit_albedo = decode_g_buffer_albedo(textureLoad(tAlbedoAO, hit_coord, 0).rgb);
|
|
102
104
|
|
|
103
105
|
*result += hit_albedo * hit_irradiance * RECIPROCAL_PI;
|
|
104
106
|
}
|
|
105
107
|
}
|
|
106
108
|
`, [
|
|
109
|
+
chunk_decode_g_buffer_albedo,
|
|
107
110
|
RECIPROCAL_PI_DECLARATION,
|
|
108
111
|
]);
|
|
109
112
|
|
|
@@ -148,7 +148,7 @@ fn main(
|
|
|
148
148
|
let this_pbr = textureLoad(tPBR, coord_i, 0);
|
|
149
149
|
let this_roughness = decode_g_buffer_roughness(this_pbr);
|
|
150
150
|
|
|
151
|
-
let this_normal_ws = decode_g_buffer_normal( textureLoad(tNormal, coord_i, 0).
|
|
151
|
+
let this_normal_ws = decode_g_buffer_normal( textureLoad(tNormal, coord_i, 0).x );
|
|
152
152
|
let this_normal_vs = direction_world_to_view(this_normal_ws, camera);
|
|
153
153
|
|
|
154
154
|
let this_position_vs = screen_coordinate_to_view(vec2u(coord_i), tDepth, camera);
|
|
@@ -176,7 +176,7 @@ fn main(
|
|
|
176
176
|
let candidate_distance = length(candidate_position - this_position_vs);
|
|
177
177
|
if (is_finite(candidate_distance) && candidate_distance > 1e-6) {
|
|
178
178
|
this_hit_position_vs = candidate_position;
|
|
179
|
-
this_hit_normal_ws = decode_g_buffer_normal(textureLoad(tNormal, this_hit.position, 0).
|
|
179
|
+
this_hit_normal_ws = decode_g_buffer_normal(textureLoad(tNormal, this_hit.position, 0).x);
|
|
180
180
|
let hit_normal_vs = direction_world_to_view(this_hit_normal_ws, camera);
|
|
181
181
|
let mip = get_ray_mip_level(this_position_vs, this_hit_position_vs, hit_normal_vs, this_roughness, focal_length_px);
|
|
182
182
|
this_hit_color_sample = textureSampleLevel(tColor, sLinear, this_hit_uv, mip).rgb;
|
|
@@ -210,7 +210,7 @@ fn main(
|
|
|
210
210
|
let neighbour_coord = coord_i + NEIGHBOR_OFFSETS[heighbour_index];
|
|
211
211
|
if (!is_on_screen_i32(neighbour_coord, vec2i(render_resolution))) { continue; }
|
|
212
212
|
|
|
213
|
-
let neighbour_normal_ws = decode_g_buffer_normal(textureLoad(tNormal, neighbour_coord, 0).
|
|
213
|
+
let neighbour_normal_ws = decode_g_buffer_normal(textureLoad(tNormal, neighbour_coord, 0).x);
|
|
214
214
|
let neighbour_normal_vs = direction_world_to_view(neighbour_normal_ws, camera);
|
|
215
215
|
|
|
216
216
|
let neighbour_pbr = textureLoad(tPBR, neighbour_coord, 0);
|
|
@@ -234,7 +234,7 @@ fn main(
|
|
|
234
234
|
let sample_direction = (sample_hit_position_vs - this_position_vs) / sample_distance;
|
|
235
235
|
|
|
236
236
|
// check visibility
|
|
237
|
-
let sample_hit_normal_ws = decode_g_buffer_normal( textureLoad(tNormal, sample_hit.position.xy, 0).
|
|
237
|
+
let sample_hit_normal_ws = decode_g_buffer_normal( textureLoad(tNormal, sample_hit.position.xy, 0).x );
|
|
238
238
|
let sample_hit_normal_vs = direction_world_to_view(sample_hit_normal_ws, camera);
|
|
239
239
|
|
|
240
240
|
let ray_hit_valid = step( 0, dot(-sample_direction, sample_hit_normal_vs));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr_combine_shader.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/ssr_combine_shader.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssr_combine_shader.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/ssr_combine_shader.js"],"names":[],"mappings":"AA4HA,6CAWG;4BA5HyB,6BAA6B"}
|
|
@@ -4,6 +4,7 @@ import { chunk_DFGApprox } from "../../shader/chunk/brdf/dfg/chunk_DFGApprox.js"
|
|
|
4
4
|
import { chunk_project_position_from_depth } from "../../shader/chunk/camera/chunk_project_position_from_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 { chunk_decode_g_buffer_albedo } from "../../shader/chunk/material/chunk_decode_g_buffer_albedo.js";
|
|
7
8
|
import { chunk_decode_g_buffer_metalness } from "../../shader/chunk/material/chunk_decode_g_buffer_metalness.js";
|
|
8
9
|
import { chunk_decode_g_buffer_roughness } from "../../shader/chunk/material/chunk_decode_g_buffer_roughness.js";
|
|
9
10
|
import { chunk_metalness_to_specular_color } from "../../shader/chunk/material/chunk_metalness_to_specular_color.js";
|
|
@@ -65,9 +66,9 @@ fn main(
|
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
let reflection_color = textureLoad(tReflection, coord_i, 0).rgb;
|
|
68
|
-
let normal_ws = decode_g_buffer_normal(textureLoad(tNormal, coord_i, 0).
|
|
69
|
+
let normal_ws = decode_g_buffer_normal(textureLoad(tNormal, coord_i, 0).x);
|
|
69
70
|
let albedo_ao = textureLoad(tAlbedoAO, coord_i, 0);
|
|
70
|
-
let albedo = albedo_ao.rgb;
|
|
71
|
+
let albedo = decode_g_buffer_albedo(albedo_ao.rgb);
|
|
71
72
|
let occlusion = albedo_ao.a;
|
|
72
73
|
|
|
73
74
|
let position_ws = project_position_from_depth(uv, depth, camera.view_projection_matrix_inverse);
|
|
@@ -114,6 +115,7 @@ fn main(
|
|
|
114
115
|
chunk_env_brdf_approx,
|
|
115
116
|
chunk_metalness_to_specular_color,
|
|
116
117
|
chunk_decode_g_buffer_roughness,
|
|
118
|
+
chunk_decode_g_buffer_albedo,
|
|
117
119
|
chunk_decode_g_buffer_metalness,
|
|
118
120
|
chunk_compute_specular_occlusion,
|
|
119
121
|
chunk_is_background,
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* @param {FrameGraph} options.graph
|
|
8
8
|
* @param {number} options.input_color
|
|
9
9
|
* @param {number} options.input_depth
|
|
10
|
-
* @param {number} options.mip_count
|
|
10
|
+
* @param {number} options.mip_count how many levels below the full-size copy to filter; a texture too small to
|
|
11
|
+
* have that many gets the levels it has
|
|
11
12
|
* @param {number[]} options.resolution
|
|
12
13
|
*/
|
|
13
14
|
export function ssr_graph_prefilter_color({ graph, input_color, input_depth, mip_count, resolution, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr_graph_prefilter_color.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.js"],"names":[],"mappings":"AAQA
|
|
1
|
+
{"version":3,"file":"ssr_graph_prefilter_color.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AACH;IAP+B,KAAK;IACT,WAAW,EAA3B,MAAM;IACU,WAAW,EAA3B,MAAM;IACU,SAAS,EAAzB,MAAM;IAEY,UAAU,EAA5B,MAAM,EAAE;QA6GlB"}
|
|
@@ -15,7 +15,8 @@ import { downsample_karis } from "./downsample_karis.js";
|
|
|
15
15
|
* @param {FrameGraph} options.graph
|
|
16
16
|
* @param {number} options.input_color
|
|
17
17
|
* @param {number} options.input_depth
|
|
18
|
-
* @param {number} options.mip_count
|
|
18
|
+
* @param {number} options.mip_count how many levels below the full-size copy to filter; a texture too small to
|
|
19
|
+
* have that many gets the levels it has
|
|
19
20
|
* @param {number[]} options.resolution
|
|
20
21
|
*/
|
|
21
22
|
export function ssr_graph_prefilter_color({
|
|
@@ -55,6 +56,13 @@ export function ssr_graph_prefilter_color({
|
|
|
55
56
|
]
|
|
56
57
|
});
|
|
57
58
|
|
|
59
|
+
// the full chain of a texture under 2^mip_count texels along its longer side is shorter than that
|
|
60
|
+
const filtered_levels = Math.min(mip_count, output.descriptor.mipLevelCount - 1);
|
|
61
|
+
|
|
62
|
+
if (filtered_levels === 0) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
58
66
|
const sampler = context.graphics.samplers.obtain(SAMPLER_LINEAR_UPSCALE);
|
|
59
67
|
|
|
60
68
|
let source_view = output.obtainView(DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR);
|
|
@@ -78,7 +86,7 @@ export function ssr_graph_prefilter_color({
|
|
|
78
86
|
}]
|
|
79
87
|
})
|
|
80
88
|
|
|
81
|
-
for (let i = 1; i <
|
|
89
|
+
for (let i = 1; i < filtered_levels; i++) {
|
|
82
90
|
|
|
83
91
|
source_view = destination_view;
|
|
84
92
|
destination_view = output.obtainView(TextureViewDescriptor.from({
|
|
@@ -49,7 +49,7 @@ fn main(@builtin(position) coord: vec4f) -> SSRTemporalOutput {
|
|
|
49
49
|
let st = vec2i(coord.xy);
|
|
50
50
|
let current = textureLoad(tInput, st, 0);
|
|
51
51
|
let metadata = textureLoad(tMetadata, st, 0).rg;
|
|
52
|
-
let normal = decode_g_buffer_normal(textureLoad(tNormal, st, 0).
|
|
52
|
+
let normal = decode_g_buffer_normal(textureLoad(tNormal, st, 0).x);
|
|
53
53
|
let roughness = decode_g_buffer_roughness(textureLoad(tPBR, st, 0));
|
|
54
54
|
var output: SSRTemporalOutput;
|
|
55
55
|
output.radiance = current;
|
|
@@ -4,7 +4,7 @@ import { SSR_DENOISE_TILE_SIZE } from "./SSR_DENOISE_TILE_SIZE.js";
|
|
|
4
4
|
import { chunk_rgb_to_luminance } from "../../shader/chunk/color/chunk_rgb_to_luminance.js";
|
|
5
5
|
import { chunk_rgb_to_YCoCg } from "../../shader/chunk/color/YCoCg/chunk_rgb_to_YCoCg.js";
|
|
6
6
|
import { chunk_decode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
|
|
7
|
-
import { chunk_safe_sqrt } from "../../shader/chunk/math/chunk_safe_sqrt.js";
|
|
7
|
+
import { chunk_safe_sqrt } from "../../shader/chunk/math/chunk_safe_sqrt.js";
|
|
8
8
|
import { F16_MAX_DEFINITION } from "../../shader/chunk/math/F16_MAX_DEFINITION.js";
|
|
9
9
|
import {
|
|
10
10
|
chunk_texture_channel_gaussian_3x3
|
|
@@ -77,7 +77,7 @@ ${with_metadata ? ` let center_metadata = textureLoad(tMetadata, ipos, 0).rg;
|
|
|
77
77
|
var distance_moments = ssr_distance_moments(center_metadata.x, center_metadata.y, 1.0);` : ""}
|
|
78
78
|
|
|
79
79
|
|
|
80
|
-
let current_normal = decode_g_buffer_normal( textureLoad(tNormal, ipos, 0).
|
|
80
|
+
let current_normal = decode_g_buffer_normal( textureLoad(tNormal, ipos, 0).x );
|
|
81
81
|
let center_depth = textureLoad(tDepth, ipos, 0).r;
|
|
82
82
|
|
|
83
83
|
const offsets = array< vec2<i32>,8>(
|
|
@@ -111,7 +111,7 @@ ${with_metadata ? ` let center_metadata = textureLoad(tMetadata, ipos, 0).rg;
|
|
|
111
111
|
let sample_color = textureLoad(tInput, p, 0);
|
|
112
112
|
let sample_color_luma = rgb_to_luminance(sample_color.rgb);
|
|
113
113
|
|
|
114
|
-
let sample_normal = decode_g_buffer_normal(textureLoad(tNormal, p, 0).
|
|
114
|
+
let sample_normal = decode_g_buffer_normal(textureLoad(tNormal, p, 0).x);
|
|
115
115
|
let sample_depth = textureLoad(tDepth, p, 0).r;
|
|
116
116
|
|
|
117
117
|
// compute the edge-stopping functions
|
|
@@ -154,7 +154,7 @@ ${with_metadata ? ` var output: SSRResolveOutput;
|
|
|
154
154
|
chunk_ffx_dnsr_reflections_get_edge_stopping_normal_weight,
|
|
155
155
|
chunk_ffx_dnsr_reflections_get_edge_stopping_depth_weight,
|
|
156
156
|
chunk_luma_edge_stopping_weight,
|
|
157
|
-
F16_MAX_DEFINITION,
|
|
157
|
+
F16_MAX_DEFINITION,
|
|
158
158
|
chunk_safe_sqrt,
|
|
159
159
|
]);
|
|
160
160
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_reprojection_map.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/taa/shader_reprojection_map.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_reprojection_map.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/taa/shader_reprojection_map.js"],"names":[],"mappings":"AA2BA,wDAeE;AAyFF,kDAWE;0BApIwB,oCAAoC;4BAClC,6BAA6B"}
|
|
@@ -2,7 +2,9 @@ import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
|
|
|
2
2
|
import { DEPTH_BACKGROUND_VALUE } from "../../depth/DEPTH_BACKGROUND_VALUE.js";
|
|
3
3
|
import { chunk_get_view_space_depth } from "../../shader/chunk/depth/chunk_get_view_space_depth.js";
|
|
4
4
|
import { chunk_get_view_space_position } from "../../shader/chunk/depth/chunk_get_view_space_position.js";
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
chunk_decode_g_buffer_face_normal
|
|
7
|
+
} from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
|
|
6
8
|
import { chunk_v3_matrix4_rotate } from "../../shader/chunk/geometry/vec3/chunk_v3_matrix4_rotate.js";
|
|
7
9
|
import { chunk_texture_gather_channel } from "../../shader/chunk/texture/chunk_texture_gather_channel.js";
|
|
8
10
|
import { chunk_get_bilinear_weights } from "../../shader/chunk/texture/sample/chunk_get_bilinear_weights.js";
|
|
@@ -17,7 +19,7 @@ const resources = new ShaderResourceSetDescriptor();
|
|
|
17
19
|
resources.createGroup()
|
|
18
20
|
.addTexture("tDepthCurrent")
|
|
19
21
|
.addTexture("tDepthPrevious")
|
|
20
|
-
.addTexture("
|
|
22
|
+
.addTexture("tPBR")
|
|
21
23
|
.addTexture("tVelocity")
|
|
22
24
|
.addUniform("camera_current", CAMERA_UNIFORM_STRUCT)
|
|
23
25
|
.addUniform("camera_previous", CAMERA_UNIFORM_STRUCT)
|
|
@@ -75,7 +77,7 @@ fn main(
|
|
|
75
77
|
let distance_to_point = position_vs.z;
|
|
76
78
|
|
|
77
79
|
// get geometric normal
|
|
78
|
-
let normal_ws =
|
|
80
|
+
let normal_ws = decode_g_buffer_face_normal( textureLoad(tPBR, coord_i, 0) );
|
|
79
81
|
|
|
80
82
|
// move normal to view space
|
|
81
83
|
var normal_vs = v3_matrix4_rotate(normal_ws, camera_current.transform_inverse);
|
|
@@ -118,7 +120,7 @@ fn main(
|
|
|
118
120
|
}
|
|
119
121
|
`, [
|
|
120
122
|
chunk_get_view_space_position,
|
|
121
|
-
|
|
123
|
+
chunk_decode_g_buffer_face_normal,
|
|
122
124
|
chunk_v3_matrix4_rotate,
|
|
123
125
|
chunk_texture_gather_channel,
|
|
124
126
|
chunk_get_view_space_depth_vec4,
|
|
@@ -7,7 +7,7 @@ export function enquire_per_object_velocity_pipelines(enquiry: PipelineEnquiry):
|
|
|
7
7
|
/**
|
|
8
8
|
* Per-pixel motion-vector pass with three branches:
|
|
9
9
|
*
|
|
10
|
-
* 1. **Background** (no rasterized geometry, `
|
|
10
|
+
* 1. **Background** (no rasterized geometry, `VISIBILITY_NONE`)
|
|
11
11
|
* — rotation-only reprojection of the current pixel through the
|
|
12
12
|
* camera's frame-over-frame rotation delta. Suitable for skybox
|
|
13
13
|
* / infinite background.
|
|
@@ -39,8 +39,8 @@ export function enquire_per_object_velocity_pipelines(enquiry: PipelineEnquiry):
|
|
|
39
39
|
* @param {object} args
|
|
40
40
|
* @param {FrameGraph} args.graph
|
|
41
41
|
* @param {number} args.texture_depth
|
|
42
|
-
* @param {number} args.
|
|
43
|
-
* @param {number} args.
|
|
42
|
+
* @param {number} args.texture_visibility the visibility buffer
|
|
43
|
+
* @param {number} args.buffer_visible_meshlets the frame's visible-meshlet table, which resolves it
|
|
44
44
|
* @param {number} args.buffer_scene_database
|
|
45
45
|
* @param {number} args.buffer_meshlet_metadata
|
|
46
46
|
* @param {number} args.buffer_meshlet_data
|
|
@@ -51,14 +51,13 @@ export function enquire_per_object_velocity_pipelines(enquiry: PipelineEnquiry):
|
|
|
51
51
|
* placeholders and the shader forces the rigid path.
|
|
52
52
|
* @param {number[]} args.resolution
|
|
53
53
|
* @param {GPUViewContext} args.view
|
|
54
|
-
* @param {boolean} [args.enable_mipmap]
|
|
55
54
|
* @returns {number} FrameGraph handle to the velocity texture (rg16float)
|
|
56
55
|
*/
|
|
57
|
-
export function graph_add_per_object_velocity({ graph, texture_depth,
|
|
56
|
+
export function graph_add_per_object_velocity({ graph, texture_depth, texture_visibility, buffer_visible_meshlets, buffer_scene_database, buffer_meshlet_metadata, buffer_meshlet_data, buffer_prev_position_offsets, buffer_prev_positions, skinning_active, resolution, view, }: {
|
|
58
57
|
graph: FrameGraph;
|
|
59
58
|
texture_depth: number;
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
texture_visibility: number;
|
|
60
|
+
buffer_visible_meshlets: number;
|
|
62
61
|
buffer_scene_database: number;
|
|
63
62
|
buffer_meshlet_metadata: number;
|
|
64
63
|
buffer_meshlet_data: number;
|
|
@@ -67,7 +66,6 @@ export function graph_add_per_object_velocity({ graph, texture_depth, texture_vi
|
|
|
67
66
|
skinning_active: boolean;
|
|
68
67
|
resolution: number[];
|
|
69
68
|
view: GPUViewContext;
|
|
70
|
-
enable_mipmap?: boolean;
|
|
71
69
|
}): number;
|
|
72
70
|
export type PipelineEnquiry = import("../../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry;
|
|
73
71
|
//# sourceMappingURL=graph_add_per_object_velocity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_add_per_object_velocity.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_add_per_object_velocity.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js"],"names":[],"mappings":"AAkRA;;;;GAIG;AACH,+DAFW,eAAe,QAIzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH;IAhB4B,KAAK;IACT,aAAa,EAA1B,MAAM;IACO,kBAAkB,EAA/B,MAAM;IACO,uBAAuB,EAApC,MAAM;IACO,qBAAqB,EAAlC,MAAM;IACO,uBAAuB,EAApC,MAAM;IACO,mBAAmB,EAAhC,MAAM;IACO,4BAA4B,EAAzC,MAAM;IACO,qBAAqB,EAAlC,MAAM;IACQ,eAAe,EAA7B,OAAO;IAGQ,UAAU,EAAzB,MAAM,EAAE;IACa,IAAI;IACvB,MAAM,CA8ElB;8BAhXY,OAAO,6CAA6C,EAAE,eAAe"}
|
|
@@ -9,8 +9,9 @@ import {
|
|
|
9
9
|
MESHLET_METADATA_STRUCT
|
|
10
10
|
} from "../../geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
|
|
11
11
|
import {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
chunk_visibility_decode,
|
|
13
|
+
VISIBLE_MESHLETS_RESOURCE
|
|
14
|
+
} from "../../rasterize/visibility/chunk_visibility_decode.js";
|
|
14
15
|
import {
|
|
15
16
|
chunk_scene_database_access
|
|
16
17
|
} from "../../scene/chunk_scene_database_access.js";
|
|
@@ -44,8 +45,8 @@ const resources = new ShaderResourceSetDescriptor();
|
|
|
44
45
|
|
|
45
46
|
resources.createGroup()
|
|
46
47
|
.addTexture("tDepth")
|
|
47
|
-
.addTexture("
|
|
48
|
-
.
|
|
48
|
+
.addTexture("tVisibility", "uint")
|
|
49
|
+
.add(VISIBLE_MESHLETS_RESOURCE)
|
|
49
50
|
.addUniform("mReprojectionRotation", mat4x4f)
|
|
50
51
|
// Un-jittered current-frame inverse view-projection and
|
|
51
52
|
// un-jittered previous-frame view-projection. TAA wants
|
|
@@ -78,7 +79,6 @@ resources.createGroup()
|
|
|
78
79
|
const body = CodeChunk.from(
|
|
79
80
|
//language=WGSL
|
|
80
81
|
`
|
|
81
|
-
const VIZ_INVALID: u32 = ${VIZ_BUFFER_INVALID_MESH_VALUE}u;
|
|
82
82
|
const PREV_POS_OFFSET_INVALID: u32 = 0xFFFFFFFFu;
|
|
83
83
|
|
|
84
84
|
fn read_prev_position(base: u32, vertex_index: u32) -> vec3<f32> {
|
|
@@ -97,14 +97,14 @@ fn main(
|
|
|
97
97
|
|
|
98
98
|
let cur_px = coord.xy;
|
|
99
99
|
let texel = vec2<u32>(cur_px);
|
|
100
|
-
let
|
|
100
|
+
let visibility_word = textureLoad(tVisibility, texel, 0).r;
|
|
101
101
|
|
|
102
102
|
// ── Background: rotation-only reprojection ──────────────────
|
|
103
103
|
//
|
|
104
|
-
// Visibility-buffer clears leave
|
|
104
|
+
// Visibility-buffer clears leave VISIBILITY_NONE on sky
|
|
105
105
|
// pixels, where reverse-Z depth is always 0.0. Passing 0.0
|
|
106
106
|
// directly avoids a tDepth textureLoad on every background pixel.
|
|
107
|
-
if
|
|
107
|
+
if visibility_word == VISIBILITY_NONE {
|
|
108
108
|
let position_previous = v3_matrix4_project(
|
|
109
109
|
vec3<f32>(cur_px, 0.0),
|
|
110
110
|
mReprojectionRotation
|
|
@@ -123,16 +123,16 @@ fn main(
|
|
|
123
123
|
let cur_world_h = mInvViewProjCurrent * vec4<f32>(cur_ndc, 1.0);
|
|
124
124
|
let cur_world = cur_world_h.xyz / cur_world_h.w;
|
|
125
125
|
|
|
126
|
-
let
|
|
126
|
+
let visibility_texel = visibility_decode(visibility_word);
|
|
127
|
+
|
|
128
|
+
let mesh = scene_read_mesh(&scene_database, visibility_texel.mesh);
|
|
127
129
|
let node = scene_read_node(&scene_database, mesh.node);
|
|
128
130
|
|
|
129
131
|
// ── Skinned vs static fork ─────────────────────────────────
|
|
130
132
|
//
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
// prev-position offset; sentinel means "not a skinned clone,
|
|
135
|
-
// use rigid per-object math".
|
|
133
|
+
// The visibility word names the meshlet and the triangle within
|
|
134
|
+
// it. Look up the per-meshlet prev-position offset; sentinel
|
|
135
|
+
// means "not a skinned clone, use rigid per-object math".
|
|
136
136
|
//
|
|
137
137
|
// The per-vertex skinning path reads prev_position_offsets /
|
|
138
138
|
// prev_positions, which only hold valid data when a skinned mesh is
|
|
@@ -140,17 +140,15 @@ fn main(
|
|
|
140
140
|
// bindings (the scene_database buffer) and reading them would feed
|
|
141
141
|
// garbage offsets into the skinned branch — a non-sentinel word
|
|
142
142
|
// there sends a static triangle down the per-vertex path and
|
|
143
|
-
// fabricates a constant phantom velocity. Gate
|
|
144
|
-
//
|
|
145
|
-
//
|
|
146
|
-
// every pixel takes the rigid per-object path.
|
|
143
|
+
// fabricates a constant phantom velocity. Gate the offset buffer
|
|
144
|
+
// read on skinning_active so every pixel of a non-skinned scene
|
|
145
|
+
// takes the rigid per-object path.
|
|
147
146
|
var meshlet_id = 0u;
|
|
148
147
|
var tri_local = 0u;
|
|
149
148
|
var prev_pos_base = PREV_POS_OFFSET_INVALID;
|
|
150
149
|
if skinning_active.value != 0u {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
tri_local = triangle_packed & 0xFFu;
|
|
150
|
+
meshlet_id = visibility_texel.meshlet;
|
|
151
|
+
tri_local = visibility_texel.triangle;
|
|
154
152
|
prev_pos_base = prev_position_offsets[meshlet_id];
|
|
155
153
|
}
|
|
156
154
|
|
|
@@ -253,6 +251,7 @@ fn main(
|
|
|
253
251
|
chunk_read_meshlet_resolved_index,
|
|
254
252
|
chunk_read_meshlet_vertex_position,
|
|
255
253
|
MESHLET_METADATA_STRUCT.declaration_chunk,
|
|
254
|
+
chunk_visibility_decode,
|
|
256
255
|
]
|
|
257
256
|
);
|
|
258
257
|
|
|
@@ -285,7 +284,7 @@ export function enquire_per_object_velocity_pipelines(enquiry) {
|
|
|
285
284
|
/**
|
|
286
285
|
* Per-pixel motion-vector pass with three branches:
|
|
287
286
|
*
|
|
288
|
-
* 1. **Background** (no rasterized geometry, `
|
|
287
|
+
* 1. **Background** (no rasterized geometry, `VISIBILITY_NONE`)
|
|
289
288
|
* — rotation-only reprojection of the current pixel through the
|
|
290
289
|
* camera's frame-over-frame rotation delta. Suitable for skybox
|
|
291
290
|
* / infinite background.
|
|
@@ -317,8 +316,8 @@ export function enquire_per_object_velocity_pipelines(enquiry) {
|
|
|
317
316
|
* @param {object} args
|
|
318
317
|
* @param {FrameGraph} args.graph
|
|
319
318
|
* @param {number} args.texture_depth
|
|
320
|
-
* @param {number} args.
|
|
321
|
-
* @param {number} args.
|
|
319
|
+
* @param {number} args.texture_visibility the visibility buffer
|
|
320
|
+
* @param {number} args.buffer_visible_meshlets the frame's visible-meshlet table, which resolves it
|
|
322
321
|
* @param {number} args.buffer_scene_database
|
|
323
322
|
* @param {number} args.buffer_meshlet_metadata
|
|
324
323
|
* @param {number} args.buffer_meshlet_data
|
|
@@ -329,14 +328,13 @@ export function enquire_per_object_velocity_pipelines(enquiry) {
|
|
|
329
328
|
* placeholders and the shader forces the rigid path.
|
|
330
329
|
* @param {number[]} args.resolution
|
|
331
330
|
* @param {GPUViewContext} args.view
|
|
332
|
-
* @param {boolean} [args.enable_mipmap]
|
|
333
331
|
* @returns {number} FrameGraph handle to the velocity texture (rg16float)
|
|
334
332
|
*/
|
|
335
333
|
export function graph_add_per_object_velocity({
|
|
336
334
|
graph,
|
|
337
335
|
texture_depth,
|
|
338
|
-
|
|
339
|
-
|
|
336
|
+
texture_visibility,
|
|
337
|
+
buffer_visible_meshlets,
|
|
340
338
|
buffer_scene_database,
|
|
341
339
|
buffer_meshlet_metadata,
|
|
342
340
|
buffer_meshlet_data,
|
|
@@ -345,13 +343,12 @@ export function graph_add_per_object_velocity({
|
|
|
345
343
|
skinning_active,
|
|
346
344
|
resolution,
|
|
347
345
|
view,
|
|
348
|
-
enable_mipmap = false,
|
|
349
346
|
}) {
|
|
350
347
|
|
|
351
348
|
assert.defined(view, 'view');
|
|
352
349
|
assert.isNonNegativeInteger(texture_depth, 'texture_depth');
|
|
353
|
-
assert.isNonNegativeInteger(
|
|
354
|
-
assert.isNonNegativeInteger(
|
|
350
|
+
assert.isNonNegativeInteger(texture_visibility, 'texture_visibility');
|
|
351
|
+
assert.isNonNegativeInteger(buffer_visible_meshlets, 'buffer_visible_meshlets');
|
|
355
352
|
assert.isNonNegativeInteger(buffer_scene_database, 'buffer_scene_database');
|
|
356
353
|
assert.isNonNegativeInteger(buffer_meshlet_metadata, 'buffer_meshlet_metadata');
|
|
357
354
|
assert.isNonNegativeInteger(buffer_meshlet_data, 'buffer_meshlet_data');
|
|
@@ -395,8 +392,8 @@ export function graph_add_per_object_velocity({
|
|
|
395
392
|
shader,
|
|
396
393
|
inputs: {
|
|
397
394
|
tDepth: texture_depth,
|
|
398
|
-
|
|
399
|
-
|
|
395
|
+
tVisibility: texture_visibility,
|
|
396
|
+
visible_meshlets: buffer_visible_meshlets,
|
|
400
397
|
mReprojectionRotation: reprojection_matrix_pixels_rotation,
|
|
401
398
|
mInvViewProjCurrent: scratch_unjit_inv_view_proj_curr_f32,
|
|
402
399
|
mViewProjPrevious: scratch_unjit_view_proj_prev_f32,
|
|
@@ -408,6 +405,5 @@ export function graph_add_per_object_velocity({
|
|
|
408
405
|
prev_positions: buffer_prev_positions,
|
|
409
406
|
},
|
|
410
407
|
output_resolution: resolution,
|
|
411
|
-
output_mipmaps: enable_mipmap,
|
|
412
408
|
})[0];
|
|
413
409
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplatePassDescriptor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/rasterize/TemplatePassDescriptor.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AAEH;;;;;;;;;;;;;;GAcG;AACH;IA0CI;;;;OAIG;IACH,mBAJW,MAAM,gBACG,qBAAqB,QAAE,eAAe,KAAG,wBAAwB,EAWpF;IA3CD;;OAEG;IACH,gCAEC;IAwCD;;;;;;;OAOG;IACH,aAHW,eAAe,GACb,sBAAsB,
|
|
1
|
+
{"version":3,"file":"TemplatePassDescriptor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/rasterize/TemplatePassDescriptor.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AAEH;;;;;;;;;;;;;;GAcG;AACH;IA0CI;;;;OAIG;IACH,mBAJW,MAAM,gBACG,qBAAqB,QAAE,eAAe,KAAG,wBAAwB,EAWpF;IA3CD;;OAEG;IACH,gCAEC;IAwCD;;;;;;;OAOG;IACH,aAHW,eAAe,GACb,sBAAsB,CAyBlC;IAED;;;;;;;OAOG;IACH,gHAEC;IAED;;;OAGG;IACH,cAEC;IAED;;OAEG;IACH,qBAEC;IAED;;;OAGG;IACH,uCAHW,qBAAqB,GACnB,wBAAwB,CAYpC;IAED;;;;;OAKG;IACH,kCALW,qBAAqB,YACrB,qBAAqB,6CAsC/B;IAGL;;;OAGG;IACH,mCAFU,OAAO,CAEwC;;CANxD;uCAnMY,OAAO,8DAA8D,EAAE,wBAAwB;uCAC/F,OAAO,uDAAuD,EAAE,wBAAwB;oCACxF,OAAO,gDAAgD,EAAE,qBAAqB;oCAC9E,OAAO,+CAA+C,EAAE,qBAAqB;qCANrD,wCAAwC;gCAD7C,uCAAuC"}
|