@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.
Files changed (562) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -0
  3. package/native/android/Cargo.lock +1848 -0
  4. package/native/android/Cargo.toml +20 -0
  5. package/native/android/src/lib.rs +1747 -0
  6. package/native/ios/Cargo.lock +1688 -0
  7. package/native/ios/Cargo.toml +19 -0
  8. package/native/ios/src/lib.rs +2258 -0
  9. package/native/linux/Cargo.lock +1719 -0
  10. package/native/linux/Cargo.toml +22 -0
  11. package/native/linux/src/lib.rs +2236 -0
  12. package/native/macos/Cargo.lock +3310 -0
  13. package/native/macos/Cargo.toml +29 -0
  14. package/native/macos/src/lib.rs +3444 -0
  15. package/native/shared/Cargo.lock +1898 -0
  16. package/native/shared/Cargo.toml +42 -0
  17. package/native/shared/assets/default_font.ttf +0 -0
  18. package/native/shared/build.rs +77 -0
  19. package/native/shared/shaders/common/fog.wgsl +16 -0
  20. package/native/shared/shaders/common/imposter.wgsl +112 -0
  21. package/native/shared/shaders/common/pbr.wgsl +186 -0
  22. package/native/shared/shaders/common/shadows.wgsl +77 -0
  23. package/native/shared/shaders/common/sky.wgsl +8 -0
  24. package/native/shared/shaders/common/tonemap.wgsl +25 -0
  25. package/native/shared/shaders/impulse_field.wgsl +53 -0
  26. package/native/shared/shaders/material_abi.wgsl +360 -0
  27. package/native/shared/shaders/materials/test_minimal.wgsl +42 -0
  28. package/native/shared/src/audio.rs +363 -0
  29. package/native/shared/src/custom_shaders.rs +104 -0
  30. package/native/shared/src/drs.rs +211 -0
  31. package/native/shared/src/engine.rs +186 -0
  32. package/native/shared/src/frame_callbacks.rs +88 -0
  33. package/native/shared/src/geometry.rs +236 -0
  34. package/native/shared/src/handles.rs +76 -0
  35. package/native/shared/src/input.rs +273 -0
  36. package/native/shared/src/jolt_sys.rs +822 -0
  37. package/native/shared/src/lib.rs +43 -0
  38. package/native/shared/src/models.rs +1941 -0
  39. package/native/shared/src/physics_jolt.rs +1528 -0
  40. package/native/shared/src/picking.rs +298 -0
  41. package/native/shared/src/postfx.rs +339 -0
  42. package/native/shared/src/profiler.rs +416 -0
  43. package/native/shared/src/renderer/atmosphere_lut.rs +573 -0
  44. package/native/shared/src/renderer/brdf_lut.rs +154 -0
  45. package/native/shared/src/renderer/formats.rs +778 -0
  46. package/native/shared/src/renderer/graph.rs +465 -0
  47. package/native/shared/src/renderer/hot_reload.rs +390 -0
  48. package/native/shared/src/renderer/impulse_field.rs +455 -0
  49. package/native/shared/src/renderer/material_pipeline.rs +604 -0
  50. package/native/shared/src/renderer/material_system.rs +2106 -0
  51. package/native/shared/src/renderer/mod.rs +13923 -0
  52. package/native/shared/src/renderer/planar_reflection.rs +458 -0
  53. package/native/shared/src/renderer/post_pass.rs +249 -0
  54. package/native/shared/src/renderer/shader_include.rs +205 -0
  55. package/native/shared/src/renderer/shader_library.rs +134 -0
  56. package/native/shared/src/renderer/shaders.rs +5855 -0
  57. package/native/shared/src/renderer/transient.rs +576 -0
  58. package/native/shared/src/renderer/types.rs +259 -0
  59. package/native/shared/src/renderer/util.rs +151 -0
  60. package/native/shared/src/scene.rs +1066 -0
  61. package/native/shared/src/sdf_cache.rs +274 -0
  62. package/native/shared/src/shadows.rs +551 -0
  63. package/native/shared/src/staging.rs +90 -0
  64. package/native/shared/src/string_header.rs +35 -0
  65. package/native/shared/src/text_renderer.rs +456 -0
  66. package/native/shared/src/textures.rs +154 -0
  67. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp +242 -0
  68. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h +121 -0
  69. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h +296 -0
  70. package/native/third_party/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h +323 -0
  71. package/native/third_party/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h +555 -0
  72. package/native/third_party/JoltPhysics/Jolt/ConfigurationString.h +112 -0
  73. package/native/third_party/JoltPhysics/Jolt/Core/ARMNeon.h +94 -0
  74. package/native/third_party/JoltPhysics/Jolt/Core/Array.h +713 -0
  75. package/native/third_party/JoltPhysics/Jolt/Core/Atomics.h +44 -0
  76. package/native/third_party/JoltPhysics/Jolt/Core/BinaryHeap.h +96 -0
  77. package/native/third_party/JoltPhysics/Jolt/Core/ByteBuffer.h +74 -0
  78. package/native/third_party/JoltPhysics/Jolt/Core/Color.cpp +38 -0
  79. package/native/third_party/JoltPhysics/Jolt/Core/Color.h +98 -0
  80. package/native/third_party/JoltPhysics/Jolt/Core/Core.h +652 -0
  81. package/native/third_party/JoltPhysics/Jolt/Core/FPControlWord.h +143 -0
  82. package/native/third_party/JoltPhysics/Jolt/Core/FPException.h +96 -0
  83. package/native/third_party/JoltPhysics/Jolt/Core/FPFlushDenormals.h +43 -0
  84. package/native/third_party/JoltPhysics/Jolt/Core/Factory.cpp +92 -0
  85. package/native/third_party/JoltPhysics/Jolt/Core/Factory.h +54 -0
  86. package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.h +122 -0
  87. package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.inl +215 -0
  88. package/native/third_party/JoltPhysics/Jolt/Core/HashCombine.h +234 -0
  89. package/native/third_party/JoltPhysics/Jolt/Core/HashTable.h +876 -0
  90. package/native/third_party/JoltPhysics/Jolt/Core/InsertionSort.h +58 -0
  91. package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.cpp +27 -0
  92. package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.h +38 -0
  93. package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.h +311 -0
  94. package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.inl +56 -0
  95. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.cpp +65 -0
  96. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.h +62 -0
  97. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.cpp +364 -0
  98. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.h +101 -0
  99. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.cpp +230 -0
  100. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.h +85 -0
  101. package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.cpp +51 -0
  102. package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.h +67 -0
  103. package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.h +182 -0
  104. package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.inl +351 -0
  105. package/native/third_party/JoltPhysics/Jolt/Core/Memory.cpp +85 -0
  106. package/native/third_party/JoltPhysics/Jolt/Core/Memory.h +85 -0
  107. package/native/third_party/JoltPhysics/Jolt/Core/Mutex.h +223 -0
  108. package/native/third_party/JoltPhysics/Jolt/Core/MutexArray.h +98 -0
  109. package/native/third_party/JoltPhysics/Jolt/Core/NonCopyable.h +18 -0
  110. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.cpp +677 -0
  111. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.h +301 -0
  112. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.inl +90 -0
  113. package/native/third_party/JoltPhysics/Jolt/Core/QuickSort.h +137 -0
  114. package/native/third_party/JoltPhysics/Jolt/Core/RTTI.cpp +149 -0
  115. package/native/third_party/JoltPhysics/Jolt/Core/RTTI.h +436 -0
  116. package/native/third_party/JoltPhysics/Jolt/Core/Reference.h +244 -0
  117. package/native/third_party/JoltPhysics/Jolt/Core/Result.h +174 -0
  118. package/native/third_party/JoltPhysics/Jolt/Core/STLAlignedAllocator.h +72 -0
  119. package/native/third_party/JoltPhysics/Jolt/Core/STLAllocator.h +127 -0
  120. package/native/third_party/JoltPhysics/Jolt/Core/STLLocalAllocator.h +170 -0
  121. package/native/third_party/JoltPhysics/Jolt/Core/STLTempAllocator.h +80 -0
  122. package/native/third_party/JoltPhysics/Jolt/Core/ScopeExit.h +49 -0
  123. package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.cpp +135 -0
  124. package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.h +68 -0
  125. package/native/third_party/JoltPhysics/Jolt/Core/StaticArray.h +329 -0
  126. package/native/third_party/JoltPhysics/Jolt/Core/StreamIn.h +120 -0
  127. package/native/third_party/JoltPhysics/Jolt/Core/StreamOut.h +97 -0
  128. package/native/third_party/JoltPhysics/Jolt/Core/StreamUtils.h +168 -0
  129. package/native/third_party/JoltPhysics/Jolt/Core/StreamWrapper.h +53 -0
  130. package/native/third_party/JoltPhysics/Jolt/Core/StridedPtr.h +63 -0
  131. package/native/third_party/JoltPhysics/Jolt/Core/StringTools.cpp +101 -0
  132. package/native/third_party/JoltPhysics/Jolt/Core/StringTools.h +38 -0
  133. package/native/third_party/JoltPhysics/Jolt/Core/TempAllocator.h +209 -0
  134. package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.cpp +37 -0
  135. package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.h +58 -0
  136. package/native/third_party/JoltPhysics/Jolt/Core/UnorderedMap.h +80 -0
  137. package/native/third_party/JoltPhysics/Jolt/Core/UnorderedSet.h +32 -0
  138. package/native/third_party/JoltPhysics/Jolt/Geometry/AABox.h +313 -0
  139. package/native/third_party/JoltPhysics/Jolt/Geometry/AABox4.h +224 -0
  140. package/native/third_party/JoltPhysics/Jolt/Geometry/ClipPoly.h +200 -0
  141. package/native/third_party/JoltPhysics/Jolt/Geometry/ClosestPoint.h +498 -0
  142. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.cpp +1467 -0
  143. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.h +276 -0
  144. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.cpp +335 -0
  145. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.h +105 -0
  146. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexSupport.h +188 -0
  147. package/native/third_party/JoltPhysics/Jolt/Geometry/EPAConvexHullBuilder.h +845 -0
  148. package/native/third_party/JoltPhysics/Jolt/Geometry/EPAPenetrationDepth.h +557 -0
  149. package/native/third_party/JoltPhysics/Jolt/Geometry/Ellipse.h +77 -0
  150. package/native/third_party/JoltPhysics/Jolt/Geometry/GJKClosestPoint.h +945 -0
  151. package/native/third_party/JoltPhysics/Jolt/Geometry/IndexedTriangle.h +130 -0
  152. package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.cpp +222 -0
  153. package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.h +19 -0
  154. package/native/third_party/JoltPhysics/Jolt/Geometry/MortonCode.h +40 -0
  155. package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.cpp +178 -0
  156. package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.h +39 -0
  157. package/native/third_party/JoltPhysics/Jolt/Geometry/Plane.h +104 -0
  158. package/native/third_party/JoltPhysics/Jolt/Geometry/RayAABox.h +241 -0
  159. package/native/third_party/JoltPhysics/Jolt/Geometry/RayCapsule.h +37 -0
  160. package/native/third_party/JoltPhysics/Jolt/Geometry/RayCylinder.h +101 -0
  161. package/native/third_party/JoltPhysics/Jolt/Geometry/RaySphere.h +96 -0
  162. package/native/third_party/JoltPhysics/Jolt/Geometry/RayTriangle.h +158 -0
  163. package/native/third_party/JoltPhysics/Jolt/Geometry/Sphere.h +72 -0
  164. package/native/third_party/JoltPhysics/Jolt/Geometry/Triangle.h +34 -0
  165. package/native/third_party/JoltPhysics/Jolt/Jolt.cmake +703 -0
  166. package/native/third_party/JoltPhysics/Jolt/Jolt.h +16 -0
  167. package/native/third_party/JoltPhysics/Jolt/Jolt.natvis +116 -0
  168. package/native/third_party/JoltPhysics/Jolt/Math/BVec16.h +99 -0
  169. package/native/third_party/JoltPhysics/Jolt/Math/BVec16.inl +177 -0
  170. package/native/third_party/JoltPhysics/Jolt/Math/DMat44.h +158 -0
  171. package/native/third_party/JoltPhysics/Jolt/Math/DMat44.inl +310 -0
  172. package/native/third_party/JoltPhysics/Jolt/Math/DVec3.h +291 -0
  173. package/native/third_party/JoltPhysics/Jolt/Math/DVec3.inl +941 -0
  174. package/native/third_party/JoltPhysics/Jolt/Math/Double3.h +48 -0
  175. package/native/third_party/JoltPhysics/Jolt/Math/DynMatrix.h +31 -0
  176. package/native/third_party/JoltPhysics/Jolt/Math/EigenValueSymmetric.h +177 -0
  177. package/native/third_party/JoltPhysics/Jolt/Math/FindRoot.h +42 -0
  178. package/native/third_party/JoltPhysics/Jolt/Math/Float2.h +36 -0
  179. package/native/third_party/JoltPhysics/Jolt/Math/Float3.h +50 -0
  180. package/native/third_party/JoltPhysics/Jolt/Math/Float4.h +44 -0
  181. package/native/third_party/JoltPhysics/Jolt/Math/GaussianElimination.h +102 -0
  182. package/native/third_party/JoltPhysics/Jolt/Math/HalfFloat.h +208 -0
  183. package/native/third_party/JoltPhysics/Jolt/Math/Mat44.h +243 -0
  184. package/native/third_party/JoltPhysics/Jolt/Math/Mat44.inl +952 -0
  185. package/native/third_party/JoltPhysics/Jolt/Math/Math.h +208 -0
  186. package/native/third_party/JoltPhysics/Jolt/Math/MathTypes.h +32 -0
  187. package/native/third_party/JoltPhysics/Jolt/Math/Matrix.h +259 -0
  188. package/native/third_party/JoltPhysics/Jolt/Math/Quat.h +268 -0
  189. package/native/third_party/JoltPhysics/Jolt/Math/Quat.inl +406 -0
  190. package/native/third_party/JoltPhysics/Jolt/Math/Real.h +44 -0
  191. package/native/third_party/JoltPhysics/Jolt/Math/Swizzle.h +19 -0
  192. package/native/third_party/JoltPhysics/Jolt/Math/Trigonometry.h +79 -0
  193. package/native/third_party/JoltPhysics/Jolt/Math/UVec4.h +232 -0
  194. package/native/third_party/JoltPhysics/Jolt/Math/UVec4.inl +636 -0
  195. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.cpp +71 -0
  196. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.h +308 -0
  197. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.inl +942 -0
  198. package/native/third_party/JoltPhysics/Jolt/Math/Vec4.h +320 -0
  199. package/native/third_party/JoltPhysics/Jolt/Math/Vec4.inl +1152 -0
  200. package/native/third_party/JoltPhysics/Jolt/Math/Vector.h +211 -0
  201. package/native/third_party/JoltPhysics/Jolt/ObjectStream/GetPrimitiveTypeOfType.h +54 -0
  202. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.cpp +38 -0
  203. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.h +337 -0
  204. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.cpp +252 -0
  205. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.h +57 -0
  206. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.cpp +165 -0
  207. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.h +57 -0
  208. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.cpp +635 -0
  209. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.h +148 -0
  210. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.cpp +166 -0
  211. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.h +101 -0
  212. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.cpp +418 -0
  213. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.h +55 -0
  214. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.cpp +255 -0
  215. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.h +62 -0
  216. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTypes.h +26 -0
  217. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttribute.h +111 -0
  218. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeEnum.h +67 -0
  219. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeTyped.h +60 -0
  220. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.cpp +15 -0
  221. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.h +170 -0
  222. package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.cpp +70 -0
  223. package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.h +45 -0
  224. package/native/third_party/JoltPhysics/Jolt/Physics/Body/AllowedDOFs.h +68 -0
  225. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.cpp +426 -0
  226. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.h +452 -0
  227. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.inl +197 -0
  228. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyAccess.h +68 -0
  229. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyActivationListener.h +28 -0
  230. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp +234 -0
  231. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.h +124 -0
  232. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyFilter.h +130 -0
  233. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyID.h +101 -0
  234. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.cpp +1099 -0
  235. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.h +324 -0
  236. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLock.h +111 -0
  237. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockInterface.h +134 -0
  238. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockMulti.h +120 -0
  239. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.cpp +1220 -0
  240. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.h +403 -0
  241. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyPair.h +36 -0
  242. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyType.h +19 -0
  243. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.cpp +185 -0
  244. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.h +58 -0
  245. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.cpp +92 -0
  246. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.h +308 -0
  247. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.inl +178 -0
  248. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionQuality.h +31 -0
  249. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionType.h +17 -0
  250. package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.cpp +354 -0
  251. package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.h +159 -0
  252. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.cpp +59 -0
  253. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.h +157 -0
  254. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterID.h +98 -0
  255. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.cpp +1933 -0
  256. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.h +752 -0
  257. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/AABoxCast.h +20 -0
  258. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdgeMode.h +17 -0
  259. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdges.h +114 -0
  260. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BackFaceMode.h +16 -0
  261. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp +16 -0
  262. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.h +109 -0
  263. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp +313 -0
  264. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h +38 -0
  265. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h +148 -0
  266. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h +92 -0
  267. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h +64 -0
  268. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp +629 -0
  269. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h +108 -0
  270. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h +56 -0
  271. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h +35 -0
  272. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h +66 -0
  273. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.cpp +1768 -0
  274. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.h +389 -0
  275. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.cpp +107 -0
  276. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.h +46 -0
  277. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastResult.h +37 -0
  278. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.cpp +223 -0
  279. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.h +49 -0
  280. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollectFacesMode.h +16 -0
  281. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.cpp +155 -0
  282. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.h +56 -0
  283. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollidePointResult.h +25 -0
  284. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShape.h +106 -0
  285. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShapeVsShapePerLeaf.h +94 -0
  286. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVertexIterator.h +110 -0
  287. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h +102 -0
  288. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.cpp +121 -0
  289. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.h +50 -0
  290. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollector.h +109 -0
  291. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollectorImpl.h +219 -0
  292. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.cpp +107 -0
  293. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.h +97 -0
  294. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.cpp +35 -0
  295. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.h +97 -0
  296. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ContactListener.h +143 -0
  297. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.cpp +213 -0
  298. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.h +48 -0
  299. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.cpp +32 -0
  300. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.h +46 -0
  301. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.cpp +38 -0
  302. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.h +130 -0
  303. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/InternalEdgeRemovingCollector.h +279 -0
  304. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp +271 -0
  305. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h +44 -0
  306. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.cpp +448 -0
  307. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.h +77 -0
  308. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.cpp +62 -0
  309. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.h +110 -0
  310. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayer.h +111 -0
  311. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterMask.h +52 -0
  312. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterTable.h +78 -0
  313. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.cpp +35 -0
  314. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.h +57 -0
  315. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.cpp +38 -0
  316. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.h +37 -0
  317. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/RayCast.h +87 -0
  318. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.cpp +318 -0
  319. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.h +115 -0
  320. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.cpp +438 -0
  321. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.h +129 -0
  322. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.cpp +433 -0
  323. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.h +354 -0
  324. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h +461 -0
  325. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.cpp +1311 -0
  326. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.h +202 -0
  327. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.cpp +566 -0
  328. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.h +150 -0
  329. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.cpp +418 -0
  330. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.h +126 -0
  331. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.cpp +87 -0
  332. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.h +80 -0
  333. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.cpp +64 -0
  334. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.h +75 -0
  335. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/GetTrianglesContext.h +248 -0
  336. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp +2754 -0
  337. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.h +380 -0
  338. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.cpp +1305 -0
  339. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.h +228 -0
  340. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp +596 -0
  341. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.h +176 -0
  342. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp +217 -0
  343. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h +140 -0
  344. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.cpp +541 -0
  345. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.h +147 -0
  346. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h +319 -0
  347. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp +333 -0
  348. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h +161 -0
  349. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaleHelpers.h +83 -0
  350. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.cpp +238 -0
  351. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.h +145 -0
  352. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.cpp +325 -0
  353. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.h +466 -0
  354. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.cpp +347 -0
  355. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.h +125 -0
  356. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp +674 -0
  357. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.h +139 -0
  358. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeID.h +138 -0
  359. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeIDPair.h +65 -0
  360. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp +453 -0
  361. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.gliffy +1 -0
  362. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h +135 -0
  363. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp +691 -0
  364. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.h +132 -0
  365. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.cpp +430 -0
  366. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.h +143 -0
  367. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeCast.h +173 -0
  368. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeFilter.h +73 -0
  369. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilter.h +40 -0
  370. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilterWrapper.h +58 -0
  371. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SortReverseAndStore.h +48 -0
  372. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.cpp +180 -0
  373. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.h +194 -0
  374. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/CalculateSolverSteps.h +70 -0
  375. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.cpp +246 -0
  376. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.h +133 -0
  377. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.cpp +73 -0
  378. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.h +243 -0
  379. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.cpp +289 -0
  380. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.h +100 -0
  381. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h +257 -0
  382. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h +682 -0
  383. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h +276 -0
  384. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h +195 -0
  385. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h +222 -0
  386. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h +246 -0
  387. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h +239 -0
  388. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h +196 -0
  389. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h +283 -0
  390. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h +246 -0
  391. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SpringPart.h +169 -0
  392. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h +597 -0
  393. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.cpp +1804 -0
  394. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.h +524 -0
  395. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.cpp +266 -0
  396. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.h +120 -0
  397. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.cpp +215 -0
  398. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.h +96 -0
  399. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.cpp +188 -0
  400. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.h +116 -0
  401. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.cpp +443 -0
  402. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.h +205 -0
  403. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.cpp +43 -0
  404. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.h +66 -0
  405. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.cpp +458 -0
  406. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.h +191 -0
  407. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.cpp +85 -0
  408. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.h +76 -0
  409. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.cpp +308 -0
  410. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.h +54 -0
  411. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.cpp +157 -0
  412. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.h +94 -0
  413. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.cpp +253 -0
  414. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.h +137 -0
  415. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.cpp +189 -0
  416. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.h +118 -0
  417. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.cpp +900 -0
  418. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.h +289 -0
  419. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.cpp +501 -0
  420. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.h +198 -0
  421. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.cpp +35 -0
  422. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.h +70 -0
  423. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.cpp +524 -0
  424. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.h +197 -0
  425. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.cpp +56 -0
  426. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.h +65 -0
  427. package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.cpp +17 -0
  428. package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.h +159 -0
  429. package/native/third_party/JoltPhysics/Jolt/Physics/EActivation.h +16 -0
  430. package/native/third_party/JoltPhysics/Jolt/Physics/EPhysicsUpdateError.h +37 -0
  431. package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.cpp +492 -0
  432. package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.h +144 -0
  433. package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.cpp +582 -0
  434. package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.h +187 -0
  435. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsLock.h +169 -0
  436. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.cpp +261 -0
  437. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.h +104 -0
  438. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSettings.h +125 -0
  439. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsStepListener.h +37 -0
  440. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.cpp +2915 -0
  441. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.h +391 -0
  442. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.cpp +25 -0
  443. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.h +176 -0
  444. package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.cpp +744 -0
  445. package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.h +245 -0
  446. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyContactListener.h +55 -0
  447. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp +128 -0
  448. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.h +75 -0
  449. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyManifold.h +74 -0
  450. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp +1501 -0
  451. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.h +333 -0
  452. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.cpp +354 -0
  453. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.h +73 -0
  454. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp +1487 -0
  455. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.h +390 -0
  456. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyUpdateContext.h +63 -0
  457. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyVertex.h +36 -0
  458. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorder.h +136 -0
  459. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.cpp +90 -0
  460. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.h +50 -0
  461. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.cpp +306 -0
  462. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.h +119 -0
  463. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.cpp +547 -0
  464. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.h +169 -0
  465. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp +33 -0
  466. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.h +33 -0
  467. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.cpp +376 -0
  468. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.h +146 -0
  469. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.cpp +703 -0
  470. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.h +252 -0
  471. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.cpp +17 -0
  472. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.h +87 -0
  473. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.cpp +81 -0
  474. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.h +39 -0
  475. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.cpp +122 -0
  476. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.h +93 -0
  477. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.cpp +52 -0
  478. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.h +56 -0
  479. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.cpp +159 -0
  480. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.h +87 -0
  481. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.cpp +93 -0
  482. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.h +148 -0
  483. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.cpp +866 -0
  484. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.h +205 -0
  485. package/native/third_party/JoltPhysics/Jolt/RegisterTypes.cpp +204 -0
  486. package/native/third_party/JoltPhysics/Jolt/RegisterTypes.h +29 -0
  487. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.cpp +1107 -0
  488. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.h +383 -0
  489. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.cpp +168 -0
  490. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.h +48 -0
  491. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.cpp +158 -0
  492. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.h +130 -0
  493. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.cpp +80 -0
  494. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.h +88 -0
  495. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.cpp +165 -0
  496. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.h +91 -0
  497. package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.cpp +82 -0
  498. package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.h +72 -0
  499. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.cpp +237 -0
  500. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.h +145 -0
  501. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.cpp +87 -0
  502. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.h +82 -0
  503. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.cpp +73 -0
  504. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.h +84 -0
  505. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp +139 -0
  506. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.h +52 -0
  507. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.cpp +43 -0
  508. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.h +28 -0
  509. package/native/third_party/JoltPhysics/LICENSE +7 -0
  510. package/native/third_party/JoltPhysics/README.md +173 -0
  511. package/native/third_party/bloom_jolt/CMakeLists.txt +78 -0
  512. package/native/third_party/bloom_jolt/include/bloom_jolt.h +519 -0
  513. package/native/third_party/bloom_jolt/src/bloom_jolt.cpp +1780 -0
  514. package/native/tvos/Cargo.lock +1692 -0
  515. package/native/tvos/Cargo.toml +22 -0
  516. package/native/tvos/src/lib.rs +3179 -0
  517. package/native/watchos/Cargo.lock +16 -0
  518. package/native/watchos/Cargo.toml +19 -0
  519. package/native/watchos/shaders/bloom_postfx.metal +99 -0
  520. package/native/watchos/src/BloomWatchApp.swift +1236 -0
  521. package/native/watchos/src/BloomWatchAudio.swift +179 -0
  522. package/native/watchos/src/audio.rs +55 -0
  523. package/native/watchos/src/draw_list.rs +223 -0
  524. package/native/watchos/src/ffi_stubs.rs +454 -0
  525. package/native/watchos/src/lib.rs +1013 -0
  526. package/native/watchos/src/models.rs +746 -0
  527. package/native/watchos/src/postfx.rs +91 -0
  528. package/native/watchos/src/scene.rs +534 -0
  529. package/native/watchos/src/textures.rs +184 -0
  530. package/native/web/Cargo.lock +1656 -0
  531. package/native/web/Cargo.toml +38 -0
  532. package/native/web/bloom_glue.js +218 -0
  533. package/native/web/build.sh +101 -0
  534. package/native/web/index.html +390 -0
  535. package/native/web/jolt_bridge.js +1311 -0
  536. package/native/web/src/lib.rs +2739 -0
  537. package/native/windows/Cargo.lock +1813 -0
  538. package/native/windows/Cargo.toml +31 -0
  539. package/native/windows/src/lib.rs +1933 -0
  540. package/package.json +558 -0
  541. package/src/audio/index.ts +151 -0
  542. package/src/core/colors.ts +56 -0
  543. package/src/core/index.ts +903 -0
  544. package/src/core/keys.ts +63 -0
  545. package/src/core/types.ts +102 -0
  546. package/src/index.ts +158 -0
  547. package/src/math/index.ts +502 -0
  548. package/src/mobile/index.ts +294 -0
  549. package/src/models/index.ts +859 -0
  550. package/src/physics/index.ts +1072 -0
  551. package/src/scene/index.ts +570 -0
  552. package/src/shapes/index.ts +120 -0
  553. package/src/text/index.ts +48 -0
  554. package/src/textures/index.ts +173 -0
  555. package/src/world/index.ts +22 -0
  556. package/src/world/loader.ts +385 -0
  557. package/src/world/prefab.ts +205 -0
  558. package/src/world/saver.ts +61 -0
  559. package/src/world/terrain.ts +254 -0
  560. package/src/world/types.ts +136 -0
  561. package/src/world/validate.ts +202 -0
  562. 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"
@@ -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
+ }