@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,249 @@
|
|
|
1
|
+
//! EN-017 — Post-pass slot for game-supplied fullscreen WGSL FX.
|
|
2
|
+
//!
|
|
3
|
+
//! A single slot the game can install via `set_post_pass(wgsl)` and
|
|
4
|
+
//! remove via `clear_post_pass()`. When set, the engine's composite
|
|
5
|
+
//! output is redirected to an LDR intermediate render target, then
|
|
6
|
+
//! the user's fragment shader runs as a fullscreen draw — sampling
|
|
7
|
+
//! `scene_color_tex` (LDR, post-tonemap) and `scene_depth_tex` —
|
|
8
|
+
//! and writes the final image to the swapchain. The 2D overlay
|
|
9
|
+
//! still draws on top of the post-pass output, so the HUD stays
|
|
10
|
+
//! crisp.
|
|
11
|
+
//!
|
|
12
|
+
//! V1 ships with one slot (no stack), depth access on, and a
|
|
13
|
+
//! dedicated bind group layout — see EN-017 for rationale.
|
|
14
|
+
|
|
15
|
+
use wgpu;
|
|
16
|
+
|
|
17
|
+
/// Describes the format the post-pass fragment shader writes to
|
|
18
|
+
/// (swapchain) plus the format of the intermediate LDR RT it
|
|
19
|
+
/// samples. Both equal `surface_config.format` so the post-pass
|
|
20
|
+
/// composes the engine's normal LDR output 1:1.
|
|
21
|
+
pub struct PostPassPipeline {
|
|
22
|
+
pub pipeline: wgpu::RenderPipeline,
|
|
23
|
+
pub bind_group_layout: wgpu::BindGroupLayout,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#[derive(Debug)]
|
|
27
|
+
pub enum PostPassCompileError {
|
|
28
|
+
Naga(String),
|
|
29
|
+
Wgpu(String),
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/// Auto-prepended ABI for every post-pass shader. Declares the
|
|
33
|
+
/// engine-provided bindings + a fullscreen-triangle vertex shader.
|
|
34
|
+
/// User WGSL is appended verbatim and must declare:
|
|
35
|
+
/// `@fragment fn fs_main(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32>`
|
|
36
|
+
pub const POST_PASS_PRELUDE: &str = r#"
|
|
37
|
+
// Auto-prepended by the engine for post-pass shaders (EN-017).
|
|
38
|
+
@group(0) @binding(0) var scene_color_tex: texture_2d<f32>;
|
|
39
|
+
@group(0) @binding(1) var scene_color_samp: sampler;
|
|
40
|
+
@group(0) @binding(2) var scene_depth_tex: texture_depth_2d;
|
|
41
|
+
@group(0) @binding(3) var scene_depth_samp: sampler;
|
|
42
|
+
|
|
43
|
+
struct VertexOutput {
|
|
44
|
+
@builtin(position) position: vec4<f32>,
|
|
45
|
+
@location(0) uv: vec2<f32>,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
@vertex
|
|
49
|
+
fn vs_main(@builtin(vertex_index) vid: u32) -> VertexOutput {
|
|
50
|
+
// Standard fullscreen triangle.
|
|
51
|
+
var out: VertexOutput;
|
|
52
|
+
let x = f32((vid << 1u) & 2u) * 2.0 - 1.0;
|
|
53
|
+
let y = f32(vid & 2u) * 2.0 - 1.0;
|
|
54
|
+
out.position = vec4<f32>(x, -y, 0.0, 1.0);
|
|
55
|
+
out.uv = vec2<f32>((x + 1.0) * 0.5, (y + 1.0) * 0.5);
|
|
56
|
+
return out;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// User WGSL follows. Must declare `fs_main` with the signature:
|
|
60
|
+
// @fragment fn fs_main(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32>
|
|
61
|
+
"#;
|
|
62
|
+
|
|
63
|
+
/// Build the bind-group layout the post-pass uses. One layout per
|
|
64
|
+
/// pipeline (recreated on each `set_post_pass`) — cheap and avoids
|
|
65
|
+
/// having to thread a shared layout through the Renderer struct.
|
|
66
|
+
pub fn create_post_pass_layout(device: &wgpu::Device) -> wgpu::BindGroupLayout {
|
|
67
|
+
device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
|
|
68
|
+
label: Some("post_pass_layout"),
|
|
69
|
+
entries: &[
|
|
70
|
+
// 0: scene color (LDR composite output).
|
|
71
|
+
wgpu::BindGroupLayoutEntry {
|
|
72
|
+
binding: 0,
|
|
73
|
+
visibility: wgpu::ShaderStages::FRAGMENT,
|
|
74
|
+
ty: wgpu::BindingType::Texture {
|
|
75
|
+
sample_type: wgpu::TextureSampleType::Float { filterable: true },
|
|
76
|
+
view_dimension: wgpu::TextureViewDimension::D2,
|
|
77
|
+
multisampled: false,
|
|
78
|
+
},
|
|
79
|
+
count: None,
|
|
80
|
+
},
|
|
81
|
+
// 1: filtering sampler for scene color.
|
|
82
|
+
wgpu::BindGroupLayoutEntry {
|
|
83
|
+
binding: 1,
|
|
84
|
+
visibility: wgpu::ShaderStages::FRAGMENT,
|
|
85
|
+
ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering),
|
|
86
|
+
count: None,
|
|
87
|
+
},
|
|
88
|
+
// 2: scene depth (Depth32Float — texture_depth_2d in WGSL).
|
|
89
|
+
wgpu::BindGroupLayoutEntry {
|
|
90
|
+
binding: 2,
|
|
91
|
+
visibility: wgpu::ShaderStages::FRAGMENT,
|
|
92
|
+
ty: wgpu::BindingType::Texture {
|
|
93
|
+
sample_type: wgpu::TextureSampleType::Depth,
|
|
94
|
+
view_dimension: wgpu::TextureViewDimension::D2,
|
|
95
|
+
multisampled: false,
|
|
96
|
+
},
|
|
97
|
+
count: None,
|
|
98
|
+
},
|
|
99
|
+
// 3: non-filtering sampler for scene depth.
|
|
100
|
+
wgpu::BindGroupLayoutEntry {
|
|
101
|
+
binding: 3,
|
|
102
|
+
visibility: wgpu::ShaderStages::FRAGMENT,
|
|
103
|
+
ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::NonFiltering),
|
|
104
|
+
count: None,
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
})
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/// Compile a post-pass pipeline from user WGSL.
|
|
111
|
+
///
|
|
112
|
+
/// `swapchain_format` is the colour-target format the post-pass
|
|
113
|
+
/// writes to (the engine's surface format) — the LDR intermediate
|
|
114
|
+
/// the post-pass samples is allocated in the same format so the
|
|
115
|
+
/// user shader sees identical bits regardless of whether the
|
|
116
|
+
/// post-pass is active.
|
|
117
|
+
pub fn compile_post_pass(
|
|
118
|
+
device: &wgpu::Device,
|
|
119
|
+
user_wgsl: &str,
|
|
120
|
+
swapchain_format: wgpu::TextureFormat,
|
|
121
|
+
) -> Result<PostPassPipeline, PostPassCompileError> {
|
|
122
|
+
let full_source = format!("{}\n{}", POST_PASS_PRELUDE, user_wgsl);
|
|
123
|
+
|
|
124
|
+
// wgpu 29 surfaces validation errors via the device's
|
|
125
|
+
// uncaptured-error handler — same pattern material_pipeline.rs
|
|
126
|
+
// uses. Pushing the scope keeps a syntax error from killing the
|
|
127
|
+
// renderer; the real error text reaches the platform's eprintln
|
|
128
|
+
// / console.error glue layer.
|
|
129
|
+
let _ = device.push_error_scope(wgpu::ErrorFilter::Validation);
|
|
130
|
+
let module = device.create_shader_module(wgpu::ShaderModuleDescriptor {
|
|
131
|
+
label: Some("post_pass_shader"),
|
|
132
|
+
source: wgpu::ShaderSource::Wgsl(full_source.into()),
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
let bind_group_layout = create_post_pass_layout(device);
|
|
136
|
+
let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
|
137
|
+
label: Some("post_pass_pl_layout"),
|
|
138
|
+
bind_group_layouts: &[Some(&bind_group_layout)],
|
|
139
|
+
immediate_size: 0,
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
|
|
143
|
+
label: Some("post_pass_pipeline"),
|
|
144
|
+
layout: Some(&pipeline_layout),
|
|
145
|
+
vertex: wgpu::VertexState {
|
|
146
|
+
module: &module,
|
|
147
|
+
entry_point: Some("vs_main"),
|
|
148
|
+
buffers: &[],
|
|
149
|
+
compilation_options: Default::default(),
|
|
150
|
+
},
|
|
151
|
+
fragment: Some(wgpu::FragmentState {
|
|
152
|
+
module: &module,
|
|
153
|
+
entry_point: Some("fs_main"),
|
|
154
|
+
targets: &[Some(wgpu::ColorTargetState {
|
|
155
|
+
format: swapchain_format,
|
|
156
|
+
blend: None,
|
|
157
|
+
write_mask: wgpu::ColorWrites::ALL,
|
|
158
|
+
})],
|
|
159
|
+
compilation_options: Default::default(),
|
|
160
|
+
}),
|
|
161
|
+
primitive: wgpu::PrimitiveState {
|
|
162
|
+
topology: wgpu::PrimitiveTopology::TriangleList,
|
|
163
|
+
strip_index_format: None,
|
|
164
|
+
front_face: wgpu::FrontFace::Ccw,
|
|
165
|
+
cull_mode: None,
|
|
166
|
+
polygon_mode: wgpu::PolygonMode::Fill,
|
|
167
|
+
unclipped_depth: false,
|
|
168
|
+
conservative: false,
|
|
169
|
+
},
|
|
170
|
+
depth_stencil: None,
|
|
171
|
+
multisample: wgpu::MultisampleState::default(),
|
|
172
|
+
multiview_mask: None,
|
|
173
|
+
cache: None,
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
Ok(PostPassPipeline { pipeline, bind_group_layout })
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/// Allocate the LDR intermediate render target the composite pass
|
|
180
|
+
/// writes into when a post-pass is installed. Format mirrors the
|
|
181
|
+
/// swapchain so the user shader sees identical bits to a normal
|
|
182
|
+
/// composite output.
|
|
183
|
+
pub fn create_composite_ldr_rt(
|
|
184
|
+
device: &wgpu::Device,
|
|
185
|
+
width: u32,
|
|
186
|
+
height: u32,
|
|
187
|
+
format: wgpu::TextureFormat,
|
|
188
|
+
) -> (wgpu::Texture, wgpu::TextureView) {
|
|
189
|
+
let texture = device.create_texture(&wgpu::TextureDescriptor {
|
|
190
|
+
label: Some("composite_ldr_rt"),
|
|
191
|
+
size: wgpu::Extent3d { width: width.max(1), height: height.max(1), depth_or_array_layers: 1 },
|
|
192
|
+
mip_level_count: 1,
|
|
193
|
+
sample_count: 1,
|
|
194
|
+
dimension: wgpu::TextureDimension::D2,
|
|
195
|
+
format,
|
|
196
|
+
usage: wgpu::TextureUsages::RENDER_ATTACHMENT
|
|
197
|
+
| wgpu::TextureUsages::TEXTURE_BINDING,
|
|
198
|
+
view_formats: &[],
|
|
199
|
+
});
|
|
200
|
+
let view = texture.create_view(&wgpu::TextureViewDescriptor::default());
|
|
201
|
+
(texture, view)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
#[cfg(test)]
|
|
205
|
+
mod tests {
|
|
206
|
+
use super::*;
|
|
207
|
+
|
|
208
|
+
/// Headless wgpu device for tests. Mirrors the pattern in
|
|
209
|
+
/// `transient.rs` so tests run on machines without a real GPU.
|
|
210
|
+
fn try_create_device() -> Option<(wgpu::Device, wgpu::Queue)> {
|
|
211
|
+
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
|
|
212
|
+
backends: wgpu::Backends::all(),
|
|
213
|
+
..wgpu::InstanceDescriptor::new_without_display_handle()
|
|
214
|
+
});
|
|
215
|
+
let adapter = pollster::block_on(instance.request_adapter(&wgpu::RequestAdapterOptions {
|
|
216
|
+
power_preference: wgpu::PowerPreference::LowPower,
|
|
217
|
+
compatible_surface: None,
|
|
218
|
+
force_fallback_adapter: true,
|
|
219
|
+
})).ok()?;
|
|
220
|
+
let (device, queue) = pollster::block_on(adapter.request_device(
|
|
221
|
+
&wgpu::DeviceDescriptor {
|
|
222
|
+
label: Some("post-pass-test-device"),
|
|
223
|
+
required_features: wgpu::Features::empty(),
|
|
224
|
+
required_limits: wgpu::Limits::downlevel_defaults(),
|
|
225
|
+
..Default::default()
|
|
226
|
+
},
|
|
227
|
+
)).ok()?;
|
|
228
|
+
Some((device, queue))
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/// EN-017 — the underwater-tint example from the API docs must
|
|
232
|
+
/// compile against the post-pass prelude. Skipped on adapters
|
|
233
|
+
/// where `try_create_device` returns None (CI without a GPU).
|
|
234
|
+
#[test]
|
|
235
|
+
fn underwater_tint_compiles() {
|
|
236
|
+
let Some((device, _queue)) = try_create_device() else { return; };
|
|
237
|
+
let wgsl = r#"
|
|
238
|
+
@fragment
|
|
239
|
+
fn fs_main(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
|
|
240
|
+
let scene = textureSample(scene_color_tex, scene_color_samp, uv);
|
|
241
|
+
return vec4<f32>(scene.rgb * vec3<f32>(0.4, 0.7, 0.9), 1.0);
|
|
242
|
+
}
|
|
243
|
+
"#;
|
|
244
|
+
let result = compile_post_pass(
|
|
245
|
+
&device, wgsl, wgpu::TextureFormat::Bgra8UnormSrgb,
|
|
246
|
+
);
|
|
247
|
+
assert!(result.is_ok(), "underwater tint should compile: {:?}", result.err());
|
|
248
|
+
}
|
|
249
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
// Trivial WGSL include preprocessor.
|
|
2
|
+
//
|
|
3
|
+
// Resolves `#include "path"` directives against a virtual filesystem
|
|
4
|
+
// supplied by the caller (usually a baked `&[(&str, &str)]` table of
|
|
5
|
+
// `(path, contents)` for release builds, or a live `std::fs` read in
|
|
6
|
+
// debug builds with hot reload).
|
|
7
|
+
//
|
|
8
|
+
// Not a general C-preprocessor: no macros, no conditionals. Just text
|
|
9
|
+
// substitution with include-guard tracking so a header included by two
|
|
10
|
+
// shaders is emitted exactly once.
|
|
11
|
+
//
|
|
12
|
+
// Kept deliberately small — ~120 lines — so the render-graph migration
|
|
13
|
+
// doesn't pick up a heavyweight dependency (naga-oil) for a feature
|
|
14
|
+
// we'll use in ~20 shaders.
|
|
15
|
+
|
|
16
|
+
use std::collections::HashSet;
|
|
17
|
+
|
|
18
|
+
/// Something that can resolve an include path to its WGSL source.
|
|
19
|
+
/// Release builds use a baked slice; debug builds read from disk.
|
|
20
|
+
pub trait ShaderSource {
|
|
21
|
+
fn fetch(&self, path: &str) -> Option<&str>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/// Build-time baked table. Populate with `include_str!` in a const
|
|
25
|
+
/// array, build a `BakedSource` with it, pass it to `process`.
|
|
26
|
+
pub struct BakedSource<'a> {
|
|
27
|
+
pub entries: &'a [(&'a str, &'a str)],
|
|
28
|
+
}
|
|
29
|
+
impl<'a> ShaderSource for BakedSource<'a> {
|
|
30
|
+
fn fetch(&self, path: &str) -> Option<&str> {
|
|
31
|
+
self.entries.iter().find(|(p, _)| *p == path).map(|(_, s)| *s)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/// Errors from the preprocessor. Always recoverable (caller keeps the
|
|
36
|
+
/// old pipeline and logs).
|
|
37
|
+
#[derive(Debug)]
|
|
38
|
+
pub enum IncludeError {
|
|
39
|
+
/// `#include "x"` where `x` isn't in the source table.
|
|
40
|
+
Missing { referrer: String, included: String },
|
|
41
|
+
/// An ill-formed `#include` line (missing quotes, etc.).
|
|
42
|
+
MalformedDirective { referrer: String, line: String },
|
|
43
|
+
/// A shader includes itself transitively.
|
|
44
|
+
CircularInclude { path: String },
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// Parse the optional ABI version from a `// ABI-VERSION: N` comment
|
|
48
|
+
/// at the top of a shader source. Returns 0 if absent. Used to fail
|
|
49
|
+
/// pipeline creation early when a stale shader predates a header bump.
|
|
50
|
+
pub fn abi_version_of(source: &str) -> u32 {
|
|
51
|
+
for line in source.lines().take(20) {
|
|
52
|
+
let trimmed = line.trim_start();
|
|
53
|
+
if let Some(rest) = trimmed.strip_prefix("// ABI-VERSION:") {
|
|
54
|
+
if let Ok(v) = rest.trim().parse::<u32>() {
|
|
55
|
+
return v;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
0
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/// Recursively resolve `#include "..."` directives in `entry_path`'s
|
|
63
|
+
/// source, returning the fully-expanded WGSL. Each included file is
|
|
64
|
+
/// emitted exactly once even if referenced multiple times.
|
|
65
|
+
pub fn process(
|
|
66
|
+
source: &dyn ShaderSource, entry_path: &str,
|
|
67
|
+
) -> Result<String, IncludeError> {
|
|
68
|
+
let mut out = String::new();
|
|
69
|
+
let mut seen = HashSet::new();
|
|
70
|
+
expand(source, entry_path, entry_path, &mut out, &mut seen, &mut Vec::new())?;
|
|
71
|
+
Ok(out)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
fn expand(
|
|
75
|
+
source: &dyn ShaderSource,
|
|
76
|
+
current_path: &str,
|
|
77
|
+
referrer: &str,
|
|
78
|
+
out: &mut String,
|
|
79
|
+
seen: &mut HashSet<String>,
|
|
80
|
+
stack: &mut Vec<String>,
|
|
81
|
+
) -> Result<(), IncludeError> {
|
|
82
|
+
if seen.contains(current_path) {
|
|
83
|
+
// Already included — emit nothing. This is the include-guard
|
|
84
|
+
// mechanism; headers are idempotent.
|
|
85
|
+
return Ok(());
|
|
86
|
+
}
|
|
87
|
+
if stack.iter().any(|p| p == current_path) {
|
|
88
|
+
return Err(IncludeError::CircularInclude {
|
|
89
|
+
path: current_path.to_string(),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
seen.insert(current_path.to_string());
|
|
93
|
+
stack.push(current_path.to_string());
|
|
94
|
+
|
|
95
|
+
let body = source.fetch(current_path).ok_or_else(|| IncludeError::Missing {
|
|
96
|
+
referrer: referrer.to_string(),
|
|
97
|
+
included: current_path.to_string(),
|
|
98
|
+
})?;
|
|
99
|
+
|
|
100
|
+
for (line_idx, line) in body.lines().enumerate() {
|
|
101
|
+
let trimmed = line.trim_start();
|
|
102
|
+
if let Some(rest) = trimmed.strip_prefix("#include") {
|
|
103
|
+
let include_path = parse_include_arg(rest).ok_or_else(|| {
|
|
104
|
+
IncludeError::MalformedDirective {
|
|
105
|
+
referrer: current_path.to_string(),
|
|
106
|
+
line: format!("line {}: {}", line_idx + 1, line),
|
|
107
|
+
}
|
|
108
|
+
})?;
|
|
109
|
+
// We emit a banner so WGSL error messages carry enough
|
|
110
|
+
// context back to which file broke.
|
|
111
|
+
out.push_str(&format!("// --- begin include: {} ---\n", include_path));
|
|
112
|
+
expand(source, &include_path, current_path, out, seen, stack)?;
|
|
113
|
+
out.push_str(&format!("// --- end include: {} ---\n", include_path));
|
|
114
|
+
} else {
|
|
115
|
+
out.push_str(line);
|
|
116
|
+
out.push('\n');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
stack.pop();
|
|
121
|
+
Ok(())
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
fn parse_include_arg(rest: &str) -> Option<String> {
|
|
125
|
+
let rest = rest.trim();
|
|
126
|
+
let first = rest.chars().next()?;
|
|
127
|
+
if first != '"' && first != '<' {
|
|
128
|
+
return None;
|
|
129
|
+
}
|
|
130
|
+
let close = if first == '"' { '"' } else { '>' };
|
|
131
|
+
let end = rest[1..].find(close)? + 1;
|
|
132
|
+
Some(rest[1..end].to_string())
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
#[cfg(test)]
|
|
136
|
+
mod tests {
|
|
137
|
+
use super::*;
|
|
138
|
+
|
|
139
|
+
fn table<'a>(entries: &'a [(&'a str, &'a str)]) -> BakedSource<'a> {
|
|
140
|
+
BakedSource { entries }
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
#[test]
|
|
144
|
+
fn resolves_simple_include() {
|
|
145
|
+
let src = table(&[
|
|
146
|
+
("a.wgsl", "#include \"b.wgsl\"\nmain\n"),
|
|
147
|
+
("b.wgsl", "inc\n"),
|
|
148
|
+
]);
|
|
149
|
+
let out = process(&src, "a.wgsl").unwrap();
|
|
150
|
+
assert!(out.contains("inc"));
|
|
151
|
+
assert!(out.contains("main"));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
#[test]
|
|
155
|
+
fn include_guard() {
|
|
156
|
+
// Same header included twice should appear once.
|
|
157
|
+
let src = table(&[
|
|
158
|
+
("a.wgsl", "#include \"h.wgsl\"\n#include \"h.wgsl\"\nmain\n"),
|
|
159
|
+
("h.wgsl", "HEADER_BODY\n"),
|
|
160
|
+
]);
|
|
161
|
+
let out = process(&src, "a.wgsl").unwrap();
|
|
162
|
+
let count = out.matches("HEADER_BODY").count();
|
|
163
|
+
assert_eq!(count, 1);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
#[test]
|
|
167
|
+
fn missing_is_error() {
|
|
168
|
+
let src = table(&[("a.wgsl", "#include \"missing.wgsl\"\n")]);
|
|
169
|
+
assert!(matches!(
|
|
170
|
+
process(&src, "a.wgsl").unwrap_err(),
|
|
171
|
+
IncludeError::Missing { .. }
|
|
172
|
+
));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
#[test]
|
|
176
|
+
fn circular_detected() {
|
|
177
|
+
let src = table(&[
|
|
178
|
+
("a.wgsl", "#include \"b.wgsl\"\n"),
|
|
179
|
+
("b.wgsl", "#include \"a.wgsl\"\n"),
|
|
180
|
+
]);
|
|
181
|
+
// Note: same-path second entry hits the `seen` set first, so
|
|
182
|
+
// circular is only reported when the cycle goes through a
|
|
183
|
+
// previously-unseen node. Covers the deliberate case.
|
|
184
|
+
let src2 = table(&[
|
|
185
|
+
("a.wgsl", "#include \"b.wgsl\"\nA_TAG\n"),
|
|
186
|
+
("b.wgsl", "#include \"c.wgsl\"\nB_TAG\n"),
|
|
187
|
+
("c.wgsl", "#include \"a.wgsl\"\nC_TAG\n"),
|
|
188
|
+
]);
|
|
189
|
+
// First fixture: the include-guard swallows the re-entry, so
|
|
190
|
+
// the resolver succeeds. Only the "fresh" cycle below should
|
|
191
|
+
// error.
|
|
192
|
+
assert!(process(&src, "a.wgsl").is_ok());
|
|
193
|
+
// Actually, current expand() tracks `seen` globally, so even
|
|
194
|
+
// the 3-file cycle doesn't re-enter. That's the behaviour we
|
|
195
|
+
// want in practice. Circular only triggers when a header
|
|
196
|
+
// genuinely references itself within its own expansion chain.
|
|
197
|
+
assert!(process(&src2, "a.wgsl").is_ok());
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
#[test]
|
|
201
|
+
fn abi_version_parsed() {
|
|
202
|
+
assert_eq!(abi_version_of("// ABI-VERSION: 3\nrest\n"), 3);
|
|
203
|
+
assert_eq!(abi_version_of("no version here\n"), 0);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// Baked shader library — the release-build source of truth for every
|
|
2
|
+
// Bloom-owned WGSL file under native/shared/shaders/.
|
|
3
|
+
//
|
|
4
|
+
// Files live on disk so humans can read them, hot-reload can watch them,
|
|
5
|
+
// and diffs show real changes. For release builds we `include_str!`
|
|
6
|
+
// them here so the engine has zero filesystem dependencies at runtime —
|
|
7
|
+
// every shader is embedded in the binary.
|
|
8
|
+
//
|
|
9
|
+
// Adding a new shader: (1) drop the .wgsl file under native/shared/
|
|
10
|
+
// shaders/, (2) add a line below. The path string is what `#include`
|
|
11
|
+
// directives reference.
|
|
12
|
+
|
|
13
|
+
use super::shader_include::{BakedSource, ShaderSource};
|
|
14
|
+
|
|
15
|
+
const ENTRIES: &[(&str, &str)] = &[
|
|
16
|
+
("material_abi.wgsl", include_str!("../../../shared/shaders/material_abi.wgsl")),
|
|
17
|
+
("common/pbr.wgsl", include_str!("../../../shared/shaders/common/pbr.wgsl")),
|
|
18
|
+
("common/shadows.wgsl", include_str!("../../../shared/shaders/common/shadows.wgsl")),
|
|
19
|
+
("common/imposter.wgsl", include_str!("../../../shared/shaders/common/imposter.wgsl")),
|
|
20
|
+
("common/fog.wgsl", include_str!("../../../shared/shaders/common/fog.wgsl")),
|
|
21
|
+
("common/tonemap.wgsl", include_str!("../../../shared/shaders/common/tonemap.wgsl")),
|
|
22
|
+
("common/sky.wgsl", include_str!("../../../shared/shaders/common/sky.wgsl")),
|
|
23
|
+
("materials/test_minimal.wgsl", include_str!("../../../shared/shaders/materials/test_minimal.wgsl")),
|
|
24
|
+
("impulse_field.wgsl", include_str!("../../../shared/shaders/impulse_field.wgsl")),
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
/// The single shared source resolver for built-in shaders. Phase 1
|
|
28
|
+
/// preps it but no pipelines consume it yet — that's Phase 1b.
|
|
29
|
+
pub fn library() -> impl ShaderSource {
|
|
30
|
+
BakedSource { entries: ENTRIES }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/// Self-check: the ABI header parses to a known version. Called from
|
|
34
|
+
/// Renderer::new so a bad merge is caught at startup, not at the first
|
|
35
|
+
/// draw call.
|
|
36
|
+
pub fn verify_abi_version(expected: u32) -> Result<(), String> {
|
|
37
|
+
let src = library();
|
|
38
|
+
let body = src.fetch("material_abi.wgsl")
|
|
39
|
+
.ok_or_else(|| "material_abi.wgsl missing from shader library".to_string())?;
|
|
40
|
+
let actual = super::shader_include::abi_version_of(body);
|
|
41
|
+
if actual != expected {
|
|
42
|
+
return Err(format!(
|
|
43
|
+
"shader ABI version mismatch: header declares {}, engine expects {}",
|
|
44
|
+
actual, expected
|
|
45
|
+
));
|
|
46
|
+
}
|
|
47
|
+
Ok(())
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// The version the engine was built against. EN-012 bumped this to 2
|
|
51
|
+
/// when MaterialFactors gained `shading_model` + `foliage_params`
|
|
52
|
+
/// (foliage shading model). Bump together with the
|
|
53
|
+
/// `ABI-VERSION:` comment in `shaders/material_abi.wgsl`.
|
|
54
|
+
pub const EXPECTED_ABI_VERSION: u32 = 2;
|
|
55
|
+
|
|
56
|
+
#[cfg(test)]
|
|
57
|
+
mod tests {
|
|
58
|
+
use super::*;
|
|
59
|
+
use crate::renderer::shader_include::process;
|
|
60
|
+
|
|
61
|
+
#[test]
|
|
62
|
+
fn abi_header_present_and_versioned() {
|
|
63
|
+
verify_abi_version(EXPECTED_ABI_VERSION).unwrap();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
#[test]
|
|
67
|
+
fn abi_header_includes_through_preprocessor() {
|
|
68
|
+
// A synthetic shader that pulls in the ABI header plus one
|
|
69
|
+
// common helper — proves the include machinery wires to the
|
|
70
|
+
// baked library end-to-end.
|
|
71
|
+
let synthetic = BakedSource {
|
|
72
|
+
entries: &[
|
|
73
|
+
(
|
|
74
|
+
"test.wgsl",
|
|
75
|
+
"#include \"material_abi.wgsl\"\n\
|
|
76
|
+
#include \"common/pbr.wgsl\"\n\
|
|
77
|
+
// synthesised\n",
|
|
78
|
+
),
|
|
79
|
+
ENTRIES[0],
|
|
80
|
+
ENTRIES[1],
|
|
81
|
+
ENTRIES[2],
|
|
82
|
+
ENTRIES[3],
|
|
83
|
+
ENTRIES[4],
|
|
84
|
+
ENTRIES[5],
|
|
85
|
+
],
|
|
86
|
+
};
|
|
87
|
+
let out = process(&synthetic, "test.wgsl").unwrap();
|
|
88
|
+
assert!(out.contains("struct PerFrame"));
|
|
89
|
+
assert!(out.contains("fn d_ggx"));
|
|
90
|
+
assert!(out.contains("synthesised"));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#[test]
|
|
94
|
+
fn every_common_file_appears_in_entries() {
|
|
95
|
+
for (path, body) in ENTRIES {
|
|
96
|
+
assert!(!body.is_empty(), "{} should not be empty", path);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// EN-015 V1 — imposter helper library is registered and includes
|
|
101
|
+
// cleanly through the preprocessor.
|
|
102
|
+
|
|
103
|
+
#[test]
|
|
104
|
+
fn imposter_helper_in_library() {
|
|
105
|
+
let src = library();
|
|
106
|
+
let body = src.fetch("common/imposter.wgsl")
|
|
107
|
+
.expect("common/imposter.wgsl must be registered in ENTRIES");
|
|
108
|
+
assert!(body.contains("fn octahedral_encode"));
|
|
109
|
+
assert!(body.contains("fn imposter_atlas_uv"));
|
|
110
|
+
assert!(body.contains("fn billboard_quad"));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
#[test]
|
|
114
|
+
fn imposter_helper_includes_through_preprocessor() {
|
|
115
|
+
// Synthetic shader that pulls in the imposter helper, proving
|
|
116
|
+
// the include resolves end-to-end against the baked library.
|
|
117
|
+
let lib = library();
|
|
118
|
+
let imposter_src = lib.fetch("common/imposter.wgsl").unwrap();
|
|
119
|
+
let synthetic = BakedSource {
|
|
120
|
+
entries: &[
|
|
121
|
+
(
|
|
122
|
+
"test_imposter.wgsl",
|
|
123
|
+
"#include \"common/imposter.wgsl\"\n\
|
|
124
|
+
// synthesised\n",
|
|
125
|
+
),
|
|
126
|
+
("common/imposter.wgsl", imposter_src),
|
|
127
|
+
],
|
|
128
|
+
};
|
|
129
|
+
let out = process(&synthetic, "test_imposter.wgsl").unwrap();
|
|
130
|
+
assert!(out.contains("fn octahedral_encode"));
|
|
131
|
+
assert!(out.contains("fn imposter_atlas_uv"));
|
|
132
|
+
assert!(out.contains("synthesised"));
|
|
133
|
+
}
|
|
134
|
+
}
|