@woosh/meep-engine 3.60.3 → 3.60.5
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/CHANGELOG.md +2602 -0
- package/CONTRIBUTING.md +7 -0
- package/MIGRATION_2_TO_3.md +136 -0
- package/SECURITY.md +4 -0
- package/editor/EditorCameraNavigation.d.ts +2 -1
- package/editor/EditorCameraNavigation.d.ts.map +1 -1
- package/editor/EditorCameraNavigation.js +51 -57
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +3 -0
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -1
- package/editor/ecs/component/editors/ecs/Trail3DEditor.js +6 -0
- package/package.json +6 -2
- package/src/engine/EngineHarness.d.ts +3 -9
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +6 -8
- package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts +9 -6
- package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts.map +1 -1
- package/src/engine/graphics/camera/makeOrbitalCameraController.js +44 -71
- package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts +64 -0
- package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts.map +1 -0
- package/src/engine/graphics/camera/orbital/MomentumAxis.js +187 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts +86 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts.map +1 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.js +319 -0
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +34 -10
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +116 -30
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +1 -7
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +1 -37
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.js +1 -2
- package/src/engine/graphics/ecs/trail3d/TRAIL3D_FADE_LINEAR.d.ts +14 -0
- package/src/engine/graphics/ecs/trail3d/TRAIL3D_FADE_LINEAR.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/TRAIL3D_FADE_LINEAR.js +22 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +19 -3
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +31 -4
- package/src/engine/graphics/ecs/trail3d/advance_trail.js +1 -1
- package/src/engine/graphics/ecs/water/Water.d.ts +8 -0
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +8 -0
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +5 -5
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +1 -1
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +6 -6
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +731 -734
- package/src/engine/graphics3/decal/DecalTileShader.d.ts +61 -0
- package/src/engine/graphics3/decal/DecalTileShader.d.ts.map +1 -0
- package/src/engine/graphics3/decal/DecalTileShader.js +138 -0
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts +10 -4
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +149 -44
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts +25 -0
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts.map +1 -0
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.js +55 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts +22 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts.map +1 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.js +70 -0
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts +7 -5
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +48 -44
- package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts +12 -0
- package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -0
- package/src/engine/graphics3/decal/shader_decal_tile_copy.js +78 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts +11 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts.map +1 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.js +80 -0
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +10 -0
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts.map +1 -1
- package/src/engine/graphics3/trail/trail_tube_write_geometry.js +13 -1
- package/src/engine/input/devices/mouse/MouseEventButtons.d.ts +13 -0
- package/src/engine/input/devices/mouse/MouseEventButtons.d.ts.map +1 -0
- package/src/engine/input/devices/mouse/MouseEventButtons.js +23 -0
- package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts +4 -0
- package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
- package/src/engine/input/ecs/controllers/KeyboardCameraController.js +9 -45
- package/src/engine/physics/cloth/ecs/cloth_geodesic.d.ts +2 -2
- package/src/engine/physics/cloth/ecs/cloth_geodesic.js +2 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/playground/probe_clipmap/README.md +1 -0
- package/src/shade/playground/probe_clipmap/index.html +5 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +16 -2
- package/src/shade/playground/vgeo_scene/README.md +1 -1
- package/src/shade/playground/water_refraction/README.md +5 -6
- package/src/shade/playground/water_refraction/index.html +1 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +7 -5
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts +4 -6
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.js +34 -36
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +162 -163
- package/src/shade/renderer/atmosphere/compute_mie_absorption.d.ts +1 -1
- package/src/shade/renderer/atmosphere/compute_mie_absorption.js +1 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_EARTH.js +1 -1
- package/src/shade/renderer/atmosphere/hillaire/ATMOSPHERE_PARAMETERS_STRUCT.js +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +164 -164
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +40 -80
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +197 -147
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +4 -4
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +4 -4
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +2 -1
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +18 -1
- package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +2 -2
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +1 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.d.ts +4 -5
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.js +6 -7
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts +31 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.js +343 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.js +29 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.js +7 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +2 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +5 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +10 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +12 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +22 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +4 -4
- 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 +50 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +6 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +7 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts +13 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.js +13 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +17 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +20 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +5 -15
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +6 -34
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resampled.d.ts +18 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resampled.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resampled.js +42 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +5 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +4 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +13 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts +52 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.js +250 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +1 -7
- package/src/shade/renderer/hiz/HZBFootprint.d.ts +14 -0
- package/src/shade/renderer/hiz/HZBFootprint.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZBFootprint.js +16 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts +10 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.js +11 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts +10 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.js +11 -0
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +0 -7
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +405 -350
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts +12 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts.map +1 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.js +27 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts +12 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts.map +1 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.js +27 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts +14 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.js +34 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +0 -5
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +37 -57
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts +11 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts.map +1 -0
- package/src/shade/renderer/hiz/{shader_hzb_reduce_mip0_clip.js → shader_hzb_reduce_mip0.js} +120 -111
- package/src/shade/renderer/light/environment/environment_level_1_blur_plan.d.ts +39 -0
- package/src/shade/renderer/light/environment/environment_level_1_blur_plan.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/environment_level_1_blur_plan.js +119 -0
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts +15 -7
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/execute_filter_environment_map.js +66 -83
- package/src/shade/renderer/light/environment/graph_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/graph_filter_environment_map.js +15 -6
- package/src/shade/renderer/light/environment/shader_blur_environment_map.d.ts +3 -0
- package/src/shade/renderer/light/environment/shader_blur_environment_map.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_blur_environment_map.js +111 -0
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_blurred.d.ts +3 -0
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_blurred.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_blurred.js +128 -0
- package/src/shade/renderer/light/environment/shader_downsample_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_downsample_environment_map.js +0 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts +7 -0
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +11 -0
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +12 -12
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +17 -118
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -3
- package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.js +1 -3
- package/src/shade/renderer/postprocess/nss/NSS_NETWORK_SCHEMA.d.ts +5 -6
- package/src/shade/renderer/postprocess/nss/NSS_NETWORK_SCHEMA.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/NSS_NETWORK_SCHEMA.js +9 -10
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js +48 -49
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +12 -16
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +246 -246
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.d.ts +1 -2
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.js +34 -35
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts +2 -2
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.js +2 -2
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_compute_extinction.js +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.d.ts +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/hillaire/DENSITY_PROFILE_LAYER_STRUCT.js +1 -1
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.d.ts +3 -3
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.js +3 -3
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts +9 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.js +9 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.d.ts +4 -4
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.js +5 -5
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.d.ts +1 -2
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.js +1 -2
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec2.d.ts +14 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec2.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec2.js +19 -6
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec3.d.ts +10 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec3.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec3.js +14 -6
- package/src/shade/renderer/shader/chunk/random/murmur/chunk_murmur3_vec3u.d.ts +1 -1
- package/src/shade/renderer/shader/chunk/random/murmur/chunk_murmur3_vec3u.js +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +7 -2
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_DYNAMIC_LOD_BIAS.d.ts +2 -3
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_DYNAMIC_LOD_BIAS.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_DYNAMIC_LOD_BIAS.js +7 -8
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_LOAD_FACTOR.d.ts +1 -1
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_MAX_LOAD_FACTOR.js +12 -12
- package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts +2 -2
- package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VSMPageManager.js +3 -4
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +0 -6
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +12 -17
- package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts +35 -0
- package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/graph_water_meshlets.js +89 -0
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +22 -13
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water_avboit.js +7 -7
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +1 -1
- package/src/shade/renderer/water/surface/graph_water_tessellation.js +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +9 -1
- package/src/view/elements/progress/segmented/SegmentedResourceBarView.d.ts +0 -19
- package/src/view/elements/progress/segmented/SegmentedResourceBarView.d.ts.map +1 -1
- package/src/view/elements/progress/segmented/SegmentedResourceBarView.js +2 -52
- package/editor/REWORK_PLAN_2026_08.md +0 -692
- package/src/CODEC_LAYOUT_VERIFICATION.md +0 -419
- package/src/CORRECTNESS_HUNT_2026_07_24.md +0 -142
- package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +0 -738
- package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +0 -79
- package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +0 -93
- package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +0 -80
- package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +0 -164
- package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +0 -69
- package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +0 -110
- package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +0 -129
- package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +0 -72
- package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +0 -74
- package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +0 -169
- package/src/DUPLICATION_AUDIT_2026_08_07.md +0 -254
- package/src/DUPLICATION_AUDIT_REMEDIATION.md +0 -250
- package/src/DUPLICATION_REVIEW_2026_10_24.md +0 -1072
- package/src/REVIEW_2026_08_06/adv-core.md +0 -511
- package/src/REVIEW_2026_08_06/adv-gfx.md +0 -480
- package/src/REVIEW_2026_08_06/adv-view.md +0 -446
- package/src/REVIEW_2026_08_06/api-core.md +0 -296
- package/src/REVIEW_2026_08_06/api-engine.md +0 -195
- package/src/REVIEW_2026_08_06/bvh-phys-sound-net.md +0 -507
- package/src/REVIEW_2026_08_06/core-binary.md +0 -348
- package/src/REVIEW_2026_08_06/core-collection.md +0 -376
- package/src/REVIEW_2026_08_06/core-math.md +0 -221
- package/src/REVIEW_2026_08_06/core-process.md +0 -266
- package/src/REVIEW_2026_08_06/core-science.md +0 -223
- package/src/REVIEW_2026_08_06/engine-ai-nav.md +0 -279
- package/src/REVIEW_2026_08_06/engine-animation.md +0 -167
- package/src/REVIEW_2026_08_06/engine-asset.md +0 -166
- package/src/REVIEW_2026_08_06/engine-ecs.md +0 -920
- package/src/REVIEW_2026_08_06/engine-input.md +0 -197
- package/src/REVIEW_2026_08_06/engine-misc.md +0 -248
- package/src/REVIEW_2026_08_06/engine-terrain.md +0 -52
- package/src/REVIEW_2026_08_06/generation.md +0 -176
- package/src/REVIEW_2026_08_06/geom-2d.md +0 -434
- package/src/REVIEW_2026_08_06/geom-3d.md +0 -117
- package/src/REVIEW_2026_08_06/gfx-gi.md +0 -143
- package/src/REVIEW_2026_08_06/gfx-render.md +0 -740
- package/src/REVIEW_2026_08_06/gfx-texture.md +0 -690
- package/src/REVIEW_2026_08_06/prior-criticals.md +0 -49
- package/src/REVIEW_2026_08_06/prior-highs.md +0 -138
- package/src/REVIEW_2026_08_06/test-gaps.md +0 -364
- package/src/REVIEW_2026_08_06/view.md +0 -667
- package/src/REVIEW_2026_08_06.md +0 -610
- package/src/core/binary/lz4/LZ4_HIGH_COMPRESSION_PLAN_2026_09_14.md +0 -542
- package/src/core/bvh2/bvh3/NOTES.md +0 -2
- package/src/core/bvh8/NOTES.md +0 -63
- package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +0 -243
- package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +0 -417
- package/src/core/color/COLOR_REVIEW_2026_08_28.md +0 -779
- package/src/core/geom/2d/polygon/TRIANGULATION_DESIGN.md +0 -433
- package/src/core/geom/3d/atlas/ATLAS_PORT_PLAN.md +0 -486
- package/src/core/geom/3d/atlas/BFF_PLAN.md +0 -174
- package/src/core/geom/3d/atlas/REVIEW_02.md +0 -392
- package/src/core/geom/3d/gjk/GJK_REVIEW_NOTES.md +0 -146
- package/src/core/geom/3d/gjk/NOTES.md +0 -8
- package/src/core/geom/3d/topology/TOPO_MESH_RETIREMENT_PLAN.md +0 -135
- package/src/core/geom/GEOMETRY_REVIEW_002_API_ISSUES.md +0 -381
- package/src/core/geom/GEOMETRY_REVIEW_002_NAMING.md +0 -684
- package/src/core/geom/MANIFOLD_COMPARISON_2026_08_01.md +0 -554
- package/src/core/model/reactive/evaluation/PREDICATE_APPLICABILITY_PROPOSAL.md +0 -446
- package/src/engine/REVIEW_2026_07_03.md +0 -211
- package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +0 -815
- package/src/engine/control/first-person/DESIGN.md +0 -658
- package/src/engine/control/first-person/DESIGN_COLLISION.md +0 -382
- package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +0 -563
- package/src/engine/control/first-person/TODO.md +0 -160
- package/src/engine/ecs/ASYNC_SYSTEMS_PROPOSAL.md +0 -531
- package/src/engine/ecs/HIERARCHY_REVIEW.md +0 -717
- package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +0 -262
- package/src/engine/ecs/ik/PLAN.md +0 -179
- package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +0 -272
- package/src/engine/ecs/storage/binary/object-v2/DESIGN.md +0 -199
- package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +0 -521
- package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +0 -463
- package/src/engine/graphics/ecs/camera/pp/NOTES.md +0 -48
- package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +0 -659
- package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +0 -235
- package/src/engine/graphics/sh3/path_tracer/REVIEW_001_ACTION_PLAN.md +0 -490
- package/src/engine/graphics/texture/sampler/compare/FLIP_IMPLEMENTATION_PLAN.md +0 -466
- package/src/engine/input/GAMEPAD_API_PROPOSAL.md +0 -717
- package/src/engine/input/ecs/ism/ISM_DESIGN.md +0 -1523
- package/src/engine/input/ecs/ism/ISM_IMPLEMENTATION_PLAN.md +0 -627
- package/src/engine/navigation/mesh/OVERLAPPING_SURFACES_2026_08_25.md +0 -661
- package/src/engine/navigation/mesh/PATHFINDING_PLAN.md +0 -229
- package/src/engine/network/CONGESTION_CONTROL.md +0 -87
- package/src/engine/network/MESSAGE_TRANSPORT.md +0 -364
- package/src/engine/network/SMOOTHNESS_DESIGN.md +0 -400
- package/src/engine/physics/cloth/MEASUREMENTS.md +0 -5304
- package/src/engine/physics/cloth/PLAN.md +0 -3056
- package/src/engine/physics/fluid/GPU_FLUID_CASCADES_PROPOSAL_2026_10_16.md +0 -1382
- package/src/engine/physics/fluid/REVIEW_02_PLAN.md +0 -243
- package/src/engine/physics/fluid/solver/NOTES.md +0 -46
- package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +0 -536
- package/src/engine/sound/simulation/IMPLEMENTATION_PLAN.md +0 -432
- package/src/engine/sound/simulation/PROBE_PLACEMENT.md +0 -250
- package/src/engine/sound/simulation/PROBE_TRANSFER_RESEARCH.md +0 -322
- package/src/engine/sound/simulation/REFLECTION_IR_PLAN.md +0 -261
- package/src/engine/sound/simulation/VISIBILITY_GRAPH_PLAN.md +0 -121
- package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +0 -999
- package/src/format/image/avif/DECISIONS.md +0 -545
- package/src/format/image/jpeg/NOTES.md +0 -3
- package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +0 -814
- package/src/generation/COORDINATES.md +0 -54
- package/src/generation/REVIEW_01_ACTION_PLAN.md +0 -628
- package/src/generation/foliage/ANNUAL_SHOOTS_BRIEF_2026_10_25.md +0 -220
- package/src/generation/foliage/CROWN_FILLING_BRIEF_2026_10_26.md +0 -172
- package/src/generation/foliage/CROWN_FULLNESS_BRIEF_2026_10_26.md +0 -86
- package/src/generation/foliage/FOLIAGE_DESIGN.md +0 -547
- package/src/generation/foliage/FOLIAGE_PLAN.md +0 -198
- package/src/generation/foliage/LEAF_ARCHITECTURE_BRIEF_2026_10_26.md +0 -158
- package/src/generation/foliage/LOD_REWORK_BRIEF_2026_10_27.md +0 -521
- package/src/generation/foliage/REAL_TIME_TREES_BRIEF_2026_10_27.md +0 -86
- package/src/generation/foliage/SELF_ORGANIZING_FRAMEWORK_BRIEF_2026_10_26.md +0 -347
- package/src/generation/foliage/SHOOT_SYSTEMS_ALL_SPECIES_BRIEF_2026_10_26.md +0 -248
- package/src/generation/foliage/SPEEDTREE_COMPARISON_2026_10_24.md +0 -694
- package/src/generation/foliage/TWO_FRONT_ENDS_BRIEF_2026_10_28.md +0 -552
- package/src/shade/RENDERER_CONTRACT.md +0 -697
- package/src/shade/SHADER_F16_PROPOSAL_2026_10_24.md +0 -263
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +0 -569
- package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +0 -755
- package/src/shade/device/mock/EXTENSION_PROPOSAL_2026_08_22.md +0 -458
- package/src/shade/device/mock/IMPLEMENTATION_PLAN.md +0 -255
- package/src/shade/device/mock/REVIEW_2026_08_22.md +0 -527
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +0 -894
- package/src/shade/device/timing/profile/SGPT_FORMAT.md +0 -345
- package/src/shade/renderer/NOTES.md +0 -78
- package/src/shade/renderer/PLAN.md +0 -8
- package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +0 -145
- package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +0 -357
- package/src/shade/renderer/atmosphere/NOTES.md +0 -6
- package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts +0 -76
- package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/MomentumAxis.js +0 -164
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts +0 -45
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.js +0 -66
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +0 -98
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +0 -184
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +0 -175
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +0 -411
- package/src/shade/renderer/camera/orbital/README.md +0 -81
- package/src/shade/renderer/camera/orbital/index.d.ts +0 -6
- package/src/shade/renderer/camera/orbital/index.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/index.js +0 -9
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +0 -964
- package/src/shade/renderer/fluid/GPU_FLUID_OCCUPANCY_AND_SOTA_REVIEW_2026_10_26.md +0 -361
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_BATCH_PLAN.md +0 -619
- package/src/shade/renderer/geometry/meshlet/COMPACTION_PLAN_2026_09_16.md +0 -674
- package/src/shade/renderer/geometry/sdf/NOTES.md +0 -6
- package/src/shade/renderer/geometry/virtual/ATTRIBUTE_PLAN_2026_09_18.md +0 -540
- package/src/shade/renderer/geometry/virtual/MICRON_COMPARISON_2026_08_20.md +0 -305
- package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +0 -913
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +0 -787
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +0 -483
- package/src/shade/renderer/geometry/virtual/VK_LOD_CLUSTERS_COMPARISON_2026_08_20.md +0 -301
- package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +0 -448
- package/src/shade/renderer/geometry/virtual/runtime/CULL_PLAN_2026_09_16.md +0 -385
- package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +0 -656
- package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +0 -308
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +0 -657
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +0 -551
- package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +0 -536
- package/src/shade/renderer/global_illumination/lpv/NOTES.md +0 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_CLIPMAP_PROPOSAL_2026_10_27.md +0 -4225
- package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_RAYS_VARIABLE_AND_SORTED_SCOPE_2026_10_30.md +0 -410
- package/src/shade/renderer/global_illumination/sharc/NOTES.md +0 -8
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +0 -1369
- package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +0 -202
- package/src/shade/renderer/gpu_primitive/indirect/NOTES.md +0 -94
- package/src/shade/renderer/hiz/NOTES.md +0 -3
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +0 -8
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +0 -1
- package/src/shade/renderer/light/cluster/NOTES.md +0 -11
- package/src/shade/renderer/light/cluster/PROPOSAL_ALGORITHM_2026_10_16.md +0 -524
- package/src/shade/renderer/light/cluster/PROPOSAL_HIERARCHICAL_2026_10_16.md +0 -1101
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_averages.d.ts +0 -13
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_averages.d.ts.map +0 -1
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map_from_averages.js +0 -198
- package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts +0 -24
- package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts.map +0 -1
- package/src/shade/renderer/material/resident/shader_resident_texture_means.js +0 -120
- package/src/shade/renderer/particles/DESIGN.md +0 -1011
- package/src/shade/renderer/particles/EMITTER_GLOBAL_STATE_PLAN_2026_10_29.md +0 -283
- package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +0 -453
- package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +0 -520
- package/src/shade/renderer/postprocess/bloom/NOTES.md +0 -6
- package/src/shade/renderer/postprocess/fsr/NOTES.md +0 -4
- package/src/shade/renderer/postprocess/gtao/NOTES.md +0 -6
- package/src/shade/renderer/postprocess/nss/NOTES.md +0 -339
- package/src/shade/renderer/postprocess/perspective/NOTES.md +0 -3
- package/src/shade/renderer/postprocess/sscs/NOTES.md +0 -5
- package/src/shade/renderer/postprocess/ssr/NOTES.md +0 -14
- package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +0 -286
- package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -39
- package/src/shade/renderer/postprocess/taa/NOTES.md +0 -11
- package/src/shade/renderer/postprocess/upscale-dither/NOTES.md +0 -78
- package/src/shade/renderer/postprocess/vrs/NOTES.md +0 -4
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +0 -1218
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +0 -600
- package/src/shade/renderer/restir/reservoir/NOTES.md +0 -6
- package/src/shade/renderer/shader/chunk/atmosphere/NOTES.md +0 -6
- package/src/shade/renderer/shader/chunk/brdf/FRESNEL_BRIEF_2026_10_16.md +0 -394
- package/src/shade/renderer/shader/chunk/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +0 -160
- package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +0 -322
- package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +0 -247
- package/src/shade/renderer/shader/chunk/fsr/NOTES.md +0 -3
- package/src/shade/renderer/shader/chunk/fsr/spd/NOTES.md +0 -4
- package/src/shade/renderer/shader/chunk/geometry/ray/NOTES.md +0 -4
- package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +0 -159
- package/src/shade/renderer/shader/chunk/mboit/NOTES.md +0 -38
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/NOTES.md +0 -3
- package/src/shade/renderer/shader/chunk/spherical_harmonics/sampling/NOTES.md +0 -8
- package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +0 -932
- package/src/shade/renderer/shadow/contact/FINDINGS.md +0 -413
- package/src/shade/renderer/shadow/map/csm/NOTES.md +0 -5
- package/src/shade/renderer/shadow/ray/NOTES.md +0 -31
- package/src/shade/renderer/shadow/sdf/NOTES.md +0 -9
- package/src/shade/renderer/shadow/sdf/brixelizer/NOTES.md +0 -5
- package/src/shade/renderer/shadow/sdf/cascade/NOTES.md +0 -9
- package/src/shade/renderer/shadow/vsm/NOTES.md +0 -12
- package/src/shade/renderer/shadow/vsm/PLAN.md +0 -442
- package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +0 -43
- package/src/shade/renderer/texture/COMPRESSED_TEXTURE_PLAN_2026_09_01.md +0 -2444
- package/src/shade/renderer/texture/mipmaps/NOTES.md +0 -4
- package/src/shade/renderer/volumetrics/NOTES.md +0 -1329
- package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +0 -336
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +0 -23
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +0 -1
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +0 -75
- package/src/shade/wgsl/NOTES.md +0 -4
- package/src/view/elements/progress/segmented/segment_frame_transform.d.ts +0 -15
- package/src/view/elements/progress/segmented/segment_frame_transform.d.ts.map +0 -1
- package/src/view/elements/progress/segmented/segment_frame_transform.js +0 -69
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { chunk_cone_cosine_from_roughness } from "../../shader/chunk/brdf/chunk_cone_cosine_from_roughness.js";
|
|
2
|
+
import {
|
|
3
|
+
chunk_build_orthonormal_matrix_n
|
|
4
|
+
} from "../../shader/chunk/geometry/normal/chunk_build_orthonormal_matrix_n.js";
|
|
5
|
+
import {
|
|
6
|
+
chunk_uv_octahedral_unit_decode
|
|
7
|
+
} from "../../shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js";
|
|
8
|
+
import {
|
|
9
|
+
chunk_uv_octahedral_unit_encode
|
|
10
|
+
} from "../../shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_encode.js";
|
|
11
|
+
import { chunk_uniform_sample_cone } from "../../shader/chunk/geometry/ray/chunk_uniform_sample_cone.js";
|
|
12
|
+
import { chunk_safe_rcp } from "../../shader/chunk/math/chunk_safe_rcp.js";
|
|
13
|
+
import { chunk_hammersley_2d } from "../../shader/chunk/noise/chunk_hammersley_2d.js";
|
|
14
|
+
import {
|
|
15
|
+
chunk_texture_octahedral_skirt_texel_uv
|
|
16
|
+
} from "../../shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.js";
|
|
17
|
+
import { chunk_texture_octahedral_skirt_uv } from "../../shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.js";
|
|
18
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
19
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
20
|
+
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
21
|
+
import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
|
|
22
|
+
import { chunk_reflection_sample_weight } from "./chunk_reflection_sample_weight.js";
|
|
23
|
+
import { chunk_sphere_probe_lod_to_roughness } from "./chunk_sphere_probe_lod_to_roughness.js";
|
|
24
|
+
import { BSDF_ROUGHNESS_MINIMUM } from "./DEFINES.js";
|
|
25
|
+
import { ENVIRONMENT_MAP_SAMPLER_RESOURCE } from "./ENVIRONMENT_MAP_SAMPLER_RESOURCE.js";
|
|
26
|
+
import { LEVEL_1_SAMPLE_COUNT } from "./environment_level_1_blur_plan.js";
|
|
27
|
+
|
|
28
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
29
|
+
|
|
30
|
+
// the lobe's roughness once narrowed by the blur it reads through, see environment_level_1_blur_plan
|
|
31
|
+
resources.setImmediate("lobe_roughness", "f32");
|
|
32
|
+
|
|
33
|
+
resources.createGroup()
|
|
34
|
+
// level 0 blurred by a Gaussian, see shader_blur_environment_map
|
|
35
|
+
.addTexture("blurred", "float")
|
|
36
|
+
.addStorageTexture("output", "rgba16float")
|
|
37
|
+
.add(ENVIRONMENT_MAP_SAMPLER_RESOURCE)
|
|
38
|
+
;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Level 1 of the prefilter, from a copy of level 0 blurred by a Gaussian.
|
|
42
|
+
*
|
|
43
|
+
* Point taps into level 0 — 196 of them over a cone of 639 level-0 texels on a 1024 map — put one
|
|
44
|
+
* bright texel's share of level 1 anywhere from 0.79 to 1.21 of its energy, and an HDR sun came out
|
|
45
|
+
* 0.66% brighter than it went in. Read from a copy blurred wider than the samples are apart, every
|
|
46
|
+
* texel lands in level 1 once, whatever the sample pattern. The blur and the lobe are both Gaussians,
|
|
47
|
+
* so the lobe narrows by the blur's variance and level 1 comes out the lobe it is asked for.
|
|
48
|
+
*
|
|
49
|
+
* Samples are uniform in the cone, so each stands for the same solid angle. UE importance-samples
|
|
50
|
+
* and reads a coarser average in the lobe's tail than in its core; here the sun came out in blocks.
|
|
51
|
+
*
|
|
52
|
+
* Level 1 only. The levels after it read the level above, already smooth at their sample spacing
|
|
53
|
+
* (see shader_convolve_reflection_map).
|
|
54
|
+
*
|
|
55
|
+
* @see https://developer.nvidia.com/gpugems/gpugems3/part-iii-rendering/chapter-20-gpu-based-importance-sampling
|
|
56
|
+
* @see https://projects.blender.org/blender/blender/src/commit/866ef5b468589587395b1ee7480ea75b4c0fbc26/source/blender/draw/engines/eevee_next/shaders/eevee_lightprobe_sphere_convolve_comp.glsl for the lobe
|
|
57
|
+
* @type {CodeChunk}
|
|
58
|
+
*/
|
|
59
|
+
const body = CodeChunk.from(
|
|
60
|
+
//language=WGSL
|
|
61
|
+
`
|
|
62
|
+
@compute @workgroup_size(16,16,1)
|
|
63
|
+
fn main(
|
|
64
|
+
@builtin(global_invocation_id) global_invocation_id : vec3<u32>,
|
|
65
|
+
){
|
|
66
|
+
let output_size = textureDimensions(output);
|
|
67
|
+
|
|
68
|
+
let output_texel_i = global_invocation_id.xy;
|
|
69
|
+
|
|
70
|
+
if(any(output_texel_i >= output_size)){
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// the cone is the lobe's as asked for; only its weights narrow
|
|
75
|
+
let roughness = max(sphere_probe_lod_to_roughness(1.0), ${BSDF_ROUGHNESS_MINIMUM});
|
|
76
|
+
let cone_cos = cone_cosine_from_roughness(roughness);
|
|
77
|
+
|
|
78
|
+
// the skirt too: a skirt texel takes its interior twin's uv, so it is that texel, computed again
|
|
79
|
+
let out_uv = texture_octahedral_skirt_texel_uv(output_texel_i, output_size.x);
|
|
80
|
+
let out_direction = uv_octahedral_unit_decode( out_uv );
|
|
81
|
+
|
|
82
|
+
let basis = build_orthonormal_matrix_n(out_direction);
|
|
83
|
+
|
|
84
|
+
var weight_accum = 0.0;
|
|
85
|
+
var radiance_accum = vec4(0.0);
|
|
86
|
+
|
|
87
|
+
const sample_count = ${LEVEL_1_SAMPLE_COUNT};
|
|
88
|
+
|
|
89
|
+
let blurred_size = f32(textureDimensions(blurred).x);
|
|
90
|
+
|
|
91
|
+
for (var i = 0u; i < sample_count; i++) {
|
|
92
|
+
let rand = hammersley_2d(i, sample_count);
|
|
93
|
+
|
|
94
|
+
let in_direction = normalize(basis * uniform_sample_cone(rand, cone_cos));
|
|
95
|
+
|
|
96
|
+
let in_uv = texture_octahedral_skirt_uv(uv_octahedral_unit_encode(in_direction), blurred_size);
|
|
97
|
+
let radiance = textureSampleLevel(blurred, sEnvironment, in_uv, 0.0);
|
|
98
|
+
|
|
99
|
+
let weight = reflection_sample_weight(out_direction, in_direction, lobe_roughness);
|
|
100
|
+
|
|
101
|
+
radiance_accum += radiance * weight;
|
|
102
|
+
weight_accum += weight;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
let out_radiance = radiance_accum * safe_rcp(weight_accum);
|
|
106
|
+
|
|
107
|
+
textureStore(output, output_texel_i, out_radiance);
|
|
108
|
+
}
|
|
109
|
+
`, [
|
|
110
|
+
chunk_sphere_probe_lod_to_roughness,
|
|
111
|
+
chunk_hammersley_2d,
|
|
112
|
+
chunk_build_orthonormal_matrix_n,
|
|
113
|
+
chunk_safe_rcp,
|
|
114
|
+
chunk_uniform_sample_cone,
|
|
115
|
+
chunk_texture_octahedral_skirt_texel_uv,
|
|
116
|
+
chunk_texture_octahedral_skirt_uv,
|
|
117
|
+
chunk_uv_octahedral_unit_decode,
|
|
118
|
+
chunk_uv_octahedral_unit_encode,
|
|
119
|
+
chunk_reflection_sample_weight,
|
|
120
|
+
chunk_cone_cosine_from_roughness,
|
|
121
|
+
]
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
export const shader_convolve_reflection_map_from_blurred = new ComputeShader(ShaderDescriptor.from({
|
|
125
|
+
label: 'Convolve reflection map from blurred',
|
|
126
|
+
body,
|
|
127
|
+
resources
|
|
128
|
+
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_downsample_environment_map.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/shader_downsample_environment_map.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_downsample_environment_map.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/shader_downsample_environment_map.js"],"names":[],"mappings":"AAmGA,8DAII;8BAhG0B,+BAA+B"}
|
|
@@ -29,7 +29,6 @@ resources.createGroup()
|
|
|
29
29
|
* (chunk_octahedral_solid_angle): a texel the octahedral fold crosses is no pair of spherical
|
|
30
30
|
* triangles, and a bright one came out 4.7% dim.
|
|
31
31
|
*
|
|
32
|
-
* @see https://github.com/EpicGames/UnrealEngine/blob/5.4/Engine/Shaders/Private/ReflectionEnvironmentShaders.usf DownsamplePS
|
|
33
32
|
* @type {CodeChunk}
|
|
34
33
|
*/
|
|
35
34
|
const body = CodeChunk.from(
|
|
@@ -13,7 +13,7 @@ export class TinyGltf {
|
|
|
13
13
|
* @readonly
|
|
14
14
|
* @type {TextureFormat}
|
|
15
15
|
*/
|
|
16
|
-
static readonly "__#
|
|
16
|
+
static readonly "__#302@#UNCOMPRESSED_TARGET": TextureFormat;
|
|
17
17
|
/**
|
|
18
18
|
* @param {AssetManager} assetManager
|
|
19
19
|
* @param {AssetRequestScope} [scope]
|
|
@@ -9,6 +9,13 @@ export class GPUMaterialManager {
|
|
|
9
9
|
* @param {GPUSamplerManager} [samplers] required by templates that bind shared samplers — terrain's
|
|
10
10
|
*/
|
|
11
11
|
constructor(device: GPUDevice, textures: TextureManager, render_pipelines: RenderPipelineManager, bindings: BindGroupManager, virtual_textures?: VirtualTextureManager, samplers?: GPUSamplerManager);
|
|
12
|
+
/**
|
|
13
|
+
* Sent with a material when {@link update} restages its row because its {@link ShadeMaterial#version}
|
|
14
|
+
* moved: what the scene's material table and the material's uniform hold changes with this frame.
|
|
15
|
+
* Not sent for a material's first row, which {@link obtain} writes.
|
|
16
|
+
* @type {Signal<ShadeMaterial>}
|
|
17
|
+
*/
|
|
18
|
+
onMaterialRestaged: any;
|
|
12
19
|
/**
|
|
13
20
|
*
|
|
14
21
|
* @type {Map<ShadeMaterial, GPUMaterialContext>}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUMaterialManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/GPUMaterialManager.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUMaterialManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/GPUMaterialManager.js"],"names":[],"mappings":"AA4NA;IA4FI;;;;;;;;OAQG;IACH,yCANW,cAAc,oBACd,qBAAqB,YACrB,gBAAgB,qBAChB,qBAAqB,aACrB,iBAAiB,EAiD3B;IAlJD;;;;;OAKG;IACH,wBAAkC;IAOlC;;;OAGG;IACH,UAFU,IAAI,aAAa,EAAE,kBAAkB,CAAC,CAE3B;IAyBrB;;;OAGG;IACH,yCAEC;IAID;;;OAGG;IACH,sBAEC;IAsLD;;;;;;;;OAQG;IACH;QAN+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACE,gBAAgB,EAAhC,MAAM;QACU,oBAAoB,EAApC,MAAM;QACJ;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAiMnF;IAED;;;;OAIG;IACH,iBAHW,aAAa,GACX,kBAAkB,CAqB9B;IAED;;;;;;;;;;;;OAYG;IACH,kBAHW,aAAa,GACX,OAAO,CAyBnB;IAED;;;;OAIG;IACH,gBAaC;IAED;;;;;;;OAOG;IACH,0BAFW,eAAe,QAazB;IAED;;;;;;;;;;;OAWG;IACH,kBAHW,qBAAqB,GACnB,QAAQ,IAAI,CAAC,CAMzB;IAsBD;;;;;;OAMG;IACH,0BAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAED;;;;;;OAMG;IACH,wBAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAuED;;;OAGG;IACH,YAFW,sBAAsB,QAmChC;;CAEJ;8BAr4BY,OAAO,0CAA0C,EAAE,eAAe;6BAClE,OAAO,2BAA2B,EAAE,cAAc;yBAIlD,OAAO,2DAA2D,EAAE,UAAU;qCAC9E,OAAO,wCAAwC,EAAE,sBAAsB;oCACvE,OAAO,gDAAgD,EAAE,qBAAqB;+BAC9E,OAAO,gCAAgC,EAAE,gBAAgB;gCACzD,OAAO,yBAAyB,EAAE,iBAAiB;6BACnD,OAAO,8BAA8B,EAAE,cAAc;oCACrD,OAAO,6CAA6C,EAAE,qBAAqB;4BAC3E,OAAO,oBAAoB,EAAE,aAAa;oCAC1C,OAAO,qCAAqC,EAAE,qBAAqB;mCAtBzE,yBAAyB;mCAjBG,8CAA8C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
|
+
import Signal from "../../../core/events/signal/Signal.js";
|
|
2
3
|
import { BindGroupLayoutDescriptor } from "../../descriptor/binding/BindGroupLayoutDescriptor.js";
|
|
3
4
|
import { BufferBindingLayout } from "../../descriptor/binding/BufferBindingLayout.js";
|
|
4
5
|
import { GPUShaderStage } from "../../descriptor/GPUShaderStage.js";
|
|
@@ -219,6 +220,14 @@ const material_buffer_pipeline_descriptor = RenderPipelineDescriptor.from({
|
|
|
219
220
|
|
|
220
221
|
export class GPUMaterialManager {
|
|
221
222
|
|
|
223
|
+
/**
|
|
224
|
+
* Sent with a material when {@link update} restages its row because its {@link ShadeMaterial#version}
|
|
225
|
+
* moved: what the scene's material table and the material's uniform hold changes with this frame.
|
|
226
|
+
* Not sent for a material's first row, which {@link obtain} writes.
|
|
227
|
+
* @type {Signal<ShadeMaterial>}
|
|
228
|
+
*/
|
|
229
|
+
onMaterialRestaged = new Signal();
|
|
230
|
+
|
|
222
231
|
/**
|
|
223
232
|
* @type {GPUDevice}
|
|
224
233
|
*/
|
|
@@ -906,6 +915,8 @@ export class GPUMaterialManager {
|
|
|
906
915
|
const row = this.#stage_metadata(material_ctx);
|
|
907
916
|
|
|
908
917
|
material_ctx.write_uniform(queue, row);
|
|
918
|
+
|
|
919
|
+
this.onMaterialRestaged.send1(material_ctx.source);
|
|
909
920
|
}
|
|
910
921
|
}
|
|
911
922
|
|
|
@@ -5,12 +5,6 @@ export class GPUResidentMaterialContext {
|
|
|
5
5
|
* @param {GraphicsContext} graphics
|
|
6
6
|
*/
|
|
7
7
|
constructor(device: GPUDevice, graphics: GraphicsContext);
|
|
8
|
-
/**
|
|
9
|
-
* Sent with a material when it is repacked because its {@link ShadeMaterial#version} moved: the
|
|
10
|
-
* row the device reads changes with the next {@link update}. Not sent for a material's first pack.
|
|
11
|
-
* @type {Signal<ShadeMaterial>}
|
|
12
|
-
*/
|
|
13
|
-
onMaterialRepacked: any;
|
|
14
8
|
/**
|
|
15
9
|
*
|
|
16
10
|
* @returns {number}
|
|
@@ -26,10 +20,6 @@ export class GPUResidentMaterialContext {
|
|
|
26
20
|
* @returns {GPUTextureContext}
|
|
27
21
|
*/
|
|
28
22
|
get buffer_textures(): GPUTextureContext;
|
|
29
|
-
/**
|
|
30
|
-
* @returns {GPUBuffer}
|
|
31
|
-
*/
|
|
32
|
-
get buffer_texture_means(): GPUBuffer;
|
|
33
23
|
/**
|
|
34
24
|
*
|
|
35
25
|
* @returns {GPUTextureView}
|
|
@@ -54,8 +44,8 @@ export class GPUResidentMaterialContext {
|
|
|
54
44
|
* Make a material resident, or repack it if its {@link ShadeMaterial#version} has moved since —
|
|
55
45
|
* the same contract {@link GPUMaterialManager} restages by. A hit used to be final, so a factor
|
|
56
46
|
* set after the first pack never reached the row. Every caller re-obtains what it needs before
|
|
57
|
-
* {@link update}: the scene's drawn list,
|
|
58
|
-
* moves, so the check rides on walks that already happen.
|
|
47
|
+
* {@link update} or {@link commit}: the scene's drawn list, the manager's materials whenever its
|
|
48
|
+
* version moves, or what a card capture traces, so the check rides on walks that already happen.
|
|
59
49
|
*
|
|
60
50
|
* @param {ShadeMaterial} material
|
|
61
51
|
* @returns {MaterialInfo}
|
|
@@ -75,6 +65,16 @@ export class GPUResidentMaterialContext {
|
|
|
75
65
|
* @param {GPUSceneContext} scene_context
|
|
76
66
|
*/
|
|
77
67
|
ensure_scene_materials(scene_context: GPUSceneContext): void;
|
|
68
|
+
/**
|
|
69
|
+
* Write what {@link obtain_material} made resident or repacked since the last commit, and the media
|
|
70
|
+
* that moved. Takes none of the manager's materials, unlike {@link update}: for a reader that makes
|
|
71
|
+
* resident only what it reads.
|
|
72
|
+
*/
|
|
73
|
+
commit(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Make every material the manager holds resident, then {@link commit}: for the readers that trace
|
|
76
|
+
* the whole scene.
|
|
77
|
+
*/
|
|
78
78
|
update(): void;
|
|
79
79
|
destroy(): void;
|
|
80
80
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUResidentMaterialContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/resident/GPUResidentMaterialContext.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUResidentMaterialContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/resident/GPUResidentMaterialContext.js"],"names":[],"mappings":"AAgIA;IAqKI;;;;OAIG;IACH,yCAFW,eAAe,EAkDzB;IA9LD;;;OAGG;IACH,6BAEC;IAQD;;;OAGG;IACH,kCAEC;IAQD;;;OAGG;IACH,yCAEC;IAED;;;OAGG;IACH,kCAIC;IAmED;;;;;OAKG;IACH,0BAEC;IAOD;;;;;;OAMG;IACH,8BAEC;IAsJD;;;;;;;;;OASG;IACH,0BAHW,aAAa,GACX,YAAY,CAmBxB;IAgBD;;;;OAIG;IACH,wBAHW,YAAY,GACV,WAAW,CAIvB;IAGD,uBA0DC;IAuFD,wBA8EC;IAED;;;;OAIG;IACH,sCAFW,eAAe,QAUzB;IAoCD;;;;OAIG;IACH,eAGC;IAED;;;OAGG;IACH,eAGC;IAGD,gBAIC;;CACJ;8BA9vBY,OAAO,0BAA0B,EAAE,eAAe;8BAClD,OAAO,gCAAgC,EAAE,eAAe;2BACxD,OAAO,+BAA+B,EAAE,YAAY;4BACpD,OAAO,qBAAqB,EAAE,aAAa;oCAC3C,OAAO,6BAA6B,EAAE,qBAAqB;kCAC3D,OAAO,qCAAqC,EAAE,mBAAmB;kCAlB5C,oCAAoC;AAYtE;;;;;;;GAOG;AAEH;IACI,WAAM;IAEN;;;OAGG;IACH,SAFU,MAAM,CAEJ;IAEZ;;OAEG;IACH,QAFU,qBAAqB,CAExB;IAEP;;OAEG;IACH,gBAFU,WAAW,CAEP;IAEd;;OAEG;IACH,aAFU,WAAW,CAEV;IAEX;;;;OAIG;IACH,gBAFU,WAAW,GAAC,IAAI,CAEZ;IACd;;OAEG;IACH,kBAFU,WAAW,CAEL;IAEhB;;;OAGG;IACH,aAFU,MAAM,CAEe;CAClC;AAqBD;IACI,WAAO;IAEP;;OAEG;IACH,QAFU,YAAY,CAEf;CACV"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
2
|
import { HashMap } from "../../../../core/collection/map/HashMap.js";
|
|
3
|
-
import Signal from "../../../../core/events/signal/Signal.js";
|
|
4
3
|
import IdPool from "../../../../core/IdPool.js";
|
|
5
4
|
import { isPowerOfTwo } from "../../../../core/math/isPowerOfTwo.js";
|
|
6
5
|
import { round_up } from "../../../../core/math/round_up.js";
|
|
7
6
|
import { TextureViewDescriptor } from "../../../descriptor/texture/TextureViewDescriptor.js";
|
|
8
7
|
import { ShadeGPUCommandContext } from "../../../device/ShadeGPUCommandContext.js";
|
|
9
8
|
import { GPU_DATABASE_NULL } from "../../buffer/table/GPU_DATABASE_NULL.js";
|
|
10
|
-
import { WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION } from "../../gpu_primitive/indirect/WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION.js";
|
|
11
9
|
import { MEDIA_TABLE_CAPACITY, MEDIA_TABLE_STRUCT } from "../../medium/MEDIA_TABLE_STRUCT.js";
|
|
12
10
|
import { MEDIUM_STRUCT } from "../../medium/MEDIUM_STRUCT.js";
|
|
13
11
|
import { write_gpu_typed_buffer } from "../../shader/type/serde/write_gpu_typed_buffer.js";
|
|
@@ -25,7 +23,6 @@ import {
|
|
|
25
23
|
RESIDENT_MATERIAL_TEXTURE_RESOLUTION,
|
|
26
24
|
RESIDENT_MATERIAL_TEXTURE_SLOT_RESOLUTION
|
|
27
25
|
} from "./RESIDENT_MATERIAL_TEXTURE_LAYOUT.js";
|
|
28
|
-
import { shader_resident_texture_means, shader_resident_texture_rows } from "./shader_resident_texture_means.js";
|
|
29
26
|
|
|
30
27
|
/**
|
|
31
28
|
* @typedef {import("../../GraphicsContext.js").GraphicsContext} GraphicsContext
|
|
@@ -131,13 +128,6 @@ const NEUTRAL_SURFACE = Object.freeze({
|
|
|
131
128
|
|
|
132
129
|
export class GPUResidentMaterialContext {
|
|
133
130
|
|
|
134
|
-
/**
|
|
135
|
-
* Sent with a material when it is repacked because its {@link ShadeMaterial#version} moved: the
|
|
136
|
-
* row the device reads changes with the next {@link update}. Not sent for a material's first pack.
|
|
137
|
-
* @type {Signal<ShadeMaterial>}
|
|
138
|
-
*/
|
|
139
|
-
onMaterialRepacked = new Signal();
|
|
140
|
-
|
|
141
131
|
/**
|
|
142
132
|
* @type {GraphicsContext}
|
|
143
133
|
*/
|
|
@@ -200,31 +190,6 @@ export class GPUResidentMaterialContext {
|
|
|
200
190
|
return this.#buffer_textures;
|
|
201
191
|
}
|
|
202
192
|
|
|
203
|
-
/**
|
|
204
|
-
* Each texture slot's mean, `vec4<f32>`, of its texels as the atlas stores them: an albedo's colour
|
|
205
|
-
* premultiplied by its coverage. Written whenever the textures are (§6.6 of
|
|
206
|
-
* PROBE_CLIPMAP_PROPOSAL_2026_10_27.md): what a GI hit that no card sees takes of its material.
|
|
207
|
-
* Replaced when the slots outgrow it, so take it each frame.
|
|
208
|
-
*
|
|
209
|
-
* @type {GPUBuffer}
|
|
210
|
-
*/
|
|
211
|
-
#buffer_texture_means;
|
|
212
|
-
|
|
213
|
-
/** The rows' sums the means are made of. @type {GPUBuffer|null} */
|
|
214
|
-
#buffer_texture_rows = null;
|
|
215
|
-
|
|
216
|
-
/** Slots the means hold. */
|
|
217
|
-
#texture_means_capacity = 0;
|
|
218
|
-
|
|
219
|
-
#texture_means_settings = { slot_count: 0 };
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* @returns {GPUBuffer}
|
|
223
|
-
*/
|
|
224
|
-
get buffer_texture_means() {
|
|
225
|
-
return this.#buffer_texture_means;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
193
|
/**
|
|
229
194
|
*
|
|
230
195
|
* @returns {GPUTextureView}
|
|
@@ -368,13 +333,6 @@ export class GPUResidentMaterialContext {
|
|
|
368
333
|
size: MEDIA_TABLE_STRUCT.size,
|
|
369
334
|
});
|
|
370
335
|
|
|
371
|
-
// a slot's worth until the first textures are written
|
|
372
|
-
this.#buffer_texture_means = device.createBuffer({
|
|
373
|
-
label: 'Material Texture Means',
|
|
374
|
-
usage: GPUBufferUsage.STORAGE,
|
|
375
|
-
size: 16,
|
|
376
|
-
});
|
|
377
|
-
|
|
378
336
|
this.#buffer_textures = new GPUTextureContext(device);
|
|
379
337
|
const descriptor = this.#buffer_textures.descriptor;
|
|
380
338
|
|
|
@@ -485,8 +443,8 @@ export class GPUResidentMaterialContext {
|
|
|
485
443
|
* Make a material resident, or repack it if its {@link ShadeMaterial#version} has moved since —
|
|
486
444
|
* the same contract {@link GPUMaterialManager} restages by. A hit used to be final, so a factor
|
|
487
445
|
* set after the first pack never reached the row. Every caller re-obtains what it needs before
|
|
488
|
-
* {@link update}: the scene's drawn list,
|
|
489
|
-
* moves, so the check rides on walks that already happen.
|
|
446
|
+
* {@link update} or {@link commit}: the scene's drawn list, the manager's materials whenever its
|
|
447
|
+
* version moves, or what a card capture traces, so the check rides on walks that already happen.
|
|
490
448
|
*
|
|
491
449
|
* @param {ShadeMaterial} material
|
|
492
450
|
* @returns {MaterialInfo}
|
|
@@ -505,8 +463,6 @@ export class GPUResidentMaterialContext {
|
|
|
505
463
|
this.#pack_material(info);
|
|
506
464
|
} else if (info.version !== material.version) {
|
|
507
465
|
this.#pack_material(info);
|
|
508
|
-
|
|
509
|
-
this.onMaterialRepacked.send1(material);
|
|
510
466
|
}
|
|
511
467
|
|
|
512
468
|
return info;
|
|
@@ -592,8 +548,6 @@ export class GPUResidentMaterialContext {
|
|
|
592
548
|
}
|
|
593
549
|
}
|
|
594
550
|
|
|
595
|
-
this.#record_texture_means(encoder, textures);
|
|
596
|
-
|
|
597
551
|
encoder.finish();
|
|
598
552
|
|
|
599
553
|
}
|
|
@@ -683,65 +637,6 @@ export class GPUResidentMaterialContext {
|
|
|
683
637
|
}
|
|
684
638
|
}
|
|
685
639
|
|
|
686
|
-
/**
|
|
687
|
-
* Every texture slot's mean, after the slots are written (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.6):
|
|
688
|
-
* the rows' sums, then the slots' means, which {@link buffer_texture_means} holds.
|
|
689
|
-
*
|
|
690
|
-
* @param {ShadeGPUCommandContext} encoder
|
|
691
|
-
* @param {TextureInfo[]} textures
|
|
692
|
-
*/
|
|
693
|
-
#record_texture_means(encoder, textures) {
|
|
694
|
-
let slot_count = 0;
|
|
695
|
-
|
|
696
|
-
for (let i = 0; i < textures.length; i++) {
|
|
697
|
-
slot_count = Math.max(slot_count, textures[i].id + 1);
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
if (slot_count === 0) {
|
|
701
|
-
return;
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
if (this.#texture_means_capacity < slot_count) {
|
|
705
|
-
// textures arrive a few at a time as a scene loads: doubling replaces the buffers a
|
|
706
|
-
// logarithmic number of times
|
|
707
|
-
const capacity = Math.max(slot_count, 2 * this.#texture_means_capacity);
|
|
708
|
-
|
|
709
|
-
this.#buffer_texture_means.destroy();
|
|
710
|
-
this.#buffer_texture_rows?.destroy();
|
|
711
|
-
|
|
712
|
-
this.#texture_means_capacity = capacity;
|
|
713
|
-
this.#buffer_texture_means = this.#device.createBuffer({
|
|
714
|
-
label: 'Material Texture Means',
|
|
715
|
-
usage: GPUBufferUsage.STORAGE,
|
|
716
|
-
size: 16 * capacity,
|
|
717
|
-
});
|
|
718
|
-
this.#buffer_texture_rows = this.#device.createBuffer({
|
|
719
|
-
label: 'Material Texture Rows',
|
|
720
|
-
usage: GPUBufferUsage.STORAGE,
|
|
721
|
-
size: 16 * RESIDENT_MATERIAL_TEXTURE_RESOLUTION * capacity,
|
|
722
|
-
});
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
const settings = this.#texture_means_settings;
|
|
726
|
-
|
|
727
|
-
settings.slot_count = slot_count;
|
|
728
|
-
|
|
729
|
-
// a workgroup a slot, folded as folded_workgroup_index reads it: the array holds more slots than a
|
|
730
|
-
// dimension does
|
|
731
|
-
shader_resident_texture_rows.dispatch({
|
|
732
|
-
encoder,
|
|
733
|
-
group_count_x: Math.min(slot_count, WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION),
|
|
734
|
-
group_count_y: Math.ceil(slot_count / WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION),
|
|
735
|
-
bindings: { settings, textures: this.textureView, texture_rows: this.#buffer_texture_rows },
|
|
736
|
-
});
|
|
737
|
-
|
|
738
|
-
shader_resident_texture_means.dispatch({
|
|
739
|
-
encoder,
|
|
740
|
-
group_count_x: Math.ceil(slot_count / 64),
|
|
741
|
-
bindings: { settings, texture_rows: this.#buffer_texture_rows, texture_means: this.#buffer_texture_means },
|
|
742
|
-
});
|
|
743
|
-
}
|
|
744
|
-
|
|
745
640
|
build_materials() {
|
|
746
641
|
|
|
747
642
|
/**
|
|
@@ -871,25 +766,29 @@ export class GPUResidentMaterialContext {
|
|
|
871
766
|
|
|
872
767
|
}
|
|
873
768
|
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
769
|
+
/**
|
|
770
|
+
* Write what {@link obtain_material} made resident or repacked since the last commit, and the media
|
|
771
|
+
* that moved. Takes none of the manager's materials, unlike {@link update}: for a reader that makes
|
|
772
|
+
* resident only what it reads.
|
|
773
|
+
*/
|
|
774
|
+
commit() {
|
|
878
775
|
this.#write_media();
|
|
879
|
-
|
|
880
|
-
if (this.#version === this.#version_commited) {
|
|
881
|
-
return;
|
|
882
|
-
}
|
|
883
|
-
|
|
884
776
|
this.#commit();
|
|
885
777
|
}
|
|
886
778
|
|
|
779
|
+
/**
|
|
780
|
+
* Make every material the manager holds resident, then {@link commit}: for the readers that trace
|
|
781
|
+
* the whole scene.
|
|
782
|
+
*/
|
|
783
|
+
update() {
|
|
784
|
+
this.#update_from_manager();
|
|
785
|
+
this.commit();
|
|
786
|
+
}
|
|
787
|
+
|
|
887
788
|
|
|
888
789
|
destroy() {
|
|
889
790
|
this.#buffer_materials.destroy();
|
|
890
791
|
this.#buffer_media.destroy();
|
|
891
792
|
this.#buffer_textures.destroy();
|
|
892
|
-
this.#buffer_texture_means.destroy();
|
|
893
|
-
this.#buffer_texture_rows?.destroy();
|
|
894
793
|
}
|
|
895
794
|
}
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
* @typedef {import("../../GraphicsContext.js").GraphicsContext} GraphicsContext
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Neural Super Sampling — port of ARM's NSS reference design
|
|
7
|
-
* (`https://github.com/arm/neural-graphics-for-unreal`) onto the
|
|
8
|
-
* engine's FrameGraph.
|
|
6
|
+
* Neural Super Sampling — port of ARM's NSS reference design onto the engine's FrameGraph.
|
|
9
7
|
*
|
|
10
8
|
* Pipeline (per frame):
|
|
11
9
|
* 1. Preprocess — assemble a 12-channel tensor from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NSS.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/NSS.js"],"names":[],"mappings":"AAgCA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"NSS.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/NSS.js"],"names":[],"mappings":"AAgCA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH;IAsaI;;;;;;OAMG;IACH,uDAHW,MAAM,GACJ,MAAM,CAKlB;IAsCD,uGAQC;IAxRD;;OAEG;IACH,sBAFW,eAAe,EAwCzB;IAhOD;;;OAGG;IACH,uBAEC;IAED;;;OAGG;IACH,4BAEC;IAED;;;;;OAKG;IACH,eAFU,OAAO,CAEI;IAErB;;;;;;;;OAQG;IACH,mBAFU,MAAM,CAEQ;IAExB;;;;;;;OAOG;IACH,gBAFU,MAAM,CAEM;IAEtB;;;;;OAKG;IACH,YAFU,MAAM,CAED;IAEf;;;;;;;;;;;OAWG;IACH,mBAFU,MAAM,CAEQ;IAExB;;;;;;OAMG;IACH,gBAFU,MAAM,CAEK;IAErB;;;;;;OAMG;IACH,iBAFU,MAAM,CAEM;IAEtB;;;;;;;;;OASG;IACH,eAFU,MAAM,CAEI;IACpB,wCAAwC;IACxC,eAD8B,MAAM,CAChB;IAkKpB;;;;;OAKG;IACH,+BAyHC;IAED,wCAAwC;IACxC,0BAEC;IArKD;;OAEG;IACH,gBA4BC;IAwID;;OAEG;IACH,uCAEC;IAED;;OAEG;IACH,mCAEC;IAcD;;OAEG;IACH,2BAEC;IA2CD,2BAAkF;IAClF,0BAA+C;IAE/C;;;;;;;;;;;;;;;;;;OAkBG;IACH;QAf4B,KAAK,EAAtB,UAAU;QACG,qBAAqB,EAAlC,MAAM;QACO,qBAAqB,EAAlC,MAAM;QACO,gBAAgB,EAA7B,MAAM;QACO,+BAA+B,EAA5C,MAAM;QAKO,qBAAqB,EAAlC,MAAM;QACO,cAAc,EAA3B,MAAM;QACS,iBAAiB,EAAhC,MAAM,EAAE;QACO,iBAAiB,EAAhC,MAAM,EAAE;QACN,MAAM,CA4NlB;;CACJ;yBA/vBY,OAAO,8DAA8D,EAAE,UAAU;8BACjF,OAAO,0BAA0B,EAAE,eAAe;2BATpC,iBAAiB;0CAvBF,oDAAoD"}
|
|
@@ -36,9 +36,7 @@ import { shader_nss_preprocess } from "./shader_nss_preprocess.js";
|
|
|
36
36
|
*/
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
|
-
* Neural Super Sampling — port of ARM's NSS reference design
|
|
40
|
-
* (`https://github.com/arm/neural-graphics-for-unreal`) onto the
|
|
41
|
-
* engine's FrameGraph.
|
|
39
|
+
* Neural Super Sampling — port of ARM's NSS reference design onto the engine's FrameGraph.
|
|
42
40
|
*
|
|
43
41
|
* Pipeline (per frame):
|
|
44
42
|
* 1. Preprocess — assemble a 12-channel tensor from
|
|
@@ -9,14 +9,13 @@
|
|
|
9
9
|
* ReLU; decoder is conv8..conv12 without bias; 6 parallel output
|
|
10
10
|
* heads each carry their own RESCALE + TABLE LUT.
|
|
11
11
|
*
|
|
12
|
-
* Head ordering
|
|
13
|
-
* QUANTIZED model (NSS.cpp:241-246):
|
|
12
|
+
* Head ordering for the quantized model:
|
|
14
13
|
* slot 0 = Feedback (FB) — passed back to next frame's preprocess
|
|
15
14
|
* slot 1 = ThetaAlpha — sigmoid temporal-blend params
|
|
16
|
-
* slot 2 =
|
|
17
|
-
* slot 3 =
|
|
18
|
-
* slot 4 =
|
|
19
|
-
* slot 5 =
|
|
15
|
+
* slot 2 = KPN column 3 — kernel column 3 (rightmost)
|
|
16
|
+
* slot 3 = KPN column 2
|
|
17
|
+
* slot 4 = KPN column 1
|
|
18
|
+
* slot 5 = KPN column 0 — kernel column 0 (leftmost)
|
|
20
19
|
*
|
|
21
20
|
* The KPN slot order is reversed because ARM packs the network outputs
|
|
22
21
|
* in CONCAT order while our postprocess reads them as columns 0..3.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NSS_NETWORK_SCHEMA.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/NSS_NETWORK_SCHEMA.js"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"NSS_NETWORK_SCHEMA.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/NSS_NETWORK_SCHEMA.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,oEAAoE;AACpE,6CACqE;AAErE;;;;GAIG;AACH,yCAA0C;AAE1C,kEAAkE;AAClE,mCAAoC;AAEpC,6DAA6D;AAC7D,qCAAsC;AAEtC,yCAAyC;AACzC,yCAA0C"}
|
|
@@ -9,14 +9,13 @@
|
|
|
9
9
|
* ReLU; decoder is conv8..conv12 without bias; 6 parallel output
|
|
10
10
|
* heads each carry their own RESCALE + TABLE LUT.
|
|
11
11
|
*
|
|
12
|
-
* Head ordering
|
|
13
|
-
* QUANTIZED model (NSS.cpp:241-246):
|
|
12
|
+
* Head ordering for the quantized model:
|
|
14
13
|
* slot 0 = Feedback (FB) — passed back to next frame's preprocess
|
|
15
14
|
* slot 1 = ThetaAlpha — sigmoid temporal-blend params
|
|
16
|
-
* slot 2 =
|
|
17
|
-
* slot 3 =
|
|
18
|
-
* slot 4 =
|
|
19
|
-
* slot 5 =
|
|
15
|
+
* slot 2 = KPN column 3 — kernel column 3 (rightmost)
|
|
16
|
+
* slot 3 = KPN column 2
|
|
17
|
+
* slot 4 = KPN column 1
|
|
18
|
+
* slot 5 = KPN column 0 — kernel column 0 (leftmost)
|
|
20
19
|
*
|
|
21
20
|
* The KPN slot order is reversed because ARM packs the network outputs
|
|
22
21
|
* in CONCAT order while our postprocess reads them as columns 0..3.
|
|
@@ -52,10 +51,10 @@ export const NSS_NETWORK_SCHEMA = Object.freeze({
|
|
|
52
51
|
// the slot index is what the postprocess reads back.
|
|
53
52
|
{ in: 16, out: 4, output_layer_offset: 0, kind: 'feedback' }, // 12 FB
|
|
54
53
|
{ in: 16, out: 4, output_layer_offset: 1, kind: 'theta_alpha' }, // 13 ThetaAlpha (sigmoid)
|
|
55
|
-
{ in: 16, out: 4, output_layer_offset: 2, kind: 'kpn_col_3' }, // 14
|
|
56
|
-
{ in: 16, out: 4, output_layer_offset: 3, kind: 'kpn_col_2' }, // 15
|
|
57
|
-
{ in: 16, out: 4, output_layer_offset: 4, kind: 'kpn_col_1' }, // 16
|
|
58
|
-
{ in: 16, out: 4, output_layer_offset: 5, kind: 'kpn_col_0' }, // 17
|
|
54
|
+
{ in: 16, out: 4, output_layer_offset: 2, kind: 'kpn_col_3' }, // 14 KPN column 3
|
|
55
|
+
{ in: 16, out: 4, output_layer_offset: 3, kind: 'kpn_col_2' }, // 15 KPN column 2
|
|
56
|
+
{ in: 16, out: 4, output_layer_offset: 4, kind: 'kpn_col_1' }, // 16 KPN column 1
|
|
57
|
+
{ in: 16, out: 4, output_layer_offset: 5, kind: 'kpn_col_0' }, // 17 KPN column 0
|
|
59
58
|
],
|
|
60
59
|
});
|
|
61
60
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_nss_extract_feedback.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_nss_extract_feedback.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js"],"names":[],"mappings":"AA2CA,wDAIG;8BA9C2B,+BAA+B"}
|