@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
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Places bones of an entity's hierarchy against the terrain — a foot onto the slope it stands on,
|
|
3
|
-
* rather than through it.
|
|
4
|
-
*
|
|
5
|
-
* **A bone is an entity here.** The constraint names one, the name is resolved to an entity beneath
|
|
6
|
-
* the constrained entity, and the chain above it is the {@link TransformAttachment} parent walk. So
|
|
7
|
-
* this system knows nothing about renderers: it reads world {@link Transform64}s the hierarchy has
|
|
8
|
-
* already composed and writes local ones back, which is the whole of what a joint angle is.
|
|
9
|
-
*/
|
|
10
|
-
export class InverseKinematicsSystem extends System<any> {
|
|
11
|
-
constructor();
|
|
12
|
-
dependencies: (typeof Transform64 | typeof InverseKinematics)[];
|
|
13
|
-
components_used: ResourceAccessSpecification<typeof Transform64>[];
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @type {{"2BIK": TwoBoneInverseKinematicsSolver, "1BSA": OneBoneSurfaceAlignmentSolver}}
|
|
17
|
-
*/
|
|
18
|
-
solvers: {
|
|
19
|
-
"2BIK": TwoBoneInverseKinematicsSolver;
|
|
20
|
-
"1BSA": OneBoneSurfaceAlignmentSolver;
|
|
21
|
-
};
|
|
22
|
-
problems: {};
|
|
23
|
-
get componentClass(): typeof InverseKinematics;
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
* @param {InverseKinematics} ik
|
|
27
|
-
* @param {Transform64} transform
|
|
28
|
-
* @param {number} entity
|
|
29
|
-
*/
|
|
30
|
-
link(ik: InverseKinematics, transform: Transform64, entity: number): void;
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
* @param {InverseKinematics} ik
|
|
34
|
-
* @param {Transform64} transform
|
|
35
|
-
* @param {number} entity
|
|
36
|
-
*/
|
|
37
|
-
unlink(ik: InverseKinematics, transform: Transform64, entity: number): void;
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
* @param {InverseKinematics} ik
|
|
41
|
-
* @param {Transform64} transform
|
|
42
|
-
* @param {number} entity
|
|
43
|
-
*/
|
|
44
|
-
recordEntityProblems(ik: InverseKinematics, transform: Transform64, entity: number): void;
|
|
45
|
-
update(timeDelta: any): void;
|
|
46
|
-
#private;
|
|
47
|
-
}
|
|
48
|
-
import { System } from "../System.js";
|
|
49
|
-
import { Transform64 } from "../transform/Transform64.js";
|
|
50
|
-
import { InverseKinematics } from "./InverseKinematics.js";
|
|
51
|
-
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
|
|
52
|
-
import { TwoBoneInverseKinematicsSolver } from "./TwoBoneInverseKinematicsSolver.js";
|
|
53
|
-
import { OneBoneSurfaceAlignmentSolver } from "./OneBoneSurfaceAlignmentSolver.js";
|
|
54
|
-
//# sourceMappingURL=InverseKinematicsSystem.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InverseKinematicsSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/ik/InverseKinematicsSystem.js"],"names":[],"mappings":"AAeA;;;;;;;;GAQG;AACH;;IAEI,gEAAgD;IAEhD,mEAEE;IAEF;;;OAGG;IACH,SAFU;QAAC,MAAM,EAAE,8BAA8B,CAAC;QAAC,MAAM,EAAE,6BAA6B,CAAA;KAAC,CAKvF;IAEF,aAAc;IA8Bd,+CAEC;IAED;;;;;OAKG;IACH,SAJW,iBAAiB,aACjB,WAAW,UACX,MAAM,QAIhB;IAED;;;;;OAKG;IACH,WAJW,iBAAiB,aACjB,WAAW,UACX,MAAM,QAIhB;IAED;;;;;OAKG;IACH,yBAJW,iBAAiB,aACjB,WAAW,UACX,MAAM,QAuDhB;IAED,6BAsDC;;CACJ;uBAhNsB,cAAc;4BAMT,6BAA6B;kCAEvB,wBAAwB;4CAVd,oDAAoD;+CAYjD,qCAAqC;8CADtC,oCAAoC"}
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
import { ResourceAccessKind } from "../../../core/model/ResourceAccessKind.js";
|
|
2
|
-
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
|
|
3
|
-
import { collect_entity_playbacks } from "../../graphics3/pose/collect_entity_playbacks.js";
|
|
4
|
-
import { System } from "../System.js";
|
|
5
|
-
import { obtainTerrain } from "../terrain/util/obtainTerrain.js";
|
|
6
|
-
import {
|
|
7
|
-
transform_attachment_find_descendant_by_name
|
|
8
|
-
} from "../transform-attachment/transform_attachment_find_descendant_by_name.js";
|
|
9
|
-
import { T64WorldCache } from "../transform/T64WorldCache.js";
|
|
10
|
-
import { Transform64 } from "../transform/Transform64.js";
|
|
11
|
-
import { IKProblem } from "./IKProblem.js";
|
|
12
|
-
import { InverseKinematics } from "./InverseKinematics.js";
|
|
13
|
-
import { OneBoneSurfaceAlignmentSolver } from "./OneBoneSurfaceAlignmentSolver.js";
|
|
14
|
-
import { TwoBoneInverseKinematicsSolver } from "./TwoBoneInverseKinematicsSolver.js";
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Places bones of an entity's hierarchy against the terrain — a foot onto the slope it stands on,
|
|
18
|
-
* rather than through it.
|
|
19
|
-
*
|
|
20
|
-
* **A bone is an entity here.** The constraint names one, the name is resolved to an entity beneath
|
|
21
|
-
* the constrained entity, and the chain above it is the {@link TransformAttachment} parent walk. So
|
|
22
|
-
* this system knows nothing about renderers: it reads world {@link Transform64}s the hierarchy has
|
|
23
|
-
* already composed and writes local ones back, which is the whole of what a joint angle is.
|
|
24
|
-
*/
|
|
25
|
-
export class InverseKinematicsSystem extends System {
|
|
26
|
-
|
|
27
|
-
dependencies = [InverseKinematics, Transform64];
|
|
28
|
-
|
|
29
|
-
components_used = [
|
|
30
|
-
ResourceAccessSpecification.from(Transform64, ResourceAccessKind.Read | ResourceAccessKind.Write)
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* @type {{"2BIK": TwoBoneInverseKinematicsSolver, "1BSA": OneBoneSurfaceAlignmentSolver}}
|
|
36
|
-
*/
|
|
37
|
-
solvers = {
|
|
38
|
-
"2BIK": new TwoBoneInverseKinematicsSolver(),
|
|
39
|
-
"1BSA": new OneBoneSurfaceAlignmentSolver()
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
problems = {};
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Effector entities already found, per constrained entity, indexed the same way its constraints
|
|
46
|
-
* are. A name is resolved by searching the hierarchy, which is worth doing once — a model's
|
|
47
|
-
* bones do not move between entities.
|
|
48
|
-
*
|
|
49
|
-
* An entry is absent while the search has not succeeded, and the search is retried until it
|
|
50
|
-
* does, because the hierarchy a constraint names arrives with the model rather than with the
|
|
51
|
-
* component.
|
|
52
|
-
*
|
|
53
|
-
* @type {Array<number[]>}
|
|
54
|
-
*/
|
|
55
|
-
#effectors = [];
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
59
|
-
* @type {Terrain}
|
|
60
|
-
*/
|
|
61
|
-
#terrain = null;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Evaluated worlds of the tick, for chains the GPU composes: the constraints on one model
|
|
65
|
-
* share its spine, and a socket asked twice is evaluated once.
|
|
66
|
-
*
|
|
67
|
-
* @type {T64WorldCache}
|
|
68
|
-
*/
|
|
69
|
-
#cache = new T64WorldCache();
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
get componentClass() {
|
|
73
|
-
return InverseKinematics;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
*
|
|
78
|
-
* @param {InverseKinematics} ik
|
|
79
|
-
* @param {Transform64} transform
|
|
80
|
-
* @param {number} entity
|
|
81
|
-
*/
|
|
82
|
-
link(ik, transform, entity) {
|
|
83
|
-
this.#effectors[entity] = [];
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
*
|
|
88
|
-
* @param {InverseKinematics} ik
|
|
89
|
-
* @param {Transform64} transform
|
|
90
|
-
* @param {number} entity
|
|
91
|
-
*/
|
|
92
|
-
unlink(ik, transform, entity) {
|
|
93
|
-
delete this.#effectors[entity];
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
*
|
|
98
|
-
* @param {InverseKinematics} ik
|
|
99
|
-
* @param {Transform64} transform
|
|
100
|
-
* @param {number} entity
|
|
101
|
-
*/
|
|
102
|
-
recordEntityProblems(ik, transform, entity) {
|
|
103
|
-
const ecd = this.entityManager.dataset;
|
|
104
|
-
|
|
105
|
-
const effectors = this.#effectors[entity];
|
|
106
|
-
|
|
107
|
-
const ikConstraints = ik.constraints;
|
|
108
|
-
|
|
109
|
-
const n = ikConstraints.length;
|
|
110
|
-
|
|
111
|
-
for (let i = 0; i < n; i++) {
|
|
112
|
-
/**
|
|
113
|
-
*
|
|
114
|
-
* @type {IKConstraint}
|
|
115
|
-
*/
|
|
116
|
-
const c = ikConstraints[i];
|
|
117
|
-
|
|
118
|
-
let effector = effectors[i];
|
|
119
|
-
|
|
120
|
-
if (effector === undefined) {
|
|
121
|
-
effector = transform_attachment_find_descendant_by_name(ecd, entity, c.effector);
|
|
122
|
-
|
|
123
|
-
if (effector === -1) {
|
|
124
|
-
// the hierarchy carries no such bone yet
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
effectors[i] = effector;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const solverID = c.solver;
|
|
132
|
-
|
|
133
|
-
//define problem
|
|
134
|
-
const problem = IKProblem.pool.create();
|
|
135
|
-
problem.constraint = c;
|
|
136
|
-
problem.dataset = ecd;
|
|
137
|
-
problem.effector = effector;
|
|
138
|
-
problem.terrain = this.#terrain;
|
|
139
|
-
|
|
140
|
-
// what the chain is evaluated against if the GPU composes it; a pooled problem keeps
|
|
141
|
-
// its list, so it is emptied before it is filled
|
|
142
|
-
problem.playbacks.length = 0;
|
|
143
|
-
collect_entity_playbacks(problem.playbacks, this.entityManager, entity);
|
|
144
|
-
problem.cache = this.#cache;
|
|
145
|
-
|
|
146
|
-
const problemSet = this.problems[solverID];
|
|
147
|
-
|
|
148
|
-
if (problemSet === undefined) {
|
|
149
|
-
this.problems[solverID] = [problem];
|
|
150
|
-
} else {
|
|
151
|
-
problemSet.push(problem);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
update(timeDelta) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const em = this.entityManager;
|
|
161
|
-
|
|
162
|
-
const ecd = em.dataset;
|
|
163
|
-
|
|
164
|
-
if (ecd == null) {
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
this.#terrain = obtainTerrain(ecd);
|
|
169
|
-
|
|
170
|
-
if (this.#terrain === null) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
// last tick's answers are last tick's
|
|
176
|
-
this.#cache.invalidate();
|
|
177
|
-
|
|
178
|
-
ecd.traverseEntities([InverseKinematics, Transform64], this.recordEntityProblems, this);
|
|
179
|
-
|
|
180
|
-
//solve problems
|
|
181
|
-
for (const solverID in this.solvers) {
|
|
182
|
-
const problemSet = this.problems[solverID];
|
|
183
|
-
|
|
184
|
-
if (problemSet === undefined) {
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
const n = problemSet.length;
|
|
189
|
-
|
|
190
|
-
if (n === 0) {
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
const solver = this.solvers[solverID];
|
|
195
|
-
|
|
196
|
-
for (let i = 0; i < n; i++) {
|
|
197
|
-
const problem = problemSet[i];
|
|
198
|
-
|
|
199
|
-
solver.solve(problem);
|
|
200
|
-
|
|
201
|
-
IKProblem.pool.release(problem);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
//clear problem set
|
|
206
|
-
for (const solverID in this.problems) {
|
|
207
|
-
const problemSet = this.problems[solverID];
|
|
208
|
-
|
|
209
|
-
problemSet.splice(0, problemSet.length);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneBoneSurfaceAlignmentSolver.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js"],"names":[],"mappings":"AA4CA;;GAEG;AACH;IACI,0BAuGC;CACJ;yBA/IwB,eAAe"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { SurfacePoint3 } from "../../../core/geom/3d/SurfacePoint3.js";
|
|
2
|
-
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
3
|
-
import Vector3 from "../../../core/geom/Vector3.js";
|
|
4
|
-
import { clamp } from "../../../core/math/clamp.js";
|
|
5
|
-
import { inverseLerp } from "../../../core/math/inverseLerp.js";
|
|
6
|
-
import { t64_read_rotation } from "../transform/t64_read_rotation.js";
|
|
7
|
-
import { t64_read_translation } from "../transform/t64_read_translation.js";
|
|
8
|
-
import { IKBone, ik_bone_chain } from "./ik_bone_chain.js";
|
|
9
|
-
import { ik_probe_terrain_contact } from "./ik_probe_terrain_contact.js";
|
|
10
|
-
import { IKSolver } from "./IKSolver.js";
|
|
11
|
-
import { ik_write_local_rotation } from "./ik_write_local_rotation.js";
|
|
12
|
-
|
|
13
|
-
const contact = new SurfacePoint3();
|
|
14
|
-
|
|
15
|
-
const targetPosition = new Vector3();
|
|
16
|
-
|
|
17
|
-
const bonePosition = new Vector3();
|
|
18
|
-
const parentPosition = new Vector3();
|
|
19
|
-
|
|
20
|
-
const boneWorldRotation = new Quaternion();
|
|
21
|
-
const parentLocalRotation = new Quaternion();
|
|
22
|
-
|
|
23
|
-
const v3 = new Vector3();
|
|
24
|
-
|
|
25
|
-
const ONE_OVER_SQRT_3 = 0.57735026919;
|
|
26
|
-
|
|
27
|
-
const r = new Quaternion();
|
|
28
|
-
const up = new Vector3();
|
|
29
|
-
|
|
30
|
-
const r_i = new Quaternion();
|
|
31
|
-
|
|
32
|
-
const axis = new Vector3();
|
|
33
|
-
|
|
34
|
-
const x = new Quaternion();
|
|
35
|
-
|
|
36
|
-
const target = new Quaternion();
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* the bone, and its parent — needed for the "down" direction the probe casts along
|
|
40
|
-
*
|
|
41
|
-
* @type {IKBone[]}
|
|
42
|
-
*/
|
|
43
|
-
const CHAIN = [new IKBone(), new IKBone()];
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Align a single bone onto terrain surface
|
|
47
|
-
*/
|
|
48
|
-
export class OneBoneSurfaceAlignmentSolver extends IKSolver {
|
|
49
|
-
solve(problem) {
|
|
50
|
-
const { dataset, effector, constraint, terrain, playbacks, cache } = problem;
|
|
51
|
-
|
|
52
|
-
if (!ik_bone_chain(CHAIN, dataset, effector, 2, playbacks, cache)) {
|
|
53
|
-
// the hierarchy does not hold the bone and a parent to cast from
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const bone = CHAIN[0];
|
|
58
|
-
const boneParent = CHAIN[1];
|
|
59
|
-
|
|
60
|
-
/*
|
|
61
|
-
Read straight off the components: `TransformAttachmentSystem` composes a world transform as
|
|
62
|
-
soon as anything it depends on moves, so nothing has to be brought up to date first.
|
|
63
|
-
|
|
64
|
-
They are read OUT of the transforms rather than used in place, the same way the two-bone
|
|
65
|
-
solver reads its chain: what follows is vector and quaternion math, and a Transform64 is an
|
|
66
|
-
array carrying none of those methods.
|
|
67
|
-
*/
|
|
68
|
-
const world = bone.world;
|
|
69
|
-
|
|
70
|
-
t64_read_translation(bonePosition, world);
|
|
71
|
-
t64_read_translation(parentPosition, boneParent.world);
|
|
72
|
-
|
|
73
|
-
// the magnitude of a uniform scale, which is what the limb's lengths are expressed in
|
|
74
|
-
const bone_scale = Math.hypot(world.scale_x, world.scale_y, world.scale_z) * ONE_OVER_SQRT_3;
|
|
75
|
-
|
|
76
|
-
//cast from the parent towards the bone to find the surface underneath it
|
|
77
|
-
let influence = ik_probe_terrain_contact(
|
|
78
|
-
targetPosition,
|
|
79
|
-
contact,
|
|
80
|
-
terrain,
|
|
81
|
-
parentPosition.x, parentPosition.y, parentPosition.z,
|
|
82
|
-
bonePosition.x, bonePosition.y, bonePosition.z,
|
|
83
|
-
constraint,
|
|
84
|
-
bone_scale
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
if (influence <= 0) {
|
|
88
|
-
//no contact, or no influence
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const contactNormal = contact.normal;
|
|
93
|
-
|
|
94
|
-
t64_read_rotation(r, bone.local);
|
|
95
|
-
t64_read_rotation(boneWorldRotation, world);
|
|
96
|
-
|
|
97
|
-
//we want to make bone align orthogonally to surface contact normal
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
//convert bone UP vector to world space
|
|
101
|
-
up.copy(Vector3.forward);
|
|
102
|
-
up.applyQuaternion(boneWorldRotation);
|
|
103
|
-
up.normalize();
|
|
104
|
-
|
|
105
|
-
r_i.copyInverse(boneWorldRotation);
|
|
106
|
-
|
|
107
|
-
v3.copy(contactNormal);
|
|
108
|
-
v3.applyQuaternion(r_i);
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
//
|
|
112
|
-
axis.crossVectors(v3, Vector3.forward);
|
|
113
|
-
|
|
114
|
-
const betaSine = axis.length();
|
|
115
|
-
|
|
116
|
-
//compute angle between normal and up vector of the bone
|
|
117
|
-
const beta = Math.asin(clamp(betaSine, -1, 1));
|
|
118
|
-
|
|
119
|
-
//
|
|
120
|
-
axis.normalize();
|
|
121
|
-
|
|
122
|
-
x.fromAxisAngle(axis, beta);
|
|
123
|
-
|
|
124
|
-
target.copy(r);
|
|
125
|
-
target.multiply(x);
|
|
126
|
-
|
|
127
|
-
//compute angle between quaternions
|
|
128
|
-
t64_read_rotation(parentLocalRotation, boneParent.local);
|
|
129
|
-
|
|
130
|
-
const a = target.angleTo(parentLocalRotation);
|
|
131
|
-
|
|
132
|
-
const a_abs = Math.abs(a);
|
|
133
|
-
if (a_abs >= constraint.limit) {
|
|
134
|
-
const b = target.angleTo(r);
|
|
135
|
-
|
|
136
|
-
const b_abs = Math.abs(b);
|
|
137
|
-
if (b_abs < constraint.limit) {
|
|
138
|
-
|
|
139
|
-
const l = inverseLerp(a_abs, b_abs, constraint.limit);
|
|
140
|
-
|
|
141
|
-
influence *= l;
|
|
142
|
-
} else {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
//slerp, not lerp: see ClingToTerrainSystem.alignToVector. A componentwise blend is not a
|
|
148
|
-
//unit quaternion, and `ik_write_local_rotation` writes it straight into the Transform64.
|
|
149
|
-
r.slerp(target, constraint.strength * influence);
|
|
150
|
-
|
|
151
|
-
ik_write_local_rotation(dataset, bone, r);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TwoBoneInverseKinematicsSolver.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js"],"names":[],"mappings":"AAsCA;IAGI,0BA6EC;CACJ;yBA/GwB,eAAe"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { SurfacePoint3 } from "../../../core/geom/3d/SurfacePoint3.js";
|
|
2
|
-
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
3
|
-
import Vector3 from "../../../core/geom/Vector3.js";
|
|
4
|
-
import { two_joint_ik } from "../../physics/inverse_kinematics/two_joint_ik.js";
|
|
5
|
-
import { IKBone, ik_bone_chain } from "./ik_bone_chain.js";
|
|
6
|
-
import { ik_probe_terrain_contact } from "./ik_probe_terrain_contact.js";
|
|
7
|
-
import { t64_read_rotation } from "../transform/t64_read_rotation.js";
|
|
8
|
-
import { t64_read_translation } from "../transform/t64_read_translation.js";
|
|
9
|
-
import { IKSolver } from "./IKSolver.js";
|
|
10
|
-
import { ik_write_local_rotation } from "./ik_write_local_rotation.js";
|
|
11
|
-
|
|
12
|
-
const contact = new SurfacePoint3();
|
|
13
|
-
|
|
14
|
-
const targetPosition = new Vector3();
|
|
15
|
-
|
|
16
|
-
const positionA = new Vector3();
|
|
17
|
-
const positionB = new Vector3();
|
|
18
|
-
const positionC = new Vector3();
|
|
19
|
-
|
|
20
|
-
const worldRotationA = new Quaternion();
|
|
21
|
-
const worldRotationB = new Quaternion();
|
|
22
|
-
|
|
23
|
-
const localRotationA = new Quaternion();
|
|
24
|
-
const localRotationB = new Quaternion();
|
|
25
|
-
|
|
26
|
-
const targetLocalRotationA = new Quaternion();
|
|
27
|
-
const targetLocalRotationB = new Quaternion();
|
|
28
|
-
|
|
29
|
-
const r0 = new Quaternion();
|
|
30
|
-
const r1 = new Quaternion();
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* effector, its parent, its grandparent
|
|
34
|
-
*
|
|
35
|
-
* @type {IKBone[]}
|
|
36
|
-
*/
|
|
37
|
-
const CHAIN = [new IKBone(), new IKBone(), new IKBone()];
|
|
38
|
-
|
|
39
|
-
export class TwoBoneInverseKinematicsSolver extends IKSolver {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
solve(problem) {
|
|
43
|
-
|
|
44
|
-
const { dataset, effector, terrain, constraint, playbacks, cache } = problem;
|
|
45
|
-
|
|
46
|
-
if (!ik_bone_chain(CHAIN, dataset, effector, 3, playbacks, cache)) {
|
|
47
|
-
// the hierarchy does not hold three links yet
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const boneC = CHAIN[0];
|
|
52
|
-
const boneB = CHAIN[1];
|
|
53
|
-
const boneA = CHAIN[2];
|
|
54
|
-
|
|
55
|
-
/*
|
|
56
|
-
The world poses are read straight off the components. There is no matrix to bring up to
|
|
57
|
-
date first: `TransformAttachmentSystem` composes a world transform the moment anything it
|
|
58
|
-
depends on changes, so what is on the component is what the hierarchy currently says.
|
|
59
|
-
|
|
60
|
-
They are read OUT of the transforms rather than used in place, because `two_joint_ik` is
|
|
61
|
-
geometry math over vectors and quaternions and a Transform64 is an array with none of their
|
|
62
|
-
methods on it.
|
|
63
|
-
*/
|
|
64
|
-
t64_read_translation(positionA, boneA.world);
|
|
65
|
-
t64_read_translation(positionB, boneB.world);
|
|
66
|
-
t64_read_translation(positionC, boneC.world);
|
|
67
|
-
|
|
68
|
-
//compute total length of the limb
|
|
69
|
-
const limbLength = positionA.distanceTo(positionB) + positionB.distanceTo(positionC);
|
|
70
|
-
|
|
71
|
-
//check if there is a penetration with the terrain between the two bones
|
|
72
|
-
const influence = ik_probe_terrain_contact(
|
|
73
|
-
targetPosition,
|
|
74
|
-
contact,
|
|
75
|
-
terrain,
|
|
76
|
-
positionA.x, positionA.y, positionA.z,
|
|
77
|
-
positionC.x, positionC.y, positionC.z,
|
|
78
|
-
constraint,
|
|
79
|
-
limbLength
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
if (influence <= 0) {
|
|
83
|
-
//no contact, or no influence
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
t64_read_rotation(localRotationA, boneA.local);
|
|
88
|
-
t64_read_rotation(localRotationB, boneB.local);
|
|
89
|
-
|
|
90
|
-
t64_read_rotation(worldRotationA, boneA.world);
|
|
91
|
-
t64_read_rotation(worldRotationB, boneB.world);
|
|
92
|
-
|
|
93
|
-
targetLocalRotationA.copy(localRotationA);
|
|
94
|
-
targetLocalRotationB.copy(localRotationB);
|
|
95
|
-
|
|
96
|
-
//compute
|
|
97
|
-
two_joint_ik(
|
|
98
|
-
positionA,
|
|
99
|
-
positionB,
|
|
100
|
-
positionC,
|
|
101
|
-
targetPosition,
|
|
102
|
-
0.01,
|
|
103
|
-
worldRotationA,
|
|
104
|
-
worldRotationB,
|
|
105
|
-
targetLocalRotationA,
|
|
106
|
-
targetLocalRotationB
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
//lerp bone rotations based on influence
|
|
110
|
-
r0.lerpQuaternions(localRotationA, targetLocalRotationA, influence);
|
|
111
|
-
r1.lerpQuaternions(localRotationB, targetLocalRotationB, influence);
|
|
112
|
-
|
|
113
|
-
/*
|
|
114
|
-
Both lerps are taken before either write, because a write recomposes every world transform
|
|
115
|
-
below it — reading a bone's pose after moving its parent would read the corrected one.
|
|
116
|
-
*/
|
|
117
|
-
ik_write_local_rotation(dataset, boneA, r0);
|
|
118
|
-
ik_write_local_rotation(dataset, boneB, r1);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fill a chain of bones running from the effector up towards the root.
|
|
3
|
-
*
|
|
4
|
-
* `result[0]` is the effector itself, `result[1]` its parent, and so on. The walk stops early when
|
|
5
|
-
* the hierarchy runs out, which is how a chain that is too short to solve announces itself.
|
|
6
|
-
*
|
|
7
|
-
* @param {IKBone[]} result must hold at least `count` bones
|
|
8
|
-
* @param {EntityComponentDataset} dataset
|
|
9
|
-
* @param {number} effector
|
|
10
|
-
* @param {number} count how many links the solver needs
|
|
11
|
-
* @returns {boolean} `false` when the hierarchy holds fewer than `count` links above and including
|
|
12
|
-
* the effector, or when one of them is not a full transform pair. Neither is an error — a model
|
|
13
|
-
* that has not finished arriving looks exactly like this
|
|
14
|
-
*/
|
|
15
|
-
export function ik_bone_chain(result: IKBone[], dataset: EntityComponentDataset, effector: number, count: number, playbacks?: any, cache?: any): boolean;
|
|
16
|
-
/**
|
|
17
|
-
* One link of a chain the solvers work on: the entity, the world pose the hierarchy composed for
|
|
18
|
-
* it, and the local pose that composition came from.
|
|
19
|
-
*
|
|
20
|
-
* A solver reads the world pose and writes the local one — writing the world pose directly would be
|
|
21
|
-
* overwritten by {@link TransformAttachmentSystem} the moment anything above moved, and the local
|
|
22
|
-
* rotation is what a joint angle *is*.
|
|
23
|
-
*/
|
|
24
|
-
export class IKBone {
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* @type {number}
|
|
28
|
-
*/
|
|
29
|
-
entity: number;
|
|
30
|
-
/**
|
|
31
|
-
* The bone's world pose this frame. Read only.
|
|
32
|
-
*
|
|
33
|
-
* The component itself when the CPU composes the chain; {@link evaluated} when the GPU does,
|
|
34
|
-
* in which case the component holds whatever the CPU last composed and is not read.
|
|
35
|
-
*
|
|
36
|
-
* @type {Transform64|null}
|
|
37
|
-
*/
|
|
38
|
-
world: Transform64 | null;
|
|
39
|
-
/**
|
|
40
|
-
* Where an evaluated world pose is written — see {@link ik_bone_chain}.
|
|
41
|
-
*
|
|
42
|
-
* @type {Transform64}
|
|
43
|
-
*/
|
|
44
|
-
evaluated: Transform64;
|
|
45
|
-
/**
|
|
46
|
-
* Relative to the parent bone. This is what a solver writes.
|
|
47
|
-
*
|
|
48
|
-
* @type {Transform64|null}
|
|
49
|
-
*/
|
|
50
|
-
local: Transform64 | null;
|
|
51
|
-
/**
|
|
52
|
-
* The component {@link IKBone#local} belongs to.
|
|
53
|
-
*
|
|
54
|
-
* A Transform64 announces nothing when it is written, so a solver has to say that it changed,
|
|
55
|
-
* and the announcement names the component the hierarchy is listening for - which is this one,
|
|
56
|
-
* not the transform inside it.
|
|
57
|
-
*
|
|
58
|
-
* @type {TransformAttachment|null}
|
|
59
|
-
*/
|
|
60
|
-
attachment: TransformAttachment | null;
|
|
61
|
-
}
|
|
62
|
-
import { Transform64 } from "../transform/Transform64.js";
|
|
63
|
-
import { TransformAttachment } from "../transform-attachment/TransformAttachment.js";
|
|
64
|
-
//# sourceMappingURL=ik_bone_chain.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ik_bone_chain.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/ik/ik_bone_chain.js"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;;GAaG;AACH,sCARW,MAAM,EAAE,6CAER,MAAM,SACN,MAAM,iCACJ,OAAO,CAwEnB;AArID;;;;;;;GAOG;AACH;IACI;;;OAGG;IACH,QAFU,MAAM,CAEJ;IAEZ;;;;;;;OAOG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAEb;;;;OAIG;IACH,WAFU,WAAW,CAES;IAE9B;;;;OAIG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAEb;;;;;;;;OAQG;IACH,YAFU,mBAAmB,GAAC,IAAI,CAEhB;CACrB;4BApD2B,6BAA6B;oCADrB,gDAAgD"}
|