@woosh/meep-engine 3.38.0 → 3.39.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-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/binary/BinaryBuffer.d.ts +11 -0
- package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
- package/src/core/binary/BinaryBuffer.js +30 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +28 -7
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +15 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +41 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts +12 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.js +27 -0
- package/src/core/geom/3d/gjk/gjk.js +3 -3
- package/src/core/geom/3d/gjk/gjk_distance.d.ts +94 -0
- package/src/core/geom/3d/gjk/gjk_distance.d.ts.map +1 -0
- package/src/core/geom/3d/gjk/gjk_distance.js +782 -0
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts +5 -4
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/gjk_epa_penetration.js +14 -9
- package/src/core/geom/3d/gjk/minkowski_support.d.ts +11 -7
- package/src/core/geom/3d/gjk/minkowski_support.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/minkowski_support.js +33 -9
- package/src/core/geom/3d/gjk/mpr.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/mpr.js +26 -5
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts +15 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.js +106 -33
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +4 -8
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.d.ts +32 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.js +85 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +3 -3
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +24 -34
- package/src/core/geom/3d/quaternion/quat3_integrate.d.ts +17 -0
- package/src/core/geom/3d/quaternion/quat3_integrate.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_integrate.js +45 -4
- package/src/core/geom/3d/quaternion/quat3_multiply.d.ts +16 -0
- package/src/core/geom/3d/quaternion/quat3_multiply.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_multiply.js +25 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +18 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_nlerp.js +45 -0
- package/src/core/geom/3d/quaternion/quat3_shortest_arc.d.ts +17 -0
- package/src/core/geom/3d/quaternion/quat3_shortest_arc.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_shortest_arc.js +155 -94
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts +12 -0
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.js +31 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +20 -6
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +20 -6
- package/src/core/geom/3d/shape/BoxShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.js +5 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +5 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +25 -11
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.js +392 -22
- package/src/core/geom/3d/shape/CylinderShape3D.d.ts +8 -7
- package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CylinderShape3D.js +12 -7
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts +51 -8
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +260 -14
- package/src/core/geom/3d/shape/MeshShape3D.d.ts +61 -7
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.js +111 -20
- package/src/core/geom/3d/shape/PointShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/PointShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/PointShape3D.js +1 -1
- package/src/core/geom/3d/shape/PosedShape3D.d.ts +9 -0
- package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/PosedShape3D.js +36 -6
- package/src/core/geom/3d/shape/SphereShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/SphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/SphereShape3D.js +5 -1
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts +12 -10
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +53 -19
- package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
- package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/Triangle3D.js +5 -1
- package/src/core/geom/3d/shape/UnionShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnionShape3D.js +19 -2
- package/src/core/geom/3d/shape/sdf/sdf3_box.d.ts +14 -0
- package/src/core/geom/3d/shape/sdf/sdf3_box.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_box.js +67 -5
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.d.ts +14 -0
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.js +61 -3
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.d.ts +14 -0
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.js +63 -4
- package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts +15 -0
- package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_plane.js +64 -2
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.d.ts +21 -0
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.js +66 -3
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts +2 -0
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.js +7 -0
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts +41 -0
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts.map +1 -0
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js +538 -0
- package/src/core/geom/3d/sphere/harmonics/sh_basis_at.d.ts +31 -0
- package/src/core/geom/3d/sphere/harmonics/sh_basis_at.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_basis_at.js +85 -0
- package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.d.ts +18 -0
- package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.js +19 -0
- package/src/core/geom/3d/triangle/TriangleEdgeFlags.d.ts +49 -0
- package/src/core/geom/3d/triangle/TriangleEdgeFlags.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/TriangleEdgeFlags.js +55 -0
- package/src/core/geom/3d/triangle/tri3_classify_shared_edge.d.ts +42 -0
- package/src/core/geom/3d/triangle/tri3_classify_shared_edge.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_classify_shared_edge.js +85 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +13 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/tri3_closest_point.js +36 -1
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts +14 -0
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.js +40 -0
- package/src/core/geom/vec3/v3_quaternion_apply.d.ts +19 -0
- package/src/core/geom/vec3/v3_quaternion_apply.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_quaternion_apply.js +32 -0
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts +19 -0
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.js +32 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +135 -10
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +338 -105
- package/src/engine/control/first-person/abilities/Ability.d.ts +14 -5
- package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Ability.js +14 -5
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/LedgeGrab.js +16 -12
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Mantle.js +5 -1
- package/src/engine/control/first-person/abilities/Slide.js +1 -1
- package/src/engine/control/first-person/collision/KinematicMover.d.ts +92 -14
- package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
- package/src/engine/control/first-person/collision/KinematicMover.js +218 -37
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +5 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +17 -10
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +27 -13
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +4 -0
- package/src/engine/ecs/transform/Transform64.d.ts +4 -2
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +10 -16
- package/src/engine/graphics/ecs/water/Water.d.ts +25 -63
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +110 -125
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +38 -74
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.js +27 -18
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts +12 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.js +45 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts +33 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterWaves.js +46 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts +17 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +26 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts +22 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts.map +1 -1
- package/src/engine/graphics/texture/3d/scs3d_sample_linear.js +43 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +29 -3
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.js +102 -14
- package/src/engine/graphics3/WaterSystem.d.ts +39 -3
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +134 -25
- package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts +10 -4
- package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/interpolation/BinaryInterpolationAdapter.js +11 -5
- package/src/engine/interpolation/InterpolationLog.d.ts +11 -5
- package/src/engine/interpolation/InterpolationLog.d.ts.map +1 -1
- package/src/engine/interpolation/InterpolationLog.js +12 -6
- package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
- package/src/engine/interpolation/InterpolationSystem.js +39 -8
- package/src/engine/interpolation/PoseInterpolationAdapter.d.ts +1 -1
- package/src/engine/interpolation/PoseInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/interpolation/PoseInterpolationAdapter.js +51 -22
- package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
- package/src/engine/interpolation/TransformPoseSerializationAdapter.js +18 -23
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +3 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.js +3 -1
- package/src/engine/network/adapters/Vector3InterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/Vector3InterpolationAdapter.js +5 -2
- package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
- package/src/engine/physics/body/SolverBodyState.js +4 -5
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +12 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +28 -3
- package/src/engine/physics/ccd/linear_sweep.d.ts +42 -12
- package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
- package/src/engine/physics/ccd/linear_sweep.js +1131 -97
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +13 -0
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/ClothColliderIndex.js +90 -22
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +84 -24
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts +46 -3
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +116 -68
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +59 -47
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +62 -55
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +46 -39
- package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back.js +41 -36
- package/src/engine/physics/cloth/playground/garment_build.js +6 -6
- package/src/engine/physics/cloth/playground/garment_main.js +18 -14
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_contact_find.js +8 -5
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +8 -5
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +15 -15
- package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts +5 -0
- package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.js +32 -9
- package/src/engine/physics/constraint/solve_constraints.d.ts +50 -8
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +703 -429
- package/src/engine/physics/contact/ManifoldStore.d.ts +12 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
- package/src/engine/physics/contact/ManifoldStore.js +32 -0
- package/src/engine/physics/ecs/BodyKind.d.ts +16 -8
- package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
- package/src/engine/physics/ecs/BodyKind.js +16 -8
- package/src/engine/physics/ecs/Collider.d.ts +7 -2
- package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
- package/src/engine/physics/ecs/Collider.js +7 -2
- package/src/engine/physics/ecs/PhysicsEvents.d.ts +13 -0
- package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsEvents.js +13 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +320 -36
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +779 -81
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +5 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +11 -9
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +7 -5
- package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +9 -7
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +3 -4
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +9 -7
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +65 -43
- package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts +23 -0
- package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts.map +1 -0
- package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.js +22 -0
- package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts +29 -0
- package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts.map +1 -0
- package/src/engine/physics/inertia/convex_hull_mass_properties.js +117 -0
- package/src/engine/physics/inertia/mass_properties_accumulate.d.ts +24 -0
- package/src/engine/physics/inertia/mass_properties_accumulate.d.ts.map +1 -0
- package/src/engine/physics/inertia/mass_properties_accumulate.js +93 -0
- package/src/engine/physics/inertia/primitive_mass_properties.d.ts +46 -0
- package/src/engine/physics/inertia/primitive_mass_properties.d.ts.map +1 -0
- package/src/engine/physics/inertia/primitive_mass_properties.js +118 -0
- package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts +27 -0
- package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts.map +1 -0
- package/src/engine/physics/inertia/rigid_body_set_mass_properties.js +62 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +67 -25
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
- package/src/engine/physics/inertia/world_inverse_inertia.js +149 -26
- package/src/engine/physics/integration/integrate_position.d.ts +18 -19
- package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
- package/src/engine/physics/integration/integrate_position.js +40 -37
- package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
- package/src/engine/physics/integration/integrate_velocity.js +13 -4
- package/src/engine/physics/island/IslandBuilder.d.ts +124 -6
- package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
- package/src/engine/physics/island/IslandBuilder.js +322 -19
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts +13 -0
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_box_manifold.js +95 -39
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts +40 -0
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_triangle_contact.js +415 -120
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts +63 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_contacts.js +234 -46
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts +13 -0
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_triangle_contact.js +141 -93
- package/src/engine/physics/narrowphase/compute_penetration.d.ts +29 -11
- package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/compute_penetration.js +157 -34
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +76 -0
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/convex_convex_manifold.js +243 -48
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts +13 -0
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.js +28 -12
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +13 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +27 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts +42 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.js +250 -0
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +27 -11
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +291 -12
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +7 -1
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +7 -1
- package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts +35 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.js +61 -0
- package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts +54 -0
- package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/hull_sphere_contact.js +244 -0
- package/src/engine/physics/narrowphase/mesh_convex_hull.js +5 -1
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts +2 -0
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +56 -31
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts +6 -5
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/narrowphase_step.js +2185 -483
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +56 -5
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +546 -5
- package/src/engine/physics/narrowphase/refine_ray_concave.d.ts +29 -2
- package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/refine_ray_concave.js +628 -75
- package/src/engine/physics/narrowphase/refine_ray_hit.d.ts +3 -2
- package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/refine_ray_hit.js +3 -2
- package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts +27 -0
- package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/rigid_subject_pose.js +96 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +14 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_box_contact.js +51 -5
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +12 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_sphere_contact.js +30 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts +12 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_triangle_contact.js +37 -8
- package/src/engine/physics/narrowphase/support_feature_manifold.d.ts +139 -0
- package/src/engine/physics/narrowphase/support_feature_manifold.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/support_feature_manifold.js +949 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +32 -13
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
- package/src/engine/physics/queries/PhysicsSurfacePoint.js +36 -13
- package/src/engine/physics/queries/convex_overlaps_shape.d.ts +27 -0
- package/src/engine/physics/queries/convex_overlaps_shape.d.ts.map +1 -0
- package/src/engine/physics/queries/convex_overlaps_shape.js +169 -0
- package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
- package/src/engine/physics/queries/overlap_shape.js +57 -79
- package/src/engine/physics/queries/raycast.d.ts +10 -4
- package/src/engine/physics/queries/raycast.d.ts.map +1 -1
- package/src/engine/physics/queries/raycast.js +133 -9
- package/src/engine/physics/queries/shape_cast.d.ts +55 -24
- package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
- package/src/engine/physics/queries/shape_cast.js +2061 -245
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts +32 -10
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -1
- package/src/engine/physics/solver/apply_impulse_to_body.js +69 -28
- package/src/engine/physics/solver/solve_contacts.d.ts +65 -18
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
- package/src/engine/physics/solver/solve_contacts.js +458 -234
- package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
- package/src/engine/physics/vehicle/RaycastVehicle.js +5 -6
- package/src/shade/assets/textures/split_sum.bin +0 -0
- package/src/shade/device/mock/SoftwareGPUQueue.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUQueue.js +2 -1
- package/src/shade/playground/path_traced_media/README.md +78 -0
- package/src/shade/playground/path_traced_media/capture_radiance.d.ts +33 -0
- package/src/shade/playground/path_traced_media/capture_radiance.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/capture_radiance.js +174 -0
- package/src/shade/playground/path_traced_media/checks.d.ts +160 -0
- package/src/shade/playground/path_traced_media/checks.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/checks.js +921 -0
- package/src/shade/playground/path_traced_media/index.html +71 -0
- package/src/shade/playground/path_traced_media/main.d.ts +2 -0
- package/src/shade/playground/path_traced_media/main.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/main.js +440 -0
- package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts +26 -0
- package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/make_wave_pool_geometry.js +117 -0
- package/src/shade/playground/path_traced_media/views.d.ts +21 -0
- package/src/shade/playground/path_traced_media/views.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/views.js +161 -0
- package/src/shade/playground/sh_exponential/README.md +43 -0
- package/src/shade/playground/sh_exponential/index.html +59 -0
- package/src/shade/playground/sh_exponential/main.d.ts +2 -0
- package/src/shade/playground/sh_exponential/main.d.ts.map +1 -0
- package/src/shade/playground/sh_exponential/main.js +571 -0
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts +46 -0
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -0
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +270 -0
- package/src/shade/playground/water_refraction/README.md +24 -15
- package/src/shade/playground/water_refraction/index.html +6 -8
- package/src/shade/playground/water_refraction/main.js +12 -11
- package/src/shade/playground/water_refraction/world.d.ts +2 -0
- package/src/shade/playground/water_refraction/world.d.ts.map +1 -1
- package/src/shade/playground/water_refraction/world.js +8 -4
- package/src/shade/renderer/Renderer.d.ts +2 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +23 -0
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +9 -1
- package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.js +6 -4
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts +7 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.js +12 -12
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts +4 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.js +13 -9
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +2 -0
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -9
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +20 -10
- package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts +2 -1
- package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/rgbe/load_environment_map.js +2 -1
- package/src/shade/renderer/light/environment/sh_exponential/README.md +171 -0
- package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts +170 -0
- package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.js +377 -0
- package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts +16 -0
- package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.js +27 -0
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts +21 -0
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js +53 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts +33 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.js +90 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts +28 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.js +92 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts +39 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.js +44 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts +42 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.js +123 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts +30 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +147 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts +24 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +79 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts +17 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +99 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts +24 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +104 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts +12 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +93 -0
- package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/GPULightMap.js +1 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts +1 -1
- package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.d.ts +15 -0
- package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.js +17 -0
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +36 -2
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +218 -18
- package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.js +10 -0
- package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts +17 -0
- package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.js +24 -0
- package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts +24 -0
- package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts.map +1 -0
- package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.js +18 -0
- package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts +20 -0
- package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/medium/MEDIUM_STRUCT.js +43 -0
- package/src/shade/renderer/medium/ParticipatingMedium.d.ts +108 -0
- package/src/shade/renderer/medium/ParticipatingMedium.d.ts.map +1 -0
- package/src/shade/renderer/medium/ParticipatingMedium.js +204 -0
- package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts +13 -0
- package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts.map +1 -0
- package/src/shade/renderer/medium/chunk_medium_lobe_phase.js +33 -0
- package/src/shade/renderer/medium/participating_medium_serialization.d.ts +32 -0
- package/src/shade/renderer/medium/participating_medium_serialization.d.ts.map +1 -0
- package/src/shade/renderer/medium/participating_medium_serialization.js +181 -0
- package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts +48 -0
- package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/MediumPhaseFunction.js +42 -0
- package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts +23 -0
- package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseCornetteShanks.js +45 -0
- package/src/shade/renderer/medium/phase/PhaseDraine.d.ts +30 -0
- package/src/shade/renderer/medium/phase/PhaseDraine.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseDraine.js +58 -0
- package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts +24 -0
- package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseFournierForand.js +53 -0
- package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts +21 -0
- package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.js +43 -0
- package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts +25 -0
- package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseJendersieDeon.js +66 -0
- package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts +9 -0
- package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseRayleigh.js +21 -0
- package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts +28 -0
- package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseWaterMolecular.js +49 -0
- package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts +10 -0
- package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.js +25 -0
- package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts +47 -0
- package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_iop_from_appearance.js +174 -0
- package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts +57 -0
- package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_iop_from_constituents.js +242 -0
- package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts +41 -0
- package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_iop_jerlov.js +231 -0
- package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts +66 -0
- package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_iop_spectral_reference.js +223 -0
- package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts +96 -0
- package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_medium_from_iop.js +145 -0
- package/src/shade/renderer/medium/water/water_presets.d.ts +69 -0
- package/src/shade/renderer/medium/water/water_presets.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_presets.js +119 -0
- package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts +69 -0
- package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_rgb_from_spectral.js +341 -0
- package/src/shade/renderer/particles/DESIGN.md +4 -2
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts +26 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.js +71 -0
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +16 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +6 -13
- package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +520 -0
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -0
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +2 -0
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +188 -185
- package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.js +4 -1
- package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts +13 -0
- package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.js +29 -0
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts +79 -0
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +360 -70
- package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.js +4 -3
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts +24 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.js +99 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts +68 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.js +263 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts +55 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.js +148 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts +17 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.js +41 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts +20 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.js +105 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts +28 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.js +97 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts +12 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.js +46 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts +25 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.js +75 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts +54 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.js +245 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts +42 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.js +236 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts +24 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.js +97 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts +57 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.js +222 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts +88 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.js +304 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts +35 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.js +137 -0
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +85 -84
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts +8 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.js +9 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +12 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +12 -3
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +13 -7
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +13 -7
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +309 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +54 -9
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +9 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts +33 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.js +45 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts +4 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.js +6 -2
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts +2 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.js +4 -2
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts +14 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.js +28 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts +10 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.js +18 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts +19 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.js +44 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts +10 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.js +17 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +3 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.js +163 -64
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +4 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +5 -0
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts +12 -1
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.js +22 -3
- package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.js +31 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts +43 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.js +153 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.js +57 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts +45 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.js +109 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.js +6 -3
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.js +49 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.js +18 -0
- package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts +3 -0
- package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.js +3 -0
- package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.js +3 -1
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.js +53 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts +7 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.js +12 -60
- package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts +26 -6
- package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.js +30 -20
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.js +3 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.js +3 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.js +3 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.js +25 -0
- package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts +9 -2
- package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.js +33 -10
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +71 -37
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.js +30 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts +19 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.js +73 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts +19 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.js +25 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.js +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts +26 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.js +55 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts +52 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.js +65 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.js +229 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.js +278 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.js +58 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.js +75 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.js +70 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.js +95 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.js +89 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.js +118 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.js +111 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.js +144 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.js +136 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.js +173 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.js +164 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.js +205 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.js +195 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.js +240 -0
- package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts +0 -6
- package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.js +46 -1
- package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.d.ts +7 -7
- package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.js +7 -7
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +42 -10
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +104 -48
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +20 -4
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +186 -74
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts +2 -1
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/Shadowmap.js +2 -1
- package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts +30 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.js +52 -0
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts +14 -0
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.js +20 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts +8 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.js +7 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +8 -6
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +28 -34
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts +3 -2
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.js +19 -14
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +4 -3
- 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 +12 -7
- package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.d.ts +4 -4
- package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.js +4 -4
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +39 -17
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.js +5 -36
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.js +3 -2
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts +1 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +49 -35
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts +4 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.js +8 -9
- package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.js +2 -2
- package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/decode_tile_address.js +15 -23
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.js +6 -9
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.js +19 -9
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.js +18 -6
- package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts +1 -1
- package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts +18 -1
- package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.js +24 -3
- package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts +1 -1
- package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts +0 -1
- package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/get_single_pixel_texture.js +2 -23
- package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts +11 -0
- package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts.map +1 -0
- package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.js +34 -0
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +17 -8
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +35 -64
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +21 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +70 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts +31 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.js +86 -0
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +6 -7
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +7 -7
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +13 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +74 -25
- package/src/shade/renderer/water/chunk_water_gi.d.ts +14 -0
- package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -0
- package/src/shade/renderer/water/chunk_water_gi.js +56 -0
- package/src/shade/renderer/water/chunk_water_transport.d.ts +2 -0
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_transport.js +51 -40
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +29 -0
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +116 -0
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts +23 -0
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.js +42 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts +9 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_derived.js +55 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts +8 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_scattering.js +17 -0
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +8 -0
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +30 -0
- package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts +28 -0
- package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_inscatter.js +123 -0
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts +23 -0
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts +18 -0
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_optics.d.ts +12 -0
- package/src/shade/renderer/water/optics/chunk_water_optics.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_optics.js +75 -0
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts +27 -0
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +74 -0
- package/src/shade/renderer/water/shader_water.d.ts +10 -4
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +406 -384
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water_avboit.js +19 -9
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +98 -0
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +408 -0
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts +12 -0
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.js +27 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts +14 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.js +49 -0
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +15 -0
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_wave.js +48 -0
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts +9 -0
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.js +47 -0
- package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts +10 -0
- package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_surface_write.js +51 -0
- package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts +12 -0
- package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_wave_step.js +54 -0
- package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts +13 -0
- package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/water_surface_grid_indices.js +39 -0
- package/src/shade/renderer/water/water_missing_receiver_path.d.ts +17 -0
- package/src/shade/renderer/water/water_missing_receiver_path.d.ts.map +1 -0
- package/src/shade/renderer/water/water_missing_receiver_path.js +40 -0
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +247 -23
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts +18 -14
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +48 -6
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +0 -29
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +0 -43
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts +0 -7
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.js +0 -6
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { chunk_build_orthonormal_matrix_n } from "../../../shader/chunk/geometry/normal/chunk_build_orthonormal_matrix_n.js";
|
|
2
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
3
|
+
import { chunk_manifold_triangle, MANIFOLD_TRIANGLE_STRUCT } from "./chunk_manifold_triangle.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* How wide a beam of light arrives at the receiver after refracting once through a smooth interface:
|
|
7
|
+
* the generalized geometric term of manifold next-event estimation (Hanika, Droske & Fascione 2015),
|
|
8
|
+
* computed by carrying the beam's first-order shape — ray differentials (Igehy 1999) — from the light,
|
|
9
|
+
* across the interface with the curvature its interpolated normals have, to the receiver.
|
|
10
|
+
*
|
|
11
|
+
* `manifold_beam_area(source, distant, x1, tri, x0, eta)`, the beam leaving `source` toward `x1` on
|
|
12
|
+
* `tri` and refracting there toward `x0`, `eta` the index of the light's side over the receiver's:
|
|
13
|
+
*
|
|
14
|
+
* - from a point light (`distant` false, `source` the light's position), the area across the beam at
|
|
15
|
+
* `x0` per unit of solid angle leaving the light: irradiance across the beam is intensity over it.
|
|
16
|
+
* With no interface between them it is the squared distance.
|
|
17
|
+
* - from a distant light (`distant` true, `source` any point on the incoming ray before `x1`), the
|
|
18
|
+
* area across the beam at `x0` per unit area across it before the interface: irradiance across the
|
|
19
|
+
* beam is the light's over it. Through a flat interface it is cos(transmitted) / cos(incident).
|
|
20
|
+
*
|
|
21
|
+
* Zero where the light cannot refract toward the receiver (total internal reflection), and where the
|
|
22
|
+
* beam focuses to a point.
|
|
23
|
+
*
|
|
24
|
+
* @type {CodeChunk}
|
|
25
|
+
*/
|
|
26
|
+
export const chunk_manifold_beam = CodeChunk.from(
|
|
27
|
+
//language=WGSL
|
|
28
|
+
`
|
|
29
|
+
fn manifold_beam_area(
|
|
30
|
+
source: vec3<f32>,
|
|
31
|
+
distant: bool,
|
|
32
|
+
x1: vec3<f32>,
|
|
33
|
+
tri: ${MANIFOLD_TRIANGLE_STRUCT.wgsl_ref},
|
|
34
|
+
x0: vec3<f32>,
|
|
35
|
+
eta: f32,
|
|
36
|
+
) -> f32 {
|
|
37
|
+
let to_interface = x1 - source;
|
|
38
|
+
let d = normalize(to_interface);
|
|
39
|
+
let t = length(to_interface);
|
|
40
|
+
|
|
41
|
+
let frame = build_orthonormal_matrix_n(d);
|
|
42
|
+
|
|
43
|
+
// a unit solid angle about a point light, or a unit area across a distant light's rays
|
|
44
|
+
var dp0 = select(vec3<f32>(0.0), frame[0], distant);
|
|
45
|
+
var dp1 = select(vec3<f32>(0.0), frame[1], distant);
|
|
46
|
+
let dd0 = select(frame[0], vec3<f32>(0.0), distant);
|
|
47
|
+
let dd1 = select(frame[1], vec3<f32>(0.0), distant);
|
|
48
|
+
|
|
49
|
+
// carried to the interface's plane
|
|
50
|
+
let ng = manifold_triangle_geometric_normal(tri);
|
|
51
|
+
let d_dot_ng = dot(d, ng);
|
|
52
|
+
|
|
53
|
+
dp0 += t * dd0;
|
|
54
|
+
dp1 += t * dd1;
|
|
55
|
+
dp0 -= d * (dot(dp0, ng) / d_dot_ng);
|
|
56
|
+
dp1 -= d * (dot(dp1, ng) / d_dot_ng);
|
|
57
|
+
|
|
58
|
+
// refracted, the interpolated normal facing the light
|
|
59
|
+
let flip = select(1.0, -1.0, dot(d, manifold_triangle_normal(tri, x1)) > 0.0);
|
|
60
|
+
let n = manifold_triangle_normal(tri, x1) * flip;
|
|
61
|
+
let dn0 = manifold_triangle_normal_derivative(tri, x1, dp0) * flip;
|
|
62
|
+
let dn1 = manifold_triangle_normal_derivative(tri, x1, dp1) * flip;
|
|
63
|
+
|
|
64
|
+
let c = -dot(d, n);
|
|
65
|
+
let k = 1.0 - eta * eta * (1.0 - c * c);
|
|
66
|
+
|
|
67
|
+
if (k <= 0.0) {
|
|
68
|
+
return 0.0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
let root_k = sqrt(k);
|
|
72
|
+
|
|
73
|
+
let transmitted = normalize(eta * d + (eta * c - root_k) * n);
|
|
74
|
+
|
|
75
|
+
// T = eta D + (eta c - sqrt(k)) N, c = -D.N, k = 1 - eta^2 (1 - c^2)
|
|
76
|
+
let dc0 = -(dot(dd0, n) + dot(d, dn0));
|
|
77
|
+
let dc1 = -(dot(dd1, n) + dot(d, dn1));
|
|
78
|
+
let dc_weight = eta - eta * eta * c / root_k;
|
|
79
|
+
let dt0 = eta * dd0 + dc_weight * dc0 * n + (eta * c - root_k) * dn0;
|
|
80
|
+
let dt1 = eta * dd1 + dc_weight * dc1 * n + (eta * c - root_k) * dn1;
|
|
81
|
+
|
|
82
|
+
// carried to the receiver, across the transmitted ray
|
|
83
|
+
let s = length(x0 - x1);
|
|
84
|
+
|
|
85
|
+
var q0 = dp0 + s * dt0;
|
|
86
|
+
var q1 = dp1 + s * dt1;
|
|
87
|
+
|
|
88
|
+
q0 -= transmitted * dot(q0, transmitted);
|
|
89
|
+
q1 -= transmitted * dot(q1, transmitted);
|
|
90
|
+
|
|
91
|
+
return length(cross(q0, q1));
|
|
92
|
+
}
|
|
93
|
+
`,
|
|
94
|
+
[
|
|
95
|
+
MANIFOLD_TRIANGLE_STRUCT.declaration_chunk,
|
|
96
|
+
chunk_manifold_triangle,
|
|
97
|
+
chunk_build_orthonormal_matrix_n,
|
|
98
|
+
]
|
|
99
|
+
);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Light arriving at a receiver through one refracting interface: the direction it arrives from, and
|
|
3
|
+
* its irradiance across that direction, per channel. Zero irradiance when no connection was made.
|
|
4
|
+
*/
|
|
5
|
+
export const MANIFOLD_CONNECTION_STRUCT: WebGPUStruct;
|
|
6
|
+
/**
|
|
7
|
+
* Newton steps one connection takes, each one ray cast to put its target back on the surface; past
|
|
8
|
+
* the limit the connection is given up and contributes nothing. Through flat water from the straight
|
|
9
|
+
* seed, the sun takes 3 steps at 30 degrees from overhead, 5 at 60 and 80, 7 at 85; through glass,
|
|
10
|
+
* 5 at 75 and 8 at 85.
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const MANIFOLD_ITERATION_LIMIT: number;
|
|
14
|
+
/**
|
|
15
|
+
* Halvings of one Newton step in the triangle's plane — the surface's local model, where trying a
|
|
16
|
+
* length costs no ray — before its target is cast for.
|
|
17
|
+
* @type {number}
|
|
18
|
+
*/
|
|
19
|
+
export const MANIFOLD_LINE_SEARCH_LIMIT: number;
|
|
20
|
+
/**
|
|
21
|
+
* Ray casts one connection's probes take in all: one a step, and one more for each surface of
|
|
22
|
+
* another mesh a probe passes on its way to the interface it walks — an index-matched boundary
|
|
23
|
+
* inside the same water, a leaf. An index-matched box over the receiver puts two on every probe, so
|
|
24
|
+
* a connection through it has five steps. Past the limit the connection is given up.
|
|
25
|
+
* @type {number}
|
|
26
|
+
*/
|
|
27
|
+
export const MANIFOLD_PROBE_LIMIT: number;
|
|
28
|
+
/**
|
|
29
|
+
* How far short of the interface, relative to its distance, the receiver's leg of a connection
|
|
30
|
+
* stops, so that it does not hit the vertex it connects through.
|
|
31
|
+
* @type {number}
|
|
32
|
+
*/
|
|
33
|
+
export const MANIFOLD_LEG_SLACK: number;
|
|
34
|
+
/**
|
|
35
|
+
* Manifold next-event estimation through one smooth refracting interface (Hanika, Droske & Fascione
|
|
36
|
+
* 2015): `manifold_connect(x0, stack, volumes_present, seed, light_type, index, jitter)`, for a
|
|
37
|
+
* receiver at `x0` in the media `stack` whose shadow ray toward the light stopped at a refracting
|
|
38
|
+
* interface (`seed`, as `medium_shadow_transmittance` reports it).
|
|
39
|
+
*
|
|
40
|
+
* 1. The light is sampled as `sample_light_record` samples it, with the same `jitter`.
|
|
41
|
+
* 2. From where the shadow ray met the interface, Newton steps on the specular constraint
|
|
42
|
+
* (`manifold_newton_step`) find the point where light from the light refracts toward `x0`, each
|
|
43
|
+
* target put back on the surface by a ray from `x0` toward it, which passes other meshes and
|
|
44
|
+
* must hit the same one ({@link MANIFOLD_PROBE_LIMIT} casts in all). From a seed far from the
|
|
45
|
+
* solution — light far from the normal — a full step overshoots where the constraint flattens
|
|
46
|
+
* out, so a step is halved in the triangle's plane until the constraint falls there, and halved
|
|
47
|
+
* again if it does not fall on the surface; after a step that is taken, the next may grow back.
|
|
48
|
+
* At most {@link MANIFOLD_ITERATION_LIMIT} steps, to `manifold_tolerance`.
|
|
49
|
+
* 3. Its two legs are shadow rays: `x0` to the vertex in the receiver's media, the vertex to the
|
|
50
|
+
* light in the light's. Either meeting another refracting interface ends the connection: one
|
|
51
|
+
* interface is what this connects through.
|
|
52
|
+
* 4. The irradiance is the light's intensity (or a distant light's irradiance) times the interface's
|
|
53
|
+
* transmission — `1 - F` at the vertex, by the material's `transmission_factor` — and both legs'
|
|
54
|
+
* transmittance, over the beam's area (`manifold_beam_area`), which carries the refraction's
|
|
55
|
+
* spreading and the curvature's focusing.
|
|
56
|
+
*
|
|
57
|
+
* Where several vertices refract the same light to the same receiver (overlapping waves), the one
|
|
58
|
+
* the walk finds stands for all: biased there, as Hanika's estimator is. Normal maps are not part of
|
|
59
|
+
* the surface it walks: the vertex normals are.
|
|
60
|
+
*
|
|
61
|
+
* The importing shader binds what ray queries, `materials`, `media` and `light_data` need.
|
|
62
|
+
*
|
|
63
|
+
* @type {CodeChunk}
|
|
64
|
+
*/
|
|
65
|
+
export const chunk_manifold_connect: CodeChunk;
|
|
66
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
67
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
68
|
+
//# sourceMappingURL=chunk_manifold_connect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_manifold_connect.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.js"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,sDAGyB;AAEzB;;;;;;GAMG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;;GAIG;AACH,yCAFU,MAAM,CAE4B;AAE5C;;;;;;GAMG;AACH,mCAFU,MAAM,CAEuB;AAEvC;;;;GAIG;AACH,iCAFU,MAAM,CAEuB;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qCAFU,SAAS,CA+KjB;6BA/P2B,sCAAsC;0BAFzC,uCAAuC"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { chunk_F_dielectric } from "../../../shader/chunk/brdf/fresnel/chunk_F_dielectric.js";
|
|
2
|
+
import { chunk_offset_ray } from "../../../shader/chunk/geometry/ray/chunk_offset_ray.js";
|
|
3
|
+
import { chunk_ray_query_nearest } from "../../../shader/chunk/geometry/ray/chunk_ray_query_nearest.js";
|
|
4
|
+
import { RAY_STRUCT } from "../../../shader/chunk/geometry/ray/RAY_STRUCT.js";
|
|
5
|
+
import { F32_MAX_DEFINITION } from "../../../shader/chunk/math/F32_MAX_DEFINITION.js";
|
|
6
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
7
|
+
import { vec3f } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
8
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
9
|
+
import { chunk_medium_path, MEDIUM_SHADOW_STRUCT } from "../media/chunk_medium_path.js";
|
|
10
|
+
import { chunk_medium_stack, MEDIUM_STACK_STRUCT } from "../media/chunk_medium_stack.js";
|
|
11
|
+
import { chunk_manifold_beam } from "./chunk_manifold_beam.js";
|
|
12
|
+
import { chunk_manifold_constraint } from "./chunk_manifold_constraint.js";
|
|
13
|
+
import { chunk_manifold_light } from "./chunk_manifold_light.js";
|
|
14
|
+
import { chunk_manifold_light_sample } from "./chunk_manifold_light_sample.js";
|
|
15
|
+
import { chunk_manifold_triangle } from "./chunk_manifold_triangle.js";
|
|
16
|
+
import { chunk_manifold_triangle_of_hit } from "./chunk_manifold_triangle_of_hit.js";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Light arriving at a receiver through one refracting interface: the direction it arrives from, and
|
|
20
|
+
* its irradiance across that direction, per channel. Zero irradiance when no connection was made.
|
|
21
|
+
*/
|
|
22
|
+
export const MANIFOLD_CONNECTION_STRUCT = WebGPUStruct.from({
|
|
23
|
+
direction: vec3f,
|
|
24
|
+
irradiance: vec3f,
|
|
25
|
+
}, "ManifoldConnection");
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Newton steps one connection takes, each one ray cast to put its target back on the surface; past
|
|
29
|
+
* the limit the connection is given up and contributes nothing. Through flat water from the straight
|
|
30
|
+
* seed, the sun takes 3 steps at 30 degrees from overhead, 5 at 60 and 80, 7 at 85; through glass,
|
|
31
|
+
* 5 at 75 and 8 at 85.
|
|
32
|
+
* @type {number}
|
|
33
|
+
*/
|
|
34
|
+
export const MANIFOLD_ITERATION_LIMIT = 8;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Halvings of one Newton step in the triangle's plane — the surface's local model, where trying a
|
|
38
|
+
* length costs no ray — before its target is cast for.
|
|
39
|
+
* @type {number}
|
|
40
|
+
*/
|
|
41
|
+
export const MANIFOLD_LINE_SEARCH_LIMIT = 6;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Ray casts one connection's probes take in all: one a step, and one more for each surface of
|
|
45
|
+
* another mesh a probe passes on its way to the interface it walks — an index-matched boundary
|
|
46
|
+
* inside the same water, a leaf. An index-matched box over the receiver puts two on every probe, so
|
|
47
|
+
* a connection through it has five steps. Past the limit the connection is given up.
|
|
48
|
+
* @type {number}
|
|
49
|
+
*/
|
|
50
|
+
export const MANIFOLD_PROBE_LIMIT = 16;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* How far short of the interface, relative to its distance, the receiver's leg of a connection
|
|
54
|
+
* stops, so that it does not hit the vertex it connects through.
|
|
55
|
+
* @type {number}
|
|
56
|
+
*/
|
|
57
|
+
export const MANIFOLD_LEG_SLACK = 1e-4;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Manifold next-event estimation through one smooth refracting interface (Hanika, Droske & Fascione
|
|
61
|
+
* 2015): `manifold_connect(x0, stack, volumes_present, seed, light_type, index, jitter)`, for a
|
|
62
|
+
* receiver at `x0` in the media `stack` whose shadow ray toward the light stopped at a refracting
|
|
63
|
+
* interface (`seed`, as `medium_shadow_transmittance` reports it).
|
|
64
|
+
*
|
|
65
|
+
* 1. The light is sampled as `sample_light_record` samples it, with the same `jitter`.
|
|
66
|
+
* 2. From where the shadow ray met the interface, Newton steps on the specular constraint
|
|
67
|
+
* (`manifold_newton_step`) find the point where light from the light refracts toward `x0`, each
|
|
68
|
+
* target put back on the surface by a ray from `x0` toward it, which passes other meshes and
|
|
69
|
+
* must hit the same one ({@link MANIFOLD_PROBE_LIMIT} casts in all). From a seed far from the
|
|
70
|
+
* solution — light far from the normal — a full step overshoots where the constraint flattens
|
|
71
|
+
* out, so a step is halved in the triangle's plane until the constraint falls there, and halved
|
|
72
|
+
* again if it does not fall on the surface; after a step that is taken, the next may grow back.
|
|
73
|
+
* At most {@link MANIFOLD_ITERATION_LIMIT} steps, to `manifold_tolerance`.
|
|
74
|
+
* 3. Its two legs are shadow rays: `x0` to the vertex in the receiver's media, the vertex to the
|
|
75
|
+
* light in the light's. Either meeting another refracting interface ends the connection: one
|
|
76
|
+
* interface is what this connects through.
|
|
77
|
+
* 4. The irradiance is the light's intensity (or a distant light's irradiance) times the interface's
|
|
78
|
+
* transmission — `1 - F` at the vertex, by the material's `transmission_factor` — and both legs'
|
|
79
|
+
* transmittance, over the beam's area (`manifold_beam_area`), which carries the refraction's
|
|
80
|
+
* spreading and the curvature's focusing.
|
|
81
|
+
*
|
|
82
|
+
* Where several vertices refract the same light to the same receiver (overlapping waves), the one
|
|
83
|
+
* the walk finds stands for all: biased there, as Hanika's estimator is. Normal maps are not part of
|
|
84
|
+
* the surface it walks: the vertex normals are.
|
|
85
|
+
*
|
|
86
|
+
* The importing shader binds what ray queries, `materials`, `media` and `light_data` need.
|
|
87
|
+
*
|
|
88
|
+
* @type {CodeChunk}
|
|
89
|
+
*/
|
|
90
|
+
export const chunk_manifold_connect = CodeChunk.from(
|
|
91
|
+
//language=WGSL
|
|
92
|
+
`
|
|
93
|
+
const MANIFOLD_ITERATION_LIMIT: u32 = ${MANIFOLD_ITERATION_LIMIT}u;
|
|
94
|
+
const MANIFOLD_LINE_SEARCH_LIMIT: u32 = ${MANIFOLD_LINE_SEARCH_LIMIT}u;
|
|
95
|
+
const MANIFOLD_PROBE_LIMIT: u32 = ${MANIFOLD_PROBE_LIMIT}u;
|
|
96
|
+
const MANIFOLD_LEG_SLACK: f32 = ${MANIFOLD_LEG_SLACK};
|
|
97
|
+
|
|
98
|
+
fn manifold_connect(
|
|
99
|
+
x0: vec3<f32>,
|
|
100
|
+
stack: ${MEDIUM_STACK_STRUCT.wgsl_ref},
|
|
101
|
+
volumes_present: bool,
|
|
102
|
+
seed: ${MEDIUM_SHADOW_STRUCT.wgsl_ref},
|
|
103
|
+
light_type: u32,
|
|
104
|
+
index: u32,
|
|
105
|
+
jitter: vec2<f32>,
|
|
106
|
+
) -> ${MANIFOLD_CONNECTION_STRUCT.wgsl_ref} {
|
|
107
|
+
let none = ${MANIFOLD_CONNECTION_STRUCT.wgsl_ref}(vec3<f32>(0.0), vec3<f32>(0.0));
|
|
108
|
+
|
|
109
|
+
let light = manifold_light_sample(light_type, index, jitter);
|
|
110
|
+
let distant = light.distant != 0u;
|
|
111
|
+
|
|
112
|
+
// the two sides, as the shadow ray met the interface: the receiver's is the one it came from
|
|
113
|
+
let crossing = medium_crossing(seed.stack, seed.material, seed.entering);
|
|
114
|
+
let n_outside = medium_ior_of_material(crossing.outside);
|
|
115
|
+
let n_inside = medium_ior_of_material(crossing.inside);
|
|
116
|
+
let n_receiver = select(n_inside, n_outside, seed.entering);
|
|
117
|
+
let n_light = select(n_outside, n_inside, seed.entering);
|
|
118
|
+
|
|
119
|
+
var tri = manifold_triangle_of_hit(seed.instance, seed.triangle);
|
|
120
|
+
var x1 = manifold_triangle_point(tri, seed.barycentrics);
|
|
121
|
+
var step = manifold_newton_step(tri, x0, x1, light, n_receiver, n_light);
|
|
122
|
+
|
|
123
|
+
// how much of the Newton step is taken
|
|
124
|
+
var reach = 1.0;
|
|
125
|
+
var casts = 0u;
|
|
126
|
+
|
|
127
|
+
for (var i = 0u; i < MANIFOLD_ITERATION_LIMIT; i++) {
|
|
128
|
+
if (!step.ok || step.residual < manifold_tolerance(x0, x1) || casts >= MANIFOLD_PROBE_LIMIT) {
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// halved in the triangle's plane, the surface's local model, until the constraint falls there
|
|
133
|
+
var aim = mix(x1, step.aim, reach);
|
|
134
|
+
|
|
135
|
+
for (var k = 0u; k < MANIFOLD_LINE_SEARCH_LIMIT; k++) {
|
|
136
|
+
let c = manifold_constraint(tri, x0, aim, light, n_receiver, n_light);
|
|
137
|
+
|
|
138
|
+
if (max(abs(c.x), abs(c.y)) < step.residual) {
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
reach *= 0.5;
|
|
143
|
+
aim = mix(x1, step.aim, reach);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// put back on the surface by a ray from the receiver toward it, past other meshes
|
|
147
|
+
var probe: ${RAY_STRUCT.wgsl_ref};
|
|
148
|
+
probe.origin = x0;
|
|
149
|
+
probe.direction = normalize(aim - x0);
|
|
150
|
+
probe.tmax = F32_MAX;
|
|
151
|
+
|
|
152
|
+
var hit = ray_query_nearest(probe);
|
|
153
|
+
casts++;
|
|
154
|
+
|
|
155
|
+
while (hit.t > 0.0 && hit.instance != seed.instance && casts < MANIFOLD_PROBE_LIMIT) {
|
|
156
|
+
let past = manifold_triangle_of_hit(hit.instance, hit.triangle);
|
|
157
|
+
let ng_past = manifold_triangle_geometric_normal(past);
|
|
158
|
+
|
|
159
|
+
probe.origin = offset_ray(manifold_triangle_point(past, hit.barycentrics), ng_past * select(-1.0, 1.0, dot(ng_past, probe.direction) > 0.0));
|
|
160
|
+
|
|
161
|
+
hit = ray_query_nearest(probe);
|
|
162
|
+
casts++;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (hit.t > 0.0 && hit.instance == seed.instance) {
|
|
166
|
+
let tri_next = manifold_triangle_of_hit(seed.instance, hit.triangle);
|
|
167
|
+
let x_next = manifold_triangle_point(tri_next, hit.barycentrics);
|
|
168
|
+
let step_next = manifold_newton_step(tri_next, x0, x_next, light, n_receiver, n_light);
|
|
169
|
+
|
|
170
|
+
if (step_next.residual < step.residual) {
|
|
171
|
+
tri = tri_next;
|
|
172
|
+
x1 = x_next;
|
|
173
|
+
step = step_next;
|
|
174
|
+
reach = min(1.0, 2.0 * reach);
|
|
175
|
+
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// the surface is not its plane here, or the probe missed it: a shorter step
|
|
181
|
+
reach *= 0.5;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (!(step.residual < manifold_tolerance(x0, x1))) {
|
|
185
|
+
return none;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
let to_vertex = x1 - x0;
|
|
189
|
+
let d0 = length(to_vertex);
|
|
190
|
+
let toward_vertex = to_vertex / d0;
|
|
191
|
+
let toward_light = manifold_light_direction(light, x1);
|
|
192
|
+
|
|
193
|
+
// the receiver's leg, stopping short of the vertex
|
|
194
|
+
var leg: ${RAY_STRUCT.wgsl_ref};
|
|
195
|
+
leg.origin = x0;
|
|
196
|
+
leg.direction = toward_vertex;
|
|
197
|
+
leg.tmax = d0 * (1.0 - MANIFOLD_LEG_SLACK);
|
|
198
|
+
|
|
199
|
+
let first = medium_shadow_transmittance(leg, stack, volumes_present, MEDIUM_SCATTER_SHADOW_HIT_LIMIT);
|
|
200
|
+
|
|
201
|
+
if (first.refracting || all(first.transmittance <= vec3<f32>(0.0))) {
|
|
202
|
+
return none;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// across the interface the way the shadow ray met it, from the media the leg ends in
|
|
206
|
+
let across = medium_crossing(first.stack, seed.material, seed.entering);
|
|
207
|
+
|
|
208
|
+
// the light's leg, from the vertex on the light's side
|
|
209
|
+
let ng = manifold_triangle_geometric_normal(tri);
|
|
210
|
+
|
|
211
|
+
var leg_light: ${RAY_STRUCT.wgsl_ref};
|
|
212
|
+
leg_light.origin = offset_ray(x1, ng * select(-1.0, 1.0, dot(ng, toward_light) > 0.0));
|
|
213
|
+
leg_light.direction = toward_light;
|
|
214
|
+
leg_light.tmax = manifold_light_shadow_length(light, x1);
|
|
215
|
+
|
|
216
|
+
let second = medium_shadow_transmittance(leg_light, across.stack, volumes_present, MEDIUM_SCATTER_SHADOW_HIT_LIMIT);
|
|
217
|
+
|
|
218
|
+
if (second.refracting || all(second.transmittance <= vec3<f32>(0.0))) {
|
|
219
|
+
return none;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// what the interface lets through, from the light's side about the interpolated normal
|
|
223
|
+
let n = manifold_triangle_normal(tri, x1);
|
|
224
|
+
let cos_light = abs(dot(toward_light, n));
|
|
225
|
+
let transmitted = (1.0 - F_dielectric(cos_light, n_receiver / n_light)) * materials[seed.material].transmission_factor;
|
|
226
|
+
|
|
227
|
+
// a local light's intensity falls off from its centre, as sample_light_record has it: its
|
|
228
|
+
// sampled point aims the connection, and only spreads the light's shadows and caustics
|
|
229
|
+
let source = select(light.centre, x1 + toward_light, distant);
|
|
230
|
+
let area = manifold_beam_area(source, distant, x1, tri, x0, n_light / n_receiver);
|
|
231
|
+
|
|
232
|
+
if (area <= 0.0) {
|
|
233
|
+
return none;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
let path_length = d0 + select(length(light.centre - x1), 0.0, distant);
|
|
237
|
+
let intensity = manifold_light_intensity(light, x1, path_length);
|
|
238
|
+
|
|
239
|
+
return ${MANIFOLD_CONNECTION_STRUCT.wgsl_ref}(
|
|
240
|
+
toward_vertex,
|
|
241
|
+
intensity * transmitted * first.transmittance * second.transmittance / area
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
`,
|
|
245
|
+
[
|
|
246
|
+
RAY_STRUCT.declaration_chunk,
|
|
247
|
+
MEDIUM_STACK_STRUCT.declaration_chunk,
|
|
248
|
+
MEDIUM_SHADOW_STRUCT.declaration_chunk,
|
|
249
|
+
MANIFOLD_CONNECTION_STRUCT.declaration_chunk,
|
|
250
|
+
F32_MAX_DEFINITION,
|
|
251
|
+
chunk_offset_ray,
|
|
252
|
+
chunk_ray_query_nearest,
|
|
253
|
+
chunk_F_dielectric,
|
|
254
|
+
chunk_medium_stack,
|
|
255
|
+
chunk_medium_path,
|
|
256
|
+
chunk_manifold_triangle,
|
|
257
|
+
chunk_manifold_triangle_of_hit,
|
|
258
|
+
chunk_manifold_light,
|
|
259
|
+
chunk_manifold_light_sample,
|
|
260
|
+
chunk_manifold_constraint,
|
|
261
|
+
chunk_manifold_beam,
|
|
262
|
+
]
|
|
263
|
+
);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One Newton step toward the point where light refracts from the light to the receiver: the point
|
|
3
|
+
* of the triangle's plane it aims for, the constraint's size where it started, and whether a step
|
|
4
|
+
* could be taken at all.
|
|
5
|
+
*/
|
|
6
|
+
export const MANIFOLD_STEP_STRUCT: WebGPUStruct;
|
|
7
|
+
/**
|
|
8
|
+
* The finite-difference step of the constraint's Jacobian, relative to the distance over which the
|
|
9
|
+
* constraint turns: the receiver's from the interface, or a local light's where nearer.
|
|
10
|
+
* @type {number}
|
|
11
|
+
*/
|
|
12
|
+
export const MANIFOLD_DIFFERENCE_SCALE: number;
|
|
13
|
+
/**
|
|
14
|
+
* The least finite-difference step, relative to the interface point's largest coordinate: about 170
|
|
15
|
+
* f32 ulps, so that the step resolves far from the origin.
|
|
16
|
+
* @type {number}
|
|
17
|
+
*/
|
|
18
|
+
export const MANIFOLD_DIFFERENCE_FLOOR: number;
|
|
19
|
+
/**
|
|
20
|
+
* The constraint's size, about the sine of the angle off Snell's law, under which a connection has
|
|
21
|
+
* converged — near the origin; far from it, see {@link MANIFOLD_POSITION_NOISE}.
|
|
22
|
+
* @type {number}
|
|
23
|
+
*/
|
|
24
|
+
export const MANIFOLD_TOLERANCE: number;
|
|
25
|
+
/**
|
|
26
|
+
* How finely f32 places a point, relative to its largest coordinate, as the constraint feels it: 8 to
|
|
27
|
+
* 16 ulps. Over the receiver's distance it is an angle the constraint cannot resolve, which the
|
|
28
|
+
* tolerance does not go below. Newton's residual settles at 0.5 to 1.4 ulps over that distance,
|
|
29
|
+
* 100 m to 10 km from the origin, 5 cm to 5 m from the interface.
|
|
30
|
+
* @type {number}
|
|
31
|
+
*/
|
|
32
|
+
export const MANIFOLD_POSITION_NOISE: number;
|
|
33
|
+
/**
|
|
34
|
+
* Where on a smooth interface light from a light refracts toward a receiver: the specular constraint
|
|
35
|
+
* of manifold next-event estimation (Hanika, Droske & Fascione 2015) for one refracting vertex, and
|
|
36
|
+
* a Newton step on it within one triangle.
|
|
37
|
+
*
|
|
38
|
+
* - `manifold_constraint(tri, x0, x1, light, n_receiver, n_light)`: at `x1` on the triangle's plane,
|
|
39
|
+
* with `wo` toward the receiver `x0` and `wi` toward the light, the generalized half vector
|
|
40
|
+
* `n_light wi + n_receiver wo` is parallel to the normal exactly where Snell's law holds. The
|
|
41
|
+
* constraint is its cross product with the interpolated normal, expressed in the plane's frame:
|
|
42
|
+
* zero at a solution, and about the sine of the angle off it elsewhere.
|
|
43
|
+
* - `manifold_newton_step(tri, x0, x1, light, n_receiver, n_light)`: a Newton step from `x1` within
|
|
44
|
+
* the plane, the Jacobian by forward differences (the constraint is cheap, the interpolated normal
|
|
45
|
+
* affine across the plane). The target can leave the triangle; the caller projects it onto the
|
|
46
|
+
* surface.
|
|
47
|
+
* - `manifold_tolerance(x0, x1)`: the residual under which a solution at `x1` has converged,
|
|
48
|
+
* {@link MANIFOLD_TOLERANCE}, or what f32 resolves there if coarser.
|
|
49
|
+
*
|
|
50
|
+
* @type {CodeChunk}
|
|
51
|
+
*/
|
|
52
|
+
export const chunk_manifold_constraint: CodeChunk;
|
|
53
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
54
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
55
|
+
//# sourceMappingURL=chunk_manifold_constraint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_manifold_constraint.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,gDAImB;AAEnB;;;;GAIG;AACH,wCAFU,MAAM,CAE8B;AAE9C;;;;GAIG;AACH,wCAFU,MAAM,CAE8B;AAE9C;;;;GAIG;AACH,iCAFU,MAAM,CAEuB;AAEvC;;;;;;GAMG;AACH,sCAFU,MAAM,CAE4B;AAE5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wCAFU,SAAS,CAmFjB;6BAjJ2B,sCAAsC;0BAFzC,uCAAuC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
|
+
import { bool, f32, vec3f } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
3
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
4
|
+
import { chunk_manifold_light, MANIFOLD_LIGHT_STRUCT } from "./chunk_manifold_light.js";
|
|
5
|
+
import { chunk_manifold_triangle, MANIFOLD_TRIANGLE_STRUCT } from "./chunk_manifold_triangle.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* One Newton step toward the point where light refracts from the light to the receiver: the point
|
|
9
|
+
* of the triangle's plane it aims for, the constraint's size where it started, and whether a step
|
|
10
|
+
* could be taken at all.
|
|
11
|
+
*/
|
|
12
|
+
export const MANIFOLD_STEP_STRUCT = WebGPUStruct.from({
|
|
13
|
+
aim: vec3f,
|
|
14
|
+
residual: f32,
|
|
15
|
+
ok: bool,
|
|
16
|
+
}, "ManifoldStep");
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The finite-difference step of the constraint's Jacobian, relative to the distance over which the
|
|
20
|
+
* constraint turns: the receiver's from the interface, or a local light's where nearer.
|
|
21
|
+
* @type {number}
|
|
22
|
+
*/
|
|
23
|
+
export const MANIFOLD_DIFFERENCE_SCALE = 1e-3;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The least finite-difference step, relative to the interface point's largest coordinate: about 170
|
|
27
|
+
* f32 ulps, so that the step resolves far from the origin.
|
|
28
|
+
* @type {number}
|
|
29
|
+
*/
|
|
30
|
+
export const MANIFOLD_DIFFERENCE_FLOOR = 1e-5;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The constraint's size, about the sine of the angle off Snell's law, under which a connection has
|
|
34
|
+
* converged — near the origin; far from it, see {@link MANIFOLD_POSITION_NOISE}.
|
|
35
|
+
* @type {number}
|
|
36
|
+
*/
|
|
37
|
+
export const MANIFOLD_TOLERANCE = 1e-4;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* How finely f32 places a point, relative to its largest coordinate, as the constraint feels it: 8 to
|
|
41
|
+
* 16 ulps. Over the receiver's distance it is an angle the constraint cannot resolve, which the
|
|
42
|
+
* tolerance does not go below. Newton's residual settles at 0.5 to 1.4 ulps over that distance,
|
|
43
|
+
* 100 m to 10 km from the origin, 5 cm to 5 m from the interface.
|
|
44
|
+
* @type {number}
|
|
45
|
+
*/
|
|
46
|
+
export const MANIFOLD_POSITION_NOISE = 1e-6;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Where on a smooth interface light from a light refracts toward a receiver: the specular constraint
|
|
50
|
+
* of manifold next-event estimation (Hanika, Droske & Fascione 2015) for one refracting vertex, and
|
|
51
|
+
* a Newton step on it within one triangle.
|
|
52
|
+
*
|
|
53
|
+
* - `manifold_constraint(tri, x0, x1, light, n_receiver, n_light)`: at `x1` on the triangle's plane,
|
|
54
|
+
* with `wo` toward the receiver `x0` and `wi` toward the light, the generalized half vector
|
|
55
|
+
* `n_light wi + n_receiver wo` is parallel to the normal exactly where Snell's law holds. The
|
|
56
|
+
* constraint is its cross product with the interpolated normal, expressed in the plane's frame:
|
|
57
|
+
* zero at a solution, and about the sine of the angle off it elsewhere.
|
|
58
|
+
* - `manifold_newton_step(tri, x0, x1, light, n_receiver, n_light)`: a Newton step from `x1` within
|
|
59
|
+
* the plane, the Jacobian by forward differences (the constraint is cheap, the interpolated normal
|
|
60
|
+
* affine across the plane). The target can leave the triangle; the caller projects it onto the
|
|
61
|
+
* surface.
|
|
62
|
+
* - `manifold_tolerance(x0, x1)`: the residual under which a solution at `x1` has converged,
|
|
63
|
+
* {@link MANIFOLD_TOLERANCE}, or what f32 resolves there if coarser.
|
|
64
|
+
*
|
|
65
|
+
* @type {CodeChunk}
|
|
66
|
+
*/
|
|
67
|
+
export const chunk_manifold_constraint = CodeChunk.from(
|
|
68
|
+
//language=WGSL
|
|
69
|
+
`
|
|
70
|
+
const MANIFOLD_DIFFERENCE_SCALE: f32 = ${MANIFOLD_DIFFERENCE_SCALE};
|
|
71
|
+
const MANIFOLD_DIFFERENCE_FLOOR: f32 = ${MANIFOLD_DIFFERENCE_FLOOR};
|
|
72
|
+
const MANIFOLD_TOLERANCE: f32 = ${MANIFOLD_TOLERANCE};
|
|
73
|
+
const MANIFOLD_POSITION_NOISE: f32 = ${MANIFOLD_POSITION_NOISE};
|
|
74
|
+
|
|
75
|
+
fn manifold_tolerance(x0: vec3<f32>, x1: vec3<f32>) -> f32 {
|
|
76
|
+
let a = abs(x1);
|
|
77
|
+
let reach = max(max(a.x, a.y), a.z);
|
|
78
|
+
|
|
79
|
+
return max(MANIFOLD_TOLERANCE, MANIFOLD_POSITION_NOISE * reach / distance(x0, x1));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
fn manifold_constraint(
|
|
83
|
+
tri: ${MANIFOLD_TRIANGLE_STRUCT.wgsl_ref},
|
|
84
|
+
x0: vec3<f32>,
|
|
85
|
+
x1: vec3<f32>,
|
|
86
|
+
light: ${MANIFOLD_LIGHT_STRUCT.wgsl_ref},
|
|
87
|
+
n_receiver: f32,
|
|
88
|
+
n_light: f32,
|
|
89
|
+
) -> vec2<f32> {
|
|
90
|
+
let wo = normalize(x0 - x1);
|
|
91
|
+
let wi = manifold_light_direction(light, x1);
|
|
92
|
+
|
|
93
|
+
let h = normalize(n_light * wi + n_receiver * wo);
|
|
94
|
+
let c = cross(h, manifold_triangle_normal(tri, x1));
|
|
95
|
+
|
|
96
|
+
let frame = manifold_triangle_frame(tri);
|
|
97
|
+
|
|
98
|
+
return vec2<f32>(dot(c, frame[0]), dot(c, frame[1]));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
fn manifold_newton_step(
|
|
102
|
+
tri: ${MANIFOLD_TRIANGLE_STRUCT.wgsl_ref},
|
|
103
|
+
x0: vec3<f32>,
|
|
104
|
+
x1: vec3<f32>,
|
|
105
|
+
light: ${MANIFOLD_LIGHT_STRUCT.wgsl_ref},
|
|
106
|
+
n_receiver: f32,
|
|
107
|
+
n_light: f32,
|
|
108
|
+
) -> ${MANIFOLD_STEP_STRUCT.wgsl_ref} {
|
|
109
|
+
let frame = manifold_triangle_frame(tri);
|
|
110
|
+
|
|
111
|
+
// the constraint turns over the receiver's distance, or a local light's where nearer — not the
|
|
112
|
+
// triangle's size — and the step must stay many ulps of x1 wide to be resolved at all
|
|
113
|
+
let a = abs(x1);
|
|
114
|
+
let reach = select(min(distance(x0, x1), distance(light.position, x1)), distance(x0, x1), light.distant != 0u);
|
|
115
|
+
let h = max(MANIFOLD_DIFFERENCE_SCALE * reach, MANIFOLD_DIFFERENCE_FLOOR * max(max(a.x, a.y), a.z));
|
|
116
|
+
|
|
117
|
+
let c = manifold_constraint(tri, x0, x1, light, n_receiver, n_light);
|
|
118
|
+
let cs = manifold_constraint(tri, x0, x1 + frame[0] * h, light, n_receiver, n_light);
|
|
119
|
+
let ct = manifold_constraint(tri, x0, x1 + frame[1] * h, light, n_receiver, n_light);
|
|
120
|
+
|
|
121
|
+
let residual = max(abs(c.x), abs(c.y));
|
|
122
|
+
|
|
123
|
+
// columns: the constraint's change along the frame's two directions
|
|
124
|
+
let j0 = (cs - c) / h;
|
|
125
|
+
let j1 = (ct - c) / h;
|
|
126
|
+
let determinant = j0.x * j1.y - j1.x * j0.y;
|
|
127
|
+
|
|
128
|
+
if (abs(determinant) <= 1e-12) {
|
|
129
|
+
return ${MANIFOLD_STEP_STRUCT.wgsl_ref}(x1, residual, false);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// solve J delta = -c
|
|
133
|
+
let delta = vec2<f32>(
|
|
134
|
+
-(j1.y * c.x - j1.x * c.y),
|
|
135
|
+
-(-j0.y * c.x + j0.x * c.y)
|
|
136
|
+
) / determinant;
|
|
137
|
+
|
|
138
|
+
return ${MANIFOLD_STEP_STRUCT.wgsl_ref}(x1 + frame[0] * delta.x + frame[1] * delta.y, residual, true);
|
|
139
|
+
}
|
|
140
|
+
`,
|
|
141
|
+
[
|
|
142
|
+
MANIFOLD_STEP_STRUCT.declaration_chunk,
|
|
143
|
+
MANIFOLD_TRIANGLE_STRUCT.declaration_chunk,
|
|
144
|
+
MANIFOLD_LIGHT_STRUCT.declaration_chunk,
|
|
145
|
+
chunk_manifold_triangle,
|
|
146
|
+
chunk_manifold_light,
|
|
147
|
+
]
|
|
148
|
+
);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The light end of a manifold connection: a point on a local light (`position`), or the direction
|
|
3
|
+
* toward a distant one (`distant` 1, `direction`). `centre` is a local light's own position, which
|
|
4
|
+
* its intensity falls off from, as `sample_light_record` has it; the sampled point only spreads its
|
|
5
|
+
* shadows. `near_clip` is how far short of a local light a shadow ray stops; `light_type` and
|
|
6
|
+
* `index` name the light's row, for its intensity.
|
|
7
|
+
*/
|
|
8
|
+
export const MANIFOLD_LIGHT_STRUCT: WebGPUStruct;
|
|
9
|
+
/**
|
|
10
|
+
* `manifold_light_direction(light, x)`: the unit direction from `x` toward the light.
|
|
11
|
+
*
|
|
12
|
+
* @type {CodeChunk}
|
|
13
|
+
*/
|
|
14
|
+
export const chunk_manifold_light: CodeChunk;
|
|
15
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
16
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
17
|
+
//# sourceMappingURL=chunk_manifold_light.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_manifold_light.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,iDAQoB;AAEpB;;;;GAIG;AACH,mCAFU,SAAS,CAgBjB;6BAtC2B,sCAAsC;0BAFzC,uCAAuC"}
|