@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MATERIAL_MASK.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/MATERIAL_MASK.js"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,oDAAmD;AAEnD;;;;;GAKG;AACH,iCAFU,MAAM,CAEwB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format of the G-buffer pass's material mask: a depth target holding, at each pixel, the place in
|
|
3
|
+
* the pass's list of the material the visibility buffer names there, as `place / MATERIAL_MASK_NONE`.
|
|
4
|
+
* A material's draw is a full-screen triangle at its own place's depth, tested `equal` against it.
|
|
5
|
+
*
|
|
6
|
+
* A place, not a material id: ids come from one counter for the life of the process and are never
|
|
7
|
+
* reused, so only a material's place in the list is bounded by what one pass can draw.
|
|
8
|
+
*
|
|
9
|
+
* @type {GPUTextureFormat}
|
|
10
|
+
*/
|
|
11
|
+
export const MATERIAL_MASK_FORMAT = 'depth16unorm';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The mask's value where no listed material holds the pixel: the cleared depth, 1.0. Every place in
|
|
15
|
+
* the G-buffer pass's list is below it, so the list holds fewer materials than this.
|
|
16
|
+
*
|
|
17
|
+
* @type {number}
|
|
18
|
+
*/
|
|
19
|
+
export const MATERIAL_MASK_NONE = 65535;
|
|
@@ -33,18 +33,18 @@ export class GPUMaterialComputeDispatch {
|
|
|
33
33
|
* @param {Object} options
|
|
34
34
|
* @param {FrameGraph} options.graph
|
|
35
35
|
* @param {GPUViewContext} options.view
|
|
36
|
-
* @param {number} options.
|
|
37
|
-
* @param {number} options.
|
|
38
|
-
* @param {number} options.
|
|
39
|
-
* resolution, with `STORAGE_BINDING`
|
|
36
|
+
* @param {number} options.texture_visibility the visibility buffer
|
|
37
|
+
* @param {number} options.visible_meshlets the frame's visible-meshlet table, which resolves it
|
|
38
|
+
* @param {number} options.texture_pbr the PBR target to write, `G_BUFFER_COLOR_TARGETS[0].format` at
|
|
39
|
+
* the view's resolution, with `STORAGE_BINDING`
|
|
40
40
|
* @returns {{g_pbr: number, g_normal: number, g_albedo: number, g_emissive: number}}
|
|
41
41
|
*/
|
|
42
|
-
graph_viz_render({ graph, view,
|
|
42
|
+
graph_viz_render({ graph, view, texture_visibility, visible_meshlets, texture_pbr, }: {
|
|
43
43
|
graph: FrameGraph;
|
|
44
44
|
view: GPUViewContext;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
texture_visibility: number;
|
|
46
|
+
visible_meshlets: number;
|
|
47
|
+
texture_pbr: number;
|
|
48
48
|
}): {
|
|
49
49
|
g_pbr: number;
|
|
50
50
|
g_normal: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUMaterialComputeDispatch.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUMaterialComputeDispatch.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.js"],"names":[],"mappings":"AAuCA;;;;;;;;;;;;;GAaG;AACH;IAgDI;;;;;;OAMG;IACH;QAL8B,MAAM;QACG,SAAS,EAArC,kBAAkB;QACc,iBAAiB,EAAjD,sBAAsB;QACI,QAAQ,EAAlC,gBAAgB;OAa1B;IAED;;;;;;;;;;;;OAYG;IACH;QAR+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACE,kBAAkB,EAAlC,MAAM;QACU,gBAAgB,EAAhC,MAAM;QACU,WAAW,EAA3B,MAAM;QAEJ;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CA0BnF;IAED;;;;;;OAMG;IACH,0BAFW,eAAe,QAazB;IAED,gBAMC;;CAsEJ;yBArPY,OAAO,8DAA8D,EAAE,UAAU;wCACjF,OAAO,mEAAmE,EAAE,yBAAyB;qCACrG,OAAO,oDAAoD,EAAE,sBAAsB;8BACnF,OAAO,6CAA6C,EAAE,eAAe;+BACrE,OAAO,mCAAmC,EAAE,gBAAgB;6BAC5D,OAAO,8BAA8B,EAAE,cAAc;iCACrD,OAAO,0BAA0B,EAAE,kBAAkB;iCACrD,OAAO,0BAA0B,EAAE,kBAAkB;4BACrD,OAAO,qBAAqB,EAAE,aAAa;oCAC3C,OAAO,sCAAsC,EAAE,qBAAqB"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import {
|
|
3
|
-
cpu_hash_table_create,
|
|
4
|
-
cpu_hash_table_word_count
|
|
5
|
-
} from "../../gpu_primitive/hash_table/cpu_build_hash_table.js";
|
|
6
2
|
import { enquire_prefix_scan_csdldf_pipelines } from "../../gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js";
|
|
7
3
|
import { STANDARD_MATERIAL_TEMPLATE } from "../standard/STANDARD_MATERIAL_TEMPLATE.js";
|
|
8
4
|
import { build_gbuffer_compute_pipeline_descriptor } from "./gbuffer_compute.js";
|
|
@@ -41,21 +37,6 @@ class ComputeMaterialGroup {
|
|
|
41
37
|
group;
|
|
42
38
|
}
|
|
43
39
|
|
|
44
|
-
/**
|
|
45
|
-
* The material id → slot table of one drawn set, and the list version it was built at.
|
|
46
|
-
*/
|
|
47
|
-
class MaterialSlotTable {
|
|
48
|
-
/**
|
|
49
|
-
* @type {Uint32Array}
|
|
50
|
-
*/
|
|
51
|
-
table = new Uint32Array(0);
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* @type {number}
|
|
55
|
-
*/
|
|
56
|
-
version = -1;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
40
|
/**
|
|
60
41
|
* The G-buffer pass as {@link MaterialDispatch.Compute} runs it — **experimental, off by default, not
|
|
61
42
|
* the main path**; why, with the measurements, is in `COMPUTE_MATERIAL_DISPATCH.md` beside this file.
|
|
@@ -108,20 +89,6 @@ export class GPUMaterialComputeDispatch {
|
|
|
108
89
|
*/
|
|
109
90
|
#groups = new WeakMap();
|
|
110
91
|
|
|
111
|
-
/**
|
|
112
|
-
* Per drawn set, which the scene replaces when it changes. Weak, as the manager's lists are.
|
|
113
|
-
*
|
|
114
|
-
* @type {WeakMap<ShadeMaterial[], MaterialSlotTable>}
|
|
115
|
-
*/
|
|
116
|
-
#slot_tables = new WeakMap();
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* The table being built, kept to build the next one in.
|
|
120
|
-
*
|
|
121
|
-
* @type {number[]}
|
|
122
|
-
*/
|
|
123
|
-
#slot_ids = [];
|
|
124
|
-
|
|
125
92
|
/**
|
|
126
93
|
* @type {function(GPUMaterialContext):GPUComputePipeline}
|
|
127
94
|
*/
|
|
@@ -159,18 +126,18 @@ export class GPUMaterialComputeDispatch {
|
|
|
159
126
|
* @param {Object} options
|
|
160
127
|
* @param {FrameGraph} options.graph
|
|
161
128
|
* @param {GPUViewContext} options.view
|
|
162
|
-
* @param {number} options.
|
|
163
|
-
* @param {number} options.
|
|
164
|
-
* @param {number} options.
|
|
165
|
-
* resolution, with `STORAGE_BINDING`
|
|
129
|
+
* @param {number} options.texture_visibility the visibility buffer
|
|
130
|
+
* @param {number} options.visible_meshlets the frame's visible-meshlet table, which resolves it
|
|
131
|
+
* @param {number} options.texture_pbr the PBR target to write, `G_BUFFER_COLOR_TARGETS[0].format` at
|
|
132
|
+
* the view's resolution, with `STORAGE_BINDING`
|
|
166
133
|
* @returns {{g_pbr: number, g_normal: number, g_albedo: number, g_emissive: number}}
|
|
167
134
|
*/
|
|
168
135
|
graph_viz_render({
|
|
169
136
|
graph,
|
|
170
137
|
view,
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
138
|
+
texture_visibility,
|
|
139
|
+
visible_meshlets,
|
|
140
|
+
texture_pbr,
|
|
174
141
|
}) {
|
|
175
142
|
const drawn = view.scene.drawn_materials;
|
|
176
143
|
|
|
@@ -180,14 +147,14 @@ export class GPUMaterialComputeDispatch {
|
|
|
180
147
|
graph,
|
|
181
148
|
view,
|
|
182
149
|
contexts,
|
|
183
|
-
material_slots: this.#
|
|
150
|
+
material_slots: this.#materials.gbuffer_slot_table(drawn),
|
|
184
151
|
records: this.#records,
|
|
185
152
|
bindings: this.#bindings,
|
|
186
153
|
pipeline_of: this.#pipeline_of,
|
|
187
154
|
group_of: this.#group_of,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
155
|
+
texture_visibility,
|
|
156
|
+
visible_meshlets,
|
|
157
|
+
texture_pbr,
|
|
191
158
|
});
|
|
192
159
|
}
|
|
193
160
|
|
|
@@ -217,7 +184,6 @@ export class GPUMaterialComputeDispatch {
|
|
|
217
184
|
this.#pipelines.clear();
|
|
218
185
|
this.#pipeline_descriptors.clear();
|
|
219
186
|
this.#groups = new WeakMap();
|
|
220
|
-
this.#slot_tables = new WeakMap();
|
|
221
187
|
}
|
|
222
188
|
|
|
223
189
|
/**
|
|
@@ -288,51 +254,4 @@ export class GPUMaterialComputeDispatch {
|
|
|
288
254
|
|
|
289
255
|
return entry.group;
|
|
290
256
|
}
|
|
291
|
-
|
|
292
|
-
/**
|
|
293
|
-
* Each context's place among `contexts`, by material id, rebuilt when the manager's list moves.
|
|
294
|
-
*
|
|
295
|
-
* @param {ShadeMaterial[]} drawn
|
|
296
|
-
* @param {GPUMaterialContext[]} contexts what the manager answers for `drawn`
|
|
297
|
-
* @returns {Uint32Array}
|
|
298
|
-
*/
|
|
299
|
-
#slot_table(drawn, contexts) {
|
|
300
|
-
let slots = this.#slot_tables.get(drawn);
|
|
301
|
-
|
|
302
|
-
if (slots === undefined) {
|
|
303
|
-
slots = new MaterialSlotTable();
|
|
304
|
-
|
|
305
|
-
this.#slot_tables.set(drawn, slots);
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
const version = this.#materials.gbuffer_contexts_version;
|
|
309
|
-
|
|
310
|
-
if (slots.version !== version) {
|
|
311
|
-
const count = contexts.length;
|
|
312
|
-
const ids = this.#slot_ids;
|
|
313
|
-
|
|
314
|
-
ids.length = count;
|
|
315
|
-
|
|
316
|
-
for (let i = 0; i < count; i++) {
|
|
317
|
-
ids[i] = contexts[i].material_id;
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
let table = slots.table;
|
|
321
|
-
|
|
322
|
-
const word_count = cpu_hash_table_word_count(count);
|
|
323
|
-
|
|
324
|
-
if (table.length < word_count) {
|
|
325
|
-
table = new Uint32Array(word_count);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
while (!cpu_hash_table_create(table, ids, count)) {
|
|
329
|
-
table = new Uint32Array(table.length * 2);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
slots.table = table;
|
|
333
|
-
slots.version = version;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
return slots.table;
|
|
337
|
-
}
|
|
338
257
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_material_quad_keys.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/chunk_material_quad_keys.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_material_quad_keys.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/chunk_material_quad_keys.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;GAgBG;AACH,uCAFU,SAAS,CAgGhB;0BAnHuB,oCAAoC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { VIZ_BUFFER_INVALID_MESH_VALUE } from "../../rasterize/native/viz/VIZ_BUFFER_INVALID_MESH_VALUE.js";
|
|
2
|
+
import { chunk_visibility_decode } from "../../rasterize/visibility/chunk_visibility_decode.js";
|
|
2
3
|
import { SUBGROUP_KEYED_APPEND_NONE } from "../../shader/chunk/subgroup/chunk_subgroup_keyed_append.js";
|
|
3
4
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
4
5
|
import { chunk_material_mesh_key } from "./chunk_material_mesh_key.js";
|
|
@@ -29,7 +30,7 @@ struct MaterialQuadKeys {
|
|
|
29
30
|
masks: vec4<u32>,
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
// the mesh at a corner, or none for a corner off the view
|
|
33
|
+
// the mesh at a corner, or none for a corner off the view or of no surface
|
|
33
34
|
fn material_quad_mesh(quad: vec2<u32>, corner: vec2<u32>, resolution: vec2<u32>) -> u32 {
|
|
34
35
|
let pixel = quad * 2u + corner;
|
|
35
36
|
|
|
@@ -37,7 +38,13 @@ fn material_quad_mesh(quad: vec2<u32>, corner: vec2<u32>, resolution: vec2<u32>)
|
|
|
37
38
|
return ${VIZ_BUFFER_INVALID_MESH_VALUE}u;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
let encoded = textureLoad(visibility, vec2<i32>(pixel), 0).r;
|
|
42
|
+
|
|
43
|
+
if (encoded == VISIBILITY_NONE) {
|
|
44
|
+
return ${VIZ_BUFFER_INVALID_MESH_VALUE}u;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return visibility_decode(encoded).mesh;
|
|
41
48
|
}
|
|
42
49
|
|
|
43
50
|
// put a corner's key in its place among the distinct keys, written out rather than indexed: a
|
|
@@ -108,4 +115,5 @@ fn material_quad_keys(quad: vec2<u32>, resolution: vec2<u32>, tiles_x: u32, tile
|
|
|
108
115
|
}
|
|
109
116
|
`, [
|
|
110
117
|
chunk_material_mesh_key,
|
|
118
|
+
chunk_visibility_decode,
|
|
111
119
|
]);
|
|
@@ -205,8 +205,8 @@ fn main(
|
|
|
205
205
|
let g = gbuffer_laydown(vec2<f32>(pixel) + vec2<f32>(0.5));
|
|
206
206
|
|
|
207
207
|
if (in_list && ((entry.mask >> corner) & 1u) != 0u) {
|
|
208
|
-
textureStore(g_buffer_pbr, pixel,
|
|
209
|
-
textureStore(g_buffer_normal, pixel, g.normal);
|
|
208
|
+
textureStore(g_buffer_pbr, pixel, g.pbr);
|
|
209
|
+
textureStore(g_buffer_normal, pixel, vec4<u32>(g.normal, 0u, 0u, 0u));
|
|
210
210
|
textureStore(g_buffer_albedo, pixel, g.albedo);
|
|
211
211
|
textureStore(g_buffer_emissive, pixel, vec4<u32>(g.emissive, 0u, 0u, 0u));
|
|
212
212
|
}
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
* compute G-buffer pipeline
|
|
26
26
|
* @param {function(GPUMaterialContext):GPUBindGroup} options.group_of the context's group 0 for
|
|
27
27
|
* that pipeline
|
|
28
|
-
* @param {number} options.
|
|
29
|
-
* @param {number} options.
|
|
30
|
-
* @param {number} options.
|
|
28
|
+
* @param {number} options.texture_visibility the visibility buffer
|
|
29
|
+
* @param {number} options.visible_meshlets the frame's visible-meshlet table, which resolves it
|
|
30
|
+
* @param {number} options.texture_pbr the PBR target to write, which outlives the frame
|
|
31
31
|
* @returns {{g_pbr: number, g_normal: number, g_albedo: number, g_emissive: number}}
|
|
32
32
|
*/
|
|
33
|
-
export function graph_material_dispatch_compute({ graph, view, contexts, material_slots, records, bindings, pipeline_of, group_of,
|
|
33
|
+
export function graph_material_dispatch_compute({ graph, view, contexts, material_slots, records, bindings, pipeline_of, group_of, texture_visibility, visible_meshlets, texture_pbr, }: {
|
|
34
34
|
graph: FrameGraph;
|
|
35
35
|
view: GPUViewContext;
|
|
36
36
|
contexts: GPUMaterialContext[];
|
|
@@ -39,9 +39,9 @@ export function graph_material_dispatch_compute({ graph, view, contexts, materia
|
|
|
39
39
|
bindings: BindGroupManager;
|
|
40
40
|
pipeline_of: (arg0: GPUMaterialContext) => GPUComputePipeline;
|
|
41
41
|
group_of: (arg0: GPUMaterialContext) => GPUBindGroup;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
texture_visibility: number;
|
|
43
|
+
visible_meshlets: number;
|
|
44
|
+
texture_pbr: number;
|
|
45
45
|
}): {
|
|
46
46
|
g_pbr: number;
|
|
47
47
|
g_normal: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_material_dispatch_compute.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/graph_material_dispatch_compute.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;IAjB+B,KAAK,EAAzB,UAAU;IACc,IAAI,EAA5B,cAAc;IACgB,QAAQ,EAAtC,kBAAkB,EAAE;IAEC,cAAc,EAAnC,WAAW;IAEsB,OAAO,EAAxC,uBAAuB;IACG,QAAQ,EAAlC,gBAAgB;IACyC,WAAW,SAA3D,kBAAkB;IAEwB,QAAQ,SAAlD,kBAAkB;IAEX,
|
|
1
|
+
{"version":3,"file":"graph_material_dispatch_compute.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/graph_material_dispatch_compute.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;IAjB+B,KAAK,EAAzB,UAAU;IACc,IAAI,EAA5B,cAAc;IACgB,QAAQ,EAAtC,kBAAkB,EAAE;IAEC,cAAc,EAAnC,WAAW;IAEsB,OAAO,EAAxC,uBAAuB;IACG,QAAQ,EAAlC,gBAAgB;IACyC,WAAW,SAA3D,kBAAkB;IAEwB,QAAQ,SAAlD,kBAAkB;IAEX,kBAAkB,EAAlC,MAAM;IACU,gBAAgB,EAAhC,MAAM;IACU,WAAW,EAA3B,MAAM;IACJ;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CA8OnF;yBAnSY,OAAO,8DAA8D,EAAE,UAAU;+BACjF,OAAO,mCAAmC,EAAE,gBAAgB;6BAC5D,OAAO,8BAA8B,EAAE,cAAc;iCACrD,OAAO,0BAA0B,EAAE,kBAAkB;sCACrD,OAAO,8BAA8B,EAAE,uBAAuB"}
|
|
@@ -75,9 +75,9 @@ function storage_target(format, resolution) {
|
|
|
75
75
|
* compute G-buffer pipeline
|
|
76
76
|
* @param {function(GPUMaterialContext):GPUBindGroup} options.group_of the context's group 0 for
|
|
77
77
|
* that pipeline
|
|
78
|
-
* @param {number} options.
|
|
79
|
-
* @param {number} options.
|
|
80
|
-
* @param {number} options.
|
|
78
|
+
* @param {number} options.texture_visibility the visibility buffer
|
|
79
|
+
* @param {number} options.visible_meshlets the frame's visible-meshlet table, which resolves it
|
|
80
|
+
* @param {number} options.texture_pbr the PBR target to write, which outlives the frame
|
|
81
81
|
* @returns {{g_pbr: number, g_normal: number, g_albedo: number, g_emissive: number}}
|
|
82
82
|
*/
|
|
83
83
|
export function graph_material_dispatch_compute({
|
|
@@ -89,9 +89,9 @@ export function graph_material_dispatch_compute({
|
|
|
89
89
|
bindings,
|
|
90
90
|
pipeline_of,
|
|
91
91
|
group_of,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
texture_visibility,
|
|
93
|
+
visible_meshlets,
|
|
94
|
+
texture_pbr,
|
|
95
95
|
}) {
|
|
96
96
|
assert.defined(graph, 'graph');
|
|
97
97
|
assert.defined(view, 'view');
|
|
@@ -140,7 +140,8 @@ export function graph_material_dispatch_compute({
|
|
|
140
140
|
shader_material_pixel_count.dispatch({
|
|
141
141
|
encoder,
|
|
142
142
|
bindings: {
|
|
143
|
-
|
|
143
|
+
visibility: resources.get(data.visibility).obtainView(),
|
|
144
|
+
visible_meshlets: resources.get(data.visible_meshlets),
|
|
144
145
|
material_slots: resources.get(data.material_slots),
|
|
145
146
|
counts: resources.get(data.counts),
|
|
146
147
|
settings: encoder.allocateTransientValueBuffer(MATERIAL_CLASSIFY_SETTINGS_STRUCT, classify_settings, GPUBufferUsage.UNIFORM),
|
|
@@ -155,14 +156,15 @@ export function graph_material_dispatch_compute({
|
|
|
155
156
|
});
|
|
156
157
|
});
|
|
157
158
|
|
|
158
|
-
count_data.
|
|
159
|
+
count_data.visibility = count_pass.read(texture_visibility);
|
|
160
|
+
count_data.visible_meshlets = count_pass.read(visible_meshlets);
|
|
159
161
|
count_data.material_slots = count_pass.read(gr_material_slots);
|
|
160
162
|
count_data.counts = count_pass.create("material pixel counts", BufferResourceDescriptor.empty(
|
|
161
163
|
round_up(16 + list_count * 4, 16),
|
|
162
164
|
GPUBufferUsage.STORAGE
|
|
163
165
|
));
|
|
164
|
-
count_data.g_pbr = count_pass.
|
|
165
|
-
count_data.g_normal = count_pass.
|
|
166
|
+
count_data.g_pbr = count_pass.write(texture_pbr);
|
|
167
|
+
count_data.g_normal = count_pass.create("g-buffer / Normal", storage_target(G_BUFFER_COLOR_TARGETS[1].format, resolution));
|
|
166
168
|
count_data.g_albedo = count_pass.create("g-buffer / Albedo", storage_target(G_BUFFER_COLOR_TARGETS[2].format, resolution));
|
|
167
169
|
count_data.g_emissive = count_pass.create("g-buffer / Emissive", storage_target(G_BUFFER_COLOR_TARGETS[3].format, resolution));
|
|
168
170
|
|
|
@@ -209,7 +211,8 @@ export function graph_material_dispatch_compute({
|
|
|
209
211
|
shader_material_pixel_scatter.dispatch({
|
|
210
212
|
encoder,
|
|
211
213
|
bindings: {
|
|
212
|
-
|
|
214
|
+
visibility: resources.get(data.visibility).obtainView(),
|
|
215
|
+
visible_meshlets: resources.get(data.visible_meshlets),
|
|
213
216
|
material_slots: resources.get(data.material_slots),
|
|
214
217
|
settings: encoder.allocateTransientValueBuffer(MATERIAL_CLASSIFY_SETTINGS_STRUCT, classify_settings, GPUBufferUsage.UNIFORM),
|
|
215
218
|
offsets: resources.get(data.offsets),
|
|
@@ -222,7 +225,8 @@ export function graph_material_dispatch_compute({
|
|
|
222
225
|
});
|
|
223
226
|
});
|
|
224
227
|
|
|
225
|
-
scatter_data.
|
|
228
|
+
scatter_data.visibility = scatter_pass.read(texture_visibility);
|
|
229
|
+
scatter_data.visible_meshlets = scatter_pass.read(visible_meshlets);
|
|
226
230
|
scatter_data.material_slots = scatter_pass.read(gr_material_slots);
|
|
227
231
|
scatter_data.offsets = scatter_pass.read(gr_offsets);
|
|
228
232
|
scatter_data.cursors = scatter_pass.create("material pixel cursors", BufferResourceDescriptor.empty(
|
|
@@ -252,8 +256,8 @@ export function graph_material_dispatch_compute({
|
|
|
252
256
|
assert.equal(record_buffer, records.buffer, 'the dispatch records were replaced between recording and executing the frame');
|
|
253
257
|
|
|
254
258
|
const bind_1 = bindings.obtain(BindGroupDescriptor.from(GBUFFER_COMPUTE_VIZ_LAYOUT, [
|
|
255
|
-
resources.get(data.
|
|
256
|
-
resources.get(data.
|
|
259
|
+
resources.get(data.visibility).obtainView(),
|
|
260
|
+
{ buffer: resources.get(data.visible_meshlets) },
|
|
257
261
|
{ buffer: view.uniform_buffer.buffer },
|
|
258
262
|
{ buffer: view.camera.buffer.buffer },
|
|
259
263
|
{ buffer: resources.get(data.material_quads) },
|
|
@@ -297,8 +301,8 @@ export function graph_material_dispatch_compute({
|
|
|
297
301
|
pass.end();
|
|
298
302
|
});
|
|
299
303
|
|
|
300
|
-
shade_data.
|
|
301
|
-
shade_data.
|
|
304
|
+
shade_data.visibility = shade_pass.read(texture_visibility);
|
|
305
|
+
shade_data.visible_meshlets = shade_pass.read(visible_meshlets);
|
|
302
306
|
shade_data.material_quads = shade_pass.read(scatter_data.material_quads);
|
|
303
307
|
shade_data.records = shade_pass.read(commands_data.records);
|
|
304
308
|
shade_data.g_pbr = shade_pass.write(shade_pass.read(count_data.g_pbr));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_material_pixel_count.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/shader_material_pixel_count.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_material_pixel_count.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/shader_material_pixel_count.js"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,gDAFU,YAAY,CAgBS;AAiF/B;;;;;;;;;;;GAWG;AACH,0CAFU,aAAa,CAMpB;6BA3H0B,mCAAmC;8BALlC,+BAA+B"}
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
} from "../../shader/chunk/subgroup/chunk_subgroup_keyed_append.js";
|
|
6
6
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
7
7
|
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
8
|
+
import { VISIBLE_MESHLETS_RESOURCE } from "../../rasterize/visibility/chunk_visibility_decode.js";
|
|
8
9
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
9
10
|
import { atomic_u32, u32, vec2u } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
10
11
|
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
@@ -39,7 +40,8 @@ export const MATERIAL_CLASSIFY_SETTINGS_STRUCT = WebGPUStruct.from({
|
|
|
39
40
|
const resources = new ShaderResourceSetDescriptor();
|
|
40
41
|
|
|
41
42
|
resources.createGroup()
|
|
42
|
-
.addTexture("
|
|
43
|
+
.addTexture("visibility", "uint")
|
|
44
|
+
.add(VISIBLE_MESHLETS_RESOURCE)
|
|
43
45
|
.addStorageBuffer("material_slots", WebGPUArray.u32)
|
|
44
46
|
// laid out as graph_prefix_scan_csdldf takes its input, so the counts are scanned where they lie
|
|
45
47
|
.addStorageBuffer("counts", WebGPUStruct.fromFields(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_material_pixel_scatter.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/shader_material_pixel_scatter.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_material_pixel_scatter.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/dispatch/shader_material_pixel_scatter.js"],"names":[],"mappings":"AAoFA;;;;;;;;;;GAUG;AACH,4CAFU,aAAa,CAMpB;8BA7F2B,+BAA+B"}
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
} from "../../shader/chunk/subgroup/chunk_subgroup_keyed_append.js";
|
|
6
6
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
7
7
|
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
8
|
+
import { VISIBLE_MESHLETS_RESOURCE } from "../../rasterize/visibility/chunk_visibility_decode.js";
|
|
8
9
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
9
10
|
import { atomic_u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
10
11
|
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
@@ -16,7 +17,8 @@ import { MATERIAL_CLASSIFY_SETTINGS_STRUCT } from "./shader_material_pixel_count
|
|
|
16
17
|
const resources = new ShaderResourceSetDescriptor();
|
|
17
18
|
|
|
18
19
|
resources.createGroup()
|
|
19
|
-
.addTexture("
|
|
20
|
+
.addTexture("visibility", "uint")
|
|
21
|
+
.add(VISIBLE_MESHLETS_RESOURCE)
|
|
20
22
|
.addStorageBuffer("material_slots", WebGPUArray.u32)
|
|
21
23
|
.addUniform("settings", MATERIAL_CLASSIFY_SETTINGS_STRUCT)
|
|
22
24
|
// inclusive sums of the counts, so a list starts where the one before it ends
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment_gbuffer.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/standard/fragment_gbuffer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fragment_gbuffer.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/standard/fragment_gbuffer.js"],"names":[],"mappings":"AA0FA;;;;;;GAMG;AACH,kDAHW,6BAA6B,GAC3B,6BAA6B,CASzC;AAoBD;;;;;;;;GAQG;AACH,+DAHW,6BAA6B,GAC3B,2BAA2B,CAUvC;AASD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,+CALW,SAAS,eACT,SAAS,GAEP,SAAS,CAwOrB;AAgBD;;;;;;GAMG;AACH,qDAHW,SAAS,GACP,SAAS,CAerB;AAED;;;;;;;;;GASG;AACH;IAL2B,KAAK,EAArB,MAAM;IACiC,cAAc,EAArD,6BAA6B;IACV,OAAO,EAA1B,SAAS;IACP,wBAAwB,CAUpC;AAED;;;;;;;GAOG;AACH,8DAJW,MAAM,UACN,gBAAgB,GACd,wBAAwB,CA4BpC;AApbD;;;GAGG;AAGH;;;;;;;;;GASG;AACH,qCAFU,6BAA6B,CAEmC;AA8B1E;;;;GAIG;AACH,uCAFU,6BAA6B,CAEqC;AAgC5E;;;;GAIG;AACH,wCAFU,2BAA2B,CAEoE;AAkQzG;;;;;GAKG;AACH,4CAFU,SAAS,CAQhB;AAgFH;;;;GAIG;AACH,6BAFU,gBAAgB,CAMvB;8CAzc2C,wDAAwD;4CAC1D,sDAAsD;0BAFxE,oCAAoC;yCA/CrB,iEAAiE;iCAkDzE,kCAAkC"}
|
|
@@ -16,7 +16,10 @@ import { chunk_barycentric_interpolate_uv } from "../../shader/chunk/geometry/tr
|
|
|
16
16
|
import { chunk_compute_normal_matrix_from_m4 } from "../../shader/chunk/geometry/mat4/chunk_compute_normal_matrix_from_m4.js";
|
|
17
17
|
import { chunk_rgbe9995_encode } from "../../shader/chunk/color/rgbe9995/chunk_rgbe9995_encode.js";
|
|
18
18
|
import { chunk_mat4_extract_position } from "../../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
|
|
19
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
chunk_visibility_decode,
|
|
21
|
+
VISIBLE_MESHLETS_RESOURCE
|
|
22
|
+
} from "../../rasterize/visibility/chunk_visibility_decode.js";
|
|
20
23
|
import {
|
|
21
24
|
chunk_read_meshlet_triangle_vertices
|
|
22
25
|
} from "../../shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_vertices.js";
|
|
@@ -30,7 +33,11 @@ import {
|
|
|
30
33
|
chunk_compute_triangle_face_normal
|
|
31
34
|
} from "../../shader/chunk/geometry/normal/chunk_compute_triangle_face_normal.js";
|
|
32
35
|
|
|
36
|
+
import { chunk_encode_g_buffer_albedo } from "../../shader/chunk/material/chunk_encode_g_buffer_albedo.js";
|
|
33
37
|
import { chunk_encode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.js";
|
|
38
|
+
import {
|
|
39
|
+
chunk_encode_g_buffer_face_normal
|
|
40
|
+
} from "../../shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.js";
|
|
34
41
|
import {
|
|
35
42
|
chunk_interpolate_attribute_3f32
|
|
36
43
|
} from "../../shader/chunk/geometry/triangle/chunk_interpolate_attribute_3f32.js";
|
|
@@ -45,6 +52,7 @@ import { ShaderResourceGroupDescriptor } from "../../shader/resource/ShaderResou
|
|
|
45
52
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
46
53
|
import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
|
|
47
54
|
import { VIEW_UNIFORM_STRUCT } from "../../view/VIEW_UNIFORM_STRUCT.js";
|
|
55
|
+
import { MATERIAL_MASK_FORMAT } from "../MATERIAL_MASK.js";
|
|
48
56
|
import { chunk_material_surface_contract } from "../template/chunk_material_surface.js";
|
|
49
57
|
import { chunk_standard_material_surface } from "./chunk_standard_material_surface.js";
|
|
50
58
|
import { MATERIAL_SEEN_BINDING, material_gbuffer_vertex_shader_code } from "./material_gbuffer_vertex.js";
|
|
@@ -89,8 +97,8 @@ assert.equal(g_buffer_viz_resources.get("material_seen").binding_index, MATERIAL
|
|
|
89
97
|
*/
|
|
90
98
|
export function add_g_buffer_viz_resources(group) {
|
|
91
99
|
return group
|
|
92
|
-
.addTexture("
|
|
93
|
-
.
|
|
100
|
+
.addTexture("visibility", "uint")
|
|
101
|
+
.add(VISIBLE_MESHLETS_RESOURCE)
|
|
94
102
|
.addUniform("view", VIEW_UNIFORM_STRUCT)
|
|
95
103
|
.addUniform("camera", CAMERA_UNIFORM_STRUCT)
|
|
96
104
|
;
|
|
@@ -169,8 +177,8 @@ export function build_gbuffer_laydown(surface, derivatives) {
|
|
|
169
177
|
// language=WGSL
|
|
170
178
|
`
|
|
171
179
|
struct GBufferOutput {
|
|
172
|
-
@location(0) pbr :
|
|
173
|
-
@location(1) normal :
|
|
180
|
+
@location(0) pbr : vec4<f32>,
|
|
181
|
+
@location(1) normal : u32,
|
|
174
182
|
@location(2) albedo : vec4<f32>,
|
|
175
183
|
@location(3) emissive : u32,
|
|
176
184
|
}
|
|
@@ -180,21 +188,15 @@ fn gbuffer_laydown(
|
|
|
180
188
|
) -> GBufferOutput {
|
|
181
189
|
var output : GBufferOutput;
|
|
182
190
|
|
|
183
|
-
let
|
|
184
|
-
|
|
191
|
+
let visibility_texel = visibility_decode(textureLoad(
|
|
192
|
+
visibility,
|
|
185
193
|
vec2<i32>(coord),
|
|
186
194
|
0
|
|
187
|
-
).r;
|
|
188
|
-
|
|
189
|
-
let decoded_meshlet_triangle = decode_meshlet_element(encoded_meshlet_triangle);
|
|
190
|
-
let meshlet_id = decoded_meshlet_triangle[0];
|
|
191
|
-
let meshlet_triangle_id = decoded_meshlet_triangle[1];
|
|
195
|
+
).r);
|
|
192
196
|
|
|
193
|
-
let
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
0
|
|
197
|
-
).r;
|
|
197
|
+
let meshlet_id = visibility_texel.meshlet;
|
|
198
|
+
let meshlet_triangle_id = visibility_texel.triangle;
|
|
199
|
+
let mesh_index = visibility_texel.mesh;
|
|
198
200
|
|
|
199
201
|
let mesh = scene_read_mesh(&scene_database, mesh_index);
|
|
200
202
|
let node = scene_read_node(&scene_database, mesh.node);
|
|
@@ -360,16 +362,13 @@ fn gbuffer_laydown(
|
|
|
360
362
|
let output_roughness = filtered_roughness + dither_color_8bit_triangle_noise(coord);
|
|
361
363
|
|
|
362
364
|
output.albedo = vec4<f32>(
|
|
363
|
-
surface.albedo,
|
|
365
|
+
encode_g_buffer_albedo(surface.albedo),
|
|
364
366
|
surface.ambient
|
|
365
367
|
);
|
|
366
368
|
|
|
367
|
-
output.normal =
|
|
368
|
-
encode_g_buffer_normal(world_shading_normal),
|
|
369
|
-
encode_g_buffer_normal(world_face_normal),
|
|
370
|
-
);
|
|
369
|
+
output.normal = encode_g_buffer_normal(world_shading_normal);
|
|
371
370
|
|
|
372
|
-
output.pbr =
|
|
371
|
+
output.pbr = vec4(surface.metalness, output_roughness, encode_g_buffer_face_normal(world_face_normal));
|
|
373
372
|
|
|
374
373
|
output.emissive = rgbe9995_encode(surface.emissive);
|
|
375
374
|
|
|
@@ -380,7 +379,9 @@ fn gbuffer_laydown(
|
|
|
380
379
|
chunk_material_surface_contract,
|
|
381
380
|
|
|
382
381
|
chunk_mat4_extract_position,
|
|
382
|
+
chunk_encode_g_buffer_albedo,
|
|
383
383
|
chunk_encode_g_buffer_normal,
|
|
384
|
+
chunk_encode_g_buffer_face_normal,
|
|
384
385
|
|
|
385
386
|
chunk_interpolate_attribute_3f32,
|
|
386
387
|
chunk_interpolate_with_derivatives,
|
|
@@ -392,7 +393,7 @@ fn gbuffer_laydown(
|
|
|
392
393
|
chunk_anti_alias_roughness_kaplanyan_footprint,
|
|
393
394
|
chunk_build_orthonormal_matrix_nt,
|
|
394
395
|
chunk_read_meshlet_triangle_vertices,
|
|
395
|
-
|
|
396
|
+
chunk_visibility_decode,
|
|
396
397
|
chunk_compute_triangle_face_normal,
|
|
397
398
|
chunk_rgbe9995_encode,
|
|
398
399
|
chunk_dither_color_8bit_triangle_noise,
|
|
@@ -485,7 +486,7 @@ export function gbuffer_pipeline_descriptor_for_shader(label, shader) {
|
|
|
485
486
|
depthStencil: {
|
|
486
487
|
// depth is actually a material mask, we use trick from Unreal to mask materials using depth
|
|
487
488
|
depthCompare: 'equal',
|
|
488
|
-
format:
|
|
489
|
+
format: MATERIAL_MASK_FORMAT,
|
|
489
490
|
depthWriteEnabled: false
|
|
490
491
|
},
|
|
491
492
|
primitive: {
|
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Group 1 binding of the material-seen bitset the shared G-buffer vertex stage reads: bit
|
|
3
|
-
* `
|
|
3
|
+
* `place & 31` of word `place >> 5` is set when the material at that place in the G-buffer pass's
|
|
4
|
+
* list holds a pixel of the view.
|
|
4
5
|
*
|
|
5
6
|
* @type {number}
|
|
6
7
|
*/
|
|
7
8
|
export const MATERIAL_SEEN_BINDING: number;
|
|
8
9
|
/**
|
|
9
10
|
* Shared vertex stage of every material template's G-buffer pipeline: a fullscreen triangle placed
|
|
10
|
-
* at depth `
|
|
11
|
+
* at depth `place / MATERIAL_MASK_NONE`, matched against the material mask with `depthCompare: 'equal'`
|
|
11
12
|
* so the fragment stage only runs on this material's pixels.
|
|
12
13
|
*
|
|
13
|
-
* The material
|
|
14
|
-
* template's group 0 can be laid out however the template needs, and
|
|
15
|
-
* stage alone. A direct draw's `firstInstance` needs no device feature.
|
|
14
|
+
* The material's place in the pass's list rides in the instance index — the material pass draws
|
|
15
|
+
* `draw(3, 1, 0, place)` — so a template's group 0 can be laid out however the template needs, and
|
|
16
|
+
* is visible to the fragment stage alone. A direct draw's `firstInstance` needs no device feature.
|
|
16
17
|
*
|
|
17
18
|
* A material that holds no pixel of the view — its bit clear in `material_seen`, of the shared group
|
|
18
19
|
* 1 — gets all three corners on one point: a triangle of no area, which rasterizes nothing, so the
|
|
19
|
-
* draw costs three vertex invocations rather than a fullscreen pass of depth tests.
|
|
20
|
+
* draw costs three vertex invocations rather than a fullscreen pass of depth tests. A place past the
|
|
20
21
|
* end of the bitset is drawn.
|
|
21
22
|
*
|
|
22
|
-
* `
|
|
23
|
-
*
|
|
23
|
+
* `place / MATERIAL_MASK_NONE` is the expression the material-depth pass writes, and both are
|
|
24
|
+
* quantised to the same 16-bit code for every place below MATERIAL_MASK_NONE, so the two meet at
|
|
25
|
+
* depth-equal.
|
|
24
26
|
*
|
|
25
27
|
* @type {string}
|
|
26
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material_gbuffer_vertex.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/standard/material_gbuffer_vertex.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"material_gbuffer_vertex.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/standard/material_gbuffer_vertex.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,kDAFU,MAAM,CAqCE"}
|