@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,42 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "bloom-shared"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
|
|
6
|
+
[features]
|
|
7
|
+
default = ["mp3", "jolt", "hot-reload"]
|
|
8
|
+
mp3 = ["dep:minimp3"]
|
|
9
|
+
jolt = []
|
|
10
|
+
# EN-008 — gate the `notify` filesystem watcher behind a compile-time
|
|
11
|
+
# feature. Default-on for the dev workflow; ship game binaries with
|
|
12
|
+
# --no-default-features (or --features mp3,jolt) to drop notify from
|
|
13
|
+
# the dep tree entirely.
|
|
14
|
+
hot-reload = ["dep:notify"]
|
|
15
|
+
web = ["dep:web-time"]
|
|
16
|
+
|
|
17
|
+
[build-dependencies]
|
|
18
|
+
cmake = "0.1"
|
|
19
|
+
|
|
20
|
+
[dependencies]
|
|
21
|
+
wgpu = "29"
|
|
22
|
+
raw-window-handle = "0.6"
|
|
23
|
+
fontdue = "0.9"
|
|
24
|
+
libc = "0.2"
|
|
25
|
+
bytemuck = { version = "1", features = ["derive"] }
|
|
26
|
+
half = "2"
|
|
27
|
+
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "bmp", "tga", "hdr"] }
|
|
28
|
+
image_dds = { version = "0.7", default-features = false, features = ["ddsfile", "image"] }
|
|
29
|
+
gltf = { version = "1", features = ["KHR_materials_pbrSpecularGlossiness", "KHR_materials_transmission"] }
|
|
30
|
+
lewton = "0.10"
|
|
31
|
+
minimp3 = { version = "0.5", optional = true }
|
|
32
|
+
earcutr = "0.4"
|
|
33
|
+
web-time = { version = "0.2", optional = true }
|
|
34
|
+
# Phase 6 — hot-reload watcher for material WGSL files. Native only;
|
|
35
|
+
# wasm doesn't have a filesystem to watch (gated in code via
|
|
36
|
+
# cfg(not(target_arch = "wasm32"))). EN-008 made it opt-in via the
|
|
37
|
+
# `hot-reload` cargo feature so shipped game builds can drop notify.
|
|
38
|
+
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
39
|
+
notify = { version = "6", optional = true }
|
|
40
|
+
|
|
41
|
+
[dev-dependencies]
|
|
42
|
+
pollster = "0.4"
|
|
Binary file
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
//! Build script for bloom-shared.
|
|
2
|
+
//!
|
|
3
|
+
//! Only does work when the `jolt` feature is enabled. In that case it builds
|
|
4
|
+
//! the `bloom_jolt` C++ shim (and JoltPhysics, via its own CMakeLists) via the
|
|
5
|
+
//! `cmake` crate and emits link directives so rustc picks up both archives.
|
|
6
|
+
|
|
7
|
+
fn main() {
|
|
8
|
+
// Always re-run when these change.
|
|
9
|
+
println!("cargo:rerun-if-changed=build.rs");
|
|
10
|
+
println!("cargo:rerun-if-env-changed=CARGO_FEATURE_JOLT");
|
|
11
|
+
|
|
12
|
+
if std::env::var_os("CARGO_FEATURE_JOLT").is_none() {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// The Jolt C++ shim cannot target WebAssembly via the normal cmake path —
|
|
17
|
+
// Emscripten + Jolt is a separate build pipeline (see JoltPhysics.js).
|
|
18
|
+
// On wasm32 the web crate routes bloom_physics_* FFI to JoltPhysics.js
|
|
19
|
+
// directly via wasm_bindgen; no static library is needed here.
|
|
20
|
+
if std::env::var("CARGO_CFG_TARGET_ARCH").as_deref() == Ok("wasm32") {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
build_jolt();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#[cfg(not(feature = "jolt"))]
|
|
28
|
+
fn build_jolt() {}
|
|
29
|
+
|
|
30
|
+
#[cfg(feature = "jolt")]
|
|
31
|
+
fn build_jolt() {
|
|
32
|
+
use std::path::PathBuf;
|
|
33
|
+
|
|
34
|
+
// Locate native/third_party/bloom_jolt relative to this crate.
|
|
35
|
+
let manifest_dir = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
36
|
+
let shim_dir = manifest_dir
|
|
37
|
+
.parent()
|
|
38
|
+
.unwrap()
|
|
39
|
+
.join("third_party")
|
|
40
|
+
.join("bloom_jolt");
|
|
41
|
+
|
|
42
|
+
if !shim_dir.join("CMakeLists.txt").exists() {
|
|
43
|
+
panic!(
|
|
44
|
+
"bloom_jolt shim not found at {}; did the third_party submodules init?",
|
|
45
|
+
shim_dir.display()
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
println!("cargo:rerun-if-changed={}", shim_dir.join("CMakeLists.txt").display());
|
|
50
|
+
println!("cargo:rerun-if-changed={}", shim_dir.join("include/bloom_jolt.h").display());
|
|
51
|
+
println!("cargo:rerun-if-changed={}", shim_dir.join("src/bloom_jolt.cpp").display());
|
|
52
|
+
|
|
53
|
+
let dst = cmake::Config::new(&shim_dir)
|
|
54
|
+
.profile("Release")
|
|
55
|
+
.define("CMAKE_BUILD_TYPE", "Release")
|
|
56
|
+
.build();
|
|
57
|
+
|
|
58
|
+
println!("cargo:rustc-link-search=native={}", dst.join("lib").display());
|
|
59
|
+
println!("cargo:rustc-link-lib=static=bloom_jolt");
|
|
60
|
+
println!("cargo:rustc-link-lib=static=Jolt");
|
|
61
|
+
|
|
62
|
+
// C++ standard library — required because we're linking static archives
|
|
63
|
+
// that pull in libc++ / libstdc++ symbols.
|
|
64
|
+
let target = std::env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
|
|
65
|
+
match target.as_str() {
|
|
66
|
+
"macos" | "ios" | "tvos" | "watchos" => {
|
|
67
|
+
println!("cargo:rustc-link-lib=dylib=c++");
|
|
68
|
+
}
|
|
69
|
+
"linux" | "android" => {
|
|
70
|
+
println!("cargo:rustc-link-lib=dylib=stdc++");
|
|
71
|
+
}
|
|
72
|
+
"windows" => {
|
|
73
|
+
// MSVC toolchain handles libc++ automatically; MinGW would need stdc++.
|
|
74
|
+
}
|
|
75
|
+
_ => {}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Distance fog — standard exponential-squared falloff.
|
|
2
|
+
//
|
|
3
|
+
// Depends on material_abi.wgsl for view.fog (rgb + density).
|
|
4
|
+
|
|
5
|
+
// Apply fog to a lit fragment. `view_distance` is the world-space
|
|
6
|
+
// distance from the camera to the fragment. `color` is the lit HDR
|
|
7
|
+
// colour before fog.
|
|
8
|
+
fn apply_fog(color: vec3<f32>, view_distance: f32) -> vec3<f32> {
|
|
9
|
+
let density = view.fog.w;
|
|
10
|
+
if (density <= 0.0) { return color; }
|
|
11
|
+
// exp² is tighter near the camera and softer at distance than a plain
|
|
12
|
+
// exp — matches what most atmospherics use.
|
|
13
|
+
let f = exp(-density * view_distance * density * view_distance);
|
|
14
|
+
let factor = clamp(f, 0.0, 1.0);
|
|
15
|
+
return mix(view.fog.rgb, color, factor);
|
|
16
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// Octahedral imposter helpers.
|
|
2
|
+
//
|
|
3
|
+
// The standard "octahedral imposter" technique encodes a hemisphere of
|
|
4
|
+
// view directions into a 2D atlas. A model is pre-rendered from N²
|
|
5
|
+
// directions on an octahedron (V1 expects N = 8 → 64 views in an 8×8
|
|
6
|
+
// grid). At runtime, the fragment shader picks the right grid cell
|
|
7
|
+
// based on the camera's direction relative to the imposter's position.
|
|
8
|
+
//
|
|
9
|
+
// Atlas convention:
|
|
10
|
+
// - 8×8 grid (V1 fixed). 256 to 512 px per cell.
|
|
11
|
+
// - RGBA8 (color + alpha). Future: split into albedo / normal / depth.
|
|
12
|
+
// - Each cell renders the model facing in the encoded direction.
|
|
13
|
+
//
|
|
14
|
+
// Bake tooling: V1 expects games to use Blender's ScreenSpace
|
|
15
|
+
// imposter add-on, Unity's Tree Creator imposter mode, or any
|
|
16
|
+
// equivalent external tool. The engine bake tool ships in a follow-up.
|
|
17
|
+
|
|
18
|
+
const IMPOSTER_GRID: u32 = 8u;
|
|
19
|
+
const IMPOSTER_GRID_F: f32 = 8.0;
|
|
20
|
+
|
|
21
|
+
// Spherical → octahedron: unfold a unit sphere onto the [-1, 1] square.
|
|
22
|
+
fn octahedral_encode(dir: vec3<f32>) -> vec2<f32> {
|
|
23
|
+
let n = dir / (abs(dir.x) + abs(dir.y) + abs(dir.z));
|
|
24
|
+
if (n.y >= 0.0) {
|
|
25
|
+
return vec2<f32>(n.x, n.z);
|
|
26
|
+
}
|
|
27
|
+
// Lower hemisphere: fold around.
|
|
28
|
+
return vec2<f32>(
|
|
29
|
+
(1.0 - abs(n.z)) * select(-1.0, 1.0, n.x >= 0.0),
|
|
30
|
+
(1.0 - abs(n.x)) * select(-1.0, 1.0, n.z >= 0.0),
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Octahedron → spherical (inverse of octahedral_encode).
|
|
35
|
+
fn octahedral_decode(uv: vec2<f32>) -> vec3<f32> {
|
|
36
|
+
let abs_uv = abs(uv);
|
|
37
|
+
let y = 1.0 - abs_uv.x - abs_uv.y;
|
|
38
|
+
if (y >= 0.0) {
|
|
39
|
+
return normalize(vec3<f32>(uv.x, y, uv.y));
|
|
40
|
+
}
|
|
41
|
+
let signed_uv = sign(uv);
|
|
42
|
+
return normalize(vec3<f32>(
|
|
43
|
+
signed_uv.x * (1.0 - abs_uv.y),
|
|
44
|
+
y,
|
|
45
|
+
signed_uv.y * (1.0 - abs_uv.x),
|
|
46
|
+
));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Pick the grid cell + sub-cell UV for sampling an octahedral imposter
|
|
50
|
+
// atlas. `view_dir` is the direction from the imposter to the camera
|
|
51
|
+
// (world space, normalized). `local_uv` is the per-cell UV
|
|
52
|
+
// (0..1, the billboard quad's UV).
|
|
53
|
+
//
|
|
54
|
+
// Returns the atlas UV in [0, 1] mapping to the right cell + sub-cell.
|
|
55
|
+
fn imposter_atlas_uv(view_dir: vec3<f32>, local_uv: vec2<f32>) -> vec2<f32> {
|
|
56
|
+
// Encode direction → octahedral UV in [-1, 1], remap to [0, 1].
|
|
57
|
+
let oct = octahedral_encode(view_dir) * 0.5 + 0.5;
|
|
58
|
+
// Snap to the nearest cell in the 8×8 grid.
|
|
59
|
+
let cell = floor(oct * IMPOSTER_GRID_F);
|
|
60
|
+
let cell_uv = (cell + clamp(local_uv, vec2<f32>(0.0), vec2<f32>(1.0))) / IMPOSTER_GRID_F;
|
|
61
|
+
return cell_uv;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Convenience: pick the UV cell directly from a view direction (ignoring
|
|
65
|
+
// per-cell sub-UV). Useful when sampling a pre-baked atlas where each
|
|
66
|
+
// cell is a flat texture and the billboard quad's per-vertex UV is
|
|
67
|
+
// already in [0, 1].
|
|
68
|
+
fn imposter_uv_for_view(view_dir: vec3<f32>) -> vec2<f32> {
|
|
69
|
+
return imposter_atlas_uv(view_dir, vec2<f32>(0.5, 0.5));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Standard billboard: build a screen-aligned quad facing the camera.
|
|
73
|
+
// `world_center` is the imposter's world-space anchor.
|
|
74
|
+
// `vertex_idx` is the @builtin(vertex_index) (0..3 for two triangles
|
|
75
|
+
// in a TriangleStrip, or 0..6 for a TriangleList).
|
|
76
|
+
// Returns the world-space vertex position + the per-vertex UV.
|
|
77
|
+
struct BillboardVertex {
|
|
78
|
+
world_pos: vec3<f32>,
|
|
79
|
+
uv: vec2<f32>,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
fn billboard_quad(
|
|
83
|
+
world_center: vec3<f32>, scale: f32,
|
|
84
|
+
camera_pos: vec3<f32>, camera_up: vec3<f32>,
|
|
85
|
+
vertex_idx: u32,
|
|
86
|
+
) -> BillboardVertex {
|
|
87
|
+
// 4 corners of a unit quad: (-,-), (+,-), (-,+), (+,+).
|
|
88
|
+
// TriangleStrip indexing: 0,1,2,3 → 0=BL, 1=BR, 2=TL, 3=TR.
|
|
89
|
+
let bl = vec2<f32>(-0.5, -0.5);
|
|
90
|
+
let br = vec2<f32>( 0.5, -0.5);
|
|
91
|
+
let tl = vec2<f32>(-0.5, 0.5);
|
|
92
|
+
let tr = vec2<f32>( 0.5, 0.5);
|
|
93
|
+
var corner: vec2<f32>;
|
|
94
|
+
switch (vertex_idx) {
|
|
95
|
+
case 0u: { corner = bl; }
|
|
96
|
+
case 1u: { corner = br; }
|
|
97
|
+
case 2u: { corner = tl; }
|
|
98
|
+
default: { corner = tr; }
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// View basis: forward = imposter → camera, right = up × forward, up = forward × right.
|
|
102
|
+
let forward = normalize(camera_pos - world_center);
|
|
103
|
+
let right = normalize(cross(camera_up, forward));
|
|
104
|
+
let up = normalize(cross(forward, right));
|
|
105
|
+
|
|
106
|
+
let world_pos = world_center + scale * (right * corner.x + up * corner.y);
|
|
107
|
+
let uv = corner + vec2<f32>(0.5, 0.5); // 0..1
|
|
108
|
+
var out: BillboardVertex;
|
|
109
|
+
out.world_pos = world_pos;
|
|
110
|
+
out.uv = uv;
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// PBR common — GGX specular, Lambert diffuse, split-sum IBL.
|
|
2
|
+
//
|
|
3
|
+
// Depends on material_abi.wgsl (requires group 1 env + brdf_lut, group 2
|
|
4
|
+
// base/normal/mr/em/occ textures + material factors).
|
|
5
|
+
|
|
6
|
+
const PI: f32 = 3.14159265358979;
|
|
7
|
+
|
|
8
|
+
// =====================================================================
|
|
9
|
+
// Microfacet BRDF components
|
|
10
|
+
// =====================================================================
|
|
11
|
+
|
|
12
|
+
// Trowbridge-Reitz / GGX normal distribution.
|
|
13
|
+
fn d_ggx(n_dot_h: f32, roughness: f32) -> f32 {
|
|
14
|
+
let a = roughness * roughness;
|
|
15
|
+
let a2 = a * a;
|
|
16
|
+
let nh2 = n_dot_h * n_dot_h;
|
|
17
|
+
let denom = nh2 * (a2 - 1.0) + 1.0;
|
|
18
|
+
return a2 / (PI * denom * denom);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Schlick-GGX geometry term with combined view + light masking.
|
|
22
|
+
fn g_smith(n_dot_v: f32, n_dot_l: f32, roughness: f32) -> f32 {
|
|
23
|
+
let r = roughness + 1.0;
|
|
24
|
+
let k = (r * r) * 0.125;
|
|
25
|
+
let gv = n_dot_v / (n_dot_v * (1.0 - k) + k);
|
|
26
|
+
let gl = n_dot_l / (n_dot_l * (1.0 - k) + k);
|
|
27
|
+
return gv * gl;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Schlick's Fresnel approximation.
|
|
31
|
+
fn f_schlick(cos_theta: f32, f0: vec3<f32>) -> vec3<f32> {
|
|
32
|
+
return f0 + (vec3<f32>(1.0) - f0) * pow(1.0 - cos_theta, 5.0);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Fresnel with a roughness term for IBL — fades the specular boost at
|
|
36
|
+
// grazing angles on rough surfaces, avoiding the "everything reflects"
|
|
37
|
+
// artifact.
|
|
38
|
+
fn f_schlick_roughness(cos_theta: f32, f0: vec3<f32>, roughness: f32) -> vec3<f32> {
|
|
39
|
+
let inv_rough = vec3<f32>(1.0 - roughness);
|
|
40
|
+
return f0 + (max(inv_rough, f0) - f0) * pow(1.0 - cos_theta, 5.0);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// =====================================================================
|
|
44
|
+
// Direct lighting — one directional or point light contribution
|
|
45
|
+
// =====================================================================
|
|
46
|
+
|
|
47
|
+
fn brdf_direct(
|
|
48
|
+
n: vec3<f32>, v: vec3<f32>, l: vec3<f32>,
|
|
49
|
+
albedo: vec3<f32>, metallic: f32, roughness: f32,
|
|
50
|
+
) -> vec3<f32> {
|
|
51
|
+
let h = normalize(v + l);
|
|
52
|
+
let n_dot_v = max(dot(n, v), 0.0001);
|
|
53
|
+
let n_dot_l = max(dot(n, l), 0.0);
|
|
54
|
+
let n_dot_h = max(dot(n, h), 0.0);
|
|
55
|
+
let v_dot_h = max(dot(v, h), 0.0);
|
|
56
|
+
|
|
57
|
+
// Dielectrics get F0 = 0.04; metals tint the reflection by the albedo.
|
|
58
|
+
let f0 = mix(vec3<f32>(0.04), albedo, metallic);
|
|
59
|
+
|
|
60
|
+
let d = d_ggx(n_dot_h, roughness);
|
|
61
|
+
let g = g_smith(n_dot_v, n_dot_l, roughness);
|
|
62
|
+
let f = f_schlick(v_dot_h, f0);
|
|
63
|
+
|
|
64
|
+
let specular = (d * g * f) / max(4.0 * n_dot_v * n_dot_l, 0.0001);
|
|
65
|
+
let kd = (vec3<f32>(1.0) - f) * (1.0 - metallic);
|
|
66
|
+
let diffuse = kd * albedo / PI;
|
|
67
|
+
|
|
68
|
+
return (diffuse + specular) * n_dot_l;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// =====================================================================
|
|
72
|
+
// IBL — split-sum approximation
|
|
73
|
+
// =====================================================================
|
|
74
|
+
//
|
|
75
|
+
// env_diffuse_tex is a pre-convolved irradiance map sampled with the
|
|
76
|
+
// surface normal. env_tex is the original equirect HDR, sampled with a
|
|
77
|
+
// reflection vector and a roughness-derived mip bias. brdf_lut_tex is
|
|
78
|
+
// the pre-computed 2D LUT keyed on (n·v, roughness).
|
|
79
|
+
//
|
|
80
|
+
// Helper sampling functions assume equirectangular layout, matching the
|
|
81
|
+
// existing engine convention.
|
|
82
|
+
|
|
83
|
+
fn dir_to_equirect_uv(dir: vec3<f32>) -> vec2<f32> {
|
|
84
|
+
let d = normalize(dir);
|
|
85
|
+
let theta = acos(clamp(d.y, -1.0, 1.0));
|
|
86
|
+
let phi = atan2(d.z, d.x);
|
|
87
|
+
let u = phi / (2.0 * PI);
|
|
88
|
+
return vec2<f32>(u - floor(u), theta / PI);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
fn seamless_equirect_uv(uv: vec2<f32>) -> vec2<f32> {
|
|
92
|
+
let tex_w = f32(textureDimensions(env_tex, 0).x);
|
|
93
|
+
let half_texel = 0.5 / tex_w;
|
|
94
|
+
return vec2<f32>(clamp(uv.x, half_texel, 1.0 - half_texel), uv.y);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
fn sample_env(dir: vec3<f32>, lod: f32) -> vec3<f32> {
|
|
98
|
+
return textureSampleLevel(env_tex, env_samp,
|
|
99
|
+
seamless_equirect_uv(dir_to_equirect_uv(dir)),
|
|
100
|
+
lod).rgb * view.camera_pos.w;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
fn sample_env_diffuse(normal: vec3<f32>) -> vec3<f32> {
|
|
104
|
+
return textureSample(env_diffuse_tex, env_samp,
|
|
105
|
+
dir_to_equirect_uv(normal)).rgb * view.camera_pos.w;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
fn ibl(
|
|
109
|
+
n: vec3<f32>, v: vec3<f32>,
|
|
110
|
+
albedo: vec3<f32>, metallic: f32, roughness: f32, occlusion: f32,
|
|
111
|
+
) -> vec3<f32> {
|
|
112
|
+
let r = reflect(-v, n);
|
|
113
|
+
let n_dot_v = max(dot(n, v), 0.0001);
|
|
114
|
+
let f0 = mix(vec3<f32>(0.04), albedo, metallic);
|
|
115
|
+
let f = f_schlick_roughness(n_dot_v, f0, roughness);
|
|
116
|
+
|
|
117
|
+
// Diffuse IBL — convolved irradiance.
|
|
118
|
+
let kd = (vec3<f32>(1.0) - f) * (1.0 - metallic);
|
|
119
|
+
let irr = sample_env_diffuse(n);
|
|
120
|
+
let diffuse = kd * albedo * irr;
|
|
121
|
+
|
|
122
|
+
// Specular IBL — roughness-weighted mip (approximation).
|
|
123
|
+
// Real split-sum pre-filters per mip; we use a simple lod bias for
|
|
124
|
+
// now. The engine can swap in a proper pre-filtered chain later.
|
|
125
|
+
let lod = roughness * 6.0;
|
|
126
|
+
let env = sample_env(r, lod);
|
|
127
|
+
let brdf = textureSample(brdf_lut_tex, brdf_lut_samp,
|
|
128
|
+
vec2<f32>(n_dot_v, roughness)).rg;
|
|
129
|
+
let specular = env * (f * brdf.x + brdf.y);
|
|
130
|
+
|
|
131
|
+
return (diffuse + specular) * occlusion;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// =====================================================================
|
|
135
|
+
// EN-012 — Foliage shading model
|
|
136
|
+
// =====================================================================
|
|
137
|
+
//
|
|
138
|
+
// Wrap-lambert diffuse + sun-behind-leaf transmission. Use from custom
|
|
139
|
+
// material shaders that declare the foliage shading model
|
|
140
|
+
// (MaterialFactors.shading_model.x == 1.0). The standard pattern is:
|
|
141
|
+
//
|
|
142
|
+
// if (material.shading_model.x > 0.5) {
|
|
143
|
+
// out_color = shade_foliage(N, L, V, lit, sun_color, albedo);
|
|
144
|
+
// } else {
|
|
145
|
+
// out_color = shade_pbr_standard(...);
|
|
146
|
+
// }
|
|
147
|
+
//
|
|
148
|
+
// Inputs:
|
|
149
|
+
// N_world = surface normal in world space
|
|
150
|
+
// L_world = direction TO the sun (normalized)
|
|
151
|
+
// V_world = direction TO the camera (normalized)
|
|
152
|
+
// base_color_lit = the standard lit colour (sun_color * direct_lambert)
|
|
153
|
+
// — V1 doesn't actually consume this; reserved for V2
|
|
154
|
+
// when foliage gets to layer over the standard term
|
|
155
|
+
// sun_color = sun radiance entering this fragment
|
|
156
|
+
// base_albedo = surface albedo (used for both lit + transmitted terms)
|
|
157
|
+
//
|
|
158
|
+
// Returns the final shaded colour. Reads MaterialFactors:
|
|
159
|
+
// shading_model.yzw = transmission_color
|
|
160
|
+
// foliage_params.x = transmission_amount
|
|
161
|
+
// foliage_params.y = wrap_factor
|
|
162
|
+
//
|
|
163
|
+
// V1 limitation: ambient / IBL / specular are NOT included — materials
|
|
164
|
+
// that want IBL ambient on foliage add it themselves outside this
|
|
165
|
+
// helper. shade_foliage is just the directional terms.
|
|
166
|
+
fn shade_foliage(
|
|
167
|
+
N_world: vec3<f32>, L_world: vec3<f32>, V_world: vec3<f32>,
|
|
168
|
+
base_color_lit: vec3<f32>, sun_color: vec3<f32>, base_albedo: vec3<f32>,
|
|
169
|
+
) -> vec3<f32> {
|
|
170
|
+
// Wrap-lambert: back-faces don't go pure black. wrap=0 reproduces
|
|
171
|
+
// standard lambert; wrap=1 wraps light fully around the back.
|
|
172
|
+
let wrap = material.foliage_params.y;
|
|
173
|
+
let n_dot_l = dot(N_world, L_world);
|
|
174
|
+
let wrap_diffuse = max((n_dot_l + wrap) / (1.0 + wrap), 0.0);
|
|
175
|
+
let lit = base_albedo * sun_color * wrap_diffuse;
|
|
176
|
+
|
|
177
|
+
// Transmission: sun behind the leaf → warm tint into the camera.
|
|
178
|
+
// V . -L is high when the camera is looking toward the sun through
|
|
179
|
+
// the leaf. The pow(., 4) gives a tight halo around the sun.
|
|
180
|
+
let v_dot_neg_l = max(dot(V_world, -L_world), 0.0);
|
|
181
|
+
let trans_strength = pow(v_dot_neg_l, 4.0) * material.foliage_params.x;
|
|
182
|
+
let trans_color = material.shading_model.yzw;
|
|
183
|
+
let transmitted = base_albedo * sun_color * trans_color * trans_strength;
|
|
184
|
+
|
|
185
|
+
return lit + transmitted;
|
|
186
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Cascaded shadow maps — 3-cascade PCF sampling.
|
|
2
|
+
//
|
|
3
|
+
// Depends on material_abi.wgsl for PerView.shadow_cascades,
|
|
4
|
+
// shadow_splits, and the three shadow_tex_N depth samplers.
|
|
5
|
+
|
|
6
|
+
// Pick a cascade by comparing world-space depth to the configured splits.
|
|
7
|
+
// Returns 0, 1, or 2.
|
|
8
|
+
fn select_cascade(view_space_depth: f32) -> u32 {
|
|
9
|
+
let d = abs(view_space_depth);
|
|
10
|
+
if (d < view.shadow_splits.x) { return 0u; }
|
|
11
|
+
if (d < view.shadow_splits.y) { return 1u; }
|
|
12
|
+
return 2u;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Sample a single cascade with 2×2 PCF.
|
|
16
|
+
fn sample_shadow_cascade(
|
|
17
|
+
cascade_idx: u32, world_pos: vec3<f32>,
|
|
18
|
+
) -> f32 {
|
|
19
|
+
let light_clip = view.shadow_cascades[cascade_idx]
|
|
20
|
+
* vec4<f32>(world_pos, 1.0);
|
|
21
|
+
let light_ndc = light_clip.xyz / light_clip.w;
|
|
22
|
+
|
|
23
|
+
// Outside the cascade's frustum → not shadowed.
|
|
24
|
+
if (abs(light_ndc.x) > 1.0 || abs(light_ndc.y) > 1.0
|
|
25
|
+
|| light_ndc.z < 0.0 || light_ndc.z > 1.0) {
|
|
26
|
+
return 1.0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
let uv = vec2<f32>(
|
|
30
|
+
light_ndc.x * 0.5 + 0.5,
|
|
31
|
+
1.0 - (light_ndc.y * 0.5 + 0.5),
|
|
32
|
+
);
|
|
33
|
+
// Slight depth bias to avoid surface acne.
|
|
34
|
+
let ref_depth = light_ndc.z - 0.001;
|
|
35
|
+
|
|
36
|
+
// wgpu doesn't let us index texture_depth_2d arrays yet — branch.
|
|
37
|
+
var result: f32 = 1.0;
|
|
38
|
+
switch (cascade_idx) {
|
|
39
|
+
case 0u: {
|
|
40
|
+
result = textureSampleCompareLevel(shadow_tex_0, shadow_samp,
|
|
41
|
+
uv, ref_depth);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case 1u: {
|
|
45
|
+
result = textureSampleCompareLevel(shadow_tex_1, shadow_samp,
|
|
46
|
+
uv, ref_depth);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
default: {
|
|
50
|
+
result = textureSampleCompareLevel(shadow_tex_2, shadow_samp,
|
|
51
|
+
uv, ref_depth);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Full cascaded-shadow query. Pass in world position and the world-space
|
|
59
|
+
// depth from the camera's view (positive is "in front of camera").
|
|
60
|
+
// Returns a shadow factor in [0, 1]; 1 = lit, 0 = fully shadowed.
|
|
61
|
+
fn shadow(world_pos: vec3<f32>, view_space_depth: f32) -> f32 {
|
|
62
|
+
let cascade = select_cascade(view_space_depth);
|
|
63
|
+
return sample_shadow_cascade(cascade, world_pos);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Game-shader entry point. Picks a cascade automatically using the
|
|
67
|
+
// active view matrix and returns a shadow factor in [0, 1]
|
|
68
|
+
// (1 = fully lit, 0 = fully shadowed). Use this from custom materials
|
|
69
|
+
// (grass, tree, terrain, water) that want to receive the directional
|
|
70
|
+
// sun shadow with one line. Requires `view` (PerView) to be in scope —
|
|
71
|
+
// any shader that includes material_abi.wgsl already has it.
|
|
72
|
+
fn sample_sun_shadow(world_pos: vec3<f32>) -> f32 {
|
|
73
|
+
let view_pos = view.view * vec4<f32>(world_pos, 1.0);
|
|
74
|
+
// The engine convention is camera-looks-down-minus-Z; flip so callers
|
|
75
|
+
// get a positive "in front of camera" depth into select_cascade.
|
|
76
|
+
return shadow(world_pos, -view_pos.z);
|
|
77
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Sky sampling helpers — thin wrappers over pbr.wgsl's env sampler so
|
|
2
|
+
// the dedicated sky pipeline can stay short.
|
|
3
|
+
|
|
4
|
+
// Sample the HDR equirect env map along a world-space direction with
|
|
5
|
+
// no mip bias (sky pass doesn't want the roughness-based blur).
|
|
6
|
+
fn sample_sky(dir: vec3<f32>) -> vec3<f32> {
|
|
7
|
+
return sample_env(dir, 0.0);
|
|
8
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// ACES filmic tonemapping — the Narkowicz fit, same one the composite
|
|
2
|
+
// pass uses today. Kept here as a shared helper so any future custom
|
|
3
|
+
// shader that wants its output already tonemapped (rare, usually
|
|
4
|
+
// post-FX territory) can reuse the same curve.
|
|
5
|
+
|
|
6
|
+
fn aces_tonemap(x: vec3<f32>) -> vec3<f32> {
|
|
7
|
+
let a = 2.51;
|
|
8
|
+
let b = 0.03;
|
|
9
|
+
let c = 2.43;
|
|
10
|
+
let d = 0.59;
|
|
11
|
+
let e = 0.14;
|
|
12
|
+
return clamp((x * (a * x + b)) / (x * (c * x + d) + e),
|
|
13
|
+
vec3<f32>(0.0), vec3<f32>(1.0));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Linear-to-sRGB for the rare case a shader needs to sample a texture
|
|
17
|
+
// stored as linear and output sRGB directly. The engine's composite
|
|
18
|
+
// pass already does this at display time, so most materials never call
|
|
19
|
+
// it.
|
|
20
|
+
fn linear_to_srgb(x: vec3<f32>) -> vec3<f32> {
|
|
21
|
+
let cutoff = step(vec3<f32>(0.0031308), x);
|
|
22
|
+
let low = x * 12.92;
|
|
23
|
+
let high = 1.055 * pow(x, vec3<f32>(1.0 / 2.4)) - 0.055;
|
|
24
|
+
return mix(low, high, cutoff);
|
|
25
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Phase 7 — impulse field update compute shader.
|
|
2
|
+
//
|
|
3
|
+
// Input: `src` — last frame's R32Float field (world-space top-down).
|
|
4
|
+
// `info` — world bounds, decay factor, queued splats.
|
|
5
|
+
// Output: `dst` — this frame's field.
|
|
6
|
+
//
|
|
7
|
+
// Per texel: value = previous * decay + sum(splat strength × 1-d/r).
|
|
8
|
+
|
|
9
|
+
struct Splat {
|
|
10
|
+
pos: vec2<f32>, // world xz
|
|
11
|
+
radius: f32,
|
|
12
|
+
strength: f32,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
struct Info {
|
|
16
|
+
world_min: vec2<f32>,
|
|
17
|
+
world_size: vec2<f32>,
|
|
18
|
+
decay: f32,
|
|
19
|
+
_pad0: f32,
|
|
20
|
+
splat_count: u32,
|
|
21
|
+
_pad1: u32,
|
|
22
|
+
splats: array<Splat, 16>,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
@group(0) @binding(0) var src: texture_2d<f32>;
|
|
26
|
+
@group(0) @binding(1) var dst: texture_storage_2d<r32float, write>;
|
|
27
|
+
@group(0) @binding(2) var<uniform> info: Info;
|
|
28
|
+
|
|
29
|
+
@compute @workgroup_size(8, 8)
|
|
30
|
+
fn cs_main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
31
|
+
let dims = textureDimensions(src);
|
|
32
|
+
if (gid.x >= dims.x || gid.y >= dims.y) { return; }
|
|
33
|
+
|
|
34
|
+
// Decay the previous field.
|
|
35
|
+
let prev = textureLoad(src, vec2<i32>(gid.xy), 0).r;
|
|
36
|
+
var value = prev * info.decay;
|
|
37
|
+
|
|
38
|
+
// Convert the texel's world position.
|
|
39
|
+
let uv = (vec2<f32>(gid.xy) + vec2<f32>(0.5)) / vec2<f32>(dims);
|
|
40
|
+
let world = info.world_min + uv * info.world_size;
|
|
41
|
+
|
|
42
|
+
// Additively accumulate every queued splat.
|
|
43
|
+
for (var i: u32 = 0u; i < info.splat_count; i = i + 1u) {
|
|
44
|
+
let s = info.splats[i];
|
|
45
|
+
let d = distance(world, s.pos);
|
|
46
|
+
if (d < s.radius) {
|
|
47
|
+
let falloff = 1.0 - d / s.radius;
|
|
48
|
+
value = value + s.strength * falloff * falloff;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
textureStore(dst, vec2<i32>(gid.xy), vec4<f32>(value, 0.0, 0.0, 0.0));
|
|
53
|
+
}
|