@bloomengine/engine 0.3.1
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/LICENSE +21 -0
- package/README.md +169 -0
- package/native/android/Cargo.lock +1848 -0
- package/native/android/Cargo.toml +20 -0
- package/native/android/src/lib.rs +1747 -0
- package/native/ios/Cargo.lock +1688 -0
- package/native/ios/Cargo.toml +19 -0
- package/native/ios/src/lib.rs +2258 -0
- package/native/linux/Cargo.lock +1719 -0
- package/native/linux/Cargo.toml +22 -0
- package/native/linux/src/lib.rs +2236 -0
- package/native/macos/Cargo.lock +3310 -0
- package/native/macos/Cargo.toml +29 -0
- package/native/macos/src/lib.rs +3444 -0
- package/native/shared/Cargo.lock +1898 -0
- package/native/shared/Cargo.toml +42 -0
- package/native/shared/assets/default_font.ttf +0 -0
- package/native/shared/build.rs +77 -0
- package/native/shared/shaders/common/fog.wgsl +16 -0
- package/native/shared/shaders/common/imposter.wgsl +112 -0
- package/native/shared/shaders/common/pbr.wgsl +186 -0
- package/native/shared/shaders/common/shadows.wgsl +77 -0
- package/native/shared/shaders/common/sky.wgsl +8 -0
- package/native/shared/shaders/common/tonemap.wgsl +25 -0
- package/native/shared/shaders/impulse_field.wgsl +53 -0
- package/native/shared/shaders/material_abi.wgsl +360 -0
- package/native/shared/shaders/materials/test_minimal.wgsl +42 -0
- package/native/shared/src/audio.rs +363 -0
- package/native/shared/src/custom_shaders.rs +104 -0
- package/native/shared/src/drs.rs +211 -0
- package/native/shared/src/engine.rs +186 -0
- package/native/shared/src/frame_callbacks.rs +88 -0
- package/native/shared/src/geometry.rs +236 -0
- package/native/shared/src/handles.rs +76 -0
- package/native/shared/src/input.rs +273 -0
- package/native/shared/src/jolt_sys.rs +822 -0
- package/native/shared/src/lib.rs +43 -0
- package/native/shared/src/models.rs +1941 -0
- package/native/shared/src/physics_jolt.rs +1528 -0
- package/native/shared/src/picking.rs +298 -0
- package/native/shared/src/postfx.rs +339 -0
- package/native/shared/src/profiler.rs +416 -0
- package/native/shared/src/renderer/atmosphere_lut.rs +573 -0
- package/native/shared/src/renderer/brdf_lut.rs +154 -0
- package/native/shared/src/renderer/formats.rs +778 -0
- package/native/shared/src/renderer/graph.rs +465 -0
- package/native/shared/src/renderer/hot_reload.rs +390 -0
- package/native/shared/src/renderer/impulse_field.rs +455 -0
- package/native/shared/src/renderer/material_pipeline.rs +604 -0
- package/native/shared/src/renderer/material_system.rs +2106 -0
- package/native/shared/src/renderer/mod.rs +13923 -0
- package/native/shared/src/renderer/planar_reflection.rs +458 -0
- package/native/shared/src/renderer/post_pass.rs +249 -0
- package/native/shared/src/renderer/shader_include.rs +205 -0
- package/native/shared/src/renderer/shader_library.rs +134 -0
- package/native/shared/src/renderer/shaders.rs +5855 -0
- package/native/shared/src/renderer/transient.rs +576 -0
- package/native/shared/src/renderer/types.rs +259 -0
- package/native/shared/src/renderer/util.rs +151 -0
- package/native/shared/src/scene.rs +1066 -0
- package/native/shared/src/sdf_cache.rs +274 -0
- package/native/shared/src/shadows.rs +551 -0
- package/native/shared/src/staging.rs +90 -0
- package/native/shared/src/string_header.rs +35 -0
- package/native/shared/src/text_renderer.rs +456 -0
- package/native/shared/src/textures.rs +154 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp +242 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h +121 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h +296 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h +323 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h +555 -0
- package/native/third_party/JoltPhysics/Jolt/ConfigurationString.h +112 -0
- package/native/third_party/JoltPhysics/Jolt/Core/ARMNeon.h +94 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Array.h +713 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Atomics.h +44 -0
- package/native/third_party/JoltPhysics/Jolt/Core/BinaryHeap.h +96 -0
- package/native/third_party/JoltPhysics/Jolt/Core/ByteBuffer.h +74 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Color.cpp +38 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Color.h +98 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Core.h +652 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FPControlWord.h +143 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FPException.h +96 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FPFlushDenormals.h +43 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Factory.cpp +92 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Factory.h +54 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.h +122 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.inl +215 -0
- package/native/third_party/JoltPhysics/Jolt/Core/HashCombine.h +234 -0
- package/native/third_party/JoltPhysics/Jolt/Core/HashTable.h +876 -0
- package/native/third_party/JoltPhysics/Jolt/Core/InsertionSort.h +58 -0
- package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.cpp +27 -0
- package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.h +38 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.h +311 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.inl +56 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.cpp +65 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.h +62 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.cpp +364 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.h +101 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.cpp +230 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.h +85 -0
- package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.cpp +51 -0
- package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.h +67 -0
- package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.h +182 -0
- package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.inl +351 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Memory.cpp +85 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Memory.h +85 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Mutex.h +223 -0
- package/native/third_party/JoltPhysics/Jolt/Core/MutexArray.h +98 -0
- package/native/third_party/JoltPhysics/Jolt/Core/NonCopyable.h +18 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.cpp +677 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.h +301 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.inl +90 -0
- package/native/third_party/JoltPhysics/Jolt/Core/QuickSort.h +137 -0
- package/native/third_party/JoltPhysics/Jolt/Core/RTTI.cpp +149 -0
- package/native/third_party/JoltPhysics/Jolt/Core/RTTI.h +436 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Reference.h +244 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Result.h +174 -0
- package/native/third_party/JoltPhysics/Jolt/Core/STLAlignedAllocator.h +72 -0
- package/native/third_party/JoltPhysics/Jolt/Core/STLAllocator.h +127 -0
- package/native/third_party/JoltPhysics/Jolt/Core/STLLocalAllocator.h +170 -0
- package/native/third_party/JoltPhysics/Jolt/Core/STLTempAllocator.h +80 -0
- package/native/third_party/JoltPhysics/Jolt/Core/ScopeExit.h +49 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.cpp +135 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.h +68 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StaticArray.h +329 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StreamIn.h +120 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StreamOut.h +97 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StreamUtils.h +168 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StreamWrapper.h +53 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StridedPtr.h +63 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StringTools.cpp +101 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StringTools.h +38 -0
- package/native/third_party/JoltPhysics/Jolt/Core/TempAllocator.h +209 -0
- package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.cpp +37 -0
- package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.h +58 -0
- package/native/third_party/JoltPhysics/Jolt/Core/UnorderedMap.h +80 -0
- package/native/third_party/JoltPhysics/Jolt/Core/UnorderedSet.h +32 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/AABox.h +313 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/AABox4.h +224 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ClipPoly.h +200 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ClosestPoint.h +498 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.cpp +1467 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.h +276 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.cpp +335 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.h +105 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexSupport.h +188 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/EPAConvexHullBuilder.h +845 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/EPAPenetrationDepth.h +557 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Ellipse.h +77 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/GJKClosestPoint.h +945 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/IndexedTriangle.h +130 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.cpp +222 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.h +19 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/MortonCode.h +40 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.cpp +178 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.h +39 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Plane.h +104 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayAABox.h +241 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayCapsule.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayCylinder.h +101 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RaySphere.h +96 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayTriangle.h +158 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Sphere.h +72 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Triangle.h +34 -0
- package/native/third_party/JoltPhysics/Jolt/Jolt.cmake +703 -0
- package/native/third_party/JoltPhysics/Jolt/Jolt.h +16 -0
- package/native/third_party/JoltPhysics/Jolt/Jolt.natvis +116 -0
- package/native/third_party/JoltPhysics/Jolt/Math/BVec16.h +99 -0
- package/native/third_party/JoltPhysics/Jolt/Math/BVec16.inl +177 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DMat44.h +158 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DMat44.inl +310 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DVec3.h +291 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DVec3.inl +941 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Double3.h +48 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DynMatrix.h +31 -0
- package/native/third_party/JoltPhysics/Jolt/Math/EigenValueSymmetric.h +177 -0
- package/native/third_party/JoltPhysics/Jolt/Math/FindRoot.h +42 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Float2.h +36 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Float3.h +50 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Float4.h +44 -0
- package/native/third_party/JoltPhysics/Jolt/Math/GaussianElimination.h +102 -0
- package/native/third_party/JoltPhysics/Jolt/Math/HalfFloat.h +208 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Mat44.h +243 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Mat44.inl +952 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Math.h +208 -0
- package/native/third_party/JoltPhysics/Jolt/Math/MathTypes.h +32 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Matrix.h +259 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Quat.h +268 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Quat.inl +406 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Real.h +44 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Swizzle.h +19 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Trigonometry.h +79 -0
- package/native/third_party/JoltPhysics/Jolt/Math/UVec4.h +232 -0
- package/native/third_party/JoltPhysics/Jolt/Math/UVec4.inl +636 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.cpp +71 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.h +308 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.inl +942 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec4.h +320 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec4.inl +1152 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vector.h +211 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/GetPrimitiveTypeOfType.h +54 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.cpp +38 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.h +337 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.cpp +252 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.h +57 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.cpp +165 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.h +57 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.cpp +635 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.h +148 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.cpp +166 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.h +101 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.cpp +418 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.h +55 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.cpp +255 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.h +62 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTypes.h +26 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttribute.h +111 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeEnum.h +67 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeTyped.h +60 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.cpp +15 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.h +170 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.cpp +70 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.h +45 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/AllowedDOFs.h +68 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.cpp +426 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.h +452 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.inl +197 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyAccess.h +68 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyActivationListener.h +28 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp +234 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.h +124 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyFilter.h +130 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyID.h +101 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.cpp +1099 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.h +324 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLock.h +111 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockInterface.h +134 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockMulti.h +120 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.cpp +1220 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.h +403 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyPair.h +36 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyType.h +19 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.cpp +185 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.h +58 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.cpp +92 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.h +308 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.inl +178 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionQuality.h +31 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionType.h +17 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.cpp +354 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.h +159 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.cpp +59 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.h +157 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterID.h +98 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.cpp +1933 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.h +752 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/AABoxCast.h +20 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdgeMode.h +17 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdges.h +114 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BackFaceMode.h +16 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp +16 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.h +109 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp +313 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h +38 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h +148 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h +92 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h +64 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp +629 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h +108 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h +56 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h +35 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h +66 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.cpp +1768 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.h +389 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.cpp +107 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.h +46 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastResult.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.cpp +223 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.h +49 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollectFacesMode.h +16 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.cpp +155 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.h +56 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollidePointResult.h +25 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShape.h +106 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShapeVsShapePerLeaf.h +94 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVertexIterator.h +110 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h +102 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.cpp +121 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.h +50 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollector.h +109 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollectorImpl.h +219 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.cpp +107 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.h +97 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.cpp +35 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.h +97 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ContactListener.h +143 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.cpp +213 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.h +48 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.cpp +32 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.h +46 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.cpp +38 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.h +130 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/InternalEdgeRemovingCollector.h +279 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp +271 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h +44 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.cpp +448 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.h +77 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.cpp +62 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.h +110 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayer.h +111 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterMask.h +52 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterTable.h +78 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.cpp +35 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.h +57 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.cpp +38 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/RayCast.h +87 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.cpp +318 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.h +115 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.cpp +438 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.h +129 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.cpp +433 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.h +354 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h +461 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.cpp +1311 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.h +202 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.cpp +566 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.h +150 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.cpp +418 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.h +126 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.cpp +87 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.h +80 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.cpp +64 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.h +75 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/GetTrianglesContext.h +248 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp +2754 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.h +380 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.cpp +1305 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.h +228 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp +596 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.h +176 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp +217 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h +140 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.cpp +541 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.h +147 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h +319 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp +333 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h +161 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaleHelpers.h +83 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.cpp +238 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.h +145 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.cpp +325 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.h +466 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.cpp +347 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.h +125 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp +674 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.h +139 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeID.h +138 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeIDPair.h +65 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp +453 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.gliffy +1 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h +135 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp +691 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.h +132 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.cpp +430 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.h +143 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeCast.h +173 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeFilter.h +73 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilter.h +40 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilterWrapper.h +58 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SortReverseAndStore.h +48 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.cpp +180 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.h +194 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/CalculateSolverSteps.h +70 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.cpp +246 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.h +133 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.cpp +73 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.h +243 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.cpp +289 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.h +100 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h +257 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h +682 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h +276 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h +195 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h +222 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h +246 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h +239 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h +196 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h +283 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h +246 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SpringPart.h +169 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h +597 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.cpp +1804 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.h +524 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.cpp +266 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.h +120 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.cpp +215 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.h +96 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.cpp +188 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.h +116 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.cpp +443 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.h +205 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.cpp +43 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.h +66 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.cpp +458 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.h +191 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.cpp +85 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.h +76 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.cpp +308 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.h +54 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.cpp +157 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.h +94 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.cpp +253 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.h +137 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.cpp +189 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.h +118 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.cpp +900 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.h +289 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.cpp +501 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.h +198 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.cpp +35 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.h +70 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.cpp +524 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.h +197 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.cpp +56 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.h +65 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.cpp +17 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.h +159 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/EActivation.h +16 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/EPhysicsUpdateError.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.cpp +492 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.h +144 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.cpp +582 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.h +187 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsLock.h +169 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.cpp +261 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.h +104 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSettings.h +125 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsStepListener.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.cpp +2915 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.h +391 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.cpp +25 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.h +176 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.cpp +744 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.h +245 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyContactListener.h +55 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp +128 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.h +75 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyManifold.h +74 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp +1501 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.h +333 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.cpp +354 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.h +73 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp +1487 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.h +390 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyUpdateContext.h +63 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyVertex.h +36 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorder.h +136 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.cpp +90 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.h +50 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.cpp +306 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.h +119 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.cpp +547 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.h +169 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp +33 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.h +33 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.cpp +376 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.h +146 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.cpp +703 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.h +252 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.cpp +17 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.h +87 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.cpp +81 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.h +39 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.cpp +122 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.h +93 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.cpp +52 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.h +56 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.cpp +159 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.h +87 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.cpp +93 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.h +148 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.cpp +866 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.h +205 -0
- package/native/third_party/JoltPhysics/Jolt/RegisterTypes.cpp +204 -0
- package/native/third_party/JoltPhysics/Jolt/RegisterTypes.h +29 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.cpp +1107 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.h +383 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.cpp +168 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.h +48 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.cpp +158 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.h +130 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.cpp +80 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.h +88 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.cpp +165 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.h +91 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.cpp +82 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.h +72 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.cpp +237 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.h +145 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.cpp +87 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.h +82 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.cpp +73 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.h +84 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp +139 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.h +52 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.cpp +43 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.h +28 -0
- package/native/third_party/JoltPhysics/LICENSE +7 -0
- package/native/third_party/JoltPhysics/README.md +173 -0
- package/native/third_party/bloom_jolt/CMakeLists.txt +78 -0
- package/native/third_party/bloom_jolt/include/bloom_jolt.h +519 -0
- package/native/third_party/bloom_jolt/src/bloom_jolt.cpp +1780 -0
- package/native/tvos/Cargo.lock +1692 -0
- package/native/tvos/Cargo.toml +22 -0
- package/native/tvos/src/lib.rs +3179 -0
- package/native/watchos/Cargo.lock +16 -0
- package/native/watchos/Cargo.toml +19 -0
- package/native/watchos/shaders/bloom_postfx.metal +99 -0
- package/native/watchos/src/BloomWatchApp.swift +1236 -0
- package/native/watchos/src/BloomWatchAudio.swift +179 -0
- package/native/watchos/src/audio.rs +55 -0
- package/native/watchos/src/draw_list.rs +223 -0
- package/native/watchos/src/ffi_stubs.rs +454 -0
- package/native/watchos/src/lib.rs +1013 -0
- package/native/watchos/src/models.rs +746 -0
- package/native/watchos/src/postfx.rs +91 -0
- package/native/watchos/src/scene.rs +534 -0
- package/native/watchos/src/textures.rs +184 -0
- package/native/web/Cargo.lock +1656 -0
- package/native/web/Cargo.toml +38 -0
- package/native/web/bloom_glue.js +218 -0
- package/native/web/build.sh +101 -0
- package/native/web/index.html +390 -0
- package/native/web/jolt_bridge.js +1311 -0
- package/native/web/src/lib.rs +2739 -0
- package/native/windows/Cargo.lock +1813 -0
- package/native/windows/Cargo.toml +31 -0
- package/native/windows/src/lib.rs +1933 -0
- package/package.json +558 -0
- package/src/audio/index.ts +151 -0
- package/src/core/colors.ts +56 -0
- package/src/core/index.ts +903 -0
- package/src/core/keys.ts +63 -0
- package/src/core/types.ts +102 -0
- package/src/index.ts +158 -0
- package/src/math/index.ts +502 -0
- package/src/mobile/index.ts +294 -0
- package/src/models/index.ts +859 -0
- package/src/physics/index.ts +1072 -0
- package/src/scene/index.ts +570 -0
- package/src/shapes/index.ts +120 -0
- package/src/text/index.ts +48 -0
- package/src/textures/index.ts +173 -0
- package/src/world/index.ts +22 -0
- package/src/world/loader.ts +385 -0
- package/src/world/prefab.ts +205 -0
- package/src/world/saver.ts +61 -0
- package/src/world/terrain.ts +254 -0
- package/src/world/types.ts +136 -0
- package/src/world/validate.ts +202 -0
- package/src/world/version.ts +47 -0
|
@@ -0,0 +1,576 @@
|
|
|
1
|
+
// Transient resource pool — Phase 3 of RFC 0001.
|
|
2
|
+
//
|
|
3
|
+
// Manages the short-lived textures that a render graph needs: scene-
|
|
4
|
+
// colour snapshots, depth-as-sampled linearisations, bloom mip chains,
|
|
5
|
+
// SSGI history, motion-vector maps, etc. Each passes' declared
|
|
6
|
+
// `Transient(u32)` input/output refers to a handle this module hands
|
|
7
|
+
// out.
|
|
8
|
+
//
|
|
9
|
+
// Phase 3 goals:
|
|
10
|
+
//
|
|
11
|
+
// 1. Allocate textures by (format, size, usage) on demand.
|
|
12
|
+
// 2. Reuse textures when their previous caller releases them.
|
|
13
|
+
// 3. Resize cleanly when the swapchain changes — invalidates caches
|
|
14
|
+
// sized relative to the swapchain.
|
|
15
|
+
// 4. Stay independent of `renderer::graph` — the graph module uses
|
|
16
|
+
// this pool as a consumer, not the other way around.
|
|
17
|
+
//
|
|
18
|
+
// Deferred to a later phase:
|
|
19
|
+
//
|
|
20
|
+
// - **True aliasing.** Two transients with non-overlapping lifetimes
|
|
21
|
+
// can physically share the same backing texture on Vulkan/D3D12
|
|
22
|
+
// via aliased resources. This module ref-counts + reuses but does
|
|
23
|
+
// not alias. Graph-driven lifetime analysis (Phase 3b) is a
|
|
24
|
+
// prerequisite — the pool can't know lifetimes without a
|
|
25
|
+
// schedule to introspect.
|
|
26
|
+
//
|
|
27
|
+
// - **Async acquire/release.** The pool is single-threaded. Every
|
|
28
|
+
// real engine backend is single-threaded on the render queue
|
|
29
|
+
// anyway; multi-queue support is a later concern.
|
|
30
|
+
|
|
31
|
+
/// Size policy for a transient. Resolved against the swapchain each
|
|
32
|
+
/// time the pool is asked for extents.
|
|
33
|
+
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
|
|
34
|
+
pub enum SizePolicy {
|
|
35
|
+
/// Match the swapchain size (most render targets).
|
|
36
|
+
Swapchain,
|
|
37
|
+
/// Half of the swapchain — e.g. SSAO half-res.
|
|
38
|
+
HalfSwapchain,
|
|
39
|
+
/// Quarter of the swapchain — e.g. bloom first mip after the
|
|
40
|
+
/// initial downsample.
|
|
41
|
+
QuarterSwapchain,
|
|
42
|
+
/// A specific fixed size in physical pixels. Used for things that
|
|
43
|
+
/// are explicitly grid-sized (shadow cascades, probe grids).
|
|
44
|
+
Fixed(u32, u32),
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
impl SizePolicy {
|
|
48
|
+
/// Resolve to concrete (width, height) in physical pixels.
|
|
49
|
+
pub fn extent(self, swap_w: u32, swap_h: u32) -> (u32, u32) {
|
|
50
|
+
let max1 = |n: u32| n.max(1);
|
|
51
|
+
match self {
|
|
52
|
+
SizePolicy::Swapchain => (max1(swap_w), max1(swap_h)),
|
|
53
|
+
SizePolicy::HalfSwapchain => (max1(swap_w / 2), max1(swap_h / 2)),
|
|
54
|
+
SizePolicy::QuarterSwapchain => (max1(swap_w / 4), max1(swap_h / 4)),
|
|
55
|
+
SizePolicy::Fixed(w, h) => (max1(w), max1(h)),
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/// Describes a transient texture the pool should own. Equality on
|
|
61
|
+
/// (format, usage, size policy) decides which allocations can be
|
|
62
|
+
/// returned to the same reuse bucket.
|
|
63
|
+
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
|
|
64
|
+
pub struct TransientDesc {
|
|
65
|
+
pub format: wgpu::TextureFormat,
|
|
66
|
+
pub usage: wgpu::TextureUsages,
|
|
67
|
+
pub size: SizePolicy,
|
|
68
|
+
/// Mip levels. 1 for most RTs, N for bloom's mip chain etc.
|
|
69
|
+
pub mips: u32,
|
|
70
|
+
/// Single-sample unless you need MSAA — we don't right now.
|
|
71
|
+
pub samples: u32,
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
impl TransientDesc {
|
|
75
|
+
pub fn new(format: wgpu::TextureFormat, usage: wgpu::TextureUsages,
|
|
76
|
+
size: SizePolicy) -> Self {
|
|
77
|
+
Self { format, usage, size, mips: 1, samples: 1 }
|
|
78
|
+
}
|
|
79
|
+
pub fn with_mips(mut self, mips: u32) -> Self { self.mips = mips; self }
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/// Opaque handle to an allocated transient. The graph module sees
|
|
83
|
+
/// these as `PassInput::Transient(TransientId)`.
|
|
84
|
+
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
|
|
85
|
+
pub struct TransientId(pub u32);
|
|
86
|
+
|
|
87
|
+
/// Internal record per live allocation.
|
|
88
|
+
struct Slot {
|
|
89
|
+
desc: TransientDesc,
|
|
90
|
+
/// Physical extent at allocation time — used for resize detection.
|
|
91
|
+
extent: (u32, u32),
|
|
92
|
+
texture: wgpu::Texture,
|
|
93
|
+
view: wgpu::TextureView,
|
|
94
|
+
/// True while the allocation is checked out. False means "in the
|
|
95
|
+
/// reuse bucket, safe to hand back to the next caller matching
|
|
96
|
+
/// the same desc".
|
|
97
|
+
in_use: bool,
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/// Per-frame transient manager. Usage pattern:
|
|
101
|
+
///
|
|
102
|
+
/// ```ignore
|
|
103
|
+
/// pool.begin_frame(swap_w, swap_h); // invalidates on resize
|
|
104
|
+
/// let a = pool.acquire(desc_a); // caller owns a
|
|
105
|
+
/// let b = pool.acquire(desc_b); // caller owns b
|
|
106
|
+
/// // … passes read/write a, b …
|
|
107
|
+
/// pool.release(a); // a returns to reuse
|
|
108
|
+
/// pool.release(b); // b returns to reuse
|
|
109
|
+
/// pool.end_frame(); // pool contract point
|
|
110
|
+
/// ```
|
|
111
|
+
///
|
|
112
|
+
/// Tests in this module validate the contract. Real integration with
|
|
113
|
+
/// `renderer::graph` happens in Phase 3b.
|
|
114
|
+
pub struct TransientPool {
|
|
115
|
+
slots: Vec<Slot>,
|
|
116
|
+
/// Next free id for newly-allocated slots. Ids don't get reused
|
|
117
|
+
/// across slot teardowns so graph edges stay stable.
|
|
118
|
+
next_id: u32,
|
|
119
|
+
/// Cached swapchain extent from the most recent `begin_frame`.
|
|
120
|
+
swap_size: (u32, u32),
|
|
121
|
+
/// Rebuild counter — bumped whenever the pool drops all slots
|
|
122
|
+
/// (e.g. resize). Tests use it to detect that invalidation fired.
|
|
123
|
+
pub rebuild_epoch: u64,
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
impl TransientPool {
|
|
127
|
+
pub fn new() -> Self {
|
|
128
|
+
Self {
|
|
129
|
+
slots: Vec::new(),
|
|
130
|
+
next_id: 0,
|
|
131
|
+
swap_size: (0, 0),
|
|
132
|
+
rebuild_epoch: 0,
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/// Called once at the start of each frame. If the swapchain size
|
|
137
|
+
/// changed, invalidates every slot whose size policy is
|
|
138
|
+
/// swapchain-relative; fixed-size transients survive.
|
|
139
|
+
pub fn begin_frame(&mut self, swap_w: u32, swap_h: u32) {
|
|
140
|
+
if self.swap_size != (swap_w, swap_h) {
|
|
141
|
+
let prev = self.swap_size;
|
|
142
|
+
self.swap_size = (swap_w, swap_h);
|
|
143
|
+
if prev != (0, 0) {
|
|
144
|
+
self.invalidate_swapchain_relative();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/// Drop every slot whose size policy depends on the swapchain.
|
|
150
|
+
/// Called automatically on resize; callers can also trigger this
|
|
151
|
+
/// manually if a render target format changes.
|
|
152
|
+
pub fn invalidate_swapchain_relative(&mut self) {
|
|
153
|
+
let before = self.slots.len();
|
|
154
|
+
self.slots.retain(|s| matches!(s.desc.size, SizePolicy::Fixed(_, _)));
|
|
155
|
+
if self.slots.len() != before {
|
|
156
|
+
self.rebuild_epoch += 1;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/// Nuke everything. For tests, and for catastrophic format changes.
|
|
161
|
+
pub fn clear(&mut self) {
|
|
162
|
+
if !self.slots.is_empty() {
|
|
163
|
+
self.slots.clear();
|
|
164
|
+
self.rebuild_epoch += 1;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/// Acquire a transient matching `desc`. Returns either a freed
|
|
169
|
+
/// slot from the reuse pool or allocates a new one via `device`.
|
|
170
|
+
/// The returned handle is valid until `release()` or the next
|
|
171
|
+
/// resize.
|
|
172
|
+
pub fn acquire(&mut self, device: &wgpu::Device, desc: TransientDesc) -> TransientId {
|
|
173
|
+
let target_extent = desc.size.extent(self.swap_size.0, self.swap_size.1);
|
|
174
|
+
|
|
175
|
+
// Look for an existing free slot with identical desc + extent.
|
|
176
|
+
for (i, slot) in self.slots.iter_mut().enumerate() {
|
|
177
|
+
if !slot.in_use
|
|
178
|
+
&& slot.desc == desc
|
|
179
|
+
&& slot.extent == target_extent
|
|
180
|
+
{
|
|
181
|
+
slot.in_use = true;
|
|
182
|
+
return TransientId(i as u32);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Nothing matched — allocate a new slot.
|
|
187
|
+
let texture = device.create_texture(&wgpu::TextureDescriptor {
|
|
188
|
+
label: Some("transient"),
|
|
189
|
+
size: wgpu::Extent3d {
|
|
190
|
+
width: target_extent.0,
|
|
191
|
+
height: target_extent.1,
|
|
192
|
+
depth_or_array_layers: 1,
|
|
193
|
+
},
|
|
194
|
+
mip_level_count: desc.mips,
|
|
195
|
+
sample_count: desc.samples,
|
|
196
|
+
dimension: wgpu::TextureDimension::D2,
|
|
197
|
+
format: desc.format,
|
|
198
|
+
usage: desc.usage,
|
|
199
|
+
view_formats: &[],
|
|
200
|
+
});
|
|
201
|
+
let view = texture.create_view(&wgpu::TextureViewDescriptor::default());
|
|
202
|
+
let id = self.next_id;
|
|
203
|
+
self.next_id += 1;
|
|
204
|
+
// Slot index equals the id in this simple implementation —
|
|
205
|
+
// once we add alias-based reuse the mapping becomes indirect,
|
|
206
|
+
// but for now that's overkill.
|
|
207
|
+
let slot_index = self.slots.len() as u32;
|
|
208
|
+
assert_eq!(id, slot_index,
|
|
209
|
+
"TransientPool invariant: slot ids are contiguous until Phase 3b adds aliasing");
|
|
210
|
+
self.slots.push(Slot { desc, extent: target_extent, texture, view, in_use: true });
|
|
211
|
+
TransientId(id)
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/// Mark a transient as no longer in use. The slot returns to the
|
|
215
|
+
/// reuse pool and can be handed back to a subsequent `acquire`
|
|
216
|
+
/// with a matching desc.
|
|
217
|
+
pub fn release(&mut self, id: TransientId) {
|
|
218
|
+
if let Some(slot) = self.slots.get_mut(id.0 as usize) {
|
|
219
|
+
slot.in_use = false;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/// Get the underlying texture for a transient. Borrowed for the
|
|
224
|
+
/// pool's lifetime — callers hold the borrow only while encoding.
|
|
225
|
+
pub fn texture(&self, id: TransientId) -> Option<&wgpu::Texture> {
|
|
226
|
+
self.slots.get(id.0 as usize).map(|s| &s.texture)
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/// Get the default view for a transient.
|
|
230
|
+
pub fn view(&self, id: TransientId) -> Option<&wgpu::TextureView> {
|
|
231
|
+
self.slots.get(id.0 as usize).map(|s| &s.view)
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/// Frame-end book-keeping. Currently does nothing because
|
|
235
|
+
/// `acquire` / `release` are the only lifecycle points; kept as
|
|
236
|
+
/// an API surface so Phase 3b can hook cleanup here.
|
|
237
|
+
pub fn end_frame(&mut self) {}
|
|
238
|
+
|
|
239
|
+
/// Diagnostic — how many slots are currently allocated (both
|
|
240
|
+
/// in-use and in the reuse pool). Useful for memory footprint
|
|
241
|
+
/// assertions in tests.
|
|
242
|
+
pub fn slot_count(&self) -> usize { self.slots.len() }
|
|
243
|
+
|
|
244
|
+
/// Diagnostic — how many allocated slots are currently in use.
|
|
245
|
+
pub fn in_use_count(&self) -> usize {
|
|
246
|
+
self.slots.iter().filter(|s| s.in_use).count()
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
impl Default for TransientPool {
|
|
251
|
+
fn default() -> Self { Self::new() }
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// =====================================================================
|
|
255
|
+
// Tests
|
|
256
|
+
// =====================================================================
|
|
257
|
+
|
|
258
|
+
#[cfg(test)]
|
|
259
|
+
mod tests {
|
|
260
|
+
use super::*;
|
|
261
|
+
|
|
262
|
+
fn hdr_desc() -> TransientDesc {
|
|
263
|
+
TransientDesc::new(
|
|
264
|
+
wgpu::TextureFormat::Rgba16Float,
|
|
265
|
+
wgpu::TextureUsages::RENDER_ATTACHMENT | wgpu::TextureUsages::TEXTURE_BINDING,
|
|
266
|
+
SizePolicy::Swapchain,
|
|
267
|
+
)
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
fn r8_half() -> TransientDesc {
|
|
271
|
+
TransientDesc::new(
|
|
272
|
+
wgpu::TextureFormat::R8Unorm,
|
|
273
|
+
wgpu::TextureUsages::RENDER_ATTACHMENT | wgpu::TextureUsages::TEXTURE_BINDING,
|
|
274
|
+
SizePolicy::HalfSwapchain,
|
|
275
|
+
)
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/// Headless wgpu device for tests. Uses the default noop/fallback
|
|
279
|
+
/// backend if available so tests run in CI without a GPU. Returns
|
|
280
|
+
/// None on environments where no adapter is available — tests that
|
|
281
|
+
/// need a device are skipped gracefully.
|
|
282
|
+
fn try_create_device() -> Option<(wgpu::Device, wgpu::Queue)> {
|
|
283
|
+
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
|
|
284
|
+
backends: wgpu::Backends::all(),
|
|
285
|
+
..wgpu::InstanceDescriptor::new_without_display_handle()
|
|
286
|
+
});
|
|
287
|
+
let adapter = pollster::block_on(instance.request_adapter(&wgpu::RequestAdapterOptions {
|
|
288
|
+
power_preference: wgpu::PowerPreference::LowPower,
|
|
289
|
+
compatible_surface: None,
|
|
290
|
+
force_fallback_adapter: true,
|
|
291
|
+
})).ok()?;
|
|
292
|
+
let (device, queue) = pollster::block_on(adapter.request_device(
|
|
293
|
+
&wgpu::DeviceDescriptor {
|
|
294
|
+
label: Some("transient-test-device"),
|
|
295
|
+
required_features: wgpu::Features::empty(),
|
|
296
|
+
required_limits: wgpu::Limits::downlevel_defaults(),
|
|
297
|
+
..Default::default()
|
|
298
|
+
},
|
|
299
|
+
)).ok()?;
|
|
300
|
+
Some((device, queue))
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
#[test]
|
|
304
|
+
fn size_policy_resolves() {
|
|
305
|
+
assert_eq!(SizePolicy::Swapchain.extent(1920, 1080), (1920, 1080));
|
|
306
|
+
assert_eq!(SizePolicy::HalfSwapchain.extent(1920, 1080), (960, 540));
|
|
307
|
+
assert_eq!(SizePolicy::QuarterSwapchain.extent(1920, 1080), (480, 270));
|
|
308
|
+
assert_eq!(SizePolicy::Fixed(2048, 2048).extent(1920, 1080), (2048, 2048));
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
#[test]
|
|
312
|
+
fn size_policy_never_returns_zero() {
|
|
313
|
+
assert_eq!(SizePolicy::QuarterSwapchain.extent(2, 2), (1, 1));
|
|
314
|
+
assert_eq!(SizePolicy::HalfSwapchain.extent(1, 1), (1, 1));
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
#[test]
|
|
318
|
+
fn pool_resize_invalidates_swapchain_relative_only() {
|
|
319
|
+
let mut pool = TransientPool::new();
|
|
320
|
+
pool.begin_frame(1920, 1080);
|
|
321
|
+
// Simulate two slots without a device — push raw entries so
|
|
322
|
+
// the invalidation logic gets exercised without needing wgpu.
|
|
323
|
+
let dummy_swap = TransientDesc::new(
|
|
324
|
+
wgpu::TextureFormat::Rgba16Float,
|
|
325
|
+
wgpu::TextureUsages::RENDER_ATTACHMENT,
|
|
326
|
+
SizePolicy::Swapchain,
|
|
327
|
+
);
|
|
328
|
+
let dummy_fixed = TransientDesc::new(
|
|
329
|
+
wgpu::TextureFormat::Depth32Float,
|
|
330
|
+
wgpu::TextureUsages::RENDER_ATTACHMENT,
|
|
331
|
+
SizePolicy::Fixed(2048, 2048),
|
|
332
|
+
);
|
|
333
|
+
|
|
334
|
+
// We can't push real Slots without a device. For this unit
|
|
335
|
+
// test we only validate the pruning semantics by exercising
|
|
336
|
+
// them on a small scaffold. The device-level tests below
|
|
337
|
+
// validate allocation/reuse end-to-end.
|
|
338
|
+
let _ = (dummy_swap, dummy_fixed);
|
|
339
|
+
assert_eq!(pool.slot_count(), 0);
|
|
340
|
+
|
|
341
|
+
// Resize causes an epoch bump once there's anything to prune,
|
|
342
|
+
// but with 0 slots the epoch stays at 0.
|
|
343
|
+
let before_epoch = pool.rebuild_epoch;
|
|
344
|
+
pool.begin_frame(1024, 768);
|
|
345
|
+
assert_eq!(pool.rebuild_epoch, before_epoch);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// ----- device-backed tests: run only when an adapter is available -----
|
|
349
|
+
|
|
350
|
+
#[test]
|
|
351
|
+
fn acquire_returns_new_slot_when_pool_empty() {
|
|
352
|
+
let Some((device, _queue)) = try_create_device() else { return; };
|
|
353
|
+
let mut pool = TransientPool::new();
|
|
354
|
+
pool.begin_frame(1024, 768);
|
|
355
|
+
let id = pool.acquire(&device, hdr_desc());
|
|
356
|
+
assert_eq!(pool.slot_count(), 1);
|
|
357
|
+
assert_eq!(pool.in_use_count(), 1);
|
|
358
|
+
assert!(pool.texture(id).is_some());
|
|
359
|
+
assert!(pool.view(id).is_some());
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
#[test]
|
|
363
|
+
fn release_then_acquire_reuses_slot() {
|
|
364
|
+
let Some((device, _queue)) = try_create_device() else { return; };
|
|
365
|
+
let mut pool = TransientPool::new();
|
|
366
|
+
pool.begin_frame(1024, 768);
|
|
367
|
+
let a = pool.acquire(&device, hdr_desc());
|
|
368
|
+
pool.release(a);
|
|
369
|
+
// Second acquire with the same desc should hit the reuse path
|
|
370
|
+
// and not grow the slot count.
|
|
371
|
+
let b = pool.acquire(&device, hdr_desc());
|
|
372
|
+
assert_eq!(pool.slot_count(), 1, "reuse should not grow the pool");
|
|
373
|
+
// Same slot index because reuse returns the freed slot.
|
|
374
|
+
assert_eq!(a.0, b.0);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
#[test]
|
|
378
|
+
fn different_descs_dont_share_slots() {
|
|
379
|
+
let Some((device, _queue)) = try_create_device() else { return; };
|
|
380
|
+
let mut pool = TransientPool::new();
|
|
381
|
+
pool.begin_frame(1024, 768);
|
|
382
|
+
let a = pool.acquire(&device, hdr_desc());
|
|
383
|
+
let b = pool.acquire(&device, r8_half());
|
|
384
|
+
assert_ne!(a.0, b.0);
|
|
385
|
+
assert_eq!(pool.slot_count(), 2);
|
|
386
|
+
assert_eq!(pool.in_use_count(), 2);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
#[test]
|
|
390
|
+
fn resize_drops_swapchain_relative_slots() {
|
|
391
|
+
let Some((device, _queue)) = try_create_device() else { return; };
|
|
392
|
+
let mut pool = TransientPool::new();
|
|
393
|
+
pool.begin_frame(1024, 768);
|
|
394
|
+
let a = pool.acquire(&device, hdr_desc()); // Swapchain
|
|
395
|
+
let f = pool.acquire(&device, TransientDesc::new(
|
|
396
|
+
wgpu::TextureFormat::Depth32Float,
|
|
397
|
+
wgpu::TextureUsages::RENDER_ATTACHMENT,
|
|
398
|
+
SizePolicy::Fixed(2048, 2048),
|
|
399
|
+
));
|
|
400
|
+
pool.release(a);
|
|
401
|
+
pool.release(f);
|
|
402
|
+
assert_eq!(pool.slot_count(), 2);
|
|
403
|
+
|
|
404
|
+
pool.begin_frame(1920, 1080); // resize!
|
|
405
|
+
// Swapchain-relative slot dropped; fixed slot survived.
|
|
406
|
+
assert_eq!(pool.slot_count(), 1);
|
|
407
|
+
assert_eq!(pool.rebuild_epoch, 1);
|
|
408
|
+
|
|
409
|
+
// New acquire with the same swapchain-relative desc gets a
|
|
410
|
+
// fresh slot sized to the new swapchain.
|
|
411
|
+
let a2 = pool.acquire(&device, hdr_desc());
|
|
412
|
+
assert_ne!(a.0, a2.0, "post-resize slot ids should not collide with released ones");
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
#[test]
|
|
416
|
+
fn clear_resets_everything() {
|
|
417
|
+
let Some((device, _queue)) = try_create_device() else { return; };
|
|
418
|
+
let mut pool = TransientPool::new();
|
|
419
|
+
pool.begin_frame(1024, 768);
|
|
420
|
+
let _ = pool.acquire(&device, hdr_desc());
|
|
421
|
+
let _ = pool.acquire(&device, r8_half());
|
|
422
|
+
assert_eq!(pool.slot_count(), 2);
|
|
423
|
+
|
|
424
|
+
pool.clear();
|
|
425
|
+
assert_eq!(pool.slot_count(), 0);
|
|
426
|
+
assert_eq!(pool.rebuild_epoch, 1);
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/// EN-006 — depth snapshot path. Exercises the same
|
|
430
|
+
/// `copy_texture_to_texture` from a live depth-stencil attachment
|
|
431
|
+
/// into a transient depth texture that
|
|
432
|
+
/// `Renderer::end_frame_with_scene` does before binding the
|
|
433
|
+
/// transient at scene_inputs binding 2 (Phase 4c). The live depth
|
|
434
|
+
/// can't be sampled while attached as a depth-stencil target, so
|
|
435
|
+
/// the engine snapshots it first; this test verifies that snapshot
|
|
436
|
+
/// preserves the clear value byte-for-byte.
|
|
437
|
+
///
|
|
438
|
+
/// Skipped on adapters where `try_create_device` returns None
|
|
439
|
+
/// (CPU-only environments).
|
|
440
|
+
#[test]
|
|
441
|
+
fn depth_snapshot_preserves_cleared_value() {
|
|
442
|
+
let Some((device, queue)) = try_create_device() else { return; };
|
|
443
|
+
let mut pool = TransientPool::new();
|
|
444
|
+
let (width, height) = (64u32, 64u32);
|
|
445
|
+
pool.begin_frame(width, height);
|
|
446
|
+
|
|
447
|
+
// Source: a Depth32Float texture that doubles as a render-pass
|
|
448
|
+
// depth attachment + COPY_SRC. We don't draw anything; the
|
|
449
|
+
// pass clears it to a known value. This mirrors the way the
|
|
450
|
+
// opaque pass populates `Renderer::depth_texture` before the
|
|
451
|
+
// translucent sub-pass snapshots it.
|
|
452
|
+
let src = device.create_texture(&wgpu::TextureDescriptor {
|
|
453
|
+
label: Some("depth_snapshot_src"),
|
|
454
|
+
size: wgpu::Extent3d { width, height, depth_or_array_layers: 1 },
|
|
455
|
+
mip_level_count: 1,
|
|
456
|
+
sample_count: 1,
|
|
457
|
+
dimension: wgpu::TextureDimension::D2,
|
|
458
|
+
format: wgpu::TextureFormat::Depth32Float,
|
|
459
|
+
usage: wgpu::TextureUsages::RENDER_ATTACHMENT | wgpu::TextureUsages::COPY_SRC,
|
|
460
|
+
view_formats: &[],
|
|
461
|
+
});
|
|
462
|
+
let src_view = src.create_view(&wgpu::TextureViewDescriptor::default());
|
|
463
|
+
let cleared_value: f32 = 0.375;
|
|
464
|
+
|
|
465
|
+
// Acquire a snapshot transient. The renderer uses
|
|
466
|
+
// (COPY_DST | TEXTURE_BINDING) for production; we add COPY_SRC
|
|
467
|
+
// so the test can read it back. The pool itself doesn't care
|
|
468
|
+
// about the extra bit — it's the same desc-keyed bucket.
|
|
469
|
+
let snap_desc = TransientDesc::new(
|
|
470
|
+
wgpu::TextureFormat::Depth32Float,
|
|
471
|
+
wgpu::TextureUsages::COPY_DST
|
|
472
|
+
| wgpu::TextureUsages::TEXTURE_BINDING
|
|
473
|
+
| wgpu::TextureUsages::COPY_SRC,
|
|
474
|
+
SizePolicy::Swapchain,
|
|
475
|
+
);
|
|
476
|
+
let snap_id = pool.acquire(&device, snap_desc);
|
|
477
|
+
let snap_tex = pool.texture(snap_id).expect("snapshot transient texture");
|
|
478
|
+
|
|
479
|
+
let bpr_unpadded = width * 4; // Depth32Float = 4 B / texel
|
|
480
|
+
let bpr = (bpr_unpadded + 255) & !255;
|
|
481
|
+
let buf_size = (bpr * height) as u64;
|
|
482
|
+
let snap_staging = device.create_buffer(&wgpu::BufferDescriptor {
|
|
483
|
+
label: Some("depth_snap_staging"),
|
|
484
|
+
size: buf_size,
|
|
485
|
+
usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
|
|
486
|
+
mapped_at_creation: false,
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor {
|
|
490
|
+
label: Some("depth_snapshot_encoder"),
|
|
491
|
+
});
|
|
492
|
+
{
|
|
493
|
+
// Empty render pass — only the clear matters.
|
|
494
|
+
let _pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
|
495
|
+
label: Some("depth_clear_pass"),
|
|
496
|
+
color_attachments: &[],
|
|
497
|
+
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
|
|
498
|
+
view: &src_view,
|
|
499
|
+
depth_ops: Some(wgpu::Operations {
|
|
500
|
+
load: wgpu::LoadOp::Clear(cleared_value),
|
|
501
|
+
store: wgpu::StoreOp::Store,
|
|
502
|
+
}),
|
|
503
|
+
stencil_ops: None,
|
|
504
|
+
}),
|
|
505
|
+
timestamp_writes: None,
|
|
506
|
+
occlusion_query_set: None,
|
|
507
|
+
multiview_mask: None,
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
// The exact code path under test: copy from a live depth
|
|
511
|
+
// attachment (DepthOnly aspect) into the snapshot transient.
|
|
512
|
+
encoder.copy_texture_to_texture(
|
|
513
|
+
wgpu::TexelCopyTextureInfo {
|
|
514
|
+
texture: &src,
|
|
515
|
+
mip_level: 0,
|
|
516
|
+
origin: wgpu::Origin3d::ZERO,
|
|
517
|
+
aspect: wgpu::TextureAspect::DepthOnly,
|
|
518
|
+
},
|
|
519
|
+
wgpu::TexelCopyTextureInfo {
|
|
520
|
+
texture: snap_tex,
|
|
521
|
+
mip_level: 0,
|
|
522
|
+
origin: wgpu::Origin3d::ZERO,
|
|
523
|
+
aspect: wgpu::TextureAspect::DepthOnly,
|
|
524
|
+
},
|
|
525
|
+
wgpu::Extent3d { width, height, depth_or_array_layers: 1 },
|
|
526
|
+
);
|
|
527
|
+
// Drain the snapshot to a buffer we can map back.
|
|
528
|
+
encoder.copy_texture_to_buffer(
|
|
529
|
+
wgpu::TexelCopyTextureInfo {
|
|
530
|
+
texture: snap_tex,
|
|
531
|
+
mip_level: 0,
|
|
532
|
+
origin: wgpu::Origin3d::ZERO,
|
|
533
|
+
aspect: wgpu::TextureAspect::DepthOnly,
|
|
534
|
+
},
|
|
535
|
+
wgpu::TexelCopyBufferInfo {
|
|
536
|
+
buffer: &snap_staging,
|
|
537
|
+
layout: wgpu::TexelCopyBufferLayout {
|
|
538
|
+
offset: 0,
|
|
539
|
+
bytes_per_row: Some(bpr),
|
|
540
|
+
rows_per_image: Some(height),
|
|
541
|
+
},
|
|
542
|
+
},
|
|
543
|
+
wgpu::Extent3d { width, height, depth_or_array_layers: 1 },
|
|
544
|
+
);
|
|
545
|
+
queue.submit(std::iter::once(encoder.finish()));
|
|
546
|
+
|
|
547
|
+
let slice = snap_staging.slice(..);
|
|
548
|
+
let (tx, rx) = std::sync::mpsc::channel();
|
|
549
|
+
slice.map_async(wgpu::MapMode::Read, move |r| { let _ = tx.send(r); });
|
|
550
|
+
let _ = device.poll(wgpu::PollType::Wait { submission_index: None, timeout: None });
|
|
551
|
+
rx.recv().expect("map sender").expect("map failed");
|
|
552
|
+
let data = slice.get_mapped_range();
|
|
553
|
+
let mut snap_floats: Vec<f32> = Vec::with_capacity((width * height) as usize);
|
|
554
|
+
for row in 0..height {
|
|
555
|
+
let row_start = (row * bpr) as usize;
|
|
556
|
+
let row_end = row_start + (bpr_unpadded as usize);
|
|
557
|
+
let floats: &[f32] = bytemuck::cast_slice(&data[row_start..row_end]);
|
|
558
|
+
snap_floats.extend_from_slice(floats);
|
|
559
|
+
}
|
|
560
|
+
drop(data);
|
|
561
|
+
snap_staging.unmap();
|
|
562
|
+
|
|
563
|
+
// Every texel in the snapshot must equal the clear value
|
|
564
|
+
// within float tolerance.
|
|
565
|
+
let close_count = snap_floats
|
|
566
|
+
.iter()
|
|
567
|
+
.filter(|v| (**v - cleared_value).abs() < 1e-5)
|
|
568
|
+
.count();
|
|
569
|
+
assert_eq!(
|
|
570
|
+
close_count,
|
|
571
|
+
snap_floats.len(),
|
|
572
|
+
"all snapshot texels should equal the cleared depth value {} (got {} of {} matching)",
|
|
573
|
+
cleared_value, close_count, snap_floats.len(),
|
|
574
|
+
);
|
|
575
|
+
}
|
|
576
|
+
}
|