@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
package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js
CHANGED
|
@@ -11,9 +11,6 @@ import {
|
|
|
11
11
|
chunk_triangle_list_reverse_winding
|
|
12
12
|
} from "../../../shader/chunk/geometry/triangle/chunk_triangle_list_reverse_winding.js";
|
|
13
13
|
import { chunk_view_mip_bias } from "../../../view/chunk_view_mip_bias.js";
|
|
14
|
-
import {
|
|
15
|
-
chunk_encode_meshlet_element
|
|
16
|
-
} from "../../../shader/chunk/geometry/meshlet/chunk_encode_meshlet_element.js";
|
|
17
14
|
import {
|
|
18
15
|
chunk_read_meshlet_attribute_u32
|
|
19
16
|
} from "../../../shader/chunk/geometry/meshlet/chunk_read_meshlet_attribute_u32.js";
|
|
@@ -38,7 +35,12 @@ import {
|
|
|
38
35
|
} from "../alpha_tested_pass_resources.js";
|
|
39
36
|
import { TemplatePassDescriptor } from "../../TemplatePassDescriptor.js";
|
|
40
37
|
import { rasterization_primitive_state } from "../rasterization_primitive_state.js";
|
|
41
|
-
import {
|
|
38
|
+
import {
|
|
39
|
+
VISIBILITY_FORMAT,
|
|
40
|
+
VISIBILITY_NONE,
|
|
41
|
+
VISIBILITY_TRIANGLE_BITS,
|
|
42
|
+
VISIBLE_MESHLETS_ARRAY_OFFSET
|
|
43
|
+
} from "../../visibility/VISIBILITY_BUFFER.js";
|
|
42
44
|
|
|
43
45
|
/**
|
|
44
46
|
* The harness around a template's `material_opacity`: the hashed threshold and the noise that feeds
|
|
@@ -52,19 +54,14 @@ import { VIZ_BUFFER_INVALID_MESH_VALUE } from "./VIZ_BUFFER_INVALID_MESH_VALUE.j
|
|
|
52
54
|
const fragment_body = CodeChunk.from(
|
|
53
55
|
//language=WGSL
|
|
54
56
|
`
|
|
55
|
-
struct VizBufferOutput{
|
|
56
|
-
@location(0) m_triangle : u32,
|
|
57
|
-
@location(1) m_mesh : u32,
|
|
58
|
-
}
|
|
59
57
|
|
|
60
58
|
@fragment
|
|
61
59
|
fn main(
|
|
62
60
|
@builtin(position) coord : vec4<f32>,
|
|
63
|
-
@location(0) @interpolate(flat)
|
|
64
|
-
@location(1)
|
|
65
|
-
@location(2)
|
|
66
|
-
|
|
67
|
-
) -> VizBufferOutput {
|
|
61
|
+
@location(0) @interpolate(flat) m_visibility: u32,
|
|
62
|
+
@location(1) uv_jittered:vec2<f32>,
|
|
63
|
+
@location(2) position_world: vec3<f32>,
|
|
64
|
+
) -> @location(0) u32 {
|
|
68
65
|
|
|
69
66
|
// Note that we use jittered UVs directly, the compensation happens inside TAAU itself.
|
|
70
67
|
let uv = uv_jittered;
|
|
@@ -94,18 +91,12 @@ fn main(
|
|
|
94
91
|
discard;
|
|
95
92
|
}
|
|
96
93
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
//decode meshlet payload
|
|
100
|
-
result.m_triangle = m_triangle ;
|
|
101
|
-
result.m_mesh = m_mesh ;
|
|
102
|
-
|
|
103
|
-
return result;
|
|
94
|
+
return m_visibility;
|
|
104
95
|
}
|
|
105
96
|
`, [
|
|
106
97
|
chunk_material_opacity_contract,
|
|
107
98
|
chunk_transparency_hashed_alpha_threshold,
|
|
108
|
-
chunk_spatio_temporal_noise_r2_64,
|
|
99
|
+
chunk_spatio_temporal_noise_r2_64,
|
|
109
100
|
chunk_view_mip_bias,
|
|
110
101
|
]
|
|
111
102
|
);
|
|
@@ -117,10 +108,9 @@ const shader_vertex = ShaderDescriptor.from({
|
|
|
117
108
|
`
|
|
118
109
|
struct VertexOutput{
|
|
119
110
|
@builtin(position) position: vec4f,
|
|
120
|
-
@location(0) @interpolate(flat)
|
|
121
|
-
@location(1)
|
|
122
|
-
@location(2)
|
|
123
|
-
@location(3) position_world: vec3f,
|
|
111
|
+
@location(0) @interpolate(flat) m_visibility: u32,
|
|
112
|
+
@location(1) uv: vec2f,
|
|
113
|
+
@location(2) position_world: vec3f,
|
|
124
114
|
}
|
|
125
115
|
|
|
126
116
|
@vertex
|
|
@@ -142,7 +132,6 @@ fn main(
|
|
|
142
132
|
return VertexOutput(); // discard vertex outside of meshlet bounds
|
|
143
133
|
}
|
|
144
134
|
|
|
145
|
-
let triangle_index = encode_meshlet_element(meshlet_id, vertex_draw_index / 3u);
|
|
146
135
|
|
|
147
136
|
let mesh = scene_read_mesh(&scene_database, mesh_id);
|
|
148
137
|
let node = scene_read_node(&scene_database, mesh.node);
|
|
@@ -164,8 +153,11 @@ fn main(
|
|
|
164
153
|
output.position_world = position_world.xyz / position_world.w;
|
|
165
154
|
output.position = camera.view_projection_matrix * position_world;
|
|
166
155
|
|
|
167
|
-
|
|
168
|
-
|
|
156
|
+
// the draws bind the frame's visible-meshlet table as a bare array of definitions, where slot s is
|
|
157
|
+
// at s + VISIBLE_MESHLETS_ARRAY_OFFSET
|
|
158
|
+
let slot = input_index - ${VISIBLE_MESHLETS_ARRAY_OFFSET}u;
|
|
159
|
+
|
|
160
|
+
output.m_visibility = (slot << ${VISIBILITY_TRIANGLE_BITS}u) | (vertex_draw_index / 3u);
|
|
169
161
|
output.uv = meshlet_vertex.uv;
|
|
170
162
|
|
|
171
163
|
return output;
|
|
@@ -173,7 +165,6 @@ fn main(
|
|
|
173
165
|
`, [
|
|
174
166
|
chunk_read_meshlet_vertex,
|
|
175
167
|
chunk_read_meshlet_attribute_u32,
|
|
176
|
-
chunk_encode_meshlet_element,
|
|
177
168
|
chunk_read_meshlet_vertex_by_draw_index,
|
|
178
169
|
chunk_scene_database_access,
|
|
179
170
|
chunk_triangle_winding_is_reversed,
|
|
@@ -213,11 +204,7 @@ export const viz_rasterization_alpha_tested_pass_descriptor = new TemplatePassDe
|
|
|
213
204
|
},
|
|
214
205
|
targets: [
|
|
215
206
|
{
|
|
216
|
-
|
|
217
|
-
format: "r32uint",
|
|
218
|
-
}, {
|
|
219
|
-
// Mesh ID
|
|
220
|
-
format: "r32uint",
|
|
207
|
+
format: VISIBILITY_FORMAT,
|
|
221
208
|
}
|
|
222
209
|
]
|
|
223
210
|
},
|
|
@@ -227,15 +214,11 @@ export const viz_rasterization_alpha_tested_pass_descriptor = new TemplatePassDe
|
|
|
227
214
|
});
|
|
228
215
|
|
|
229
216
|
viz_rasterization_alpha_tested_pass_descriptor.colorAttachments = [
|
|
230
|
-
// TRIANGLE ID
|
|
231
217
|
RenderPassColorAttachmentDescriptor.from({
|
|
232
|
-
clearValue: [
|
|
218
|
+
clearValue: [VISIBILITY_NONE, 0, 0, 0],
|
|
233
219
|
}),
|
|
234
|
-
// MESH ID
|
|
235
|
-
RenderPassColorAttachmentDescriptor.from({
|
|
236
|
-
clearValue: [VIZ_BUFFER_INVALID_MESH_VALUE, 1, 1, 1],
|
|
237
|
-
})
|
|
238
220
|
];
|
|
221
|
+
viz_rasterization_alpha_tested_pass_descriptor.visible_meshlet_slots = true;
|
|
239
222
|
|
|
240
223
|
/**
|
|
241
224
|
* Clear depth to 0 for reverse Z technique
|
package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viz_rasterization_opaque_pass_descriptor.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"viz_rasterization_opaque_pass_descriptor.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js"],"names":[],"mappings":"AA0CA,4EAAmF;qCAvC9C,8CAA8C"}
|
|
@@ -1,77 +1,56 @@
|
|
|
1
|
-
import { RenderPipelineDescriptor } from "../../../../descriptor/pipeline/render/RenderPipelineDescriptor.js";
|
|
2
|
-
import { DEPTH_BACKGROUND_VALUE } from "../../../depth/DEPTH_BACKGROUND_VALUE.js";
|
|
3
|
-
import { RenderPassColorAttachmentDescriptor } from "../../../shader/pass/RenderPassColorAttachmentDescriptor.js";
|
|
4
|
-
import { RenderPassDescriptor } from "../../../shader/pass/RenderPassDescriptor.js";
|
|
5
|
-
import { DEPTH_STENCIL_STATE_STANDARD } from "../../DEPTH_STENCIL_STATE_STANDARD.js";
|
|
6
|
-
import { rasterization_primitive_state } from "../rasterization_primitive_state.js";
|
|
7
|
-
import { rasterization_shader_resources } from "../rasterization_shader_resources.js";
|
|
8
|
-
import { shader_vertex } from "./shader_vertex.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
//language=WGSL
|
|
12
|
-
const shader_fragment_visibility_buffer = `
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@location(
|
|
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
|
-
depthStencil: DEPTH_STENCIL_STATE_STANDARD,
|
|
57
|
-
primitive: rasterization_primitive_state
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
export const viz_rasterization_opaque_pass_descriptor = new RenderPassDescriptor();
|
|
61
|
-
viz_rasterization_opaque_pass_descriptor.pipeline = gpu_rasterization_render_pipeline_descriptor;
|
|
62
|
-
viz_rasterization_opaque_pass_descriptor.resources = rasterization_shader_resources;
|
|
63
|
-
viz_rasterization_opaque_pass_descriptor.colorAttachments = [
|
|
64
|
-
// TRIANGLE ID
|
|
65
|
-
RenderPassColorAttachmentDescriptor.from({
|
|
66
|
-
clearValue: [0, 0, 0, 0],
|
|
67
|
-
}),
|
|
68
|
-
// MESH ID
|
|
69
|
-
RenderPassColorAttachmentDescriptor.from({
|
|
70
|
-
clearValue: [VIZ_BUFFER_INVALID_MESH_VALUE, 1, 1, 1],
|
|
71
|
-
})
|
|
72
|
-
];
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Clear depth to 0 for reverse Z technique
|
|
76
|
-
*/
|
|
1
|
+
import { RenderPipelineDescriptor } from "../../../../descriptor/pipeline/render/RenderPipelineDescriptor.js";
|
|
2
|
+
import { DEPTH_BACKGROUND_VALUE } from "../../../depth/DEPTH_BACKGROUND_VALUE.js";
|
|
3
|
+
import { RenderPassColorAttachmentDescriptor } from "../../../shader/pass/RenderPassColorAttachmentDescriptor.js";
|
|
4
|
+
import { RenderPassDescriptor } from "../../../shader/pass/RenderPassDescriptor.js";
|
|
5
|
+
import { DEPTH_STENCIL_STATE_STANDARD } from "../../DEPTH_STENCIL_STATE_STANDARD.js";
|
|
6
|
+
import { rasterization_primitive_state } from "../rasterization_primitive_state.js";
|
|
7
|
+
import { rasterization_shader_resources } from "../rasterization_shader_resources.js";
|
|
8
|
+
import { shader_vertex } from "./shader_vertex.js";
|
|
9
|
+
import { VISIBILITY_FORMAT, VISIBILITY_NONE } from "../../visibility/VISIBILITY_BUFFER.js";
|
|
10
|
+
|
|
11
|
+
//language=WGSL
|
|
12
|
+
const shader_fragment_visibility_buffer = `
|
|
13
|
+
@fragment
|
|
14
|
+
fn main(
|
|
15
|
+
@location(0) @interpolate(flat) m_visibility: u32,
|
|
16
|
+
) -> @location(0) u32 {
|
|
17
|
+
return m_visibility;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
const gpu_rasterization_render_pipeline_descriptor = RenderPipelineDescriptor.from({
|
|
22
|
+
label: "Rasterize to Visibility Buffer / opaque",
|
|
23
|
+
layout: rasterization_shader_resources.generatePipelineLayout(GPUShaderStage.VERTEX),
|
|
24
|
+
vertex: {
|
|
25
|
+
module: {
|
|
26
|
+
code: shader_vertex.source
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
fragment: {
|
|
30
|
+
module: {
|
|
31
|
+
code: shader_fragment_visibility_buffer
|
|
32
|
+
},
|
|
33
|
+
targets: [
|
|
34
|
+
{
|
|
35
|
+
format: VISIBILITY_FORMAT,
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
depthStencil: DEPTH_STENCIL_STATE_STANDARD,
|
|
40
|
+
primitive: rasterization_primitive_state
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
export const viz_rasterization_opaque_pass_descriptor = new RenderPassDescriptor();
|
|
44
|
+
viz_rasterization_opaque_pass_descriptor.pipeline = gpu_rasterization_render_pipeline_descriptor;
|
|
45
|
+
viz_rasterization_opaque_pass_descriptor.resources = rasterization_shader_resources;
|
|
46
|
+
viz_rasterization_opaque_pass_descriptor.colorAttachments = [
|
|
47
|
+
RenderPassColorAttachmentDescriptor.from({
|
|
48
|
+
clearValue: [VISIBILITY_NONE, 0, 0, 0],
|
|
49
|
+
}),
|
|
50
|
+
];
|
|
51
|
+
viz_rasterization_opaque_pass_descriptor.visible_meshlet_slots = true;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Clear depth to 0 for reverse Z technique
|
|
55
|
+
*/
|
|
77
56
|
viz_rasterization_opaque_pass_descriptor.depthStencilAttachment.depthClearValue = DEPTH_BACKGROUND_VALUE;
|
|
@@ -25,13 +25,15 @@ export function enquire_rasterize_partial_opaque_pipelines(enquiry: PipelineEnqu
|
|
|
25
25
|
* @param {Set<number>} active_buckets IDs of buckets that have any materials that are active.
|
|
26
26
|
* @param {number[]} [viewport] optional viewport definition, if not provided, will use the entire render target. Useful for drawing multiple views into the same render target.
|
|
27
27
|
* @param {Readonly<Record<number, GPUCullMode>>} [cull_policy] side→cullMode mapping; defaults to {@link CullPolicy.Standard}
|
|
28
|
-
* @
|
|
28
|
+
* @param {number} [visible_meshlets] the frame's visible-meshlet table, when the pass writes its slots
|
|
29
|
+
* @returns {{instances_maybe:number, meshlets_maybe:number, depth:number, color_targets:number[], visible_meshlets:number}} the "maybe visible" sets, the depth and colour handles produced by the rasterization — cleared whether or not any bucket drew — and the table after it (-1 without one)
|
|
29
30
|
*/
|
|
30
|
-
export function graph_rasterize_partial_opaque({ graph, buckets, view, render_pass_descriptor, limits, depth, raster_color_targets, hzb, viewport, active_buckets, cull_policy, }: FrameGraph): {
|
|
31
|
+
export function graph_rasterize_partial_opaque({ graph, buckets, view, render_pass_descriptor, limits, depth, raster_color_targets, hzb, viewport, active_buckets, cull_policy, visible_meshlets, }: FrameGraph): {
|
|
31
32
|
instances_maybe: number;
|
|
32
33
|
meshlets_maybe: number;
|
|
33
34
|
depth: number;
|
|
34
35
|
color_targets: number[];
|
|
36
|
+
visible_meshlets: number;
|
|
35
37
|
};
|
|
36
38
|
export type PipelineEnquiry = import("../../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry;
|
|
37
39
|
export type RenderPassDescriptor = import("../../shader/pass/RenderPassDescriptor.js").RenderPassDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_partial_opaque.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js"],"names":[],"mappings":"AA8BA;;;GAGG;AAEH;;;;;;;GAOG;AACH,oEAJW,eAAe,0BACf,oBAAoB,eACpB,SAAS,OAAO,MAAM,cAAc,CAAC,QAY/C;AAED
|
|
1
|
+
{"version":3,"file":"graph_rasterize_partial_opaque.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js"],"names":[],"mappings":"AA8BA;;;GAGG;AAEH;;;;;;;GAOG;AACH,oEAJW,eAAe,0BACf,oBAAoB,eACpB,SAAS,OAAO,MAAM,cAAc,CAAC,QAY/C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,kNAFa;IAAC,eAAe,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,aAAa,EAAC,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAC,MAAM,CAAA;CAAC,CA6N1H;8BApQY,OAAO,6CAA6C,EAAE,eAAe;mCACrE,OAAO,2CAA2C,EAAE,oBAAoB"}
|
|
@@ -67,7 +67,8 @@ export function enquire_rasterize_partial_opaque_pipelines(enquiry, render_pass_
|
|
|
67
67
|
* @param {Set<number>} active_buckets IDs of buckets that have any materials that are active.
|
|
68
68
|
* @param {number[]} [viewport] optional viewport definition, if not provided, will use the entire render target. Useful for drawing multiple views into the same render target.
|
|
69
69
|
* @param {Readonly<Record<number, GPUCullMode>>} [cull_policy] side→cullMode mapping; defaults to {@link CullPolicy.Standard}
|
|
70
|
-
* @
|
|
70
|
+
* @param {number} [visible_meshlets] the frame's visible-meshlet table, when the pass writes its slots
|
|
71
|
+
* @returns {{instances_maybe:number, meshlets_maybe:number, depth:number, color_targets:number[], visible_meshlets:number}} the "maybe visible" sets, the depth and colour handles produced by the rasterization — cleared whether or not any bucket drew — and the table after it (-1 without one)
|
|
71
72
|
*/
|
|
72
73
|
export function graph_rasterize_partial_opaque({
|
|
73
74
|
graph,
|
|
@@ -81,6 +82,7 @@ export function graph_rasterize_partial_opaque({
|
|
|
81
82
|
viewport,
|
|
82
83
|
active_buckets,
|
|
83
84
|
cull_policy = CullPolicy.Standard,
|
|
85
|
+
visible_meshlets = -1,
|
|
84
86
|
}) {
|
|
85
87
|
|
|
86
88
|
assert.defined(graph, 'graph');
|
|
@@ -240,7 +242,7 @@ export function graph_rasterize_partial_opaque({
|
|
|
240
242
|
gr_meshlets_maybe = pass_data_meshlets_1.out_meshlets_maybe = pass_meshlets_1.write(gr_meshlets_maybe);
|
|
241
243
|
|
|
242
244
|
// ----------
|
|
243
|
-
[viz_depth, raster_color_targets] = graph_meshlets_rasterize_by_bucket({
|
|
245
|
+
[viz_depth, raster_color_targets, visible_meshlets] = graph_meshlets_rasterize_by_bucket({
|
|
244
246
|
graph,
|
|
245
247
|
view,
|
|
246
248
|
input_meshlets: pass_data_meshlets_1.out_meshlets_positive,
|
|
@@ -252,6 +254,7 @@ export function graph_rasterize_partial_opaque({
|
|
|
252
254
|
cull_policy,
|
|
253
255
|
viewport,
|
|
254
256
|
limits,
|
|
257
|
+
visible_meshlets,
|
|
255
258
|
});
|
|
256
259
|
|
|
257
260
|
is_first_draw = false;
|
|
@@ -284,5 +287,6 @@ export function graph_rasterize_partial_opaque({
|
|
|
284
287
|
meshlets_maybe: gr_meshlets_maybe,
|
|
285
288
|
depth: viz_depth,
|
|
286
289
|
color_targets: raster_color_targets,
|
|
290
|
+
visible_meshlets,
|
|
287
291
|
};
|
|
288
292
|
}
|
|
@@ -26,11 +26,13 @@ export function enquire_rasterize_remaining_opaque_pipelines(enquiry: PipelineEn
|
|
|
26
26
|
* @param {RenderPassDescriptor} render_pass_descriptor
|
|
27
27
|
* @param {number[]} [viewport] optional viewport definition
|
|
28
28
|
* @param {Readonly<Record<number, GPUCullMode>>} [cull_policy] side→cullMode mapping; defaults to {@link CullPolicy.Standard}
|
|
29
|
-
* @
|
|
29
|
+
* @param {number} [visible_meshlets] the frame's visible-meshlet table, when the pass writes its slots
|
|
30
|
+
* @returns {{depth:number, color_targets:number[], visible_meshlets:number}} the depth and colour handles produced by the rasterization, and the table after it (-1 without one)
|
|
30
31
|
*/
|
|
31
|
-
export function graph_rasterize_remaining_opaque({ graph, limits, instances_maybe, meshlets_maybe, active_buckets, camera, view, depth, raster_color_targets, hzb, render_pass_descriptor, viewport, cull_policy, }: FrameGraph): {
|
|
32
|
+
export function graph_rasterize_remaining_opaque({ graph, limits, instances_maybe, meshlets_maybe, active_buckets, camera, view, depth, raster_color_targets, hzb, render_pass_descriptor, viewport, cull_policy, visible_meshlets, }: FrameGraph): {
|
|
32
33
|
depth: number;
|
|
33
34
|
color_targets: number[];
|
|
35
|
+
visible_meshlets: number;
|
|
34
36
|
};
|
|
35
37
|
export type PipelineEnquiry = import("../../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry;
|
|
36
38
|
export type RenderPassDescriptor = import("../../shader/pass/RenderPassDescriptor.js").RenderPassDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_remaining_opaque.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js"],"names":[],"mappings":"AAmBA;;;GAGG;AAEH;;;;;;GAMG;AACH,sEAJW,eAAe,0BACf,oBAAoB,eACpB,SAAS,OAAO,MAAM,cAAc,CAAC,QAO/C;AAED
|
|
1
|
+
{"version":3,"file":"graph_rasterize_remaining_opaque.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js"],"names":[],"mappings":"AAmBA;;;GAGG;AAEH;;;;;;GAMG;AACH,sEAJW,eAAe,0BACf,oBAAoB,eACpB,SAAS,OAAO,MAAM,cAAc,CAAC,QAO/C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,oPAFa;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,aAAa,EAAC,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAC,MAAM,CAAA;CAAC,CAwF3E;8BA3HY,OAAO,6CAA6C,EAAE,eAAe;mCACrE,OAAO,2CAA2C,EAAE,oBAAoB"}
|
|
@@ -52,7 +52,8 @@ export function enquire_rasterize_remaining_opaque_pipelines(enquiry, render_pas
|
|
|
52
52
|
* @param {RenderPassDescriptor} render_pass_descriptor
|
|
53
53
|
* @param {number[]} [viewport] optional viewport definition
|
|
54
54
|
* @param {Readonly<Record<number, GPUCullMode>>} [cull_policy] side→cullMode mapping; defaults to {@link CullPolicy.Standard}
|
|
55
|
-
* @
|
|
55
|
+
* @param {number} [visible_meshlets] the frame's visible-meshlet table, when the pass writes its slots
|
|
56
|
+
* @returns {{depth:number, color_targets:number[], visible_meshlets:number}} the depth and colour handles produced by the rasterization, and the table after it (-1 without one)
|
|
56
57
|
*/
|
|
57
58
|
export function graph_rasterize_remaining_opaque({
|
|
58
59
|
graph,
|
|
@@ -68,6 +69,7 @@ export function graph_rasterize_remaining_opaque({
|
|
|
68
69
|
render_pass_descriptor,
|
|
69
70
|
viewport,
|
|
70
71
|
cull_policy = CullPolicy.Standard,
|
|
72
|
+
visible_meshlets = -1,
|
|
71
73
|
}) {
|
|
72
74
|
|
|
73
75
|
let gr_depth_texture = depth;
|
|
@@ -118,7 +120,7 @@ export function graph_rasterize_remaining_opaque({
|
|
|
118
120
|
const opaque = Array.from(rasterization_opaque_buckets(active_buckets));
|
|
119
121
|
|
|
120
122
|
if (opaque.length > 0) {
|
|
121
|
-
[gr_depth_texture, raster_color_targets] = graph_meshlets_rasterize_by_bucket({
|
|
123
|
+
[gr_depth_texture, raster_color_targets, visible_meshlets] = graph_meshlets_rasterize_by_bucket({
|
|
122
124
|
graph,
|
|
123
125
|
view,
|
|
124
126
|
input_meshlets: gr_live_meshlets,
|
|
@@ -130,11 +132,13 @@ export function graph_rasterize_remaining_opaque({
|
|
|
130
132
|
cull_policy,
|
|
131
133
|
viewport,
|
|
132
134
|
limits,
|
|
135
|
+
visible_meshlets,
|
|
133
136
|
});
|
|
134
137
|
}
|
|
135
138
|
|
|
136
139
|
return {
|
|
137
140
|
depth: gr_depth_texture,
|
|
138
141
|
color_targets: raster_color_targets,
|
|
142
|
+
visible_meshlets,
|
|
139
143
|
}
|
|
140
144
|
}
|
|
@@ -22,8 +22,10 @@ export function enquire_rasterize_scene_pipelines(enquiry: PipelineEnquiry, opaq
|
|
|
22
22
|
* @param {FrameGraph} options.graph
|
|
23
23
|
* @param {RasterizationJob} options.job
|
|
24
24
|
* @param {GPUCollectionLimits} options.limits
|
|
25
|
-
* @returns {{buckets: number, depth: number, color_targets: number[]}} the render
|
|
26
|
-
*
|
|
25
|
+
* @returns {{buckets: number, depth: number, color_targets: number[], visible_meshlets: number}} the render
|
|
26
|
+
* buckets buffer, the depth and colour targets as this pipeline left them, and — when the job's passes write
|
|
27
|
+
* visible-meshlet slots, as the visibility raster's do — the frame's visible-meshlet table, which resolves
|
|
28
|
+
* them (-1 otherwise)
|
|
27
29
|
*/
|
|
28
30
|
export function graph_rasterize_scene({ graph, job, limits, }: {
|
|
29
31
|
graph: FrameGraph;
|
|
@@ -33,6 +35,7 @@ export function graph_rasterize_scene({ graph, job, limits, }: {
|
|
|
33
35
|
buckets: number;
|
|
34
36
|
depth: number;
|
|
35
37
|
color_targets: number[];
|
|
38
|
+
visible_meshlets: number;
|
|
36
39
|
};
|
|
37
40
|
export type PipelineEnquiry = import("../../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry;
|
|
38
41
|
export type RenderPassDescriptor = import("../../shader/pass/RenderPassDescriptor.js").RenderPassDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_scene.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_rasterize_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_scene.js"],"names":[],"mappings":"AAuBA;;;GAGG;AAEH;;;;;;;;;GASG;AACH,2DAJW,eAAe,eACf,oBAAoB,eACpB,SAAS,OAAO,MAAM,cAAc,CAAC,QAQ/C;AAED;;;;;;;;;;;;;GAaG;AACH;IAR+B,KAAK;IACC,GAAG;IACA,MAAM;IACjC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAC,CA0P/F;8BAzRY,OAAO,6CAA6C,EAAE,eAAe;mCACrE,OAAO,2CAA2C,EAAE,oBAAoB"}
|
|
@@ -3,6 +3,7 @@ import { graph_build_hzb } from "../../hiz/graph_build_hzb.js";
|
|
|
3
3
|
import { HierarchicalZBuffer } from "../../hiz/HierarchicalZBuffer.js";
|
|
4
4
|
import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
|
|
5
5
|
import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
|
|
6
|
+
import { graph_create_buffer } from "../../shader/graph/graph_create_buffer.js";
|
|
6
7
|
import { graph_import_texture } from "../../shader/graph/graph_import_texture.js";
|
|
7
8
|
import { graph_record_stat } from "../../util/graph_record_stat.js";
|
|
8
9
|
import { enquire_mesh_frustum_cull_pipelines, graph_mesh_frustum_cull } from "../compute/graph_mesh_frustum_cull.js";
|
|
@@ -12,6 +13,7 @@ import {
|
|
|
12
13
|
graph_meshes_classify_buckets
|
|
13
14
|
} from "../expand/bucket/mesh/graph_meshes_classify_buckets.js";
|
|
14
15
|
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
16
|
+
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
15
17
|
import { graph_rasterize_meshes_alpha_tested } from "../native/graph_rasterize_meshes_alpha_tested.js";
|
|
16
18
|
import { enquire_rasterize_partial_opaque_pipelines, graph_rasterize_partial_opaque } from "./graph_rasterize_partial_opaque.js";
|
|
17
19
|
import {
|
|
@@ -51,8 +53,10 @@ export function enquire_rasterize_scene_pipelines(enquiry, opaque_pass, cull_pol
|
|
|
51
53
|
* @param {FrameGraph} options.graph
|
|
52
54
|
* @param {RasterizationJob} options.job
|
|
53
55
|
* @param {GPUCollectionLimits} options.limits
|
|
54
|
-
* @returns {{buckets: number, depth: number, color_targets: number[]}} the render
|
|
55
|
-
*
|
|
56
|
+
* @returns {{buckets: number, depth: number, color_targets: number[], visible_meshlets: number}} the render
|
|
57
|
+
* buckets buffer, the depth and colour targets as this pipeline left them, and — when the job's passes write
|
|
58
|
+
* visible-meshlet slots, as the visibility raster's do — the frame's visible-meshlet table, which resolves
|
|
59
|
+
* them (-1 otherwise)
|
|
56
60
|
*/
|
|
57
61
|
export function graph_rasterize_scene({
|
|
58
62
|
graph,
|
|
@@ -101,6 +105,28 @@ export function graph_rasterize_scene({
|
|
|
101
105
|
raster_color_targets[i] = graph_import_texture(graph, texture, `out_color/${i}`);
|
|
102
106
|
}
|
|
103
107
|
|
|
108
|
+
/*
|
|
109
|
+
Every draw of a pass that writes visible-meshlet slots appends its meshlets to one table for the frame
|
|
110
|
+
and draws them from there, so the slot a pixel holds names its meshlet for every later reader. Sized as
|
|
111
|
+
the collections are, by what the frames before asked for, and never smaller than a meshlet collection:
|
|
112
|
+
any one list drawn into it can be that long. The table's own stat is the limits' last column, whose
|
|
113
|
+
growth is set back whenever an earlier column grows, while the collection's tracks the lists'.
|
|
114
|
+
*/
|
|
115
|
+
assert.equal(job.alpha_tested_pass === undefined || job.alpha_tested_pass.visible_meshlet_slots === job.opaque_pass.visible_meshlet_slots, true, 'both passes of a job write visible-meshlet slots, or neither does');
|
|
116
|
+
|
|
117
|
+
let gr_visible_meshlets = -1;
|
|
118
|
+
|
|
119
|
+
if (job.opaque_pass.visible_meshlet_slots) {
|
|
120
|
+
gr_visible_meshlets = graph_create_buffer(graph, "visible meshlets", BufferResourceDescriptor.from(
|
|
121
|
+
Math.max(
|
|
122
|
+
limits.compute_buffer_size(RasterizationCollectionType.VisibleMeshlets),
|
|
123
|
+
limits.compute_buffer_size(RasterizationCollectionType.Meshlets),
|
|
124
|
+
),
|
|
125
|
+
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
126
|
+
0, 16 // clear count
|
|
127
|
+
));
|
|
128
|
+
}
|
|
129
|
+
|
|
104
130
|
const gr_culled_meshes = graph_mesh_frustum_cull({
|
|
105
131
|
graph,
|
|
106
132
|
camera: gr_camera_current,
|
|
@@ -124,6 +150,7 @@ export function graph_rasterize_scene({
|
|
|
124
150
|
meshlets_maybe: gr_meshlet_maybe,
|
|
125
151
|
depth: gr_depth_opaque_partial,
|
|
126
152
|
color_targets: gr_color_opaque_partial,
|
|
153
|
+
visible_meshlets: gr_visible_meshlets_partial,
|
|
127
154
|
} = graph_rasterize_partial_opaque({
|
|
128
155
|
graph,
|
|
129
156
|
buckets: gr_render_buckets,
|
|
@@ -137,11 +164,13 @@ export function graph_rasterize_scene({
|
|
|
137
164
|
viewport,
|
|
138
165
|
active_buckets,
|
|
139
166
|
cull_policy: job.cull_policy,
|
|
167
|
+
visible_meshlets: gr_visible_meshlets,
|
|
140
168
|
});
|
|
141
169
|
|
|
142
170
|
|
|
143
171
|
gr_texture_depth = gr_depth_opaque_partial;
|
|
144
172
|
raster_color_targets = gr_color_opaque_partial;
|
|
173
|
+
gr_visible_meshlets = gr_visible_meshlets_partial;
|
|
145
174
|
|
|
146
175
|
// build HZB of "likely visible" meshlets
|
|
147
176
|
gr_texture_hzb = graph_build_hzb({
|
|
@@ -155,6 +184,7 @@ export function graph_rasterize_scene({
|
|
|
155
184
|
const {
|
|
156
185
|
depth: gr_depth_opaque_full,
|
|
157
186
|
color_targets: gr_color_opaque_full,
|
|
187
|
+
visible_meshlets: gr_visible_meshlets_full,
|
|
158
188
|
} = graph_rasterize_remaining_opaque({
|
|
159
189
|
graph,
|
|
160
190
|
limits,
|
|
@@ -169,10 +199,12 @@ export function graph_rasterize_scene({
|
|
|
169
199
|
render_pass_descriptor: job.opaque_pass,
|
|
170
200
|
viewport,
|
|
171
201
|
cull_policy: job.cull_policy,
|
|
202
|
+
visible_meshlets: gr_visible_meshlets,
|
|
172
203
|
});
|
|
173
204
|
|
|
174
205
|
gr_texture_depth = gr_depth_opaque_full;
|
|
175
206
|
raster_color_targets = gr_color_opaque_full;
|
|
207
|
+
gr_visible_meshlets = gr_visible_meshlets_full;
|
|
176
208
|
|
|
177
209
|
// HZB of full opaque
|
|
178
210
|
gr_texture_hzb = graph_build_hzb({
|
|
@@ -209,10 +241,12 @@ export function graph_rasterize_scene({
|
|
|
209
241
|
raster_color_targets,
|
|
210
242
|
depth: gr_texture_depth,
|
|
211
243
|
hzb: gr_texture_hzb,
|
|
244
|
+
visible_meshlets: gr_visible_meshlets,
|
|
212
245
|
});
|
|
213
246
|
|
|
214
247
|
gr_texture_depth = alpha_tested_front.depth;
|
|
215
248
|
raster_color_targets = alpha_tested_front.color_targets;
|
|
249
|
+
gr_visible_meshlets = alpha_tested_front.visible_meshlets;
|
|
216
250
|
|
|
217
251
|
const alpha_tested_double = graph_rasterize_meshes_alpha_tested({
|
|
218
252
|
graph,
|
|
@@ -228,10 +262,12 @@ export function graph_rasterize_scene({
|
|
|
228
262
|
raster_color_targets,
|
|
229
263
|
depth: gr_texture_depth,
|
|
230
264
|
hzb: gr_texture_hzb,
|
|
265
|
+
visible_meshlets: gr_visible_meshlets,
|
|
231
266
|
});
|
|
232
267
|
|
|
233
268
|
gr_texture_depth = alpha_tested_double.depth;
|
|
234
269
|
raster_color_targets = alpha_tested_double.color_targets;
|
|
270
|
+
gr_visible_meshlets = alpha_tested_double.visible_meshlets;
|
|
235
271
|
|
|
236
272
|
if (alpha_tested_front.executed || alpha_tested_double.executed) {
|
|
237
273
|
|
|
@@ -246,6 +282,10 @@ export function graph_rasterize_scene({
|
|
|
246
282
|
}
|
|
247
283
|
}
|
|
248
284
|
|
|
285
|
+
if (gr_visible_meshlets !== -1) {
|
|
286
|
+
graph_record_stat(graph, limits.stats, RasterizationCollectionType.VisibleMeshlets, gr_visible_meshlets);
|
|
287
|
+
}
|
|
288
|
+
|
|
249
289
|
graph.pop_scope();
|
|
250
290
|
|
|
251
291
|
/*
|
|
@@ -261,5 +301,6 @@ export function graph_rasterize_scene({
|
|
|
261
301
|
buckets: gr_render_buckets,
|
|
262
302
|
depth: gr_texture_depth,
|
|
263
303
|
color_targets: raster_color_targets,
|
|
304
|
+
visible_meshlets: gr_visible_meshlets,
|
|
264
305
|
};
|
|
265
306
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The visibility buffer's format: one `u32` a pixel, `slot << VISIBILITY_TRIANGLE_BITS | triangle`. `slot` is
|
|
3
|
+
* the pixel's meshlet's place in the frame's visible-meshlet table, which says the meshlet and the mesh row
|
|
4
|
+
* it was drawn for (`chunk_visibility_decode`); `triangle` is the triangle within that meshlet.
|
|
5
|
+
*
|
|
6
|
+
* @type {GPUTextureFormat}
|
|
7
|
+
*/
|
|
8
|
+
export const VISIBILITY_FORMAT: GPUTextureFormat;
|
|
9
|
+
/**
|
|
10
|
+
* Bits of a visibility word that hold the triangle within its meshlet, below the slot.
|
|
11
|
+
*
|
|
12
|
+
* @type {number}
|
|
13
|
+
*/
|
|
14
|
+
export const VISIBILITY_TRIANGLE_BITS: number;
|
|
15
|
+
/**
|
|
16
|
+
* How many slots the visible-meshlet table can hold: every value the bits above the triangle reach, less
|
|
17
|
+
* the last, which {@link VISIBILITY_NONE} takes.
|
|
18
|
+
*
|
|
19
|
+
* @type {number}
|
|
20
|
+
*/
|
|
21
|
+
export const VISIBLE_MESHLET_SLOT_LIMIT: number;
|
|
22
|
+
/**
|
|
23
|
+
* What a pixel no surface covers holds, and what the visibility buffer is cleared to: the first word of the
|
|
24
|
+
* slot past every slot the table can hold. A 32-bit float holds it exactly, as a clear value has to be —
|
|
25
|
+
* `RenderPassColorAttachmentDescriptor` keeps one in a `Float32Array`, where every bit set would round up
|
|
26
|
+
* to 2^32.
|
|
27
|
+
*
|
|
28
|
+
* @type {number}
|
|
29
|
+
*/
|
|
30
|
+
export const VISIBILITY_NONE: number;
|
|
31
|
+
/**
|
|
32
|
+
* Where the table's elements start, counted in meshlet definitions from the start of its buffer. The table
|
|
33
|
+
* is a meshlet collection, a count before the elements; a pass that binds the whole buffer as a bare array
|
|
34
|
+
* of definitions — as the alpha-tested raster binds its lists — finds slot `s` at `s` plus this.
|
|
35
|
+
*
|
|
36
|
+
* @type {number}
|
|
37
|
+
*/
|
|
38
|
+
export const VISIBLE_MESHLETS_ARRAY_OFFSET: number;
|
|
39
|
+
//# sourceMappingURL=VISIBILITY_BUFFER.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VISIBILITY_BUFFER.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,iDAA2C;AAE3C;;;;GAIG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;;;GAKG;AACH,yCAFU,MAAM,CAEmE;AAEnF;;;;;;;GAOG;AACH,8BAFU,MAAM,CAE0E;AAE1F;;;;;;GAMG;AACH,4CAFU,MAAM,CAE+G"}
|