@woosh/meep-engine 3.39.0 → 3.41.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/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/geom/3d/quaternion/swing_twist_clamp.d.ts +24 -0
- package/src/core/geom/3d/quaternion/swing_twist_clamp.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/swing_twist_clamp.js +62 -0
- package/src/core/geom/3d/quaternion/swing_twist_compose.d.ts +15 -0
- package/src/core/geom/3d/quaternion/swing_twist_compose.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/swing_twist_compose.js +36 -0
- package/src/core/geom/3d/quaternion/swing_twist_error.d.ts +39 -0
- package/src/core/geom/3d/quaternion/swing_twist_error.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/swing_twist_error.js +85 -0
- package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts +11 -6
- package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.js +27 -13
- package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts +25 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts.map +1 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.js +166 -0
- package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts +5 -3
- package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts.map +1 -1
- package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.js +5 -3
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +17 -4
- package/src/engine/animation/curve/AnimationCurve.d.ts +3 -0
- package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
- package/src/engine/animation/curve/AnimationCurve.js +6 -1
- package/src/engine/asset/loaders/image/avif/threaded_image_encoder.js +1 -1
- package/src/engine/ecs/EntityManager.d.ts +9 -1
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +26 -27
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts +20 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts.map +1 -1
- package/src/engine/ecs/gpu/GPUStateAuthority.js +21 -0
- package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.d.ts +13 -0
- package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.d.ts.map +1 -0
- package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.js +12 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts +6 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts.map +1 -1
- package/src/engine/ecs/gpu/gpu_authority_grant.js +7 -1
- package/src/engine/ecs/gpu/gpu_authority_held.d.ts +14 -0
- package/src/engine/ecs/gpu/gpu_authority_held.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_held.js +23 -0
- package/src/engine/ecs/gpu/gpu_authority_hold.d.ts +23 -0
- package/src/engine/ecs/gpu/gpu_authority_hold.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_hold.js +41 -0
- package/src/engine/ecs/gpu/gpu_authority_unhold.d.ts +14 -0
- package/src/engine/ecs/gpu/gpu_authority_unhold.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_unhold.js +32 -0
- package/src/engine/ecs/ik/IKGoal.d.ts +59 -0
- package/src/engine/ecs/ik/IKGoal.d.ts.map +1 -0
- package/src/engine/ecs/ik/IKGoal.js +83 -0
- package/src/engine/ecs/ik/IKGoalSystem.d.ts +75 -0
- package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -0
- package/src/engine/ecs/ik/IKGoalSystem.js +1456 -0
- package/src/engine/ecs/ik/PLAN.md +179 -0
- package/src/engine/ecs/speaker/VoiceSystem.d.ts +2 -2
- package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
- package/src/engine/ecs/storage/BinaryBufferSerializer.d.ts.map +1 -1
- package/src/engine/ecs/storage/BinaryBufferSerializer.js +4 -5
- package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +7 -3
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +5 -2
- package/src/engine/ecs/system/orderSystemsByDeclaredAccess.d.ts +33 -0
- package/src/engine/ecs/system/orderSystemsByDeclaredAccess.d.ts.map +1 -0
- package/src/engine/ecs/system/orderSystemsByDeclaredAccess.js +282 -0
- package/src/engine/ecs/transform/T64WorldCache.js +139 -139
- package/src/engine/ecs/transform/t64_evaluate_local.d.ts +25 -0
- package/src/engine/ecs/transform/t64_evaluate_local.d.ts.map +1 -0
- package/src/engine/ecs/transform/t64_evaluate_local.js +35 -0
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts +5 -3
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts.map +1 -1
- package/src/engine/ecs/transform/t64_evaluate_world.js +128 -126
- package/src/engine/graphics/ecs/water/Water.d.ts +14 -17
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +100 -110
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +36 -38
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.d.ts +6 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.js +10 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts +3 -3
- package/src/engine/graphics/ecs/water/WaterWaves.js +46 -46
- package/src/engine/graphics/texture/sampler/sampler2d_to_avif.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_to_avif.js +8 -5
- package/src/engine/graphics3/AnimationGraphSystem.d.ts +2 -0
- package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.js +337 -329
- package/src/engine/graphics3/AnimationSystem.d.ts +2 -0
- package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationSystem.js +360 -352
- package/src/engine/graphics3/WaterSystem.d.ts +21 -74
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +174 -367
- package/src/engine/physics/cloth/MEASUREMENTS.md +130 -0
- package/src/engine/physics/cloth/PLAN.md +16 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +5 -6
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +5 -6
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +4 -7
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +4 -7
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +4 -3
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +4 -3
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +10 -0
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +24 -24
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +46 -43
- package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back.js +1 -1
- package/src/engine/physics/constraint/solve_constraints.d.ts +0 -35
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +1 -83
- package/src/engine/physics/ecs/ContactProbe.d.ts +73 -0
- package/src/engine/physics/ecs/ContactProbe.d.ts.map +1 -0
- package/src/engine/physics/ecs/ContactProbe.js +103 -0
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts +44 -0
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/ContactProbeSystem.js +397 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.js +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.d.ts +205 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.js +245 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.d.ts +21 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.js +63 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts +33 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.js +874 -0
- package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.d.ts +27 -0
- package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.js +77 -0
- package/src/engine/physics/inverse_kinematics/two_bone_path_solve.d.ts +36 -0
- package/src/engine/physics/inverse_kinematics/two_bone_path_solve.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/two_bone_path_solve.js +97 -0
- package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts +33 -11
- package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -1
- package/src/engine/physics/inverse_kinematics/two_joint_ik.js +158 -67
- package/src/format/image/avif/api/convert_to_rgba.d.ts +2 -2
- package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -1
- package/src/format/image/avif/api/convert_to_rgba.js +10 -9
- package/src/format/image/avif/api/decode_avif.d.ts +2 -2
- package/src/format/image/avif/api/decode_avif.d.ts.map +1 -1
- package/src/format/image/avif/api/decode_avif.js +1 -1
- package/src/shade/playground/ssr_reprojection/README.md +111 -103
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +68 -68
- package/src/shade/playground/ssr_reprojection/index.html +80 -79
- package/src/shade/playground/ssr_reprojection/main.js +256 -247
- package/src/shade/playground/ssr_variance/capture.js +96 -96
- package/src/shade/playground/ssr_variance/reference.js +78 -78
- package/src/shade/playground/vsm/README.md +96 -0
- package/src/shade/playground/vsm/VSMDebugOverlay.d.ts +49 -0
- package/src/shade/playground/vsm/VSMDebugOverlay.d.ts.map +1 -0
- package/src/shade/playground/vsm/VSMDebugOverlay.js +351 -0
- package/src/shade/playground/vsm/clipmap_panel.d.ts +8 -0
- package/src/shade/playground/vsm/clipmap_panel.d.ts.map +1 -0
- package/src/shade/playground/vsm/clipmap_panel.js +138 -0
- package/src/shade/playground/vsm/index.html +170 -0
- package/src/shade/playground/vsm/main.d.ts +2 -0
- package/src/shade/playground/vsm/main.d.ts.map +1 -0
- package/src/shade/playground/vsm/main.js +389 -0
- package/src/shade/playground/vsm/scenes.d.ts +52 -0
- package/src/shade/playground/vsm/scenes.d.ts.map +1 -0
- package/src/shade/playground/vsm/scenes.js +320 -0
- package/src/shade/playground/vsm/verify_vsm.d.ts +38 -0
- package/src/shade/playground/vsm/verify_vsm.d.ts.map +1 -0
- package/src/shade/playground/vsm/verify_vsm.js +305 -0
- package/src/shade/playground/water_refraction/README.md +57 -9
- package/src/shade/playground/water_refraction/main.js +12 -3
- package/src/shade/playground/water_refraction/world.d.ts +1 -0
- package/src/shade/playground/water_refraction/world.d.ts.map +1 -1
- package/src/shade/playground/water_refraction/world.js +15 -5
- package/src/shade/renderer/Renderer.d.ts +19 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +72 -1
- package/src/shade/renderer/animation/ANIMATION_TRACK_BINDING_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/animation/ANIMATION_TRACK_BINDING_STRUCT.js +10 -1
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +18 -4
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +269 -23
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts +12 -4
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts.map +1 -1
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.js +12 -4
- package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
- package/src/shade/renderer/animation/chunk_pose_accumulator.js +14 -1
- package/src/shade/renderer/animation/pose/PoseChannelIndex.d.ts +78 -0
- package/src/shade/renderer/animation/pose/PoseChannelIndex.d.ts.map +1 -0
- package/src/shade/renderer/animation/pose/PoseChannelIndex.js +274 -0
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts +40 -3
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/PosePlayback.js +77 -3
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts +21 -3
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_local.js +79 -11
- package/src/shade/renderer/animation/shader_animation_apply.js +1 -1
- package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts +3 -2
- package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_pose_resolve.js +187 -176
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +7 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +11 -0
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts +3 -1
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.js +10 -1
- package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_read_code.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_read_code.js +28 -0
- package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_write_code.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_write_code.js +31 -1
- package/src/shade/renderer/geometry/MeshletGeometry.d.ts +3 -0
- package/src/shade/renderer/geometry/MeshletGeometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/MeshletGeometry.js +1 -0
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +62 -4
- package/src/shade/renderer/light/environment/rgbe/parse_rgbe.d.ts +1 -1
- package/src/shade/renderer/light/environment/rgbe/parse_rgbe.js +2 -2
- package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.d.ts +2 -2
- package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.js +6 -14
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js +5 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/medium/ParticipatingMedium.d.ts +3 -0
- package/src/shade/renderer/medium/ParticipatingMedium.d.ts.map +1 -1
- package/src/shade/renderer/medium/ParticipatingMedium.js +7 -0
- package/src/shade/renderer/object_property/chunk_write_object_property.d.ts +3 -1
- package/src/shade/renderer/object_property/chunk_write_object_property.d.ts.map +1 -1
- package/src/shade/renderer/object_property/chunk_write_object_property.js +5 -2
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts +4 -0
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts.map +1 -1
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.js +6 -1
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.js +5 -35
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts +12 -4
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.js +36 -8
- package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.d.ts +3 -0
- package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.js +2 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.d.ts +8 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.js +40 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +150 -137
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.d.ts +3 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.js +44 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.d.ts +5 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.js +35 -0
- package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.d.ts +26 -0
- package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.js +42 -0
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +1 -0
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +113 -105
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts +2 -0
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +177 -167
- package/src/shade/renderer/rasterize/DEPTH_STENCIL_STATE_SHADOW.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/DEPTH_STENCIL_STATE_SHADOW.js +10 -0
- package/src/shade/renderer/rasterize/RasterizationJob.d.ts +1 -2
- package/src/shade/renderer/rasterize/RasterizationJob.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/RasterizationJob.js +1 -2
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts +5 -6
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.js +5 -6
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +2 -2
- 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/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +11 -0
- package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts +1 -1
- package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js +135 -73
- package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts +7 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js +29 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts +19 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts.map +1 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.js +167 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.d.ts +25 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.d.ts.map +1 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.js +124 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.d.ts +19 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.d.ts.map +1 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.js +48 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +17 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +29 -3
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/build_lut_fog_parameters_jendersie_deon.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/build_lut_fog_parameters_jendersie_deon.js +4 -5
- package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.js +1 -5
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.d.ts +30 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.js +54 -0
- package/src/shade/renderer/shader/type/serde/read_gpu_typed_buffer.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/serde/read_gpu_typed_buffer.js +3 -2
- package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.d.ts +19 -0
- package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.js +27 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +1 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +4 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +54 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +502 -10
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts +3 -2
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/Shadowmap.js +3 -2
- package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts +8 -0
- package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.js +34 -3
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +3 -2
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +17 -2
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.js +137 -133
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.d.ts +15 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.js +14 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.d.ts +16 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.js +15 -0
- package/src/shade/renderer/shadow/vsm/PLAN.md +440 -0
- package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +43 -0
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts +42 -0
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.js +153 -0
- package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts +327 -0
- package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSMPageManager.js +1408 -0
- package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.d.ts +14 -0
- package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.js +13 -0
- package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.d.ts +63 -0
- package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.js +70 -0
- package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.d.ts +11 -0
- package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.js +10 -0
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts +54 -0
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.js +75 -0
- package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.d.ts +23 -0
- package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.js +85 -0
- package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.d.ts +16 -0
- package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.js +29 -0
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts +136 -25
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +282 -116
- package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.d.ts +39 -0
- package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.js +289 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.d.ts +18 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.js +65 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.d.ts +17 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.js +75 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts +14 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.js +45 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.d.ts +17 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.js +100 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.d.ts +15 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.js +47 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.d.ts +26 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.js +156 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.d.ts +13 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.js +65 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts +30 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.js +184 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts +23 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.js +109 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.d.ts +56 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.js +211 -0
- package/src/shade/renderer/texture/format/decode_typed_gpu_data.d.ts +1 -1
- package/src/shade/renderer/texture/format/decode_typed_gpu_data.d.ts.map +1 -1
- package/src/shade/renderer/texture/format/decode_typed_gpu_data.js +3 -13
- package/src/shade/renderer/texture/format/infer_format_from_parameters.d.ts.map +1 -1
- package/src/shade/renderer/texture/format/infer_format_from_parameters.js +2 -3
- package/src/shade/renderer/texture/texture_write_to_gpu.d.ts.map +1 -1
- package/src/shade/renderer/texture/texture_write_to_gpu.js +16 -16
- package/src/shade/renderer/texture/virtual/VTPhysicalCache.d.ts +4 -90
- package/src/shade/renderer/texture/virtual/VTPhysicalCache.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/VTPhysicalCache.js +6 -210
- package/src/shade/renderer/texture/virtual/VTPhysicalSlots.d.ts +119 -0
- package/src/shade/renderer/texture/virtual/VTPhysicalSlots.d.ts.map +1 -0
- package/src/shade/renderer/texture/virtual/VTPhysicalSlots.js +245 -0
- package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.d.ts +1 -1
- package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.js +3 -19
- package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.d.ts +13 -0
- package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.d.ts.map +1 -0
- package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.js +34 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +7 -2
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +49 -49
- package/src/shade/renderer/water/chunk_water_transport.js +3 -3
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +11 -25
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +64 -116
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts +1 -20
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.js +10 -42
- package/src/shade/renderer/water/medium/chunk_water_bodies.d.ts +3 -0
- package/src/shade/renderer/water/medium/chunk_water_bodies.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/chunk_water_bodies.js +3 -0
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +1 -5
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +32 -30
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +4 -0
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/shader_water_meshlets.js +69 -0
- package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -1
- package/src/shade/renderer/water/optics/chunk_water_inscatter.js +124 -123
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -1
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +75 -74
- package/src/shade/renderer/water/shader_water.d.ts +1 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +490 -406
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +12 -85
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +128 -408
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +6 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +23 -0
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +9 -0
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_tessellation.js +144 -0
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +3 -5
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/chunk_water_wave.js +40 -48
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +14 -0
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/graph_water_tessellation.js +34 -0
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +4 -0
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_tiles.js +123 -0
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +6 -0
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_wave_batch.js +85 -0
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +6 -0
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_wave_domain.js +83 -0
- package/src/shade/renderer/water/water_height_texture_from_sampler.d.ts.map +1 -1
- package/src/shade/renderer/water/water_height_texture_from_sampler.js +4 -3
- package/src/engine/ecs/ik/IKConstraint.d.ts +0 -52
- package/src/engine/ecs/ik/IKConstraint.d.ts.map +0 -1
- package/src/engine/ecs/ik/IKConstraint.js +0 -95
- package/src/engine/ecs/ik/IKProblem.d.ts +0 -45
- package/src/engine/ecs/ik/IKProblem.d.ts.map +0 -1
- package/src/engine/ecs/ik/IKProblem.js +0 -58
- package/src/engine/ecs/ik/IKSolver.d.ts +0 -8
- package/src/engine/ecs/ik/IKSolver.d.ts.map +0 -1
- package/src/engine/ecs/ik/IKSolver.js +0 -9
- package/src/engine/ecs/ik/InverseKinematics.d.ts +0 -48
- package/src/engine/ecs/ik/InverseKinematics.d.ts.map +0 -1
- package/src/engine/ecs/ik/InverseKinematics.js +0 -119
- package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.d.ts +0 -19
- package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.d.ts.map +0 -1
- package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.js +0 -72
- package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts +0 -54
- package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +0 -1
- package/src/engine/ecs/ik/InverseKinematicsSystem.js +0 -212
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts +0 -8
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +0 -1
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +0 -153
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts +0 -5
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +0 -1
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +0 -120
- package/src/engine/ecs/ik/ik_bone_chain.d.ts +0 -64
- package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +0 -1
- package/src/engine/ecs/ik/ik_bone_chain.js +0 -142
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +0 -42
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +0 -1
- package/src/engine/ecs/ik/ik_probe_terrain_contact.js +0 -123
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +0 -18
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +0 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.js +0 -32
- package/src/engine/graphics/ecs/water/WATER_SIZE.d.ts +0 -2
- package/src/engine/graphics/ecs/water/WATER_SIZE.d.ts.map +0 -1
- package/src/engine/graphics/ecs/water/WATER_SIZE.js +0 -1
- package/src/shade/renderer/light/GPUViewLightContext.d.ts +0 -22
- package/src/shade/renderer/light/GPUViewLightContext.d.ts.map +0 -1
- package/src/shade/renderer/light/GPUViewLightContext.js +0 -62
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts +0 -14
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.js +0 -20
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts +0 -27
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +0 -147
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts +0 -7
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.js +0 -10
- package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.d.ts +0 -2
- package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.js +0 -1
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts +0 -3
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.js +0 -8
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts +0 -27
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.js +0 -102
- package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.d.ts +0 -8
- package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.js +0 -34
- package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.d.ts +0 -10
- package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.js +0 -64
- package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts +0 -11
- package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/decode_tile_address.js +0 -26
- package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.d.ts +0 -2
- package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.js +0 -11
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts +0 -20
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.js +0 -184
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts +0 -25
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.js +0 -230
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts +0 -19
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.js +0 -127
- package/src/shade/renderer/texture/encode/ENCODE_NOTES_2026_09_02.md +0 -462
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts +0 -23
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts.map +0 -1
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts +0 -18
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts +0 -12
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.js +0 -27
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts +0 -14
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.js +0 -49
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts +0 -9
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.js +0 -47
- package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts +0 -10
- package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_surface_write.js +0 -51
- package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts +0 -12
- package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_wave_step.js +0 -54
- package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts +0 -13
- package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/water_surface_grid_indices.js +0 -39
|
@@ -6,8 +6,7 @@ export class RasterizationJob {
|
|
|
6
6
|
pipeline_type: number;
|
|
7
7
|
/**
|
|
8
8
|
* Side-to-cullMode lookup applied per material bucket. Default {@link CullPolicy.Standard}
|
|
9
|
-
* matches main-pass culling
|
|
10
|
-
* face of sided geometry is what gets written into the shadow map.
|
|
9
|
+
* matches main-pass culling, which shadow casters use too.
|
|
11
10
|
* @type {Readonly<Record<number, GPUCullMode>>}
|
|
12
11
|
*/
|
|
13
12
|
cull_policy: Readonly<Record<number, GPUCullMode>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RasterizationJob.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/rasterize/RasterizationJob.js"],"names":[],"mappings":";;;;AAcA;IACI,sBAAmD;IAEnD
|
|
1
|
+
{"version":3,"file":"RasterizationJob.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/rasterize/RasterizationJob.js"],"names":[],"mappings":";;;;AAcA;IACI,sBAAmD;IAEnD;;;;OAIG;IACH,aAFU,SAAS,OAAO,MAAM,cAAc,CAAC,CAEb;IAElC;;OAEG;IACH,kCAAW;IACX;;;;OAIG;IACH,0CAAiB;IAEjB;;OAEG;IACH,4BAAa;IAEb;;;OAGG;IACH,UAFU,MAAM,EAAE,CAEV;IAER;;OAEG;IACH,yBAAQ;IAER;;;OAGG;IACH,gBAAyB;IAEzB;;;OAGG;IACH,sBAA+B;CAClC"}
|
|
@@ -17,8 +17,7 @@ export class RasterizationJob {
|
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Side-to-cullMode lookup applied per material bucket. Default {@link CullPolicy.Standard}
|
|
20
|
-
* matches main-pass culling
|
|
21
|
-
* face of sided geometry is what gets written into the shadow map.
|
|
20
|
+
* matches main-pass culling, which shadow casters use too.
|
|
22
21
|
* @type {Readonly<Record<number, GPUCullMode>>}
|
|
23
22
|
*/
|
|
24
23
|
cull_policy = CullPolicy.Standard;
|
|
@@ -16,12 +16,11 @@ export function construct_primitive_state(draw_mode: ShadeDrawMode, side: ShadeD
|
|
|
16
16
|
*
|
|
17
17
|
* - `Standard` is the main-pass mapping: a one-sided material renders the face its winding
|
|
18
18
|
* presents (cull back), `Double` renders both.
|
|
19
|
-
* - `Reversed` culls the other way, so the *back* face is what gets drawn
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* `Double` has no opposite and stays at `none`.
|
|
19
|
+
* - `Reversed` culls the other way, so the *back* face is what gets drawn — "back-face
|
|
20
|
+
* shadow casting". Shadow casters do not use it: they cull as the main view does, and the
|
|
21
|
+
* shared rasterizer slope bias keeps acne off; back faces on top of that bias left a gap of
|
|
22
|
+
* a shadow texel or so where a caster meets the ground. `Double` has no opposite and stays
|
|
23
|
+
* at `none`.
|
|
25
24
|
*/
|
|
26
25
|
export type CullPolicy = Readonly<Record<number, GPUCullMode>>;
|
|
27
26
|
export namespace CullPolicy {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construct_primitive_state.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/construct_primitive_state.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"construct_primitive_state.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/construct_primitive_state.js"],"names":[],"mappings":"AA2DA;;;;;;GAMG;AACH,qDALW,aAAa,QACb,aAAa,gBACb,SAAS,OAAO,MAAM,cAAc,CAAC,GACnC,cAAc,CA2B1B;;;;;;;;;;;;;;;;;yBA5DS,SAAS,OAAO,MAAM,cAAc,CAAC;;;;;;;;;AAe/C;;;;;;;GAOG;AACH,yCAFU,cAAc,aAAa,CAAC,CAKnC;8BAxD2B,iCAAiC;8BACjC,iCAAiC;+BAFhC,uDAAuD"}
|
|
@@ -23,12 +23,11 @@ const lut_topology = {
|
|
|
23
23
|
*
|
|
24
24
|
* - `Standard` is the main-pass mapping: a one-sided material renders the face its winding
|
|
25
25
|
* presents (cull back), `Double` renders both.
|
|
26
|
-
* - `Reversed` culls the other way, so the *back* face is what gets drawn
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* `Double` has no opposite and stays at `none`.
|
|
26
|
+
* - `Reversed` culls the other way, so the *back* face is what gets drawn — "back-face
|
|
27
|
+
* shadow casting". Shadow casters do not use it: they cull as the main view does, and the
|
|
28
|
+
* shared rasterizer slope bias keeps acne off; back faces on top of that bias left a gap of
|
|
29
|
+
* a shadow texel or so where a caster meets the ground. `Double` has no opposite and stays
|
|
30
|
+
* at `none`.
|
|
32
31
|
*
|
|
33
32
|
* @enum {Readonly<Record<number, GPUCullMode>>}
|
|
34
33
|
*/
|
|
@@ -128,10 +128,10 @@ export type AVBOITSideChannel = {
|
|
|
128
128
|
emission: number;
|
|
129
129
|
};
|
|
130
130
|
/**
|
|
131
|
-
* whether the channel would add nothing this
|
|
131
|
+
* whether the channel would add nothing for this view;
|
|
132
132
|
* asked before the orchestrator records, and a channel that answers `true` is not asked for
|
|
133
133
|
* anything else in that frame.
|
|
134
134
|
*/
|
|
135
|
-
avboit_is_empty?: () => boolean;
|
|
135
|
+
avboit_is_empty?: (view: import("../../../view/GPUViewContext.js").GPUViewContext) => boolean;
|
|
136
136
|
};
|
|
137
137
|
//# sourceMappingURL=AVBOITSideChannel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AVBOITSideChannel.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAoCc,CAAC,IAAI,EAAE;QAAC,KAAK,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QACjH,QAAc,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QACzF,aAAmB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAC3E,WAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QACvD,wBAA8B,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QACjG,eAAqB,EAAE,MAAM,CAAC;QAC9B,sBAA4B,EAAE,OAAO,uCAAuC,EAAE,yBAAyB,CAAC;KACrG,KAAK;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAC;;;;;sBAKtB,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,MAAY,EAAE,MAAM,CAAC;QACrB,kBAAwB,EAAE,UAAU,MAAM,CAAC,CAAC;QAC5C,SAAe,EAAE,MAAM,CAAC;KACrB,KAAK,MAAM;;;;;;;;kBAED,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,MAAY,EAAE,MAAM,CAAC;QACrB,IAAU,EAAE,MAAM,CAAC;QACnB,aAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,MAAY,EAAE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,CAAC;KACjE,KAAK;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC;;;;;;;;;;;;;iBAKhD,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,QAAc,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QACzE,MAAY,EAAE,MAAM,CAAC;QACrB,aAAmB,EAAE,MAAM,CAAC;QAC5B,IAAU,EAAE,MAAM,CAAC;QACnB,QAAc,EAAE,MAAM,CAAC;QACvB,eAAqB,EAAE,MAAM,CAAC;QAC9B,oBAA0B,EAAE,MAAM,CAAC;QACnC,sBAA4B,EAAE;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC;QACxD,YAAkB,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC,CAAC;KACrF,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;;;;;;sBAU9D,
|
|
1
|
+
{"version":3,"file":"AVBOITSideChannel.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAoCc,CAAC,IAAI,EAAE;QAAC,KAAK,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QACjH,QAAc,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QACzF,aAAmB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAC3E,WAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QACvD,wBAA8B,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QACjG,eAAqB,EAAE,MAAM,CAAC;QAC9B,sBAA4B,EAAE,OAAO,uCAAuC,EAAE,yBAAyB,CAAC;KACrG,KAAK;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAC;;;;;sBAKtB,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,MAAY,EAAE,MAAM,CAAC;QACrB,kBAAwB,EAAE,UAAU,MAAM,CAAC,CAAC;QAC5C,SAAe,EAAE,MAAM,CAAC;KACrB,KAAK,MAAM;;;;;;;;kBAED,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,MAAY,EAAE,MAAM,CAAC;QACrB,IAAU,EAAE,MAAM,CAAC;QACnB,aAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,MAAY,EAAE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,CAAC;KACjE,KAAK;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC;;;;;;;;;;;;;iBAKhD,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,QAAc,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QACzE,MAAY,EAAE,MAAM,CAAC;QACrB,aAAmB,EAAE,MAAM,CAAC;QAC5B,IAAU,EAAE,MAAM,CAAC;QACnB,QAAc,EAAE,MAAM,CAAC;QACvB,eAAqB,EAAE,MAAM,CAAC;QAC9B,oBAA0B,EAAE,MAAM,CAAC;QACnC,sBAA4B,EAAE;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC;QACxD,YAAkB,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC,CAAC;KACrF,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;;;;;;sBAU9D,CAAC,IAAI,EAAE,OAAO,iCAAiC,EAAE,cAAc,KAAK,OAAO"}
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
* (`chunk_volumetrics_irradiance_sh`), for a channel whose fragments are lit: the renderer's
|
|
87
87
|
* indirect lighting, whichever mode it runs, and the scene's lights, shadowed and attenuated by
|
|
88
88
|
* the fog, written by the pass that lights the fog.
|
|
89
|
-
* @property {() => boolean} [avboit_is_empty] whether the channel would add nothing this
|
|
89
|
+
* @property {(view: import("../../../view/GPUViewContext.js").GPUViewContext) => boolean} [avboit_is_empty] whether the channel would add nothing for this view;
|
|
90
90
|
* asked before the orchestrator records, and a channel that answers `true` is not asked for
|
|
91
91
|
* anything else in that frame.
|
|
92
92
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SCENE_DATABASE_SPEC.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/SCENE_DATABASE_SPEC.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SCENE_DATABASE_SPEC.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/SCENE_DATABASE_SPEC.js"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wDASG;sCAtBmC,0CAA0C"}
|
|
@@ -2,6 +2,8 @@ import { GPUDatabaseDefinition } from "../buffer/table/GPUDatabaseDefinition.js"
|
|
|
2
2
|
import { MESH_INSTANCE_METADATA_STRUCT } from "./MESH_INSTANCE_METADATA_STRUCT.js";
|
|
3
3
|
import { NODE3D_STRUCT } from "./NODE3D_STRUCT.js";
|
|
4
4
|
import { PARTICIPATING_MEDIA_VOLUME_STRUCT } from "../volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.js";
|
|
5
|
+
import { WATER_BODY_STRUCT } from "../water/medium/WATER_BODIES_STRUCT.js";
|
|
6
|
+
import { WATER_WAVE_RECORD_STRUCT } from "../water/surface/WATER_WAVE_RECORD_STRUCT.js";
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* Schema for the scene's GPU-resident records — meshes and the
|
|
@@ -16,8 +18,17 @@ export const SCENE_DATABASE_SPEC = GPUDatabaseDefinition.from({
|
|
|
16
18
|
// GPUSceneVolumetrics whenever their version moves; read by the froxel volumetrics and by the
|
|
17
19
|
// ray passes through chunk_participating_media_volumes_iterate
|
|
18
20
|
participating_media_volumes: PARTICIPATING_MEDIA_VOLUME_STRUCT,
|
|
21
|
+
water_bodies: WATER_BODY_STRUCT,
|
|
22
|
+
water_waves: WATER_WAVE_RECORD_STRUCT,
|
|
19
23
|
});
|
|
20
24
|
|
|
25
|
+
SCENE_DATABASE_SPEC.add_link({ table: 'water_bodies', field: 'node', target_database: SCENE_DATABASE_SPEC,
|
|
26
|
+
target_table: 'transforms', nullable: false, owning: false });
|
|
27
|
+
SCENE_DATABASE_SPEC.add_link({ table: 'water_bodies', field: 'wave', target_database: SCENE_DATABASE_SPEC,
|
|
28
|
+
target_table: 'water_waves', nullable: true, owning: true });
|
|
29
|
+
SCENE_DATABASE_SPEC.add_link({ table: 'water_waves', field: 'node', target_database: SCENE_DATABASE_SPEC,
|
|
30
|
+
target_table: 'transforms', nullable: false, owning: false });
|
|
31
|
+
|
|
21
32
|
// A mesh's transform. A mesh row and its transforms row are the same row — the entity's, one on —
|
|
22
33
|
// so this word always names its own index, and it is declared as the link it is.
|
|
23
34
|
SCENE_DATABASE_SPEC.add_link({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry_deduplicate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry_deduplicate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js"],"names":[],"mappings":"AAyDA;;;;;;;;;;GAUG;AACH,qGAHW,0BAA0B,GACxB,cAAc,CAAC,WAAW,WAAW,EAAE,CAAC,CA4LpD;;;;;gBAoJa,MAAM;gBACN,MAAM;gBACN,MAAM;;;;YACN,MAAM;;;gBAlYN,UAAU;;;;qBACV,MAAM;;;;;;;;uBACN,MAAM;;;;kBAKN,MAAM;;4BAtBQ,oDAAoD"}
|
|
@@ -6,13 +6,14 @@ import { Transform64 } from "../../../../../engine/ecs/transform/Transform64.js"
|
|
|
6
6
|
import { StandardAttributes } from "../../../geometry/StandardAttributes.js";
|
|
7
7
|
import { anchor_grow_topological } from "./internal/anchor_grow_topological.js";
|
|
8
8
|
import { cover_greedy } from "./internal/cover_greedy.js";
|
|
9
|
+
import { face_neighbourhood_hash } from "./internal/face_neighbourhood_hash.js";
|
|
9
10
|
import { geometry_extract_subset } from "./internal/geometry_extract_subset.js";
|
|
10
11
|
import { geometry_to_topology } from "./internal/geometry_to_topology.js";
|
|
11
12
|
import { GLOBAL_RESIDUAL_THRESHOLD_FRACTION, match_refit_and_validate } from "./internal/match_refit_validate.js";
|
|
12
13
|
import { match_validate_topology } from "./internal/match_validate_topology.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { ANCHOR_STRIDE, neighbourhood_anchor_index } from "./internal/neighbourhood_anchor_index.js";
|
|
15
|
+
import { seed_correspondence_from_face_pair } from "./internal/seed_correspondence_from_face_pair.js";
|
|
16
|
+
import { vertex_attribute_pairs } from "./internal/vertex_attributes_equal.js";
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* @typedef GeometryDeduplicateOptions
|
|
@@ -23,9 +24,20 @@ import { triangle_fingerprint_stream } from "./internal/triangle_fingerprint_str
|
|
|
23
24
|
* own tolerance ≈ `min(diag_a, diag_b) * 1e-4`.
|
|
24
25
|
* When provided, the per-pair derivation is
|
|
25
26
|
* clamped to this value (the tighter wins).
|
|
26
|
-
* @property {number} [seed_budget=256] Max
|
|
27
|
+
* @property {number} [seed_budget=256] Max triangles kept per neighbourhood hash
|
|
27
28
|
*/
|
|
28
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Edge-steps of neighbourhood each triangle's anchor hash takes in ({@link face_neighbourhood_hash}).
|
|
32
|
+
* Fewer make a hash that more unrelated triangles share, and more growth spent finding that out; more
|
|
33
|
+
* keep a triangle from anchoring unless the piece around it is that much wider, and thin pieces go
|
|
34
|
+
* unfound. Measured on Sponza through scene_optimize's meshlet round trip, triangles shared and time
|
|
35
|
+
* taken (single runs on a busy machine): 2 rounds 147.3k in 6.5 s, 3 rounds 145.8k in 5.2 s, 4 rounds
|
|
36
|
+
* 144.8k in 3.6 s, 6 rounds 136.4k in 2.6 s.
|
|
37
|
+
* @type {number}
|
|
38
|
+
*/
|
|
39
|
+
const NEIGHBOURHOOD_ROUNDS = 3;
|
|
40
|
+
|
|
29
41
|
/**
|
|
30
42
|
* Relative tolerance for the per-anchor `position_epsilon` derivation.
|
|
31
43
|
* The smaller of the two paired geometries' bounding-box diagonals is multiplied
|
|
@@ -94,12 +106,14 @@ export function geometry_deduplicate({
|
|
|
94
106
|
// loop can derive a per-pair tolerance without recomputing bounds.
|
|
95
107
|
const geom_diagonals = compute_geometry_diagonals(unique_geoms);
|
|
96
108
|
|
|
97
|
-
//
|
|
98
|
-
|
|
109
|
+
// ──────────────────── Stage B: neighbourhood hashes ────────────────────
|
|
110
|
+
// Keyed on the triangles around each triangle, not on its place in the index stream: a meshlet build
|
|
111
|
+
// orders a turned copy's triangles differently from the original's, and no run of them survives.
|
|
112
|
+
let hashes = unique_geoms.map(g => face_neighbourhood_hash(g, NEIGHBOURHOOD_ROUNDS));
|
|
99
113
|
|
|
100
|
-
//
|
|
101
|
-
const anchors =
|
|
102
|
-
|
|
114
|
+
// ────────────────────── Stage C: anchors ──────────────────────
|
|
115
|
+
const anchors = neighbourhood_anchor_index(hashes, seed_budget);
|
|
116
|
+
hashes = null; // the hashes aren't needed past this point — let GC reclaim
|
|
103
117
|
|
|
104
118
|
// ────────────────────── Stage D: grow each anchor ──────────────────────
|
|
105
119
|
/** @type {Map<number, BinaryTopology>} */
|
|
@@ -118,79 +132,52 @@ export function geometry_deduplicate({
|
|
|
118
132
|
/** Per-geom faces already covered by an accepted grown match. */
|
|
119
133
|
const grown_face_set_per_geom = new Map();
|
|
120
134
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const b_grown = get_or_create_set(grown_face_set_per_geom, anchor.b_geom);
|
|
135
|
+
/** @type {Map<number, number>} an anchor's seed, rewritten per attempt; growth works on a copy */
|
|
136
|
+
const seed = new Map();
|
|
124
137
|
|
|
125
|
-
|
|
126
|
-
|
|
138
|
+
for (let i = 0; i < anchors.length; i += ANCHOR_STRIDE) {
|
|
139
|
+
const a_index = anchors[i];
|
|
140
|
+
const a_face = anchors[i + 1];
|
|
141
|
+
const b_index = anchors[i + 2];
|
|
142
|
+
const b_face = anchors[i + 3];
|
|
127
143
|
|
|
128
|
-
const
|
|
129
|
-
const
|
|
130
|
-
const topology_a = get_topology(anchor.a_geom);
|
|
131
|
-
const topology_b = get_topology(anchor.b_geom);
|
|
144
|
+
const a_grown = get_or_create_set(grown_face_set_per_geom, a_index);
|
|
145
|
+
const b_grown = get_or_create_set(grown_face_set_per_geom, b_index);
|
|
132
146
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
);
|
|
139
|
-
if (seed === null) continue;
|
|
147
|
+
if (a_grown.has(a_face) && b_grown.has(b_face)) continue;
|
|
148
|
+
|
|
149
|
+
const topology_a = get_topology(a_index);
|
|
150
|
+
const topology_b = get_topology(b_index);
|
|
151
|
+
const attributes = vertex_attribute_pairs(unique_geoms[a_index], unique_geoms[b_index]);
|
|
140
152
|
|
|
141
153
|
const pair_epsilon = derive_pair_epsilon(
|
|
142
|
-
geom_diagonals[
|
|
143
|
-
geom_diagonals[
|
|
154
|
+
geom_diagonals[a_index],
|
|
155
|
+
geom_diagonals[b_index],
|
|
144
156
|
position_epsilon
|
|
145
157
|
);
|
|
146
158
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const matched_set_a = new Set(grown.faces_a);
|
|
160
|
-
if (!match_validate_topology(
|
|
161
|
-
topology_a, topology_b,
|
|
162
|
-
matched_set_a, grown.face_correspondence, grown.vertex_correspondence
|
|
163
|
-
)) {
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
159
|
+
// the anchor pairs two triangles; which corner lies on which is for attributes, then positions, to say
|
|
160
|
+
for (let offset = 0; offset < 3; offset++) {
|
|
161
|
+
if (!seed_correspondence_from_face_pair(seed, attributes, topology_a, topology_b, a_face, b_face, offset)) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const match = grow_validated_match(
|
|
166
|
+
unique_geoms, a_index, b_index,
|
|
167
|
+
topology_a, topology_b,
|
|
168
|
+
seed, a_face, b_face,
|
|
169
|
+
pair_epsilon, min_primitives
|
|
170
|
+
);
|
|
166
171
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
geometry_a: a_geom,
|
|
174
|
-
geometry_b: b_geom,
|
|
175
|
-
vertex_correspondence: grown.vertex_correspondence,
|
|
176
|
-
transform: grown.transform,
|
|
177
|
-
threshold: pair_epsilon * GLOBAL_RESIDUAL_THRESHOLD_FRACTION,
|
|
178
|
-
});
|
|
179
|
-
if (!validation.valid) {
|
|
180
|
-
continue;
|
|
181
|
-
}
|
|
172
|
+
if (match === null) continue;
|
|
173
|
+
|
|
174
|
+
for (const f of match.faces_a) a_grown.add(f);
|
|
175
|
+
for (const f of match.faces_b) b_grown.add(f);
|
|
176
|
+
|
|
177
|
+
matches.push(match);
|
|
182
178
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
matches.push({
|
|
187
|
-
a_geom: anchor.a_geom,
|
|
188
|
-
b_geom: anchor.b_geom,
|
|
189
|
-
faces_a: grown.faces_a,
|
|
190
|
-
faces_b: grown.faces_b,
|
|
191
|
-
transform: grown.transform,
|
|
192
|
-
max_residual: validation.max_residual,
|
|
193
|
-
});
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
194
181
|
}
|
|
195
182
|
|
|
196
183
|
// ────────────────────── Stage E: greedy cover ──────────────────────
|
|
@@ -267,6 +254,76 @@ export function geometry_deduplicate({
|
|
|
267
254
|
return result;
|
|
268
255
|
}
|
|
269
256
|
|
|
257
|
+
/**
|
|
258
|
+
* Grow a match out from a seeded triangle pair, and keep it only if it covers at least `min_primitives`
|
|
259
|
+
* triangles, its connectivity is the same on both sides, and one transform fitted to all of it still
|
|
260
|
+
* places every vertex within tolerance.
|
|
261
|
+
*
|
|
262
|
+
* @param {Geometry[]} unique_geoms
|
|
263
|
+
* @param {number} a_geom index of A in `unique_geoms`
|
|
264
|
+
* @param {number} b_geom index of B in `unique_geoms`
|
|
265
|
+
* @param {BinaryTopology} topology_a
|
|
266
|
+
* @param {BinaryTopology} topology_b
|
|
267
|
+
* @param {Map<number, number>} seed vertex of A → vertex of B, for the seed triangles' corners
|
|
268
|
+
* @param {number} seed_face_a
|
|
269
|
+
* @param {number} seed_face_b
|
|
270
|
+
* @param {number} pair_epsilon
|
|
271
|
+
* @param {number} min_primitives
|
|
272
|
+
* @returns {import("./internal/cover_greedy.js").GrownMatchRecord|null}
|
|
273
|
+
*/
|
|
274
|
+
function grow_validated_match(
|
|
275
|
+
unique_geoms, a_geom, b_geom,
|
|
276
|
+
topology_a, topology_b,
|
|
277
|
+
seed, seed_face_a, seed_face_b,
|
|
278
|
+
pair_epsilon, min_primitives
|
|
279
|
+
) {
|
|
280
|
+
const geometry_a = unique_geoms[a_geom];
|
|
281
|
+
const geometry_b = unique_geoms[b_geom];
|
|
282
|
+
|
|
283
|
+
const grown = anchor_grow_topological({
|
|
284
|
+
geometry_a,
|
|
285
|
+
geometry_b,
|
|
286
|
+
topology_a, topology_b,
|
|
287
|
+
initial_vertex_correspondence: seed,
|
|
288
|
+
seed_face_a,
|
|
289
|
+
seed_face_b,
|
|
290
|
+
position_epsilon: pair_epsilon,
|
|
291
|
+
});
|
|
292
|
+
if (grown === null) return null;
|
|
293
|
+
if (grown.faces_a.length < min_primitives) return null;
|
|
294
|
+
|
|
295
|
+
const matched_set_a = new Set(grown.faces_a);
|
|
296
|
+
if (!match_validate_topology(
|
|
297
|
+
topology_a, topology_b,
|
|
298
|
+
matched_set_a, grown.face_correspondence, grown.vertex_correspondence
|
|
299
|
+
)) {
|
|
300
|
+
return null;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// Global post-grow residual check: the per-face check inside growth
|
|
304
|
+
// uses the incrementally-refit transform, so cumulative drift can
|
|
305
|
+
// smuggle past-acceptable faces through while the final fit produces
|
|
306
|
+
// worse residuals elsewhere. Refit on all correspondences and reject
|
|
307
|
+
// if any vertex deviates by more than a fraction of pair_epsilon.
|
|
308
|
+
const validation = match_refit_and_validate({
|
|
309
|
+
geometry_a,
|
|
310
|
+
geometry_b,
|
|
311
|
+
vertex_correspondence: grown.vertex_correspondence,
|
|
312
|
+
transform: grown.transform,
|
|
313
|
+
threshold: pair_epsilon * GLOBAL_RESIDUAL_THRESHOLD_FRACTION,
|
|
314
|
+
});
|
|
315
|
+
if (!validation.valid) return null;
|
|
316
|
+
|
|
317
|
+
return {
|
|
318
|
+
a_geom,
|
|
319
|
+
b_geom,
|
|
320
|
+
faces_a: grown.faces_a,
|
|
321
|
+
faces_b: grown.faces_b,
|
|
322
|
+
transform: grown.transform,
|
|
323
|
+
max_residual: validation.max_residual,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
|
|
270
327
|
/**
|
|
271
328
|
* Bounding-box diagonal length per unique geometry, in input order.
|
|
272
329
|
*
|
|
@@ -429,7 +486,12 @@ function match_transform_to_meep_transform(mt, piece_stats, max_residual) {
|
|
|
429
486
|
if (delta > OVERSCALE_MAX_FRACTION) delta = OVERSCALE_MAX_FRACTION;
|
|
430
487
|
}
|
|
431
488
|
|
|
432
|
-
if (delta === 0)
|
|
489
|
+
if (delta === 0) {
|
|
490
|
+
// The solver writes components only, so the clone's matrix was never composed. An exact fit (a half
|
|
491
|
+
// turn, say) leaves no residual to boost, and still owes the matrix its rotation and scale.
|
|
492
|
+
t.updateMatrix();
|
|
493
|
+
return t;
|
|
494
|
+
}
|
|
433
495
|
|
|
434
496
|
const boost = 1 + delta;
|
|
435
497
|
t.setScale(t.scale_x * boost, t.scale_y * boost, t.scale_z * boost);
|
|
@@ -31,6 +31,13 @@
|
|
|
31
31
|
* - faces_b not yet claimed as instance or canonical anywhere
|
|
32
32
|
* - faces_a not yet claimed as instance anywhere (we allow them to keep
|
|
33
33
|
* serving as canonical for additional matches)
|
|
34
|
+
* - within one geometry, faces_b sharing no face with faces_a: the piece is
|
|
35
|
+
* drawn at the canonical's place and again at the instance's, so a shared
|
|
36
|
+
* face would be drawn twice (a symmetric part matched onto itself)
|
|
37
|
+
* - a new canonical face-set sharing no face with one already chosen in its
|
|
38
|
+
* geometry: every piece of a geometry is drawn at the geometry's own place,
|
|
39
|
+
* so two overlapping pieces draw the overlap twice. The same set exactly
|
|
40
|
+
* is not new, and its piece is reused.
|
|
34
41
|
*
|
|
35
42
|
* @param {GrownMatchRecord[]} matches
|
|
36
43
|
* @param {number} min_primitives Drop matches smaller than this — they go to leftover
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cover_greedy.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;GAMG;AAEH;;;;;;;GAOG;AAEH
|
|
1
|
+
{"version":3,"file":"cover_greedy.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;GAMG;AAEH;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,sCAJW,gBAAgB,EAAE,kBAClB,MAAM,GACJ,aAAa,EAAE,CAwG3B;;;;;YApJa,MAAM;;;;YACN,MAAM;aACN,MAAM,EAAE;aACR,MAAM,EAAE;eACR,OAAO,uDAAuD,EAAE,WAAW;;;;;;kBAC3E,MAAM;;;YAON,MAAM;aACN,MAAM,EAAE;eACR,OAAO,uDAAuD,EAAE,WAAW;kBAC3E,MAAM;;;;;;wBAKN,MAAM;;;;YACN,MAAM;;;;qBACN,MAAM,EAAE;;;;eACR,qBAAqB,EAAE"}
|
|
@@ -34,6 +34,13 @@
|
|
|
34
34
|
* - faces_b not yet claimed as instance or canonical anywhere
|
|
35
35
|
* - faces_a not yet claimed as instance anywhere (we allow them to keep
|
|
36
36
|
* serving as canonical for additional matches)
|
|
37
|
+
* - within one geometry, faces_b sharing no face with faces_a: the piece is
|
|
38
|
+
* drawn at the canonical's place and again at the instance's, so a shared
|
|
39
|
+
* face would be drawn twice (a symmetric part matched onto itself)
|
|
40
|
+
* - a new canonical face-set sharing no face with one already chosen in its
|
|
41
|
+
* geometry: every piece of a geometry is drawn at the geometry's own place,
|
|
42
|
+
* so two overlapping pieces draw the overlap twice. The same set exactly
|
|
43
|
+
* is not new, and its piece is reused.
|
|
37
44
|
*
|
|
38
45
|
* @param {GrownMatchRecord[]} matches
|
|
39
46
|
* @param {number} min_primitives Drop matches smaller than this — they go to leftover
|
|
@@ -92,6 +99,9 @@ export function cover_greedy(matches, min_primitives) {
|
|
|
92
99
|
}
|
|
93
100
|
if (conflict) continue;
|
|
94
101
|
|
|
102
|
+
// (3) within one geometry, the two sides must not share a face
|
|
103
|
+
if (match.a_geom === match.b_geom && face_sets_intersect(match.faces_a, match.faces_b)) continue;
|
|
104
|
+
|
|
95
105
|
// Accept. If another match has chosen this exact canonical face-set,
|
|
96
106
|
// reuse the piece. Group candidates by a cheap hash, then deep-compare
|
|
97
107
|
// on hash collision.
|
|
@@ -99,6 +109,17 @@ export function cover_greedy(matches, min_primitives) {
|
|
|
99
109
|
let decision = find_decision(decisions_by_canonical.get(canonical_hash), match.a_geom, match.faces_a);
|
|
100
110
|
|
|
101
111
|
if (decision === undefined) {
|
|
112
|
+
// (4) a new canonical face-set must not share a face with one already chosen
|
|
113
|
+
const a_canonical_set = get_or_create(claimed_as_canonical, match.a_geom);
|
|
114
|
+
|
|
115
|
+
for (const f of match.faces_a) {
|
|
116
|
+
if (a_canonical_set.has(f)) {
|
|
117
|
+
conflict = true;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (conflict) continue;
|
|
122
|
+
|
|
102
123
|
decision = {
|
|
103
124
|
canonical_piece_id: next_piece_id++,
|
|
104
125
|
a_geom: match.a_geom,
|
|
@@ -113,7 +134,6 @@ export function cover_greedy(matches, min_primitives) {
|
|
|
113
134
|
bucket.push(decision);
|
|
114
135
|
decisions.push(decision);
|
|
115
136
|
|
|
116
|
-
const a_canonical_set = get_or_create(claimed_as_canonical, match.a_geom);
|
|
117
137
|
for (const f of match.faces_a) a_canonical_set.add(f);
|
|
118
138
|
}
|
|
119
139
|
|
|
@@ -173,3 +193,11 @@ function face_sets_equal(a, b) {
|
|
|
173
193
|
}
|
|
174
194
|
return true;
|
|
175
195
|
}
|
|
196
|
+
|
|
197
|
+
function face_sets_intersect(a, b) {
|
|
198
|
+
const seen = new Set(a);
|
|
199
|
+
for (const f of b) {
|
|
200
|
+
if (seen.has(f)) return true;
|
|
201
|
+
}
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One 32-bit hash per triangle that depends on the triangles within `rounds` edge-steps of it, and on
|
|
3
|
+
* nothing else: not on where any of them sits in the index stream, not on which corner a triangle's
|
|
4
|
+
* indices start at, and not on the rigid motion and uniform scale the geometry was placed with.
|
|
5
|
+
*
|
|
6
|
+
* Round 0 is the triangle's own {@link triangle_fingerprint_stream} fingerprint. Each round after that
|
|
7
|
+
* mixes in the three hashes across the triangle's edges, read in winding order and started at the
|
|
8
|
+
* smallest, so the same triangle indexed from another corner reads the same three in the same order.
|
|
9
|
+
*
|
|
10
|
+
* Two copies of a piece hash their triangles alike wherever a triangle's `rounds`-ring lies inside the
|
|
11
|
+
* piece, whatever order a meshlet build or an exporter left the triangles in. A triangle nearer the
|
|
12
|
+
* piece's edge than that sees what surrounds the piece, which differs between copies.
|
|
13
|
+
*
|
|
14
|
+
* @param {Geometry} geometry
|
|
15
|
+
* @param {number} rounds
|
|
16
|
+
* @returns {Uint32Array} one per triangle
|
|
17
|
+
*/
|
|
18
|
+
export function face_neighbourhood_hash(geometry: Geometry, rounds: number): Uint32Array;
|
|
19
|
+
//# sourceMappingURL=face_neighbourhood_hash.d.ts.map
|
package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"face_neighbourhood_hash.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.js"],"names":[],"mappings":"AAkGA;;;;;;;;;;;;;;;;GAgBG;AACH,oEAHW,MAAM,GACJ,WAAW,CAqDvB"}
|