@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.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 (929) hide show
  1. package/README.md +58 -125
  2. package/dist/audio/index.js +8 -1
  3. package/dist/audio/index.js.map +1 -1
  4. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
  5. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
  6. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
  7. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
  8. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
  9. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
  10. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
  11. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
  12. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
  13. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
  14. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
  15. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
  16. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
  17. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
  18. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
  19. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
  20. package/dist/audio/trinity/audio/AudManager.js +1 -1
  21. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  22. package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
  23. package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
  24. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
  25. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
  26. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
  27. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
  28. package/dist/audio/trinity/index.js +8 -1
  29. package/dist/audio/trinity/index.js.map +1 -1
  30. package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
  31. package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
  32. package/dist/character/CjsCharacterAppearanceManager.js +14 -0
  33. package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
  34. package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
  35. package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
  36. package/dist/character/CjsCharacterTexturePolicy.js +5 -0
  37. package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
  38. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
  39. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
  40. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
  41. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
  42. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
  43. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
  44. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
  45. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
  46. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
  47. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
  48. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
  49. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
  50. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
  51. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
  52. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
  53. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
  54. package/dist/global/blue/CjsScriptCallback.js +142 -0
  55. package/dist/global/blue/CjsScriptCallback.js.map +1 -0
  56. package/dist/global/blue/index.js +2 -0
  57. package/dist/global/blue/index.js.map +1 -0
  58. package/dist/global/consts/renderContext/formats.js +51 -1
  59. package/dist/global/consts/renderContext/formats.js.map +1 -1
  60. package/dist/global/consts/renderContext/index.js +2 -2
  61. package/dist/global/consts/renderContext/renderStates.js +16 -1
  62. package/dist/global/consts/renderContext/renderStates.js.map +1 -1
  63. package/dist/global/contracts/index.js +0 -1
  64. package/dist/global/contracts/index.js.map +1 -1
  65. package/dist/global/index.js +4 -3
  66. package/dist/global/index.js.map +1 -1
  67. package/dist/global/math/index.js +2 -0
  68. package/dist/global/math/index.js.map +1 -1
  69. package/dist/global/math/mesh.js +70 -16
  70. package/dist/global/math/mesh.js.map +1 -1
  71. package/dist/global/math/noise.js +47 -68
  72. package/dist/global/math/noise.js.map +1 -1
  73. package/dist/global/math/pool.js +18 -3
  74. package/dist/global/math/pool.js.map +1 -1
  75. package/dist/global/math/random.js +52 -0
  76. package/dist/global/math/random.js.map +1 -0
  77. package/dist/global/math/tri3.js +18 -4
  78. package/dist/global/math/tri3.js.map +1 -1
  79. package/dist/global/utils/bytes.js +22 -4
  80. package/dist/global/utils/bytes.js.map +1 -1
  81. package/dist/global/utils/checksum.js +80 -0
  82. package/dist/global/utils/checksum.js.map +1 -0
  83. package/dist/global/utils/errors/CjsCancellationError.js +36 -0
  84. package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
  85. package/dist/global/utils/errors/CjsError.js +21 -52
  86. package/dist/global/utils/errors/CjsError.js.map +1 -1
  87. package/dist/global/utils/errors/abort.js +1 -1
  88. package/dist/global/utils/errors/abort.js.map +1 -1
  89. package/dist/global/utils/errors/index.js +2 -1
  90. package/dist/global/utils/errors/index.js.map +1 -1
  91. package/dist/global/utils/index.js +4 -2
  92. package/dist/global/utils/index.js.map +1 -1
  93. package/dist/index.js +95 -35
  94. package/dist/index.js.map +1 -1
  95. package/dist/input/Tr2MainWindow.js +7 -9
  96. package/dist/input/Tr2MainWindow.js.map +1 -1
  97. package/dist/resource/CjsResMan.js +33 -39
  98. package/dist/resource/CjsResMan.js.map +1 -1
  99. package/dist/resource/CjsResource.js +19 -5
  100. package/dist/resource/CjsResource.js.map +1 -1
  101. package/dist/resource/audio/AudioGeometryResData.js +22 -27
  102. package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
  103. package/dist/resource/audio/CjsAudioRes.js +4 -5
  104. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  105. package/dist/resource/format/CjsBitReader.js +263 -0
  106. package/dist/resource/format/CjsBitReader.js.map +1 -0
  107. package/dist/resource/format/CjsByteReader.js +130 -125
  108. package/dist/resource/format/CjsByteReader.js.map +1 -1
  109. package/dist/resource/format/CjsFormat.js +11 -4
  110. package/dist/resource/format/CjsFormat.js.map +1 -1
  111. package/dist/resource/format/CjsFormatError.js +37 -1
  112. package/dist/resource/format/CjsFormatError.js.map +1 -1
  113. package/dist/resource/format/CjsResourceProbe.js +41 -37
  114. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  115. package/dist/resource/format/carbonRecordGuard.js +33 -0
  116. package/dist/resource/format/carbonRecordGuard.js.map +1 -0
  117. package/dist/resource/format/imageSignatures.js +202 -0
  118. package/dist/resource/format/imageSignatures.js.map +1 -0
  119. package/dist/resource/format/index.js +2 -1
  120. package/dist/resource/format/index.js.map +1 -1
  121. package/dist/resource/format/jsonPolicies.js +180 -0
  122. package/dist/resource/format/jsonPolicies.js.map +1 -0
  123. package/dist/resource/formats/black/core/helpers.js +18 -29
  124. package/dist/resource/formats/black/core/helpers.js.map +1 -1
  125. package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
  126. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  127. package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
  128. package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
  129. package/dist/resource/formats/bnk/core/busNodes.js +2 -1
  130. package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
  131. package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
  132. package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
  133. package/dist/resource/formats/bnk/core/eventAction.js +15 -93
  134. package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
  135. package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
  136. package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
  137. package/dist/resource/formats/bnk/core/helpers.js +2 -48
  138. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  139. package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
  140. package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
  141. package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
  142. package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
  143. package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
  144. package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
  145. package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
  146. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  147. package/dist/resource/formats/cmf/core/binary.js +54 -60
  148. package/dist/resource/formats/cmf/core/binary.js.map +1 -1
  149. package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
  150. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  151. package/dist/resource/formats/dds/core/bc6h.js +16 -18
  152. package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
  153. package/dist/resource/formats/dds/core/bc7.js +28 -24
  154. package/dist/resource/formats/dds/core/bc7.js.map +1 -1
  155. package/dist/resource/formats/dds/core/helpers.js +7 -133
  156. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  157. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
  158. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  159. package/dist/resource/formats/dxbc/core/helpers.js +4 -32
  160. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  161. package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
  162. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  163. package/dist/resource/formats/fbx/core/helpers.js +18 -12
  164. package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
  165. package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
  166. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  167. package/dist/resource/formats/flac/core/helpers.js +1 -62
  168. package/dist/resource/formats/flac/core/helpers.js.map +1 -1
  169. package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
  170. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  171. package/dist/resource/formats/gif/core/helpers.js +1 -63
  172. package/dist/resource/formats/gif/core/helpers.js.map +1 -1
  173. package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
  174. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  175. package/dist/resource/formats/gltf/core/helpers.js +3 -19
  176. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
  178. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  179. package/dist/resource/formats/gr2/core/container.js +1 -10
  180. package/dist/resource/formats/gr2/core/container.js.map +1 -1
  181. package/dist/resource/formats/gr2/core/helpers.js +24 -35
  182. package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
  183. package/dist/resource/formats/gr2/core/shared.js +193 -189
  184. package/dist/resource/formats/gr2/core/shared.js.map +1 -1
  185. package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
  186. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  187. package/dist/resource/formats/hlsl/core/helpers.js +1 -30
  188. package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
  189. package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
  190. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  191. package/dist/resource/formats/jpeg/core/helpers.js +7 -134
  192. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  193. package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
  194. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  195. package/dist/resource/formats/mp3/core/helpers.js +1 -64
  196. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  197. package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
  198. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  199. package/dist/resource/formats/mp4/core/helpers.js +1 -73
  200. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  201. package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
  202. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  203. package/dist/resource/formats/obj/core/helpers.js +93 -115
  204. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  205. package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
  206. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  207. package/dist/resource/formats/ogg/core/helpers.js +1 -15
  208. package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
  209. package/dist/resource/formats/ogg/core/vorbis.js +138 -144
  210. package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
  211. package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
  212. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  213. package/dist/resource/formats/png/CjsPngFormat.js +5 -3
  214. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  215. package/dist/resource/formats/png/core/helpers.js +13 -152
  216. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  217. package/dist/resource/formats/png/core/writer.js +3 -27
  218. package/dist/resource/formats/png/core/writer.js.map +1 -1
  219. package/dist/resource/formats/red/core/helpers.js +19 -29
  220. package/dist/resource/formats/red/core/helpers.js.map +1 -1
  221. package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
  222. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  223. package/dist/resource/formats/stl/core/helpers.js +44 -66
  224. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  225. package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
  226. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  227. package/dist/resource/formats/tga/core/helpers.js +7 -153
  228. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  229. package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
  230. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  231. package/dist/resource/formats/vta/core/helpers.js +1 -17
  232. package/dist/resource/formats/vta/core/helpers.js.map +1 -1
  233. package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
  234. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  235. package/dist/resource/formats/wav/core/helpers.js +1 -15
  236. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  237. package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
  238. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  239. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
  240. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  241. package/dist/resource/formats/webgl/core/helpers.js +39 -68
  242. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  243. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
  244. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  245. package/dist/resource/formats/webgpu/core/helpers.js +4 -30
  246. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  247. package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
  248. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  249. package/dist/resource/formats/webm/core/helpers.js +1 -73
  250. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  251. package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
  252. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  253. package/dist/resource/formats/webp/core/helpers.js +1 -62
  254. package/dist/resource/formats/webp/core/helpers.js.map +1 -1
  255. package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
  256. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  257. package/dist/resource/formats/wem/core/bitStream.js +83 -106
  258. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  259. package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
  260. package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
  261. package/dist/resource/formats/wem/core/helpers.js +1 -15
  262. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  263. package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
  264. package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
  265. package/dist/resource/geometry/MeshDecalData.js +23 -25
  266. package/dist/resource/geometry/MeshDecalData.js.map +1 -1
  267. package/dist/resource/geometry/MeshDecalLodData.js +14 -23
  268. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
  269. package/dist/resource/geometry/TriGeometryRes.js +299 -284
  270. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  271. package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
  272. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
  273. package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
  274. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
  275. package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
  276. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
  277. package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
  278. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
  279. package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
  280. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
  281. package/dist/resource/geometry/TriJointBinding.js +16 -24
  282. package/dist/resource/geometry/TriJointBinding.js.map +1 -1
  283. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
  284. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
  285. package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
  286. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
  287. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
  288. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
  289. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
  290. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  291. package/dist/resource/index.js +1 -1
  292. package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
  293. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  294. package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
  295. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  296. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
  297. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  298. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
  299. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  300. package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
  301. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  302. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
  303. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  304. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
  305. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  306. package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
  307. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  308. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
  309. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
  310. package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
  311. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
  312. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
  313. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  314. package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
  315. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  316. package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
  317. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  318. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
  319. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
  320. package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
  321. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  322. package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
  323. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  324. package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
  325. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
  327. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
  329. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
  331. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
  333. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
  335. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  336. package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
  337. package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
  338. package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
  339. package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
  340. package/dist/resource/worker/protocol.js +18 -1
  341. package/dist/resource/worker/protocol.js.map +1 -1
  342. package/dist/sof/EveSOF.js +2 -222
  343. package/dist/sof/EveSOF.js.map +1 -1
  344. package/dist/sof/SofDocumentBuilder.js +205 -0
  345. package/dist/sof/SofDocumentBuilder.js.map +1 -0
  346. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
  347. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
  348. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
  349. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
  350. package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
  351. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  352. package/dist/sof/faction/index.js +3 -1
  353. package/dist/sof/faction/index.js.map +1 -1
  354. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
  355. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
  356. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
  357. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
  358. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
  359. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
  360. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
  361. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
  362. package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
  363. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  364. package/dist/sof/generic/index.js +5 -1
  365. package/dist/sof/generic/index.js.map +1 -1
  366. package/dist/sof/index.js +23 -7
  367. package/dist/sof/index.js.map +1 -1
  368. package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
  369. package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
  370. package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
  371. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  372. package/dist/sof/pattern/index.js +2 -1
  373. package/dist/sof/pattern/index.js.map +1 -1
  374. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
  375. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
  376. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
  377. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
  378. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
  379. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
  380. package/dist/sof/shared/EveSOFDataArea.js +2 -13
  381. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  382. package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
  383. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  384. package/dist/sof/shared/EveSOFDataParameter.js +2 -146
  385. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  386. package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
  387. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
  388. package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
  389. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
  390. package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
  391. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
  392. package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
  393. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
  394. package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
  395. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
  396. package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
  397. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
  398. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
  399. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
  400. package/dist/sof/shared/index.js +13 -4
  401. package/dist/sof/shared/index.js.map +1 -1
  402. package/dist/sof/sofDocumentValues.js +33 -0
  403. package/dist/sof/sofDocumentValues.js.map +1 -0
  404. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
  405. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
  406. package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
  407. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
  408. package/dist/trinity/controllers/Tr2Controller.js +2 -1
  409. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  410. package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
  411. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  412. package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
  413. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  414. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
  415. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  416. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
  417. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
  418. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
  419. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
  420. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
  421. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
  422. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
  423. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
  424. package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
  425. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
  426. package/dist/trinity/controllers/index.js +5 -2
  427. package/dist/trinity/controllers/index.js.map +1 -1
  428. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
  429. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  430. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
  431. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  432. package/dist/trinity/core/ITr2Updateable.js +2 -1
  433. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  434. package/dist/trinity/core/Tr2Blitter.js +6 -3
  435. package/dist/trinity/core/Tr2Blitter.js.map +1 -1
  436. package/dist/trinity/core/Tr2Denoiser.js +256 -0
  437. package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
  438. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
  439. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
  440. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
  441. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
  442. package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
  443. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
  444. package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
  445. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
  446. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
  447. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
  448. package/dist/trinity/core/Tr2RenderUtils.js +20 -3
  449. package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
  450. package/dist/trinity/core/Tr2Renderer.js +146 -1
  451. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  452. package/dist/trinity/core/Tr2ShadowMap.js +135 -14
  453. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  454. package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
  455. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
  456. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
  457. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
  458. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
  459. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
  460. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
  461. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
  462. package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
  463. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
  464. package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
  465. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
  466. package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
  467. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
  468. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
  469. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
  470. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
  471. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
  472. package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
  473. package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
  474. package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
  475. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  476. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
  477. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
  478. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
  479. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
  480. package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
  481. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  482. package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
  483. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
  484. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
  485. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
  486. package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
  487. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
  488. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
  489. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
  490. package/dist/trinity/core/index.js +42 -15
  491. package/dist/trinity/core/index.js.map +1 -1
  492. package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
  493. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  494. package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
  495. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
  496. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
  497. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
  498. package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
  499. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
  500. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
  501. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
  502. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
  503. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  504. package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
  505. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  506. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
  507. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  508. package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
  509. package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
  510. package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
  511. package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
  512. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
  513. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
  514. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
  515. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
  516. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
  517. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
  518. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
  519. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
  520. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
  521. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
  522. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
  523. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
  524. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
  525. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
  526. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
  527. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
  528. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
  529. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
  530. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
  531. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
  532. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
  533. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
  534. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
  535. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
  536. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
  537. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
  538. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
  539. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
  540. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
  541. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
  542. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
  543. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
  544. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
  545. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
  546. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
  547. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
  548. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
  549. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
  550. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
  551. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
  552. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
  553. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
  554. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
  555. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
  556. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
  557. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
  558. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
  559. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
  560. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
  561. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
  562. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
  563. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
  564. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
  565. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
  566. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
  567. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
  568. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
  569. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
  570. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
  571. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
  572. package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
  573. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
  574. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
  575. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
  576. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
  577. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
  578. package/dist/trinity/core/variable/TriVariable.js +83 -83
  579. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  580. package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
  581. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
  582. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
  583. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
  584. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
  585. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  586. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
  587. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  588. package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
  589. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  590. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
  591. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  592. package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
  593. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  594. package/dist/trinity/eve/IEveTransform.js +2 -1
  595. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  596. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
  597. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  598. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
  599. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  600. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
  601. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
  602. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
  603. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  604. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
  605. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
  606. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
  607. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
  608. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
  609. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  610. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
  611. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  612. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
  613. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  614. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
  615. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  616. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
  617. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  618. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
  619. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  620. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
  621. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  622. package/dist/trinity/eve/camera/EveCamera.js +1 -1
  623. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  624. package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
  625. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  626. package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
  627. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  628. package/dist/trinity/eve/child/EveChildContainer.js +141 -141
  629. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  630. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
  631. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
  632. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
  633. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
  634. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
  635. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
  636. package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
  637. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
  638. package/dist/trinity/eve/child/EveChildMesh.js +218 -218
  639. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  640. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
  641. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
  642. package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
  643. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
  644. package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
  645. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  646. package/dist/trinity/eve/child/EveChildTransform.js +5 -0
  647. package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
  648. package/dist/trinity/eve/child/EveChildTurret.js +7 -0
  649. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  650. package/dist/trinity/eve/index.js +10 -4
  651. package/dist/trinity/eve/index.js.map +1 -1
  652. package/dist/trinity/eve/lights/Tr2Light.js +5 -0
  653. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  654. package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
  655. package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
  656. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
  657. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  658. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
  659. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  660. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
  661. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  662. package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
  663. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  664. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
  665. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  666. package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
  667. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  668. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
  669. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  670. package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
  671. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  672. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
  673. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  674. package/dist/trinity/generated/index.js +0 -1
  675. package/dist/trinity/generated/index.js.map +1 -1
  676. package/dist/trinity/generated/trinityCore/index.js +0 -1
  677. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  678. package/dist/trinity/index.js +59 -23
  679. package/dist/trinity/index.js.map +1 -1
  680. package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
  681. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
  682. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
  683. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
  684. package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
  685. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  686. package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
  687. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  688. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
  689. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  690. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
  691. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  692. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
  693. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  694. package/dist/trinity/particle/index.js +2 -1
  695. package/dist/trinity/particle/index.js.map +1 -1
  696. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
  697. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  698. package/dist/trinity/shader/Tr2Effect.js +131 -58
  699. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  700. package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
  701. package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
  702. package/dist/trinity/shader/Tr2Material.js +21 -4
  703. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  704. package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
  705. package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
  706. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
  707. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  708. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
  709. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
  710. package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
  711. package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
  712. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
  713. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
  714. package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
  715. package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
  716. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
  717. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
  718. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
  719. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
  720. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
  721. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
  722. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
  723. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
  724. package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
  725. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
  726. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
  727. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
  728. package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
  729. package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
  730. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
  731. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
  732. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
  733. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
  734. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
  735. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
  736. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
  737. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
  738. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
  739. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
  740. package/dist/trinityal/index.js +22 -9
  741. package/dist/trinityal/index.js.map +1 -1
  742. package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
  743. package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
  744. package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
  745. package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
  746. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
  747. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
  748. package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
  749. package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
  750. package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
  751. package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
  752. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
  753. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
  754. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
  755. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
  756. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
  757. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
  758. package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
  759. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
  760. package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
  761. package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
  762. package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
  763. package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
  764. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
  765. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
  766. package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
  767. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  768. package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
  769. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  770. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
  771. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
  772. package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
  773. package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
  774. package/dist/trinityal/stub/index.js +8 -4
  775. package/dist/trinityal/stub/index.js.map +1 -1
  776. package/dist/trinityal/vertexLayoutMatch.js +2 -2
  777. package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
  778. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
  779. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
  780. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
  781. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
  782. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
  783. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
  784. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
  785. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  786. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
  787. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  788. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
  789. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  790. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
  791. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
  792. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
  793. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  794. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
  795. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
  796. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
  797. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  798. package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
  799. package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
  800. package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
  801. package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
  802. package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
  803. package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
  804. package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
  805. package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
  806. package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
  807. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
  808. package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
  809. package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
  810. package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
  811. package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
  812. package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
  813. package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
  814. package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
  815. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
  816. package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
  817. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
  818. package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
  819. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
  820. package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
  821. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
  822. package/dist/trinityal/webgpu/internal.js +12 -11
  823. package/dist/trinityal/webgpu/internal.js.map +1 -1
  824. package/docs/audio/reference/classes/trinity.md +44 -34
  825. package/docs/character/architecture.md +276 -0
  826. package/docs/character/reference/character-appearance-plans.md +30 -66
  827. package/docs/character/reference/prepared-libraries.md +14 -30
  828. package/docs/global/reference/api.md +2 -1
  829. package/docs/global/reference/classes/README.md +53 -71
  830. package/docs/global/reference/classes/dropped.md +16 -0
  831. package/docs/resource/README.md +19 -15
  832. package/docs/resource/architecture.md +9 -2
  833. package/docs/resource/concepts/format-capabilities.md +124 -80
  834. package/docs/resource/concepts/shared-format-helpers.md +94 -0
  835. package/docs/resource/formats/README.md +230 -224
  836. package/docs/resource/formats/bitknit2.md +221 -0
  837. package/docs/resource/formats/carbon-effect-container.md +184 -269
  838. package/docs/resource/formats/gr2.md +6 -1
  839. package/docs/resource/formats/schemabound.md +28 -48
  840. package/docs/resource/formats/static.md +70 -97
  841. package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
  842. package/docs/resource/formats/webgl/decl-io.md +165 -256
  843. package/docs/resource/formats/webgl/memory-structured.md +64 -142
  844. package/docs/resource/formats/webgl/texture-sample.md +109 -138
  845. package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
  846. package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
  847. package/docs/resource/formats/webgpu/reference/api.md +64 -67
  848. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
  849. package/docs/resource/reference/classes/core.md +256 -236
  850. package/docs/resource/reference/classes/formats.md +1668 -1672
  851. package/docs/resource/reference/workers.md +4 -2
  852. package/docs/sof/reference/classes/core.md +1 -1
  853. package/docs/sof/reference/classes/faction.md +2 -2
  854. package/docs/sof/reference/classes/generic.md +4 -4
  855. package/docs/sof/reference/classes/pattern.md +1 -1
  856. package/docs/sof/reference/classes/shared.md +10 -10
  857. package/docs/trinity/architecture.md +55 -44
  858. package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
  859. package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
  860. package/docs/trinity/reference/classes/dropped.md +0 -189
  861. package/docs/trinity/reference/classes/eve-runtime.md +8 -8
  862. package/docs/trinity/reference/classes/generated.md +0 -10
  863. package/docs/trinity/reference/classes/particle.md +2 -2
  864. package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
  865. package/docs/trinity/reference/implementation-status.md +50 -75
  866. package/docs/trinity/reference/main-semantic-extraction.md +13 -17
  867. package/docs/trinityal/reference/classes/README.md +77 -27
  868. package/docs/trinityal/reference/classes/dropped.md +82 -0
  869. package/docs/trinityal/webgpu/README.md +3 -1
  870. package/docs/trinityal/webgpu/architecture.md +121 -228
  871. package/docs/trinityal/webgpu/reference/api.md +5 -5
  872. package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
  873. package/format-notices/gr2/NOTICE +18 -12
  874. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
  875. package/package.json +4 -1
  876. package/dist/audio/trinity/audio/AudActionLog.js +0 -173
  877. package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
  878. package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
  879. package/dist/global/contracts/CjsScriptCallback.js +0 -94
  880. package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
  881. package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
  882. package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
  883. package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
  884. package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
  885. package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
  886. package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
  887. package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
  888. package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
  889. package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
  890. package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
  891. package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
  892. package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
  893. package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
  894. package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
  895. package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
  896. package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
  897. package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
  898. package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
  899. package/dist/trinity/core/rawData/constantLayout.js +0 -175
  900. package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
  901. package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
  902. package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
  903. package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
  904. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
  905. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
  906. package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
  907. package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
  908. package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
  909. package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
  910. package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
  911. package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
  912. package/dist/trinityal/Tr2SamplerDescription.js +0 -72
  913. package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
  914. package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
  915. package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
  916. package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
  917. package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
  918. package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
  919. package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
  920. package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
  921. package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
  922. package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
  923. package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
  924. package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
  925. package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
  926. package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
  927. package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
  928. package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
  929. package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
@@ -5,7 +5,7 @@ import * as arrays from './utils/arrays.js';
5
5
  export { arrays };
6
6
  import * as bytes from './utils/bytes.js';
7
7
  export { bytes };
8
- export { asUint8Array, copyBytes, float32FromBits, hasBytePrefix, readFourCc, readU16BE, readU16LE, readU24BE, readU24LE, readU32BE, readU32LE, toArrayBuffer } from './utils/bytes.js';
8
+ export { asUint8Array, copyBytes, float32FromBits, float32ToBits, hasBytePrefix, readFourCc, readU16BE, readU16LE, readU24BE, readU24LE, readU32BE, readU32LE, toArrayBuffer } from './utils/bytes.js';
9
9
  import * as compression from './utils/compression.js';
10
10
  export { compression };
11
11
  export { decompressBytes, decompressGzip, decompressGzipIfNeeded, isGzip } from './utils/compression.js';
@@ -33,9 +33,9 @@ export { CjsBackendCandidate } from './contracts/CjsBackendCandidate.js';
33
33
  export { CjsConstantPayload } from './contracts/CjsConstantPayload.js';
34
34
  export { CjsFrameLifecycle } from './contracts/CjsFrameLifecycle.js';
35
35
  export { CjsInstancedMeshManager } from './contracts/CjsInstancedMeshManager.js';
36
- export { CjsScriptCallback } from './contracts/CjsScriptCallback.js';
37
36
  export { ITr2BoundingBox, withITr2BoundingBox } from './contracts/ITr2BoundingBox.js';
38
37
  export { ITr2RenderNode, withITr2RenderNode } from './contracts/ITr2RenderNode.js';
38
+ export { CjsScriptCallback } from './blue/CjsScriptCallback.js';
39
39
  import * as index from './consts/index.js';
40
40
  export { index as constants };
41
41
  import * as num from './math/num.js';
@@ -86,8 +86,9 @@ import * as tangent from './math/tangent.js';
86
86
  export { tangent };
87
87
  export { isResFileAddressFor, parseResFileAddress, resFileAddress } from './utils/resFile.js';
88
88
  export { AudioChannelLayout, AudioSampleFormat, normalizeAudioSampleFormat } from './consts/audio/audioFormats.js';
89
- export { CJS_OPERATION_CANCELLED, CjsCancellationError, CjsError } from './utils/errors/CjsError.js';
89
+ export { CJS_OPERATION_CANCELLED, CjsCancellationError } from './utils/errors/CjsCancellationError.js';
90
90
  export { CarbonPixelFormatToWebGpu, DxgiFormatToPixelFormat, GpuTextureFormat, PixelFormatToWebGpu, SrgbSiblingOf, dxgiToPixelFormat, toWebGpuTextureFormat } from './consts/webgpu/textureFormats.js';
91
+ export { CjsError } from './utils/errors/CjsError.js';
91
92
  export { ColorSpace, normalizeColorSpace } from './consts/graphics/colorSpaces.js';
92
93
  export { D3dPrimitiveTopology } from './consts/d3d/primitiveTopology.js';
93
94
  export { DxgiFormat, normalizeDxgiFormat } from './consts/d3d/dxgiFormats.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -31,6 +31,8 @@ import * as pool from './pool.js';
31
31
  export { pool };
32
32
  import * as noise from './noise.js';
33
33
  export { noise };
34
+ import * as random from './random.js';
35
+ export { random };
34
36
  import * as curve from './curve.js';
35
37
  export { curve };
36
38
  import * as index from './geometry/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,5 @@
1
1
  import { normalize, cross, length } from 'gl-matrix/esm/vec3.js';
2
+ import './vec3.js';
2
3
 
3
4
  /**
4
5
  * Small mesh rebuild helpers for shared CarbonEngineJS mesh JSON.
@@ -156,6 +157,12 @@ function computeBoundsFromTriangles(triangles) {
156
157
  };
157
158
  }
158
159
 
160
+ // Double-precision scratch for generateNormals. Plain Arrays deliberately: see
161
+ // the note at their use for why the element type is not the math namespace's.
162
+ const NORMAL_SCRATCH = [0, 0, 0];
163
+ const EDGE_B_SCRATCH = [0, 0, 0];
164
+ const EDGE_C_SCRATCH = [0, 0, 0];
165
+
159
166
  /**
160
167
  * Generate area-weighted vertex normals from positions and triangle indices.
161
168
  *
@@ -168,20 +175,53 @@ function generateNormals(positions, indices) {
168
175
  validateIndices(indices, positions.length / 3);
169
176
  const vertexCount = positions.length / 3,
170
177
  normals = new Float32Array(positions.length);
178
+
179
+ // Module scratch, not pooled, and the element type is the point. The
180
+ // previous form cost FOUR array literals per triangle; these cost none. But
181
+ // vec3.alloc() would hand back a Float32Array, and the literals it replaced
182
+ // were plain Arrays - float64. Rounding each edge vector and face normal to
183
+ // f32 BEFORE accumulating changes the result: ~1e-7 relative at world scale,
184
+ // and far worse wherever a cross product nearly cancels.
185
+ //
186
+ // THE RULE: a scratch's element type follows its DESTINATION, not whatever
187
+ // the math namespace hands out. Here the arithmetic is double and only the
188
+ // final store is f32, so the scratch is double.
189
+ //
190
+ // Reused across calls, which is safe because this runs to completion without
191
+ // yielding and never re-enters. Every component is written before it is read:
192
+ // `cross` fills its whole destination and only reads its operands.
193
+ const faceNormal = NORMAL_SCRATCH,
194
+ edgeB = EDGE_B_SCRATCH,
195
+ edgeC = EDGE_C_SCRATCH;
171
196
  for (let t = 0; t < indices.length; t += 3) {
172
197
  const ia = indices[t] * 3,
173
198
  ib = indices[t + 1] * 3,
174
199
  ic = indices[t + 2] * 3,
175
200
  ax = positions[ia],
176
201
  ay = positions[ia + 1],
177
- az = positions[ia + 2],
178
- faceNormal = [0, 0, 0];
179
- cross(faceNormal, [positions[ib] - ax, positions[ib + 1] - ay, positions[ib + 2] - az], [positions[ic] - ax, positions[ic + 1] - ay, positions[ic + 2] - az]);
180
- for (const offset of [ia, ib, ic]) {
181
- normals[offset] += faceNormal[0];
182
- normals[offset + 1] += faceNormal[1];
183
- normals[offset + 2] += faceNormal[2];
184
- }
202
+ az = positions[ia + 2];
203
+ edgeB[0] = positions[ib] - ax;
204
+ edgeB[1] = positions[ib + 1] - ay;
205
+ edgeB[2] = positions[ib + 2] - az;
206
+ edgeC[0] = positions[ic] - ax;
207
+ edgeC[1] = positions[ic + 1] - ay;
208
+ edgeC[2] = positions[ic + 2] - az;
209
+ cross(faceNormal, edgeB, edgeC);
210
+ const nx = faceNormal[0],
211
+ ny = faceNormal[1],
212
+ nz = faceNormal[2];
213
+
214
+ // Unrolled over the triangle's three vertices, which is what the
215
+ // `for (const offset of [ ia, ib, ic ])` form allocated for.
216
+ normals[ia] += nx;
217
+ normals[ia + 1] += ny;
218
+ normals[ia + 2] += nz;
219
+ normals[ib] += nx;
220
+ normals[ib + 1] += ny;
221
+ normals[ib + 2] += nz;
222
+ normals[ic] += nx;
223
+ normals[ic + 1] += ny;
224
+ normals[ic + 2] += nz;
185
225
  }
186
226
  for (let i = 0; i < vertexCount; i++) {
187
227
  const offset = i * 3,
@@ -239,14 +279,28 @@ function generateTangents(positions, normals, uvs, indices) {
239
279
  tx = (s1 * x2 - s2 * x1) * scale,
240
280
  ty = (s1 * y2 - s2 * y1) * scale,
241
281
  tz = (s1 * z2 - s2 * z1) * scale;
242
- for (const offset of [p0, p1, p2]) {
243
- tan1[offset] += sx;
244
- tan1[offset + 1] += sy;
245
- tan1[offset + 2] += sz;
246
- tan2[offset] += tx;
247
- tan2[offset + 1] += ty;
248
- tan2[offset + 2] += tz;
249
- }
282
+
283
+ // Unrolled over the triangle's three vertices: the
284
+ // `for (const offset of [ p0, p1, p2 ])` form allocated an array literal
285
+ // and an iterator per triangle.
286
+ tan1[p0] += sx;
287
+ tan1[p0 + 1] += sy;
288
+ tan1[p0 + 2] += sz;
289
+ tan2[p0] += tx;
290
+ tan2[p0 + 1] += ty;
291
+ tan2[p0 + 2] += tz;
292
+ tan1[p1] += sx;
293
+ tan1[p1 + 1] += sy;
294
+ tan1[p1 + 2] += sz;
295
+ tan2[p1] += tx;
296
+ tan2[p1 + 1] += ty;
297
+ tan2[p1 + 2] += tz;
298
+ tan1[p2] += sx;
299
+ tan1[p2 + 1] += sy;
300
+ tan1[p2 + 2] += sz;
301
+ tan2[p2] += tx;
302
+ tan2[p2 + 1] += ty;
303
+ tan2[p2 + 2] += tz;
250
304
  }
251
305
  const tangents = new Float32Array(vertexCount * 3),
252
306
  handedness = new Float32Array(vertexCount);
@@ -1 +1 @@
1
- {"version":3,"file":"mesh.js","sources":["../../../../src/global/math/mesh.js"],"sourcesContent":["/**\r\n * Small mesh rebuild helpers for shared CarbonEngineJS mesh JSON.\r\n *\r\n * These helpers are deliberately framework-free and browser-safe. They accept\r\n * plain arrays or typed arrays and return plain arrays unless otherwise noted.\r\n */\r\n\r\nimport {\r\n cross,\r\n length as vec3Length,\r\n normalize\r\n} from \"gl-matrix/esm/vec3.js\";\r\n\r\nfunction validatePositions(positions)\r\n{\r\n if (!positions || positions.length % 3 !== 0)\r\n {\r\n throw new Error(\"Positions must contain complete xyz vertices\");\r\n }\r\n}\r\n\r\nfunction validateIndices(indices, vertexCount)\r\n{\r\n if (!indices || indices.length % 3 !== 0)\r\n {\r\n throw new Error(\"Indices must contain complete triangles\");\r\n }\r\n\r\n for (let i = 0; i < indices.length; i++)\r\n {\r\n if (!Number.isInteger(indices[i]) || indices[i] < 0 || indices[i] >= vertexCount)\r\n {\r\n throw new Error(`Invalid vertex index at ${i}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Calculate the unit face normal for a triangle.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {number[]} Unit triangle normal.\r\n */\r\nexport function triangleNormal(a, b, c)\r\n{\r\n return triangleNormalTo([ 0, 0, 0 ], a, b, c);\r\n}\r\n\r\n/**\r\n * Calculate a unit face normal into caller-owned storage.\r\n *\r\n * @param {ArrayLike<number>} out Receiving xyz vector.\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {ArrayLike<number>} The receiving vector.\r\n */\r\nexport function triangleNormalTo(out, a, b, c)\r\n{\r\n const\r\n abX = b[0] - a[0],\r\n abY = b[1] - a[1],\r\n abZ = b[2] - a[2],\r\n acX = c[0] - a[0],\r\n acY = c[1] - a[1],\r\n acZ = c[2] - a[2];\r\n\r\n out[0] = abY * acZ - abZ * acY;\r\n out[1] = abZ * acX - abX * acZ;\r\n out[2] = abX * acY - abY * acX;\r\n\r\n const length = Math.hypot(out[0], out[1], out[2]);\r\n\r\n if (length > 0)\r\n {\r\n out[0] /= length;\r\n out[1] /= length;\r\n out[2] /= length;\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Twice the area of a triangle.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {number} Twice the triangle area.\r\n */\r\nexport function triangleArea2(a, b, c)\r\n{\r\n const normal = [ 0, 0, 0 ];\r\n cross(\r\n normal,\r\n [ b[0] - a[0], b[1] - a[1], b[2] - a[2] ],\r\n [ c[0] - a[0], c[1] - a[1], c[2] - a[2] ]\r\n );\r\n return vec3Length(normal);\r\n}\r\n\r\n/**\r\n * Whether a triangle is degenerate.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @param {number} [epsilon] Area epsilon.\r\n * @returns {boolean} True when the triangle has no useful area.\r\n */\r\nexport function isDegenerateTriangle(a, b, c, epsilon = 1e-12)\r\n{\r\n return triangleArea2(a, b, c) <= epsilon;\r\n}\r\n\r\n/**\r\n * Compute axis-aligned bounds from flat xyz positions.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @returns {{minBounds: number[], maxBounds: number[]}} Bounds.\r\n */\r\nexport function computeBoundsFromPositions(positions)\r\n{\r\n validatePositions(positions);\r\n\r\n if (!positions.length)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n const\r\n minBounds = [ positions[0], positions[1], positions[2] ],\r\n maxBounds = [ positions[0], positions[1], positions[2] ];\r\n\r\n for (let i = 3; i < positions.length; i += 3)\r\n {\r\n for (let c = 0; c < 3; c++)\r\n {\r\n const value = positions[i + c];\r\n if (value < minBounds[c]) minBounds[c] = value;\r\n if (value > maxBounds[c]) maxBounds[c] = value;\r\n }\r\n }\r\n\r\n return { minBounds, maxBounds };\r\n}\r\n\r\n/**\r\n * Compute axis-aligned bounds from `{ vertices: [[x,y,z], ...] }` triangles.\r\n *\r\n * @param {Array<{vertices: Array<ArrayLike<number>>}>} triangles Triangle records.\r\n * @returns {{minBounds: number[], maxBounds: number[]}} Bounds.\r\n */\r\nexport function computeBoundsFromTriangles(triangles)\r\n{\r\n if (!triangles.length)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n const\r\n minBounds = [ Infinity, Infinity, Infinity ],\r\n maxBounds = [ -Infinity, -Infinity, -Infinity ];\r\n\r\n let hasVertex = false;\r\n for (const triangle of triangles)\r\n {\r\n for (const vertex of triangle.vertices)\r\n {\r\n hasVertex = true;\r\n for (let c = 0; c < 3; c++)\r\n {\r\n if (vertex[c] < minBounds[c]) minBounds[c] = vertex[c];\r\n if (vertex[c] > maxBounds[c]) maxBounds[c] = vertex[c];\r\n }\r\n }\r\n }\r\n\r\n if (!hasVertex)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n return { minBounds, maxBounds };\r\n}\r\n\r\n/**\r\n * Generate area-weighted vertex normals from positions and triangle indices.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @returns {Float32Array} Flat xyz normals.\r\n */\r\nexport function generateNormals(positions, indices)\r\n{\r\n validatePositions(positions);\r\n validateIndices(indices, positions.length / 3);\r\n\r\n const\r\n vertexCount = positions.length / 3,\r\n normals = new Float32Array(positions.length);\r\n\r\n for (let t = 0; t < indices.length; t += 3)\r\n {\r\n const\r\n ia = indices[t] * 3,\r\n ib = indices[t + 1] * 3,\r\n ic = indices[t + 2] * 3,\r\n ax = positions[ia],\r\n ay = positions[ia + 1],\r\n az = positions[ia + 2],\r\n faceNormal = [ 0, 0, 0 ];\r\n\r\n cross(\r\n faceNormal,\r\n [ positions[ib] - ax, positions[ib + 1] - ay, positions[ib + 2] - az ],\r\n [ positions[ic] - ax, positions[ic + 1] - ay, positions[ic + 2] - az ]\r\n );\r\n\r\n for (const offset of [ ia, ib, ic ])\r\n {\r\n normals[offset] += faceNormal[0];\r\n normals[offset + 1] += faceNormal[1];\r\n normals[offset + 2] += faceNormal[2];\r\n }\r\n }\r\n\r\n for (let i = 0; i < vertexCount; i++)\r\n {\r\n const\r\n offset = i * 3,\r\n length = Math.hypot(normals[offset], normals[offset + 1], normals[offset + 2]) || 1;\r\n\r\n normals[offset] /= length;\r\n normals[offset + 1] /= length;\r\n normals[offset + 2] /= length;\r\n }\r\n\r\n return normals;\r\n}\r\n\r\n/**\r\n * Generate per-vertex tangents from positions, normals, UVs and indices.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} uvs Flat uv coordinates.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @returns {Float32Array} Flat xyz tangents.\r\n */\r\nexport function generateTangents(positions, normals, uvs, indices)\r\n{\r\n validatePositions(positions);\r\n\r\n const\r\n vertexCount = positions.length / 3,\r\n tan1 = new Float32Array(vertexCount * 3),\r\n tan2 = new Float32Array(vertexCount * 3);\r\n\r\n if (!normals || normals.length !== positions.length ||\r\n !uvs || uvs.length !== vertexCount * 2)\r\n {\r\n throw new Error(\"Tangent channels do not match the vertex count\");\r\n }\r\n validateIndices(indices, vertexCount);\r\n\r\n for (let t = 0; t < indices.length; t += 3)\r\n {\r\n const\r\n i0 = indices[t],\r\n i1 = indices[t + 1],\r\n i2 = indices[t + 2],\r\n p0 = i0 * 3,\r\n p1 = i1 * 3,\r\n p2 = i2 * 3,\r\n t0 = i0 * 2,\r\n t1 = i1 * 2,\r\n t2 = i2 * 2,\r\n x1 = positions[p1] - positions[p0],\r\n y1 = positions[p1 + 1] - positions[p0 + 1],\r\n z1 = positions[p1 + 2] - positions[p0 + 2],\r\n x2 = positions[p2] - positions[p0],\r\n y2 = positions[p2 + 1] - positions[p0 + 1],\r\n z2 = positions[p2 + 2] - positions[p0 + 2],\r\n s1 = uvs[t1] - uvs[t0],\r\n v1 = uvs[t1 + 1] - uvs[t0 + 1],\r\n s2 = uvs[t2] - uvs[t0],\r\n v2 = uvs[t2 + 1] - uvs[t0 + 1],\r\n divisor = s1 * v2 - s2 * v1,\r\n scale = divisor ? 1 / divisor : 0,\r\n sx = (v2 * x1 - v1 * x2) * scale,\r\n sy = (v2 * y1 - v1 * y2) * scale,\r\n sz = (v2 * z1 - v1 * z2) * scale,\r\n tx = (s1 * x2 - s2 * x1) * scale,\r\n ty = (s1 * y2 - s2 * y1) * scale,\r\n tz = (s1 * z2 - s2 * z1) * scale;\r\n\r\n for (const offset of [ p0, p1, p2 ])\r\n {\r\n tan1[offset] += sx;\r\n tan1[offset + 1] += sy;\r\n tan1[offset + 2] += sz;\r\n tan2[offset] += tx;\r\n tan2[offset + 1] += ty;\r\n tan2[offset + 2] += tz;\r\n }\r\n }\r\n\r\n const\r\n tangents = new Float32Array(vertexCount * 3),\r\n handedness = new Float32Array(vertexCount);\r\n\r\n for (let i = 0; i < vertexCount; i++)\r\n {\r\n const\r\n offset = i * 3,\r\n nx = normals[offset],\r\n ny = normals[offset + 1],\r\n nz = normals[offset + 2],\r\n tx = tan1[offset],\r\n ty = tan1[offset + 1],\r\n tz = tan1[offset + 2],\r\n normalDotTangent = nx * tx + ny * ty + nz * tz;\r\n\r\n let ox = tx - nx * normalDotTangent,\r\n oy = ty - ny * normalDotTangent,\r\n oz = tz - nz * normalDotTangent;\r\n\r\n const length = Math.hypot(ox, oy, oz) || 1;\r\n\r\n ox /= length;\r\n oy /= length;\r\n oz /= length;\r\n\r\n tangents[offset] = ox;\r\n tangents[offset + 1] = oy;\r\n tangents[offset + 2] = oz;\r\n handedness[i] = (\r\n (ny * oz - nz * oy) * tan2[offset] +\r\n (nz * ox - nx * oz) * tan2[offset + 1] +\r\n (nx * oy - ny * ox) * tan2[offset + 2]\r\n ) < 0 ? -1 : 1;\r\n }\r\n\r\n Object.defineProperty(tangents, \"handedness\", { value: handedness });\r\n return tangents;\r\n}\r\n\r\n/**\r\n * Generate a complete tangent frame while preserving per-vertex UV handedness.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} uvs Flat uv coordinates.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @param {object} [options] Generation options.\r\n * @returns {{tangents: Float32Array, binormals: number[], handedness: Float32Array}}\r\n */\r\nexport function generateTangentFrames(positions, normals, uvs, indices, options)\r\n{\r\n const\r\n tangents = generateTangents(positions, normals, uvs, indices),\r\n handedness = tangents.handedness,\r\n binormals = generateBiNormals(normals, tangents, { ...options, handedness });\r\n\r\n return { tangents, binormals, handedness };\r\n}\r\n\r\n/**\r\n * Generate binormals as normalized `normal x tangent`.\r\n *\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} tangents Flat xyz tangents.\r\n * @param {object} [options] Generation options.\r\n * @param {\"right\"|\"left\"} [options.uvHandedness] Handedness of generated basis.\r\n * @returns {number[]} Flat xyz binormals.\r\n */\r\nexport function generateBiNormals(normals, tangents, options = {})\r\n{\r\n if (normals.length !== tangents.length || normals.length % 3 !== 0)\r\n {\r\n throw new Error(\"generateBiNormals requires matching complete xyz channels\");\r\n }\r\n\r\n const\r\n conventionSign = options.uvHandedness === \"left\" ? -1 : 1,\r\n binormals = new Array(normals.length);\r\n\r\n for (let i = 0; i < normals.length; i += 3)\r\n {\r\n const\r\n vertexSign = options.handedness?.[i / 3] ?? tangents.handedness?.[i / 3] ?? 1,\r\n sign = conventionSign * vertexSign;\r\n const b = normalize(\r\n [ 0, 0, 0 ],\r\n [\r\n normals[i + 1] * tangents[i + 2] - normals[i + 2] * tangents[i + 1],\r\n normals[i + 2] * tangents[i] - normals[i] * tangents[i + 2],\r\n normals[i] * tangents[i + 1] - normals[i + 1] * tangents[i]\r\n ]\r\n );\r\n binormals[i] = b[0] * sign;\r\n binormals[i + 1] = b[1] * sign;\r\n binormals[i + 2] = b[2] * sign;\r\n }\r\n\r\n return binormals;\r\n}\r\n\r\nexport const mesh = Object.freeze({\r\n triangleNormal,\r\n triangleNormalTo,\r\n triangleArea2,\r\n isDegenerateTriangle,\r\n computeBoundsFromPositions,\r\n computeBoundsFromTriangles,\r\n generateNormals,\r\n generateTangents,\r\n generateTangentFrames,\r\n generateBiNormals\r\n});\r\n"],"names":["validatePositions","positions","length","Error","validateIndices","indices","vertexCount","i","Number","isInteger","triangleNormal","a","b","c","triangleNormalTo","out","abX","abY","abZ","acX","acY","acZ","Math","hypot","triangleArea2","normal","cross","vec3Length","isDegenerateTriangle","epsilon","computeBoundsFromPositions","minBounds","maxBounds","value","computeBoundsFromTriangles","triangles","Infinity","hasVertex","triangle","vertex","vertices","generateNormals","normals","Float32Array","t","ia","ib","ic","ax","ay","az","faceNormal","offset","generateTangents","uvs","tan1","tan2","i0","i1","i2","p0","p1","p2","t0","t1","t2","x1","y1","z1","x2","y2","z2","s1","v1","s2","v2","divisor","scale","sx","sy","sz","tx","ty","tz","tangents","handedness","nx","ny","nz","normalDotTangent","ox","oy","oz","Object","defineProperty","generateTangentFrames","options","binormals","generateBiNormals","conventionSign","uvHandedness","Array","vertexSign","sign","normalize","mesh","freeze"],"mappings":"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"}
1
+ {"version":3,"file":"mesh.js","sources":["../../../../src/global/math/mesh.js"],"sourcesContent":["/**\r\n * Small mesh rebuild helpers for shared CarbonEngineJS mesh JSON.\r\n *\r\n * These helpers are deliberately framework-free and browser-safe. They accept\r\n * plain arrays or typed arrays and return plain arrays unless otherwise noted.\r\n */\r\n\r\nimport {\r\n cross,\r\n length as vec3Length,\r\n normalize\r\n} from \"gl-matrix/esm/vec3.js\";\r\n\r\nimport { vec3 } from \"./vec3.js\";\r\n\r\nfunction validatePositions(positions)\r\n{\r\n if (!positions || positions.length % 3 !== 0)\r\n {\r\n throw new Error(\"Positions must contain complete xyz vertices\");\r\n }\r\n}\r\n\r\nfunction validateIndices(indices, vertexCount)\r\n{\r\n if (!indices || indices.length % 3 !== 0)\r\n {\r\n throw new Error(\"Indices must contain complete triangles\");\r\n }\r\n\r\n for (let i = 0; i < indices.length; i++)\r\n {\r\n if (!Number.isInteger(indices[i]) || indices[i] < 0 || indices[i] >= vertexCount)\r\n {\r\n throw new Error(`Invalid vertex index at ${i}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Calculate the unit face normal for a triangle.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {number[]} Unit triangle normal.\r\n */\r\nexport function triangleNormal(a, b, c)\r\n{\r\n return triangleNormalTo([ 0, 0, 0 ], a, b, c);\r\n}\r\n\r\n/**\r\n * Calculate a unit face normal into caller-owned storage.\r\n *\r\n * @param {ArrayLike<number>} out Receiving xyz vector.\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {ArrayLike<number>} The receiving vector.\r\n */\r\nexport function triangleNormalTo(out, a, b, c)\r\n{\r\n const\r\n abX = b[0] - a[0],\r\n abY = b[1] - a[1],\r\n abZ = b[2] - a[2],\r\n acX = c[0] - a[0],\r\n acY = c[1] - a[1],\r\n acZ = c[2] - a[2];\r\n\r\n out[0] = abY * acZ - abZ * acY;\r\n out[1] = abZ * acX - abX * acZ;\r\n out[2] = abX * acY - abY * acX;\r\n\r\n const length = Math.hypot(out[0], out[1], out[2]);\r\n\r\n if (length > 0)\r\n {\r\n out[0] /= length;\r\n out[1] /= length;\r\n out[2] /= length;\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Twice the area of a triangle.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {number} Twice the triangle area.\r\n */\r\nexport function triangleArea2(a, b, c)\r\n{\r\n const normal = [ 0, 0, 0 ];\r\n cross(\r\n normal,\r\n [ b[0] - a[0], b[1] - a[1], b[2] - a[2] ],\r\n [ c[0] - a[0], c[1] - a[1], c[2] - a[2] ]\r\n );\r\n return vec3Length(normal);\r\n}\r\n\r\n/**\r\n * Whether a triangle is degenerate.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @param {number} [epsilon] Area epsilon.\r\n * @returns {boolean} True when the triangle has no useful area.\r\n */\r\nexport function isDegenerateTriangle(a, b, c, epsilon = 1e-12)\r\n{\r\n return triangleArea2(a, b, c) <= epsilon;\r\n}\r\n\r\n/**\r\n * Compute axis-aligned bounds from flat xyz positions.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @returns {{minBounds: number[], maxBounds: number[]}} Bounds.\r\n */\r\nexport function computeBoundsFromPositions(positions)\r\n{\r\n validatePositions(positions);\r\n\r\n if (!positions.length)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n const\r\n minBounds = [ positions[0], positions[1], positions[2] ],\r\n maxBounds = [ positions[0], positions[1], positions[2] ];\r\n\r\n for (let i = 3; i < positions.length; i += 3)\r\n {\r\n for (let c = 0; c < 3; c++)\r\n {\r\n const value = positions[i + c];\r\n if (value < minBounds[c]) minBounds[c] = value;\r\n if (value > maxBounds[c]) maxBounds[c] = value;\r\n }\r\n }\r\n\r\n return { minBounds, maxBounds };\r\n}\r\n\r\n/**\r\n * Compute axis-aligned bounds from `{ vertices: [[x,y,z], ...] }` triangles.\r\n *\r\n * @param {Array<{vertices: Array<ArrayLike<number>>}>} triangles Triangle records.\r\n * @returns {{minBounds: number[], maxBounds: number[]}} Bounds.\r\n */\r\nexport function computeBoundsFromTriangles(triangles)\r\n{\r\n if (!triangles.length)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n const\r\n minBounds = [ Infinity, Infinity, Infinity ],\r\n maxBounds = [ -Infinity, -Infinity, -Infinity ];\r\n\r\n let hasVertex = false;\r\n for (const triangle of triangles)\r\n {\r\n for (const vertex of triangle.vertices)\r\n {\r\n hasVertex = true;\r\n for (let c = 0; c < 3; c++)\r\n {\r\n if (vertex[c] < minBounds[c]) minBounds[c] = vertex[c];\r\n if (vertex[c] > maxBounds[c]) maxBounds[c] = vertex[c];\r\n }\r\n }\r\n }\r\n\r\n if (!hasVertex)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n return { minBounds, maxBounds };\r\n}\r\n\r\n// Double-precision scratch for generateNormals. Plain Arrays deliberately: see\r\n// the note at their use for why the element type is not the math namespace's.\r\nconst NORMAL_SCRATCH = [ 0, 0, 0 ];\r\nconst EDGE_B_SCRATCH = [ 0, 0, 0 ];\r\nconst EDGE_C_SCRATCH = [ 0, 0, 0 ];\r\n\r\n/**\r\n * Generate area-weighted vertex normals from positions and triangle indices.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @returns {Float32Array} Flat xyz normals.\r\n */\r\nexport function generateNormals(positions, indices)\r\n{\r\n validatePositions(positions);\r\n validateIndices(indices, positions.length / 3);\r\n\r\n const\r\n vertexCount = positions.length / 3,\r\n normals = new Float32Array(positions.length);\r\n\r\n // Module scratch, not pooled, and the element type is the point. The\r\n // previous form cost FOUR array literals per triangle; these cost none. But\r\n // vec3.alloc() would hand back a Float32Array, and the literals it replaced\r\n // were plain Arrays - float64. Rounding each edge vector and face normal to\r\n // f32 BEFORE accumulating changes the result: ~1e-7 relative at world scale,\r\n // and far worse wherever a cross product nearly cancels.\r\n //\r\n // THE RULE: a scratch's element type follows its DESTINATION, not whatever\r\n // the math namespace hands out. Here the arithmetic is double and only the\r\n // final store is f32, so the scratch is double.\r\n //\r\n // Reused across calls, which is safe because this runs to completion without\r\n // yielding and never re-enters. Every component is written before it is read:\r\n // `cross` fills its whole destination and only reads its operands.\r\n const faceNormal = NORMAL_SCRATCH,\r\n edgeB = EDGE_B_SCRATCH,\r\n edgeC = EDGE_C_SCRATCH;\r\n\r\n for (let t = 0; t < indices.length; t += 3)\r\n {\r\n const\r\n ia = indices[t] * 3,\r\n ib = indices[t + 1] * 3,\r\n ic = indices[t + 2] * 3,\r\n ax = positions[ia],\r\n ay = positions[ia + 1],\r\n az = positions[ia + 2];\r\n\r\n edgeB[0] = positions[ib] - ax;\r\n edgeB[1] = positions[ib + 1] - ay;\r\n edgeB[2] = positions[ib + 2] - az;\r\n\r\n edgeC[0] = positions[ic] - ax;\r\n edgeC[1] = positions[ic + 1] - ay;\r\n edgeC[2] = positions[ic + 2] - az;\r\n\r\n cross(faceNormal, edgeB, edgeC);\r\n\r\n const\r\n nx = faceNormal[0],\r\n ny = faceNormal[1],\r\n nz = faceNormal[2];\r\n\r\n // Unrolled over the triangle's three vertices, which is what the\r\n // `for (const offset of [ ia, ib, ic ])` form allocated for.\r\n normals[ia] += nx;\r\n normals[ia + 1] += ny;\r\n normals[ia + 2] += nz;\r\n normals[ib] += nx;\r\n normals[ib + 1] += ny;\r\n normals[ib + 2] += nz;\r\n normals[ic] += nx;\r\n normals[ic + 1] += ny;\r\n normals[ic + 2] += nz;\r\n }\r\n\r\n\r\n for (let i = 0; i < vertexCount; i++)\r\n {\r\n const\r\n offset = i * 3,\r\n length = Math.hypot(normals[offset], normals[offset + 1], normals[offset + 2]) || 1;\r\n\r\n normals[offset] /= length;\r\n normals[offset + 1] /= length;\r\n normals[offset + 2] /= length;\r\n }\r\n\r\n return normals;\r\n}\r\n\r\n/**\r\n * Generate per-vertex tangents from positions, normals, UVs and indices.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} uvs Flat uv coordinates.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @returns {Float32Array} Flat xyz tangents.\r\n */\r\nexport function generateTangents(positions, normals, uvs, indices)\r\n{\r\n validatePositions(positions);\r\n\r\n const\r\n vertexCount = positions.length / 3,\r\n tan1 = new Float32Array(vertexCount * 3),\r\n tan2 = new Float32Array(vertexCount * 3);\r\n\r\n if (!normals || normals.length !== positions.length ||\r\n !uvs || uvs.length !== vertexCount * 2)\r\n {\r\n throw new Error(\"Tangent channels do not match the vertex count\");\r\n }\r\n validateIndices(indices, vertexCount);\r\n\r\n for (let t = 0; t < indices.length; t += 3)\r\n {\r\n const\r\n i0 = indices[t],\r\n i1 = indices[t + 1],\r\n i2 = indices[t + 2],\r\n p0 = i0 * 3,\r\n p1 = i1 * 3,\r\n p2 = i2 * 3,\r\n t0 = i0 * 2,\r\n t1 = i1 * 2,\r\n t2 = i2 * 2,\r\n x1 = positions[p1] - positions[p0],\r\n y1 = positions[p1 + 1] - positions[p0 + 1],\r\n z1 = positions[p1 + 2] - positions[p0 + 2],\r\n x2 = positions[p2] - positions[p0],\r\n y2 = positions[p2 + 1] - positions[p0 + 1],\r\n z2 = positions[p2 + 2] - positions[p0 + 2],\r\n s1 = uvs[t1] - uvs[t0],\r\n v1 = uvs[t1 + 1] - uvs[t0 + 1],\r\n s2 = uvs[t2] - uvs[t0],\r\n v2 = uvs[t2 + 1] - uvs[t0 + 1],\r\n divisor = s1 * v2 - s2 * v1,\r\n scale = divisor ? 1 / divisor : 0,\r\n sx = (v2 * x1 - v1 * x2) * scale,\r\n sy = (v2 * y1 - v1 * y2) * scale,\r\n sz = (v2 * z1 - v1 * z2) * scale,\r\n tx = (s1 * x2 - s2 * x1) * scale,\r\n ty = (s1 * y2 - s2 * y1) * scale,\r\n tz = (s1 * z2 - s2 * z1) * scale;\r\n\r\n // Unrolled over the triangle's three vertices: the\r\n // `for (const offset of [ p0, p1, p2 ])` form allocated an array literal\r\n // and an iterator per triangle.\r\n tan1[p0] += sx;\r\n tan1[p0 + 1] += sy;\r\n tan1[p0 + 2] += sz;\r\n tan2[p0] += tx;\r\n tan2[p0 + 1] += ty;\r\n tan2[p0 + 2] += tz;\r\n tan1[p1] += sx;\r\n tan1[p1 + 1] += sy;\r\n tan1[p1 + 2] += sz;\r\n tan2[p1] += tx;\r\n tan2[p1 + 1] += ty;\r\n tan2[p1 + 2] += tz;\r\n tan1[p2] += sx;\r\n tan1[p2 + 1] += sy;\r\n tan1[p2 + 2] += sz;\r\n tan2[p2] += tx;\r\n tan2[p2 + 1] += ty;\r\n tan2[p2 + 2] += tz;\r\n }\r\n\r\n const\r\n tangents = new Float32Array(vertexCount * 3),\r\n handedness = new Float32Array(vertexCount);\r\n\r\n for (let i = 0; i < vertexCount; i++)\r\n {\r\n const\r\n offset = i * 3,\r\n nx = normals[offset],\r\n ny = normals[offset + 1],\r\n nz = normals[offset + 2],\r\n tx = tan1[offset],\r\n ty = tan1[offset + 1],\r\n tz = tan1[offset + 2],\r\n normalDotTangent = nx * tx + ny * ty + nz * tz;\r\n\r\n let ox = tx - nx * normalDotTangent,\r\n oy = ty - ny * normalDotTangent,\r\n oz = tz - nz * normalDotTangent;\r\n\r\n const length = Math.hypot(ox, oy, oz) || 1;\r\n\r\n ox /= length;\r\n oy /= length;\r\n oz /= length;\r\n\r\n tangents[offset] = ox;\r\n tangents[offset + 1] = oy;\r\n tangents[offset + 2] = oz;\r\n handedness[i] = (\r\n (ny * oz - nz * oy) * tan2[offset] +\r\n (nz * ox - nx * oz) * tan2[offset + 1] +\r\n (nx * oy - ny * ox) * tan2[offset + 2]\r\n ) < 0 ? -1 : 1;\r\n }\r\n\r\n Object.defineProperty(tangents, \"handedness\", { value: handedness });\r\n return tangents;\r\n}\r\n\r\n/**\r\n * Generate a complete tangent frame while preserving per-vertex UV handedness.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} uvs Flat uv coordinates.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @param {object} [options] Generation options.\r\n * @returns {{tangents: Float32Array, binormals: number[], handedness: Float32Array}}\r\n */\r\nexport function generateTangentFrames(positions, normals, uvs, indices, options)\r\n{\r\n const\r\n tangents = generateTangents(positions, normals, uvs, indices),\r\n handedness = tangents.handedness,\r\n binormals = generateBiNormals(normals, tangents, { ...options, handedness });\r\n\r\n return { tangents, binormals, handedness };\r\n}\r\n\r\n/**\r\n * Generate binormals as normalized `normal x tangent`.\r\n *\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} tangents Flat xyz tangents.\r\n * @param {object} [options] Generation options.\r\n * @param {\"right\"|\"left\"} [options.uvHandedness] Handedness of generated basis.\r\n * @returns {number[]} Flat xyz binormals.\r\n */\r\nexport function generateBiNormals(normals, tangents, options = {})\r\n{\r\n if (normals.length !== tangents.length || normals.length % 3 !== 0)\r\n {\r\n throw new Error(\"generateBiNormals requires matching complete xyz channels\");\r\n }\r\n\r\n const\r\n conventionSign = options.uvHandedness === \"left\" ? -1 : 1,\r\n binormals = new Array(normals.length);\r\n\r\n for (let i = 0; i < normals.length; i += 3)\r\n {\r\n const\r\n vertexSign = options.handedness?.[i / 3] ?? tangents.handedness?.[i / 3] ?? 1,\r\n sign = conventionSign * vertexSign;\r\n const b = normalize(\r\n [ 0, 0, 0 ],\r\n [\r\n normals[i + 1] * tangents[i + 2] - normals[i + 2] * tangents[i + 1],\r\n normals[i + 2] * tangents[i] - normals[i] * tangents[i + 2],\r\n normals[i] * tangents[i + 1] - normals[i + 1] * tangents[i]\r\n ]\r\n );\r\n binormals[i] = b[0] * sign;\r\n binormals[i + 1] = b[1] * sign;\r\n binormals[i + 2] = b[2] * sign;\r\n }\r\n\r\n return binormals;\r\n}\r\n\r\nexport const mesh = Object.freeze({\r\n triangleNormal,\r\n triangleNormalTo,\r\n triangleArea2,\r\n isDegenerateTriangle,\r\n computeBoundsFromPositions,\r\n computeBoundsFromTriangles,\r\n generateNormals,\r\n generateTangents,\r\n generateTangentFrames,\r\n generateBiNormals\r\n});\r\n"],"names":["validatePositions","positions","length","Error","validateIndices","indices","vertexCount","i","Number","isInteger","triangleNormal","a","b","c","triangleNormalTo","out","abX","abY","abZ","acX","acY","acZ","Math","hypot","triangleArea2","normal","cross","vec3Length","isDegenerateTriangle","epsilon","computeBoundsFromPositions","minBounds","maxBounds","value","computeBoundsFromTriangles","triangles","Infinity","hasVertex","triangle","vertex","vertices","NORMAL_SCRATCH","EDGE_B_SCRATCH","EDGE_C_SCRATCH","generateNormals","normals","Float32Array","faceNormal","edgeB","edgeC","t","ia","ib","ic","ax","ay","az","nx","ny","nz","offset","generateTangents","uvs","tan1","tan2","i0","i1","i2","p0","p1","p2","t0","t1","t2","x1","y1","z1","x2","y2","z2","s1","v1","s2","v2","divisor","scale","sx","sy","sz","tx","ty","tz","tangents","handedness","normalDotTangent","ox","oy","oz","Object","defineProperty","generateTangentFrames","options","binormals","generateBiNormals","conventionSign","uvHandedness","Array","vertexSign","sign","normalize","mesh","freeze"],"mappings":"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"}
@@ -1,18 +1,19 @@
1
+ import { random } from './random.js';
1
2
  import { vec3 } from './vec3.js';
2
3
  import { vec4 } from './vec4.js';
3
4
 
4
5
  const noise = {};
5
6
 
6
- /**
7
- * Generates turbulent noise
8
- *
9
- * @param {vec4} out
10
- * @param {number} pos_0
11
- * @param {number} pos_1
12
- * @param {number} pos_2
13
- * @param {number} pos_3
14
- * @param {number} power
15
- * @returns {vec4} out
7
+ /**
8
+ * Generates turbulent noise
9
+ *
10
+ * @param {vec4} out
11
+ * @param {number} pos_0
12
+ * @param {number} pos_1
13
+ * @param {number} pos_2
14
+ * @param {number} pos_3
15
+ * @param {number} power
16
+ * @returns {vec4} out
16
17
  */
17
18
  noise.turbulence = function () {
18
19
  const s_noiseLookup = [],
@@ -20,8 +21,8 @@ noise.turbulence = function () {
20
21
  s_globalNoiseTemps = [];
21
22
  let s_initialized = false;
22
23
 
23
- /**
24
- * Initializes noise
24
+ /**
25
+ * Initializes noise
25
26
  */
26
27
  function initialize() {
27
28
  for (let i = 0; i < 256; i++) {
@@ -95,40 +96,18 @@ noise.turbulence = function () {
95
96
  };
96
97
  }();
97
98
 
98
- /**
99
- * Creates Carbon's seeded one-dimensional Perlin-noise utility.
100
- *
101
- * This ports `TriPerlinNoise` from `TriMath.cpp`: gradients are generated by
102
- * `std::mt19937`, sampling uses Carbon's cubic S-curve, and the returned
103
- * object owns the native class's otherwise-private gradient table.
104
- *
105
- * @param {number} [seed]
106
- * @returns {{ sample: (x: number) => number, fractalSum: (x: number, octaves: number, amplitudeScale?: number, frequencyScale?: number) => number }}
99
+ /**
100
+ * Creates Carbon's seeded one-dimensional Perlin-noise utility.
101
+ *
102
+ * This ports `TriPerlinNoise` from `TriMath.cpp`: gradients are generated by
103
+ * `std::mt19937`, sampling uses Carbon's cubic S-curve, and the returned
104
+ * object owns the native class's otherwise-private gradient table.
105
+ *
106
+ * @param {number} [seed]
107
+ * @returns {{ sample: (x: number) => number, fractalSum: (x: number, octaves: number, amplitudeScale?: number, frequencyScale?: number) => number }}
107
108
  */
108
109
  noise.createPerlinNoise1D = function (seed = Math.floor(Math.random() * 0x100000000)) {
109
- const state = new Uint32Array(624);
110
- state[0] = Number(seed) >>> 0;
111
- for (let index = 1; index < state.length; index++) {
112
- const previous = state[index - 1] ^ state[index - 1] >>> 30;
113
- state[index] = Math.imul(1812433253, previous) + index >>> 0;
114
- }
115
- let cursor = state.length;
116
- const twist = () => {
117
- for (let index = 0; index < state.length; index++) {
118
- const bits = state[index] & 0x80000000 | state[(index + 1) % state.length] & 0x7fffffff;
119
- state[index] = state[(index + 397) % state.length] ^ bits >>> 1 ^ (bits & 1 ? 0x9908b0df : 0);
120
- }
121
- cursor = 0;
122
- };
123
- const next = () => {
124
- if (cursor >= state.length) twist();
125
- let value = state[cursor++];
126
- value ^= value >>> 11;
127
- value ^= value << 7 & 0x9d2c5680;
128
- value ^= value << 15 & 0xefc60000;
129
- value ^= value >>> 18;
130
- return value >>> 0;
131
- };
110
+ const next = random.mt19937(seed);
132
111
  const gradients = Float64Array.from({
133
112
  length: 256
134
113
  }, () => (next() % 512 - 256) / 256);
@@ -161,27 +140,27 @@ noise.createPerlinNoise1D = function (seed = Math.floor(Math.random() * 0x100000
161
140
  };
162
141
  const s_fixedPerlinNoise1D = noise.createPerlinNoise1D(0);
163
142
 
164
- /**
165
- * Evaluates Carbon's global fixed-seed `PerlinNoise1D` function.
166
- *
167
- * @param {number} x
168
- * @param {number} inverseAmplitude
169
- * @param {number} frequency
170
- * @param {number} octaves
171
- * @returns {number}
143
+ /**
144
+ * Evaluates Carbon's global fixed-seed `PerlinNoise1D` function.
145
+ *
146
+ * @param {number} x
147
+ * @param {number} inverseAmplitude
148
+ * @param {number} frequency
149
+ * @param {number} octaves
150
+ * @returns {number}
172
151
  */
173
152
  noise.carbonPerlin1D = function (x, inverseAmplitude, frequency, octaves) {
174
153
  return s_fixedPerlinNoise1D.fractalSum(x, octaves, 1 / inverseAmplitude, frequency);
175
154
  };
176
155
 
177
- /**
178
- * Legacy ccpwgl `Perlin_noise1` helper.
179
- *
180
- * This intentionally remains separate from Carbon's fixed-seed
181
- * `TriPerlinNoise` implementation above.
182
- *
183
- * @param {number} a
184
- * @returns {number}
156
+ /**
157
+ * Legacy ccpwgl `Perlin_noise1` helper.
158
+ *
159
+ * This intentionally remains separate from Carbon's fixed-seed
160
+ * `TriPerlinNoise` implementation above.
161
+ *
162
+ * @param {number} a
163
+ * @returns {number}
185
164
  */
186
165
  noise.perlin1 = function () {
187
166
  let initialized = false,
@@ -221,14 +200,14 @@ noise.perlin1 = function () {
221
200
  };
222
201
  }();
223
202
 
224
- /**
225
- * Legacy ccpwgl fractal sum built on randomized `perlin1`.
226
- *
227
- * @param {number} x
228
- * @param {number} alpha
229
- * @param {number} beta
230
- * @param {number} octaves
231
- * @returns {number}
203
+ /**
204
+ * Legacy ccpwgl fractal sum built on randomized `perlin1`.
205
+ *
206
+ * @param {number} x
207
+ * @param {number} alpha
208
+ * @param {number} beta
209
+ * @param {number} octaves
210
+ * @returns {number}
232
211
  */
233
212
  noise.perlin1D = function (x, alpha, beta, octaves) {
234
213
  let sum = 0,
@@ -1 +1 @@
1
- {"version":3,"file":"noise.js","sources":["../../../../src/global/math/noise.js"],"sourcesContent":["import { vec3 } from \"./vec3.js\";\nimport { vec4 } from \"./vec4.js\";\n\nexport const noise = {};\n\n/**\n * Generates turbulent noise\n *\n * @param {vec4} out\n * @param {number} pos_0\n * @param {number} pos_1\n * @param {number} pos_2\n * @param {number} pos_3\n * @param {number} power\n * @returns {vec4} out\n */\nnoise.turbulence = (function()\n{\n const\n s_noiseLookup = [],\n s_permutations = [],\n s_globalNoiseTemps = [];\n\n let s_initialized = false;\n\n /**\n * Initializes noise\n */\n function initialize()\n {\n for (let i = 0; i < 256; i++)\n {\n s_noiseLookup[i] = vec4.fromValues(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);\n s_permutations[i] = i;\n }\n\n let i = 256;\n while (--i)\n {\n const\n tmp = s_permutations[i],\n index = Math.floor(Math.random() * 256);\n\n s_permutations[i] = s_permutations[index];\n s_permutations[index] = tmp;\n }\n\n for (let i = 0; i < 256; i++)\n {\n s_permutations[256 + i] = s_permutations[i];\n s_noiseLookup[256 + i] = s_noiseLookup[i];\n s_noiseLookup[256 * 2 + i] = s_noiseLookup[i];\n }\n\n for (let i = 0; i < 15; ++i)\n {\n s_globalNoiseTemps[i] = vec3.create();\n }\n\n s_initialized = true;\n }\n\n return function turbulence(out, pos_0, pos_1, pos_2, pos_3, power)\n {\n if (!s_initialized) initialize();\n\n pos_0 += 4096;\n pos_1 += 4096;\n pos_2 += 4096;\n pos_3 += 4096;\n\n let a_0 = Math.floor(pos_0),\n a_1 = Math.floor(pos_1),\n a_2 = Math.floor(pos_2),\n a_3 = Math.floor(pos_3);\n\n const\n t_0 = pos_0 - a_0,\n t_1 = pos_1 - a_1,\n t_2 = pos_2 - a_2,\n t_3 = pos_3 - a_3;\n\n a_0 &= 255;\n a_1 &= 255;\n a_2 &= 255;\n a_3 &= 255;\n\n const\n b_0 = a_0 + 1,\n b_1 = a_1 + 1,\n b_2 = a_2 + 1,\n b_3 = a_3 + 1;\n\n const\n i = s_permutations[a_0],\n j = s_permutations[b_0];\n\n const\n b00 = s_permutations[i + a_1],\n b10 = s_permutations[j + a_1],\n b01 = s_permutations[i + b_1],\n b11 = s_permutations[j + b_1];\n\n let c00 = vec3.lerp(s_globalNoiseTemps[0], s_noiseLookup[b00 + a_2 + a_3], s_noiseLookup[b10 + a_2 + a_3], t_0);\n let c10 = vec3.lerp(s_globalNoiseTemps[1], s_noiseLookup[b01 + a_2 + a_3], s_noiseLookup[b11 + a_2 + a_3], t_0);\n let c01 = vec3.lerp(s_globalNoiseTemps[2], s_noiseLookup[b00 + b_2 + a_3], s_noiseLookup[b10 + b_2 + a_3], t_0);\n let c11 = vec3.lerp(s_globalNoiseTemps[3], s_noiseLookup[b01 + b_2 + a_3], s_noiseLookup[b11 + b_2 + a_3], t_0); // Carbon Noise4D: b01/b11 corners (fixed 2026-07-23)\n let c0 = vec3.lerp(s_globalNoiseTemps[4], c00, c10, t_1);\n let c1 = vec3.lerp(s_globalNoiseTemps[5], c01, c11, t_1);\n const c = vec3.lerp(s_globalNoiseTemps[6], c0, c1, t_2);\n\n c00 = vec3.lerp(s_globalNoiseTemps[7], s_noiseLookup[b00 + a_2 + b_3], s_noiseLookup[b10 + a_2 + b_3], t_0);\n c10 = vec3.lerp(s_globalNoiseTemps[8], s_noiseLookup[b01 + a_2 + b_3], s_noiseLookup[b11 + a_2 + b_3], t_0);\n c01 = vec3.lerp(s_globalNoiseTemps[9], s_noiseLookup[b00 + b_2 + b_3], s_noiseLookup[b10 + b_2 + b_3], t_0);\n c11 = vec3.lerp(s_globalNoiseTemps[10], s_noiseLookup[b01 + b_2 + b_3], s_noiseLookup[b11 + b_2 + b_3], t_0); // Carbon Noise4D: b01/b11 corners (fixed 2026-07-23)\n c0 = vec3.lerp(s_globalNoiseTemps[11], c00, c10, t_1);\n c1 = vec3.lerp(s_globalNoiseTemps[12], c01, c11, t_1);\n const d = vec3.lerp(s_globalNoiseTemps[13], c0, c1, t_2);\n const r = vec3.lerp(s_globalNoiseTemps[14], c, d, t_3);\n\n out[0] += r[0] * power;\n out[1] += r[1] * power;\n out[2] += r[2] * power;\n return out;\n };\n})();\n\n/**\n * Creates Carbon's seeded one-dimensional Perlin-noise utility.\n *\n * This ports `TriPerlinNoise` from `TriMath.cpp`: gradients are generated by\n * `std::mt19937`, sampling uses Carbon's cubic S-curve, and the returned\n * object owns the native class's otherwise-private gradient table.\n *\n * @param {number} [seed]\n * @returns {{ sample: (x: number) => number, fractalSum: (x: number, octaves: number, amplitudeScale?: number, frequencyScale?: number) => number }}\n */\nnoise.createPerlinNoise1D = function(seed = Math.floor(Math.random() * 0x100000000))\n{\n const state = new Uint32Array(624);\n state[0] = Number(seed) >>> 0;\n for (let index = 1; index < state.length; index++)\n {\n const previous = state[index - 1] ^ (state[index - 1] >>> 30);\n state[index] = (Math.imul(1812433253, previous) + index) >>> 0;\n }\n\n let cursor = state.length;\n const twist = () =>\n {\n for (let index = 0; index < state.length; index++)\n {\n const bits = (state[index] & 0x80000000) | (state[(index + 1) % state.length] & 0x7fffffff);\n state[index] = state[(index + 397) % state.length] ^ (bits >>> 1) ^ (bits & 1 ? 0x9908b0df : 0);\n }\n cursor = 0;\n };\n const next = () =>\n {\n if (cursor >= state.length) twist();\n let value = state[cursor++];\n value ^= value >>> 11;\n value ^= (value << 7) & 0x9d2c5680;\n value ^= (value << 15) & 0xefc60000;\n value ^= value >>> 18;\n return value >>> 0;\n };\n const gradients = Float64Array.from(\n { length: 256 },\n () => ((next() % 512) - 256) / 256\n );\n\n const sample = x =>\n {\n const floor = Math.floor(x),\n first = floor & 255,\n second = (first + 1) & 255,\n x0 = x - floor,\n x1 = x0 - 1,\n value0 = x0 * gradients[first],\n value1 = x1 * gradients[second],\n curve = x0 * x0 * (3 - 2 * x0);\n\n return value0 + curve * (value1 - value0);\n };\n const fractalSum = (x, octaves, amplitudeScale = 0.5, frequencyScale = 2) =>\n {\n let sum = 0,\n scale = 1;\n const count = Number.isFinite(octaves) ? Math.max(0, Math.trunc(octaves)) : 0;\n\n for (let index = 0; index < count; index++)\n {\n sum += sample(x) * scale;\n scale *= amplitudeScale;\n x *= frequencyScale;\n }\n return sum;\n };\n\n return { sample, fractalSum };\n};\n\nconst s_fixedPerlinNoise1D = noise.createPerlinNoise1D(0);\n\n/**\n * Evaluates Carbon's global fixed-seed `PerlinNoise1D` function.\n *\n * @param {number} x\n * @param {number} inverseAmplitude\n * @param {number} frequency\n * @param {number} octaves\n * @returns {number}\n */\nnoise.carbonPerlin1D = function(x, inverseAmplitude, frequency, octaves)\n{\n return s_fixedPerlinNoise1D.fractalSum(x, octaves, 1 / inverseAmplitude, frequency);\n};\n\n/**\n * Legacy ccpwgl `Perlin_noise1` helper.\n *\n * This intentionally remains separate from Carbon's fixed-seed\n * `TriPerlinNoise` implementation above.\n *\n * @param {number} a\n * @returns {number}\n */\nnoise.perlin1 = (function()\n{\n let initialized = false,\n permutations = null,\n gradients = null;\n\n function initialize()\n {\n permutations = new Array(514);\n gradients = new Array(514);\n let index = 0;\n\n for (; index < 256; index++)\n {\n permutations[index] = index;\n gradients[index] = Math.random() * 2 - 1;\n }\n\n while (--index)\n {\n const value = permutations[index],\n randomIndex = Math.floor(Math.random() * 256);\n permutations[index] = permutations[randomIndex];\n permutations[randomIndex] = value;\n }\n\n for (index = 0; index < 258; index++)\n {\n permutations[256 + index] = permutations[index];\n gradients[256 + index] = gradients[index];\n }\n initialized = true;\n }\n\n return function perlin1(a)\n {\n if (!initialized) initialize();\n\n const position = a + 4096,\n first = Math.floor(position) & 255,\n second = (first + 1) & 255,\n x0 = position - Math.floor(position),\n x1 = x0 - 1,\n curve = x0 * x0 * (3 - 2 * x0),\n value0 = x0 * gradients[permutations[first]],\n value1 = x1 * gradients[permutations[second]];\n\n return value0 + curve * (value1 - value0);\n };\n})();\n\n/**\n * Legacy ccpwgl fractal sum built on randomized `perlin1`.\n *\n * @param {number} x\n * @param {number} alpha\n * @param {number} beta\n * @param {number} octaves\n * @returns {number}\n */\nnoise.perlin1D = function(x, alpha, beta, octaves)\n{\n let sum = 0,\n position = x,\n scale = 1;\n\n for (let index = 0; index < octaves; index++)\n {\n sum += noise.perlin1(position) / scale;\n scale *= alpha;\n position *= beta;\n }\n return sum;\n};\n\nexport const {\n turbulence,\n createPerlinNoise1D,\n carbonPerlin1D,\n perlin1,\n perlin1D\n} = noise;\n"],"names":["noise","turbulence","s_noiseLookup","s_permutations","s_globalNoiseTemps","s_initialized","initialize","i","vec4","fromValues","Math","random","tmp","index","floor","vec3","create","out","pos_0","pos_1","pos_2","pos_3","power","a_0","a_1","a_2","a_3","t_0","t_1","t_2","t_3","b_0","b_1","b_2","b_3","j","b00","b10","b01","b11","c00","lerp","c10","c01","c11","c0","c1","c","d","r","createPerlinNoise1D","seed","state","Uint32Array","Number","length","previous","imul","cursor","twist","bits","next","value","gradients","Float64Array","from","sample","x","first","second","x0","x1","value0","value1","curve","fractalSum","octaves","amplitudeScale","frequencyScale","sum","scale","count","isFinite","max","trunc","s_fixedPerlinNoise1D","carbonPerlin1D","inverseAmplitude","frequency","perlin1","initialized","permutations","Array","randomIndex","a","position","perlin1D","alpha","beta"],"mappings":"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"}
1
+ {"version":3,"file":"noise.js","sources":["../../../../src/global/math/noise.js"],"sourcesContent":["import { random } from \"./random.js\";\r\nimport { vec3 } from \"./vec3.js\";\r\nimport { vec4 } from \"./vec4.js\";\r\n\r\nexport const noise = {};\r\n\r\n/**\r\n * Generates turbulent noise\r\n *\r\n * @param {vec4} out\r\n * @param {number} pos_0\r\n * @param {number} pos_1\r\n * @param {number} pos_2\r\n * @param {number} pos_3\r\n * @param {number} power\r\n * @returns {vec4} out\r\n */\r\nnoise.turbulence = (function()\r\n{\r\n const\r\n s_noiseLookup = [],\r\n s_permutations = [],\r\n s_globalNoiseTemps = [];\r\n\r\n let s_initialized = false;\r\n\r\n /**\r\n * Initializes noise\r\n */\r\n function initialize()\r\n {\r\n for (let i = 0; i < 256; i++)\r\n {\r\n s_noiseLookup[i] = vec4.fromValues(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);\r\n s_permutations[i] = i;\r\n }\r\n\r\n let i = 256;\r\n while (--i)\r\n {\r\n const\r\n tmp = s_permutations[i],\r\n index = Math.floor(Math.random() * 256);\r\n\r\n s_permutations[i] = s_permutations[index];\r\n s_permutations[index] = tmp;\r\n }\r\n\r\n for (let i = 0; i < 256; i++)\r\n {\r\n s_permutations[256 + i] = s_permutations[i];\r\n s_noiseLookup[256 + i] = s_noiseLookup[i];\r\n s_noiseLookup[256 * 2 + i] = s_noiseLookup[i];\r\n }\r\n\r\n for (let i = 0; i < 15; ++i)\r\n {\r\n s_globalNoiseTemps[i] = vec3.create();\r\n }\r\n\r\n s_initialized = true;\r\n }\r\n\r\n return function turbulence(out, pos_0, pos_1, pos_2, pos_3, power)\r\n {\r\n if (!s_initialized) initialize();\r\n\r\n pos_0 += 4096;\r\n pos_1 += 4096;\r\n pos_2 += 4096;\r\n pos_3 += 4096;\r\n\r\n let a_0 = Math.floor(pos_0),\r\n a_1 = Math.floor(pos_1),\r\n a_2 = Math.floor(pos_2),\r\n a_3 = Math.floor(pos_3);\r\n\r\n const\r\n t_0 = pos_0 - a_0,\r\n t_1 = pos_1 - a_1,\r\n t_2 = pos_2 - a_2,\r\n t_3 = pos_3 - a_3;\r\n\r\n a_0 &= 255;\r\n a_1 &= 255;\r\n a_2 &= 255;\r\n a_3 &= 255;\r\n\r\n const\r\n b_0 = a_0 + 1,\r\n b_1 = a_1 + 1,\r\n b_2 = a_2 + 1,\r\n b_3 = a_3 + 1;\r\n\r\n const\r\n i = s_permutations[a_0],\r\n j = s_permutations[b_0];\r\n\r\n const\r\n b00 = s_permutations[i + a_1],\r\n b10 = s_permutations[j + a_1],\r\n b01 = s_permutations[i + b_1],\r\n b11 = s_permutations[j + b_1];\r\n\r\n let c00 = vec3.lerp(s_globalNoiseTemps[0], s_noiseLookup[b00 + a_2 + a_3], s_noiseLookup[b10 + a_2 + a_3], t_0);\r\n let c10 = vec3.lerp(s_globalNoiseTemps[1], s_noiseLookup[b01 + a_2 + a_3], s_noiseLookup[b11 + a_2 + a_3], t_0);\r\n let c01 = vec3.lerp(s_globalNoiseTemps[2], s_noiseLookup[b00 + b_2 + a_3], s_noiseLookup[b10 + b_2 + a_3], t_0);\r\n let c11 = vec3.lerp(s_globalNoiseTemps[3], s_noiseLookup[b01 + b_2 + a_3], s_noiseLookup[b11 + b_2 + a_3], t_0); // Carbon Noise4D: b01/b11 corners (fixed 2026-07-23)\r\n let c0 = vec3.lerp(s_globalNoiseTemps[4], c00, c10, t_1);\r\n let c1 = vec3.lerp(s_globalNoiseTemps[5], c01, c11, t_1);\r\n const c = vec3.lerp(s_globalNoiseTemps[6], c0, c1, t_2);\r\n\r\n c00 = vec3.lerp(s_globalNoiseTemps[7], s_noiseLookup[b00 + a_2 + b_3], s_noiseLookup[b10 + a_2 + b_3], t_0);\r\n c10 = vec3.lerp(s_globalNoiseTemps[8], s_noiseLookup[b01 + a_2 + b_3], s_noiseLookup[b11 + a_2 + b_3], t_0);\r\n c01 = vec3.lerp(s_globalNoiseTemps[9], s_noiseLookup[b00 + b_2 + b_3], s_noiseLookup[b10 + b_2 + b_3], t_0);\r\n c11 = vec3.lerp(s_globalNoiseTemps[10], s_noiseLookup[b01 + b_2 + b_3], s_noiseLookup[b11 + b_2 + b_3], t_0); // Carbon Noise4D: b01/b11 corners (fixed 2026-07-23)\r\n c0 = vec3.lerp(s_globalNoiseTemps[11], c00, c10, t_1);\r\n c1 = vec3.lerp(s_globalNoiseTemps[12], c01, c11, t_1);\r\n const d = vec3.lerp(s_globalNoiseTemps[13], c0, c1, t_2);\r\n const r = vec3.lerp(s_globalNoiseTemps[14], c, d, t_3);\r\n\r\n out[0] += r[0] * power;\r\n out[1] += r[1] * power;\r\n out[2] += r[2] * power;\r\n return out;\r\n };\r\n})();\r\n\r\n/**\r\n * Creates Carbon's seeded one-dimensional Perlin-noise utility.\r\n *\r\n * This ports `TriPerlinNoise` from `TriMath.cpp`: gradients are generated by\r\n * `std::mt19937`, sampling uses Carbon's cubic S-curve, and the returned\r\n * object owns the native class's otherwise-private gradient table.\r\n *\r\n * @param {number} [seed]\r\n * @returns {{ sample: (x: number) => number, fractalSum: (x: number, octaves: number, amplitudeScale?: number, frequencyScale?: number) => number }}\r\n */\r\nnoise.createPerlinNoise1D = function(seed = Math.floor(Math.random() * 0x100000000))\r\n{\r\n const next = random.mt19937(seed);\r\n const gradients = Float64Array.from(\r\n { length: 256 },\r\n () => ((next() % 512) - 256) / 256\r\n );\r\n\r\n const sample = x =>\r\n {\r\n const floor = Math.floor(x),\r\n first = floor & 255,\r\n second = (first + 1) & 255,\r\n x0 = x - floor,\r\n x1 = x0 - 1,\r\n value0 = x0 * gradients[first],\r\n value1 = x1 * gradients[second],\r\n curve = x0 * x0 * (3 - 2 * x0);\r\n\r\n return value0 + curve * (value1 - value0);\r\n };\r\n const fractalSum = (x, octaves, amplitudeScale = 0.5, frequencyScale = 2) =>\r\n {\r\n let sum = 0,\r\n scale = 1;\r\n const count = Number.isFinite(octaves) ? Math.max(0, Math.trunc(octaves)) : 0;\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n sum += sample(x) * scale;\r\n scale *= amplitudeScale;\r\n x *= frequencyScale;\r\n }\r\n return sum;\r\n };\r\n\r\n return { sample, fractalSum };\r\n};\r\n\r\nconst s_fixedPerlinNoise1D = noise.createPerlinNoise1D(0);\r\n\r\n/**\r\n * Evaluates Carbon's global fixed-seed `PerlinNoise1D` function.\r\n *\r\n * @param {number} x\r\n * @param {number} inverseAmplitude\r\n * @param {number} frequency\r\n * @param {number} octaves\r\n * @returns {number}\r\n */\r\nnoise.carbonPerlin1D = function(x, inverseAmplitude, frequency, octaves)\r\n{\r\n return s_fixedPerlinNoise1D.fractalSum(x, octaves, 1 / inverseAmplitude, frequency);\r\n};\r\n\r\n/**\r\n * Legacy ccpwgl `Perlin_noise1` helper.\r\n *\r\n * This intentionally remains separate from Carbon's fixed-seed\r\n * `TriPerlinNoise` implementation above.\r\n *\r\n * @param {number} a\r\n * @returns {number}\r\n */\r\nnoise.perlin1 = (function()\r\n{\r\n let initialized = false,\r\n permutations = null,\r\n gradients = null;\r\n\r\n function initialize()\r\n {\r\n permutations = new Array(514);\r\n gradients = new Array(514);\r\n let index = 0;\r\n\r\n for (; index < 256; index++)\r\n {\r\n permutations[index] = index;\r\n gradients[index] = Math.random() * 2 - 1;\r\n }\r\n\r\n while (--index)\r\n {\r\n const value = permutations[index],\r\n randomIndex = Math.floor(Math.random() * 256);\r\n permutations[index] = permutations[randomIndex];\r\n permutations[randomIndex] = value;\r\n }\r\n\r\n for (index = 0; index < 258; index++)\r\n {\r\n permutations[256 + index] = permutations[index];\r\n gradients[256 + index] = gradients[index];\r\n }\r\n initialized = true;\r\n }\r\n\r\n return function perlin1(a)\r\n {\r\n if (!initialized) initialize();\r\n\r\n const position = a + 4096,\r\n first = Math.floor(position) & 255,\r\n second = (first + 1) & 255,\r\n x0 = position - Math.floor(position),\r\n x1 = x0 - 1,\r\n curve = x0 * x0 * (3 - 2 * x0),\r\n value0 = x0 * gradients[permutations[first]],\r\n value1 = x1 * gradients[permutations[second]];\r\n\r\n return value0 + curve * (value1 - value0);\r\n };\r\n})();\r\n\r\n/**\r\n * Legacy ccpwgl fractal sum built on randomized `perlin1`.\r\n *\r\n * @param {number} x\r\n * @param {number} alpha\r\n * @param {number} beta\r\n * @param {number} octaves\r\n * @returns {number}\r\n */\r\nnoise.perlin1D = function(x, alpha, beta, octaves)\r\n{\r\n let sum = 0,\r\n position = x,\r\n scale = 1;\r\n\r\n for (let index = 0; index < octaves; index++)\r\n {\r\n sum += noise.perlin1(position) / scale;\r\n scale *= alpha;\r\n position *= beta;\r\n }\r\n return sum;\r\n};\r\n\r\nexport const {\r\n turbulence,\r\n createPerlinNoise1D,\r\n carbonPerlin1D,\r\n perlin1,\r\n perlin1D\r\n} = noise;\r\n"],"names":["noise","turbulence","s_noiseLookup","s_permutations","s_globalNoiseTemps","s_initialized","initialize","i","vec4","fromValues","Math","random","tmp","index","floor","vec3","create","out","pos_0","pos_1","pos_2","pos_3","power","a_0","a_1","a_2","a_3","t_0","t_1","t_2","t_3","b_0","b_1","b_2","b_3","j","b00","b10","b01","b11","c00","lerp","c10","c01","c11","c0","c1","c","d","r","createPerlinNoise1D","seed","next","mt19937","gradients","Float64Array","from","length","sample","x","first","second","x0","x1","value0","value1","curve","fractalSum","octaves","amplitudeScale","frequencyScale","sum","scale","count","Number","isFinite","max","trunc","s_fixedPerlinNoise1D","carbonPerlin1D","inverseAmplitude","frequency","perlin1","initialized","permutations","Array","value","randomIndex","a","position","perlin1D","alpha","beta"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { GL_FLOAT, GL_UNSIGNED_INT, GL_INT, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_BYTE, GL_BYTE } from '../consts/constants.js';
2
+ import { ARRAY_TYPE } from 'gl-matrix/esm/common.js';
2
3
 
3
4
  function loop(n, f) {
4
5
  const result = Array(n);
@@ -43,12 +44,26 @@ function createPool() {
43
44
  }
44
45
 
45
46
  /**
46
- * Shortcut to allocating a float 32 array
47
+ * Shortcut to allocating an array of gl-matrix's own scalar type.
48
+ *
49
+ * The name says F32 and in every environment we ship it IS Float32Array,
50
+ * because that is what `glMatrix.ARRAY_TYPE` defaults to. But gl-matrix owns
51
+ * that choice and exposes `setMatrixArrayType` to change it, so hardcoding
52
+ * the type here is a real defect: `vec3.alloc()` would hand back a narrower
53
+ * array than `vec3.create()` the moment anything overrode it, and every
54
+ * pooled temporary in the math tree would silently round. Following
55
+ * `ARRAY_TYPE` is what makes a pooled vector interchangeable with a created
56
+ * one. Inherited from ccpwgl, where the same hardcoding is still present.
57
+ *
47
58
  * @param {Number} length
48
- * @returns {Float32Array}
59
+ * @returns {Float32Array|Float64Array} gl-matrix's scalar type.
49
60
  */
50
61
  function allocF32(length) {
51
- const result = new Float32Array(alloc(4 * length), 0, length);
62
+ // gl-matrix falls back to plain `Array` only where Float32Array does not
63
+ // exist, which cannot happen anywhere this runs; the pool hands out views
64
+ // over a shared ArrayBuffer, so it needs a real typed array either way.
65
+ const ScalarArray = ARRAY_TYPE.BYTES_PER_ELEMENT ? ARRAY_TYPE : Float32Array,
66
+ result = new ScalarArray(alloc(ScalarArray.BYTES_PER_ELEMENT * length), 0, length);
52
67
  return result.length !== length ? result.subarray(0, length) : result;
53
68
  }
54
69