@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
@@ -1,6 +1,8 @@
1
- // Source: trinity/trinityal/Tr2DeviceResourceAL.h
2
- // Source: trinity/trinityal/Tr2DeviceResourceAL.cpp
3
- //
1
+ import { applyDecs2311 as _applyDecs2311 } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { impl } from '#schema';
3
+
4
+ let _initProto;
5
+
4
6
  // The base every abstraction-layer resource extends, and the registry that
5
7
  // makes them enumerable.
6
8
  //
@@ -10,18 +12,12 @@
10
12
  // resource and asks it to describe itself; `DestroyDeviceResources` releases
11
13
  // everything in a memory class, which is what a device-lost path needs.
12
14
  //
13
- // ONE DELIBERATE DIFFERENCE, AND IT IS FORCED. Carbon registers in the
14
- // constructor and unregisters in the DESTRUCTOR, so a resource leaves the
15
- // registry when it goes out of scope. JavaScript has no destructor, and a
16
- // FinalizationRegistry runs at the garbage collector's convenience - which is
17
- // no use to a "release everything now" path. So `Destroy()` unregisters, and a
18
- // resource that is never destroyed stays registered. That is the same shape
19
- // Carbon has before its destructor runs, and it makes Destroy the single
20
- // deterministic release point rather than a hint.
21
- //
22
- // The registry therefore holds STRONG references on purpose. A WeakRef set
23
- // would let a resource vanish between "enumerate" and "destroy", which is
24
- // exactly the case this exists to handle.
15
+ // Existing lifetime adaptation: Carbon registers in the constructor and
16
+ // unregisters in the destructor (Tr2DeviceResourceAL.cpp:32-44). JavaScript has
17
+ // no deterministic destructor. This implementation keeps strong registry
18
+ // references and unregisters at explicit Destroy. A resource never destroyed
19
+ // stays registered; destroying and recreating the same object does not register
20
+ // it again. Restoring the forwarding class does not change that lifetime policy.
25
21
 
26
22
  function fail(message) {
27
23
  const error = new Error(`Tr2DeviceResourceAL: ${message}`);
@@ -40,24 +36,26 @@ const Tr2ALMemoryType = Object.freeze({
40
36
  /** Every live resource. Strong by design - see the head comment. */
41
37
  const ALL_RESOURCES = new Set();
42
38
 
43
- /**
44
- * Carbon's `s_resourcesMutated`.
45
- *
46
- * Destroying a resource can create or destroy others, which invalidates an
47
- * iterator mid-walk. Carbon restarts the sweep whenever that happens rather
48
- * than trusting the iterator, and so does this.
39
+ /**
40
+ * Carbon's `s_resourcesMutated`.
41
+ *
42
+ * Destroying a resource can create or destroy others, which invalidates an
43
+ * iterator mid-walk. Carbon restarts the sweep whenever that happens rather
44
+ * than trusting the iterator, and so does this.
49
45
  */
50
46
  let resourcesMutated = false;
51
47
 
52
- /**
53
- * The base of every AL resource.
54
- *
55
- * Subclasses supply `IsValid()`, `GetMemoryClass()` and the work of `Destroy()`;
56
- * Carbon's CRTP `Tr2DeviceResourceAL<T>` forwards the first two, which in
57
- * JavaScript is just ordinary dispatch.
48
+ /**
49
+ * The base of every AL resource.
50
+ *
51
+ * The abstract registry interface is implemented by Tr2DeviceResourceAL's
52
+ * forwarding methods and the concrete backend's Destroy and Describe methods.
58
53
  */
59
54
  class Tr2BaseDeviceResourceAL {
60
- _registered = false;
55
+ static {
56
+ [_initProto] = _applyDecs2311(this, [], [[[impl, impl.adapted, void 0, impl.reason("JavaScript has no pure virtual declarations; calling the missing obligation throws.")], 18, "IsResourceValid"], [[impl, impl.adapted, void 0, impl.reason("JavaScript has no pure virtual declarations; calling the missing obligation throws.")], 18, "GetResourceMemoryClass"], [[impl, impl.adapted, void 0, impl.reason("The empty concrete stub descriptions share this inherited implementation instead of repeating it on each backend class.")], 18, "Describe"], [[impl, impl.adapted, void 0, impl.reason("JavaScript has no deterministic destructor; the existing registry unregisters at explicit Destroy. Recreating that object does not re-register it.")], 18, "Destroy"]]).e;
57
+ }
58
+ _registered = (_initProto(this), false);
61
59
 
62
60
  /** Registers the resource, as Carbon's constructor does. */
63
61
  constructor() {
@@ -66,41 +64,41 @@ class Tr2BaseDeviceResourceAL {
66
64
  resourcesMutated = true;
67
65
  }
68
66
 
69
- /**
70
- * Whether this resource still holds anything.
71
- *
72
- * @returns {boolean} True when live.
67
+ /**
68
+ * Whether this resource still holds anything.
69
+ *
70
+ * @returns {boolean} True when live.
73
71
  */
74
- IsValid() {
75
- fail(`${this.constructor.name} must implement IsValid`);
72
+ IsResourceValid() {
73
+ fail(`${this.constructor.name} must implement IsResourceValid`);
76
74
  }
77
75
 
78
- /**
79
- * Which memory class this resource occupies.
80
- *
81
- * @returns {number} A `Tr2ALMemoryType` value.
76
+ /**
77
+ * Which memory class this resource occupies.
78
+ *
79
+ * @returns {number} A `Tr2ALMemoryType` value.
82
80
  */
83
- GetMemoryClass() {
84
- return Tr2ALMemoryType.AL_MEMORY_MANAGED;
81
+ GetResourceMemoryClass() {
82
+ fail(`${this.constructor.name} must implement GetResourceMemoryClass`);
85
83
  }
86
84
 
87
- /**
88
- * Describes this resource for a device inventory.
89
- *
90
- * Carbon fills a `map<string,string>`. Every stub resource leaves it empty
91
- * EXCEPT `Tr2PipelineStatsQueryAL`, which writes its own type name
92
- * (`Tr2PipelineStatsQueryALStub.cpp:65-68`) - so an unoverridden description
93
- * is faithful rather than lazy, and that one override is faithful too.
94
- *
95
- * @param {object} _description Accumulator, keyed by name.
85
+ /**
86
+ * Describes this resource for a device inventory.
87
+ *
88
+ * Carbon fills a `map<string,string>`. Every stub resource leaves it empty
89
+ * EXCEPT `Tr2PipelineStatsQueryAL`, which writes its own type name
90
+ * (`Tr2PipelineStatsQueryALStub.cpp:65-68`) - so an unoverridden description
91
+ * is faithful rather than lazy, and that one override is faithful too.
92
+ *
93
+ * @param {object} _description Accumulator, keyed by name.
96
94
  */
97
95
  Describe(_description) {}
98
96
 
99
- /**
100
- * Releases the resource. Subclasses override and call `super.Destroy()`.
101
- *
102
- * Unregistering here rather than in a finaliser is what makes the release
103
- * path deterministic; see the head comment.
97
+ /**
98
+ * Releases the resource. Subclasses override and call `super.Destroy()`.
99
+ *
100
+ * Unregistering here rather than in a finaliser is what makes the release
101
+ * path deterministic; see the head comment.
104
102
  */
105
103
  Destroy() {
106
104
  if (!this._registered) return;
@@ -114,10 +112,10 @@ class Tr2BaseDeviceResourceAL {
114
112
  return this._registered;
115
113
  }
116
114
 
117
- /**
118
- * Runs an operation over every live resource.
119
- *
120
- * @param {Function} operation Called with each resource.
115
+ /**
116
+ * Runs an operation over every live resource.
117
+ *
118
+ * @param {Function} operation Called with each resource.
121
119
  */
122
120
  static EnumerateResources(operation) {
123
121
  if (typeof operation !== "function") fail("EnumerateResources needs a function");
@@ -133,40 +131,40 @@ class Tr2BaseDeviceResourceAL {
133
131
  }
134
132
  }
135
133
 
136
- /**
137
- * Describes every VALID resource to the supplied operation.
138
- *
139
- * Carbon skips invalid resources rather than describing them
140
- * (`Tr2DeviceResourceAL.cpp:61`), so a released handle contributes nothing to
141
- * an inventory.
142
- *
143
- * @param {Function} operation Called with `(memoryClass, description)`.
134
+ /**
135
+ * Describes every VALID resource to the supplied operation.
136
+ *
137
+ * Carbon skips invalid resources rather than describing them
138
+ * (`Tr2DeviceResourceAL.cpp:61`), so a released handle contributes nothing to
139
+ * an inventory.
140
+ *
141
+ * @param {Function} operation Called with `(memoryClass, description)`.
144
142
  */
145
143
  function DescribeDeviceResources(operation) {
146
144
  if (typeof operation !== "function") fail("DescribeDeviceResources needs a function");
147
145
  for (const resource of [...ALL_RESOURCES]) {
148
- if (!resource.IsValid()) continue;
146
+ if (!resource.IsResourceValid()) continue;
149
147
  const description = {};
150
148
  resource.Describe(description);
151
- operation(resource.GetMemoryClass(), description);
149
+ operation(resource.GetResourceMemoryClass(), description);
152
150
  }
153
151
  }
154
152
 
155
- /**
156
- * Destroys every valid resource in the given memory classes.
157
- *
158
- * THE RESTART IS CARBON'S AND IS NOT AN OPTIMISATION TO REMOVE. Destroying a
159
- * resource can create or destroy others, so Carbon breaks out and starts the
160
- * sweep again whenever the set changed underneath it
161
- * (`Tr2DeviceResourceAL.cpp:73-89`). Iterating once would skip resources.
162
- *
163
- * @param {number} memoryTypes A bit set of `Tr2ALMemoryType`.
153
+ /**
154
+ * Destroys every valid resource in the given memory classes.
155
+ *
156
+ * THE RESTART IS CARBON'S AND IS NOT AN OPTIMISATION TO REMOVE. Destroying a
157
+ * resource can create or destroy others, so Carbon breaks out and starts the
158
+ * sweep again whenever the set changed underneath it
159
+ * (`Tr2DeviceResourceAL.cpp:73-89`). Iterating once would skip resources.
160
+ *
161
+ * @param {number} memoryTypes A bit set of `Tr2ALMemoryType`.
164
162
  */
165
163
  function DestroyDeviceResources(memoryTypes) {
166
164
  do {
167
165
  resourcesMutated = false;
168
166
  for (const resource of [...ALL_RESOURCES]) {
169
- if (resource.IsValid() && (resource.GetMemoryClass() & memoryTypes) !== 0) {
167
+ if (resource.IsResourceValid() && (resource.GetResourceMemoryClass() & memoryTypes) !== 0) {
170
168
  resource.Destroy();
171
169
  }
172
170
  if (resourcesMutated) break;
@@ -175,4 +173,4 @@ function DestroyDeviceResources(memoryTypes) {
175
173
  }
176
174
 
177
175
  export { DescribeDeviceResources, DestroyDeviceResources, Tr2ALMemoryType, Tr2BaseDeviceResourceAL };
178
- //# sourceMappingURL=Tr2DeviceResourceAL.js.map
176
+ //# sourceMappingURL=Tr2BaseDeviceResourceAL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tr2BaseDeviceResourceAL.js","sources":["../../../../src/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js"],"sourcesContent":["// Source: trinity/trinityal/Tr2DeviceResourceAL.h\r\n// Source: trinity/trinityal/Tr2DeviceResourceAL.cpp\r\n//\r\nimport { impl } from \"#schema\";\r\n\r\n// The base every abstraction-layer resource extends, and the registry that\r\n// makes them enumerable.\r\n//\r\n// Carbon's reason for this base is worth keeping in view: it is how a device\r\n// answers \"what am I holding, and how much of it\" without every resource type\r\n// inventing its own bookkeeping. `DescribeDeviceResources` walks every live\r\n// resource and asks it to describe itself; `DestroyDeviceResources` releases\r\n// everything in a memory class, which is what a device-lost path needs.\r\n//\r\n// Existing lifetime adaptation: Carbon registers in the constructor and\r\n// unregisters in the destructor (Tr2DeviceResourceAL.cpp:32-44). JavaScript has\r\n// no deterministic destructor. This implementation keeps strong registry\r\n// references and unregisters at explicit Destroy. A resource never destroyed\r\n// stays registered; destroying and recreating the same object does not register\r\n// it again. Restoring the forwarding class does not change that lifetime policy.\r\n\r\n\r\n\r\nfunction fail(message)\r\n{\r\n const error = new Error(`Tr2DeviceResourceAL: ${message}`);\r\n error.code = \"CJS_AL_RESOURCE_INVALID\";\r\n throw error;\r\n}\r\n\r\n\r\n/** `Tr2ALMemoryType` (`Tr2DeviceResourceAL.h:5-9`). A bit set, not an enum. */\r\nexport const Tr2ALMemoryType = Object.freeze({\r\n /** Created in video memory. */\r\n AL_MEMORY_VIDEO: 1 << 0,\r\n\r\n /** Created in device-managed memory. */\r\n AL_MEMORY_MANAGED: 1 << 1\r\n});\r\n\r\n\r\n/** Every live resource. Strong by design - see the head comment. */\r\nconst ALL_RESOURCES = new Set();\r\n\r\n/**\r\n * Carbon's `s_resourcesMutated`.\r\n *\r\n * Destroying a resource can create or destroy others, which invalidates an\r\n * iterator mid-walk. Carbon restarts the sweep whenever that happens rather\r\n * than trusting the iterator, and so does this.\r\n */\r\nlet resourcesMutated = false;\r\n\r\n\r\n/**\r\n * The base of every AL resource.\r\n *\r\n * The abstract registry interface is implemented by Tr2DeviceResourceAL's\r\n * forwarding methods and the concrete backend's Destroy and Describe methods.\r\n */\r\nexport class Tr2BaseDeviceResourceAL\r\n{\r\n _registered = false;\r\n\r\n /** Registers the resource, as Carbon's constructor does. */\r\n constructor()\r\n {\r\n ALL_RESOURCES.add(this);\r\n this._registered = true;\r\n resourcesMutated = true;\r\n }\r\n\r\n /**\r\n * Whether this resource still holds anything.\r\n *\r\n * @returns {boolean} True when live.\r\n */\r\n @impl.adapted\r\n @impl.reason(\"JavaScript has no pure virtual declarations; calling the missing obligation throws.\")\r\n IsResourceValid()\r\n {\r\n fail(`${this.constructor.name} must implement IsResourceValid`);\r\n }\r\n\r\n /**\r\n * Which memory class this resource occupies.\r\n *\r\n * @returns {number} A `Tr2ALMemoryType` value.\r\n */\r\n @impl.adapted\r\n @impl.reason(\"JavaScript has no pure virtual declarations; calling the missing obligation throws.\")\r\n GetResourceMemoryClass()\r\n {\r\n fail(`${this.constructor.name} must implement GetResourceMemoryClass`);\r\n }\r\n\r\n /**\r\n * Describes this resource for a device inventory.\r\n *\r\n * Carbon fills a `map<string,string>`. Every stub resource leaves it empty\r\n * EXCEPT `Tr2PipelineStatsQueryAL`, which writes its own type name\r\n * (`Tr2PipelineStatsQueryALStub.cpp:65-68`) - so an unoverridden description\r\n * is faithful rather than lazy, and that one override is faithful too.\r\n *\r\n * @param {object} _description Accumulator, keyed by name.\r\n */\r\n @impl.adapted\r\n @impl.reason(\"The empty concrete stub descriptions share this inherited implementation instead of repeating it on each backend class.\")\r\n Describe(_description)\r\n {\r\n }\r\n\r\n /**\r\n * Releases the resource. Subclasses override and call `super.Destroy()`.\r\n *\r\n * Unregistering here rather than in a finaliser is what makes the release\r\n * path deterministic; see the head comment.\r\n */\r\n @impl.adapted\r\n @impl.reason(\"JavaScript has no deterministic destructor; the existing registry unregisters at explicit Destroy. Recreating that object does not re-register it.\")\r\n Destroy()\r\n {\r\n if (!this._registered) return;\r\n\r\n ALL_RESOURCES.delete(this);\r\n this._registered = false;\r\n resourcesMutated = true;\r\n }\r\n\r\n /** Whether this resource is still in the registry. */\r\n IsRegistered()\r\n {\r\n return this._registered;\r\n }\r\n\r\n /**\r\n * Runs an operation over every live resource.\r\n *\r\n * @param {Function} operation Called with each resource.\r\n */\r\n static EnumerateResources(operation)\r\n {\r\n if (typeof operation !== \"function\") fail(\"EnumerateResources needs a function\");\r\n\r\n // A copy, because Carbon takes a mutex here and an operation that creates\r\n // or destroys a resource would otherwise mutate the set mid-iteration.\r\n for (const resource of [ ...ALL_RESOURCES ]) operation(resource);\r\n }\r\n\r\n /** How many resources are live. Not Carbon's; the registry is otherwise opaque. */\r\n static GetResourceCount()\r\n {\r\n return ALL_RESOURCES.size;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Describes every VALID resource to the supplied operation.\r\n *\r\n * Carbon skips invalid resources rather than describing them\r\n * (`Tr2DeviceResourceAL.cpp:61`), so a released handle contributes nothing to\r\n * an inventory.\r\n *\r\n * @param {Function} operation Called with `(memoryClass, description)`.\r\n */\r\nexport function DescribeDeviceResources(operation)\r\n{\r\n if (typeof operation !== \"function\") fail(\"DescribeDeviceResources needs a function\");\r\n\r\n for (const resource of [ ...ALL_RESOURCES ])\r\n {\r\n if (!resource.IsResourceValid()) continue;\r\n\r\n const description = {};\r\n\r\n resource.Describe(description);\r\n operation(resource.GetResourceMemoryClass(), description);\r\n }\r\n}\r\n\r\n/**\r\n * Destroys every valid resource in the given memory classes.\r\n *\r\n * THE RESTART IS CARBON'S AND IS NOT AN OPTIMISATION TO REMOVE. Destroying a\r\n * resource can create or destroy others, so Carbon breaks out and starts the\r\n * sweep again whenever the set changed underneath it\r\n * (`Tr2DeviceResourceAL.cpp:73-89`). Iterating once would skip resources.\r\n *\r\n * @param {number} memoryTypes A bit set of `Tr2ALMemoryType`.\r\n */\r\nexport function DestroyDeviceResources(memoryTypes)\r\n{\r\n do\r\n {\r\n resourcesMutated = false;\r\n\r\n for (const resource of [ ...ALL_RESOURCES ])\r\n {\r\n if (resource.IsResourceValid() && (resource.GetResourceMemoryClass() & memoryTypes) !== 0)\r\n {\r\n resource.Destroy();\r\n }\r\n\r\n if (resourcesMutated) break;\r\n }\r\n }\r\n while (resourcesMutated);\r\n}\r\n"],"names":["fail","message","error","Error","code","Tr2ALMemoryType","Object","freeze","AL_MEMORY_VIDEO","AL_MEMORY_MANAGED","ALL_RESOURCES","Set","resourcesMutated","Tr2BaseDeviceResourceAL","_initProto","_applyDecs","impl","adapted","reason","e","_registered","constructor","add","IsResourceValid","name","GetResourceMemoryClass","Describe","_description","Destroy","delete","IsRegistered","EnumerateResources","operation","resource","GetResourceCount","size","DescribeDeviceResources","description","DestroyDeviceResources","memoryTypes"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { Tr2BaseDeviceResourceAL } from './Tr2BaseDeviceResourceAL.js';
2
+
3
+ // Source: trinity/trinityal/Tr2DeviceResourceAL.h
4
+
5
+ /**
6
+ * Forwards the resource registry interface to concrete backend resource methods.
7
+ *
8
+ * Carbon's CRTP cast selects the derived resource; JavaScript dispatches the
9
+ * same IsValid and GetMemoryClass calls through this without a template.
10
+ */
11
+ class Tr2DeviceResourceAL extends Tr2BaseDeviceResourceAL {
12
+ /** @returns {boolean} Whether the concrete resource is valid. */
13
+ IsResourceValid() {
14
+ return this.IsValid();
15
+ }
16
+
17
+ /** @returns {number} The concrete resource's Tr2ALMemoryType. */
18
+ GetResourceMemoryClass() {
19
+ return this.GetMemoryClass();
20
+ }
21
+ }
22
+
23
+ export { Tr2DeviceResourceAL };
24
+ //# sourceMappingURL=Tr2DeviceResourceAL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tr2DeviceResourceAL.js","sources":["../../../../src/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js"],"sourcesContent":["// Source: trinity/trinityal/Tr2DeviceResourceAL.h\r\nimport { Tr2BaseDeviceResourceAL } from \"./Tr2BaseDeviceResourceAL.js\";\r\n\r\n/**\r\n * Forwards the resource registry interface to concrete backend resource methods.\r\n *\r\n * Carbon's CRTP cast selects the derived resource; JavaScript dispatches the\r\n * same IsValid and GetMemoryClass calls through this without a template.\r\n */\r\nexport class Tr2DeviceResourceAL extends Tr2BaseDeviceResourceAL\r\n{\r\n /** @returns {boolean} Whether the concrete resource is valid. */\r\n IsResourceValid()\r\n {\r\n return this.IsValid();\r\n }\r\n\r\n /** @returns {number} The concrete resource's Tr2ALMemoryType. */\r\n GetResourceMemoryClass()\r\n {\r\n return this.GetMemoryClass();\r\n }\r\n}\r\n"],"names":["Tr2DeviceResourceAL","Tr2BaseDeviceResourceAL","IsResourceValid","IsValid","GetResourceMemoryClass","GetMemoryClass"],"mappings":";;AAAA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,mBAAmB,SAASC,uBAAuB,CAChE;AACE;AACAC,EAAAA,eAAeA,GACf;AACE,IAAA,OAAO,IAAI,CAACC,OAAO,EAAE;AACvB,EAAA;;AAEA;AACAC,EAAAA,sBAAsBA,GACtB;AACE,IAAA,OAAO,IAAI,CAACC,cAAc,EAAE;AAC9B,EAAA;AACF;;;;"}
@@ -1,9 +1,10 @@
1
1
  import { ALResult, Failed } from './ALResult.js';
2
- import { Tr2BufferDescriptionAL } from './stub/Tr2BufferALStub.js';
2
+ import './stub/Tr2BufferALStub.js';
3
3
  import { CjsSchema } from '#schema';
4
4
  import '../global/consts/renderContext/formats.js';
5
5
  import { Topology } from '../global/consts/renderContext/pipeline.js';
6
6
  import { Tr2GpuUsage, Tr2CpuUsage } from '../global/consts/renderContext/resources.js';
7
+ import { Tr2BufferDescriptionAL } from './Tr2BufferAL/Tr2BufferDescriptionAL.js';
7
8
 
8
9
  // Source: trinity/trinityal/Tr2DrawUPHelper.cpp, trinity/trinityal/Tr2DrawUPHelper.h
9
10
  //
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2DrawUPHelper.js","sources":["../../../src/trinityal/Tr2DrawUPHelper.js"],"sourcesContent":["// Source: trinity/trinityal/Tr2DrawUPHelper.cpp, trinity/trinityal/Tr2DrawUPHelper.h\n//\n// The DX9 `Draw*PrimitiveUP` calls let a caller hand the driver vertices and\n// indices out of its own memory, with nothing bound. No modern API can do that,\n// so Carbon emulates them ONCE, in a backend-agnostic helper every backend\n// delegates to: DX11 `m_drawUP` (`Tr2RenderContextDx11.cpp:1114-1139`), DX12\n// `m_drawUPHelper` (`Tr2RenderContextDx12.cpp:1199-1224`), Metal the same\n// (`Tr2RenderContextMetal.mm:558-571`). The emulation is the obvious one: copy\n// the caller's bytes into a scratch buffer, bind it, issue an ordinary draw.\n//\n// THE RING IS WHY IT IS A CLASS AND NOT A FUNCTION. Four vertex buffers, four\n// 16-bit index buffers, four 32-bit, each cursor advancing after use. A single\n// scratch buffer would be rewritten while a previous draw in the same frame\n// still referred to it, and the second draw would silently take the first's\n// geometry. Four is Carbon's number (`DRAW_UP_RING_SIZE`), and it is not a\n// guess about GPU latency: these draws come from line sets and debug geometry,\n// which issue a handful per frame.\n//\n// GROWTH IS ONE-WAY. A buffer too small for the request is recreated at the new\n// size and never shrinks again, so a frame that draws one big batch leaves the\n// slot large. Carbon does the same by calling `Create` on the existing\n// `Tr2BufferAL`; here the context's `CreateBuffer` hands back a fresh buffer of\n// the running backend's kind, because a shared file cannot name one.\n//\n// ONE SIGNATURE DIFFERENCE. Carbon's methods take the render context AND the\n// device, because its `Tr2BufferAL::Create` wants the device. Ours reaches the\n// device through the context, as every other buffer creation here does, so the\n// parameter is gone. Carbon's two indexed overloads differ only in index width;\n// this is one method that reads the width off the array it is given.\n\nimport { ALResult, Failed } from \"./ALResult.js\";\nimport { Tr2BufferDescriptionAL } from \"./stub/Tr2BufferALStub.js\";\nimport { CjsSchema } from \"#schema\";\nimport { Topology, Tr2CpuUsage, Tr2GpuUsage } from \"../global/consts/renderContext/index.js\";\n\n\n/** `DRAW_UP_RING_SIZE`. */\nconst RING_SIZE = 4;\n\n\n// Carbon's file-local `ComputeVertexCount` (`Tr2DrawUPHelper.cpp:13-33`).\n//\n// IT DISAGREES WITH THE RENDER CONTEXT'S OWN TABLE ON ONE ENTRY, and the\n// disagreement is Carbon's: a triangle fan counts as `primitiveCount` here and\n// as `primitiveCount + 2` where a fan is converted. Transcribed as written,\n// because no backend draws a fan at all - DX11 calls the topology invalid\n// (`Tr2RenderContextEnum.h:138`), Metal says NOT SUPPORTED\n// (`Tr2RenderContextMetal.mm:370`) - so the entry describes a path that cannot\n// be reached rather than a count anything relies on.\nconst VERTEX_COUNT = Object.freeze({\n [Topology.TOP_TRIANGLES]: count => count * 3,\n [Topology.TOP_TRIANGLE_STRIP]: count => count + 2,\n [Topology.TOP_LINES]: count => count * 2,\n [Topology.TOP_LINE_STRIP]: count => count + 1,\n [Topology.TOP_POINTS]: count => count,\n [Topology.TOP_TRIANGLE_FAN]: count => count\n});\n\n\n/**\n * Returns the caller's bytes as a byte view, whatever view they arrived in.\n *\n * @param {ArrayBufferView} data The caller's data.\n * @returns {Uint8Array} A view over the same bytes.\n */\nfunction bytesOf(data)\n{\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n}\n\n\n/**\n * Emulates the user-pointer draws with scratch buffers.\n *\n * A backend owns one of these and forwards its `Draw*PrimitiveUP` to it.\n */\nexport class Tr2DrawUPHelper\n{\n /** m_nextRingVB. */\n _nextRingVB = 0;\n\n /** m_nextRingIB16. */\n _nextRingIB16 = 0;\n\n /** m_nextRingIB32. */\n _nextRingIB32 = 0;\n\n /** m_vertexUP. */\n _vertexUP = new Array(RING_SIZE).fill(null);\n\n /** m_indexUP16. */\n _indexUP16 = new Array(RING_SIZE).fill(null);\n\n /** m_indexUP32. */\n _indexUP32 = new Array(RING_SIZE).fill(null);\n\n /**\n * Drops every scratch buffer and rewinds the ring.\n *\n * @returns {void}\n */\n Destroy()\n {\n for (const ring of [ this._vertexUP, this._indexUP16, this._indexUP32 ])\n {\n for (let i = 0; i !== RING_SIZE; ++i)\n {\n ring[i]?.Destroy();\n ring[i] = null;\n }\n }\n\n this._nextRingVB = 0;\n this._nextRingIB16 = 0;\n this._nextRingIB32 = 0;\n }\n\n /**\n * Draws non-indexed from caller memory.\n *\n * @param {number} topology A `Topology` value; the context's bound topology.\n * @param {number} primitiveCount Primitives to draw.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @param {object} renderContext The render context to bind and draw through.\n * @returns {number} An `ALResult` value.\n */\n DrawPrimitiveUP(topology, primitiveCount, vertexStreamZeroData, vertexStreamZeroStride, renderContext)\n {\n if (primitiveCount === 0) return ALResult.S_OK;\n\n const vertexCount = this._VertexCount(topology, primitiveCount);\n\n if (vertexCount === 0) return ALResult.E_INVALIDARG;\n\n const slot = this._nextRingVB;\n const filled = this._FillVertices(vertexCount, vertexStreamZeroData, vertexStreamZeroStride, slot, renderContext);\n\n if (Failed(filled)) return filled;\n\n if (!renderContext.SetStreamSource(0, this._vertexUP[slot], 0, vertexStreamZeroStride))\n {\n return ALResult.E_FAIL;\n }\n\n this._nextRingVB = (this._nextRingVB + 1) % RING_SIZE;\n\n return renderContext.DrawPrimitive(0, primitiveCount) ? ALResult.S_OK : ALResult.E_FAIL;\n }\n\n /**\n * Draws indexed from caller memory.\n *\n * @param {number} topology A `Topology` value; the context's bound topology.\n * @param {number} numVertices Vertices the index data spans.\n * @param {number} primitiveCount Primitives to draw.\n * @param {Uint16Array|Uint32Array} indexData The indices; its width picks the ring.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @param {object} renderContext The render context to bind and draw through.\n * @returns {number} An `ALResult` value.\n */\n DrawIndexedPrimitiveUP(\n topology,\n numVertices,\n primitiveCount,\n indexData,\n vertexStreamZeroData,\n vertexStreamZeroStride,\n renderContext\n )\n {\n if (primitiveCount === 0) return ALResult.S_OK;\n if (!indexData || !vertexStreamZeroData) return ALResult.E_INVALIDARG;\n\n // Carbon picks the overload at the call site and so picks the ring with it.\n // A JavaScript caller hands one array, so the ELEMENT WIDTH decides - which\n // is the same information, read later.\n const bytesPerIndex = indexData.BYTES_PER_ELEMENT;\n\n if (bytesPerIndex !== 2 && bytesPerIndex !== 4) return ALResult.E_INVALIDARG;\n\n const indexCount = this._VertexCount(topology, primitiveCount);\n\n if (indexCount === 0) return ALResult.E_INVALIDARG;\n\n const vertexSlot = this._nextRingVB;\n const filled = this._FillVertices(\n numVertices,\n vertexStreamZeroData,\n vertexStreamZeroStride,\n vertexSlot,\n renderContext\n );\n\n if (Failed(filled)) return filled;\n\n if (!renderContext.SetStreamSource(0, this._vertexUP[vertexSlot], 0, vertexStreamZeroStride))\n {\n return ALResult.E_FAIL;\n }\n\n this._nextRingVB = (this._nextRingVB + 1) % RING_SIZE;\n\n const ring = bytesPerIndex === 2 ? this._indexUP16 : this._indexUP32;\n const indexSlot = bytesPerIndex === 2 ? this._nextRingIB16 : this._nextRingIB32;\n const indices = this._FillIndices(indexCount, indexData, bytesPerIndex, ring, indexSlot, renderContext);\n\n if (Failed(indices)) return indices;\n\n if (!renderContext.SetIndices(ring[indexSlot], bytesPerIndex)) return ALResult.E_FAIL;\n\n if (bytesPerIndex === 2) this._nextRingIB16 = (this._nextRingIB16 + 1) % RING_SIZE;\n else this._nextRingIB32 = (this._nextRingIB32 + 1) % RING_SIZE;\n\n return renderContext.DrawIndexedPrimitive(numVertices, 0, primitiveCount) ? ALResult.S_OK : ALResult.E_FAIL;\n }\n\n /**\n * Carbon's `ComputeVertexCount`, refusing a topology it has no entry for.\n *\n * Carbon asserts and returns zero; an assert is not available here, so zero\n * is the whole answer and the callers turn it into `E_INVALIDARG`.\n *\n * @param {number} topology A `Topology` value.\n * @param {number} primitiveCount Primitives.\n * @returns {number} Vertices, or zero for an unsupported topology.\n */\n _VertexCount(topology, primitiveCount)\n {\n return VERTEX_COUNT[topology]?.(primitiveCount) ?? 0;\n }\n\n /**\n * `FillUPVertexBuffer`: grows the slot if needed, then copies the vertices in.\n *\n * @param {number} vertexCount Vertices to copy.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @param {number} slot Ring slot to fill.\n * @param {object} renderContext The render context.\n * @returns {number} An `ALResult` value.\n */\n _FillVertices(vertexCount, vertexStreamZeroData, vertexStreamZeroStride, slot, renderContext)\n {\n const totalSize = vertexCount * vertexStreamZeroStride;\n\n // Carbon returns S_OK for nothing to copy and goes on to bind and draw the\n // slot anyway, so a zero-size request is not an error. It IS a no-draw here\n // when the slot is still empty, because there is no buffer to bind.\n if (totalSize === 0) return this._vertexUP[slot] ? ALResult.S_OK : ALResult.E_INVALIDARG;\n\n if (!vertexStreamZeroData) return ALResult.E_INVALIDARG;\n if (bytesOf(vertexStreamZeroData).length < totalSize) return ALResult.E_INVALIDARG;\n\n const existing = this._vertexUP[slot];\n\n if (!existing || existing.GetDesc().GetSizeInBytes() < totalSize)\n {\n // Carbon's own rounding: a four-byte stride over `(totalSize + 3) / 4`\n // elements, so the buffer is described in words whatever the vertex\n // stride is. The stride the DRAW uses comes from `SetStreamSource`, not\n // from the description, so the two never have to agree.\n const created = renderContext.CreateBuffer(\n Tr2BufferDescriptionAL.FromStride(\n 4,\n Math.floor((totalSize + 3) / 4),\n Tr2GpuUsage.VERTEX_BUFFER,\n Tr2CpuUsage.WRITE_OFTEN\n )\n );\n\n if (!created) return ALResult.E_FAIL;\n\n existing?.Destroy();\n this._vertexUP[slot] = created;\n }\n\n return this._Copy(this._vertexUP[slot], bytesOf(vertexStreamZeroData).subarray(0, totalSize), renderContext);\n }\n\n /**\n * `FillUPIndexBuffer`: grows the slot if needed, then copies the indices in.\n *\n * @param {number} indexCount Indices to copy.\n * @param {Uint16Array|Uint32Array} indices The indices.\n * @param {number} bytesPerIndex Index width in bytes.\n * @param {Array<object|null>} ring The ring for this width.\n * @param {number} slot Ring slot to fill.\n * @param {object} renderContext The render context.\n * @returns {number} An `ALResult` value.\n */\n _FillIndices(indexCount, indices, bytesPerIndex, ring, slot, renderContext)\n {\n if (indices.length < indexCount) return ALResult.E_INVALIDARG;\n\n const existing = ring[slot];\n\n // Carbon compares the COUNT here and the byte size for vertices\n // (`:74,164`), which comes to the same thing while the width is fixed.\n if (!existing || existing.GetDesc().count < indexCount)\n {\n const created = renderContext.CreateBuffer(\n Tr2BufferDescriptionAL.FromStride(bytesPerIndex, indexCount, Tr2GpuUsage.INDEX_BUFFER, Tr2CpuUsage.WRITE_OFTEN)\n );\n\n if (!created) return ALResult.E_FAIL;\n\n existing?.Destroy();\n ring[slot] = created;\n }\n\n const source = new Uint8Array(indices.buffer, indices.byteOffset, indexCount * bytesPerIndex);\n\n return this._Copy(ring[slot], source, renderContext);\n }\n\n /**\n * Maps a scratch buffer, copies bytes into it and unmaps.\n *\n * @param {object} buffer The scratch buffer.\n * @param {Uint8Array} source The bytes to copy.\n * @param {object} renderContext The render context.\n * @returns {number} An `ALResult` value.\n */\n _Copy(buffer, source, renderContext)\n {\n // `UpdateBuffer` is NOT the route: it refuses a `WRITE_OFTEN` buffer, as\n // Carbon's stub does (`Tr2BufferALStub.cpp:138-141`), and these are all\n // `WRITE_OFTEN`. The map family is the write path for this usage, which is\n // what Carbon's helper uses too.\n const { result, data } = buffer.MapForWriting(renderContext);\n\n if (Failed(result) || !data)\n {\n buffer.UnmapForWriting(renderContext);\n\n return Failed(result) ? result : ALResult.E_FAIL;\n }\n\n data.set(source);\n buffer.UnmapForWriting(renderContext);\n\n return ALResult.S_OK;\n }\n}\n\n\n// DECLARED AS A CALL, NOT A DECORATOR. The abstraction layer is imported\n// straight from source by its tests - `#trinityal/...` resolves to `src/` - and\n// raw Node cannot parse decorator syntax, so a decorator here breaks every test\n// that reaches this file without a build first.\nCjsSchema.define(Tr2DrawUPHelper, { className: \"Tr2DrawUPHelper\", carbon: \"Tr2DrawUPHelper\" });\n"],"names":["RING_SIZE","VERTEX_COUNT","Object","freeze","Topology","TOP_TRIANGLES","count","TOP_TRIANGLE_STRIP","TOP_LINES","TOP_LINE_STRIP","TOP_POINTS","TOP_TRIANGLE_FAN","bytesOf","data","Uint8Array","buffer","byteOffset","byteLength","Tr2DrawUPHelper","_nextRingVB","_nextRingIB16","_nextRingIB32","_vertexUP","Array","fill","_indexUP16","_indexUP32","Destroy","ring","i","DrawPrimitiveUP","topology","primitiveCount","vertexStreamZeroData","vertexStreamZeroStride","renderContext","ALResult","S_OK","vertexCount","_VertexCount","E_INVALIDARG","slot","filled","_FillVertices","Failed","SetStreamSource","E_FAIL","DrawPrimitive","DrawIndexedPrimitiveUP","numVertices","indexData","bytesPerIndex","BYTES_PER_ELEMENT","indexCount","vertexSlot","indexSlot","indices","_FillIndices","SetIndices","DrawIndexedPrimitive","totalSize","length","existing","GetDesc","GetSizeInBytes","created","CreateBuffer","Tr2BufferDescriptionAL","FromStride","Math","floor","Tr2GpuUsage","VERTEX_BUFFER","Tr2CpuUsage","WRITE_OFTEN","_Copy","subarray","INDEX_BUFFER","source","result","MapForWriting","UnmapForWriting","set","CjsSchema","define","className","carbon"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA,MAAMA,SAAS,GAAG,CAAC;;AAGnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,YAAY,GAAGC,MAAM,CAACC,MAAM,CAAC;EACjC,CAACC,QAAQ,CAACC,aAAa,GAAGC,KAAK,IAAIA,KAAK,GAAG,CAAC;EAC5C,CAACF,QAAQ,CAACG,kBAAkB,GAAGD,KAAK,IAAIA,KAAK,GAAG,CAAC;EACjD,CAACF,QAAQ,CAACI,SAAS,GAAGF,KAAK,IAAIA,KAAK,GAAG,CAAC;EACxC,CAACF,QAAQ,CAACK,cAAc,GAAGH,KAAK,IAAIA,KAAK,GAAG,CAAC;AAC7C,EAAA,CAACF,QAAQ,CAACM,UAAU,GAAGJ,KAAK,IAAIA,KAAK;AACrC,EAAA,CAACF,QAAQ,CAACO,gBAAgB,GAAGL,KAAK,IAAIA;AACxC,CAAC,CAAC;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA,SAASM,OAAOA,CAACC,IAAI,EACrB;AACE,EAAA,OAAO,IAAIC,UAAU,CAACD,IAAI,CAACE,MAAM,EAAEF,IAAI,CAACG,UAAU,EAAEH,IAAI,CAACI,UAAU,CAAC;AACtE;;AAGA;AACA;AACA;AACA;AACA;AACO,MAAMC,eAAe,CAC5B;AACE;AACAC,EAAAA,WAAW,GAAG,CAAC;;AAEf;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;EACAC,SAAS,GAAG,IAAIC,KAAK,CAACvB,SAAS,CAAC,CAACwB,IAAI,CAAC,IAAI,CAAC;;AAE3C;EACAC,UAAU,GAAG,IAAIF,KAAK,CAACvB,SAAS,CAAC,CAACwB,IAAI,CAAC,IAAI,CAAC;;AAE5C;EACAE,UAAU,GAAG,IAAIH,KAAK,CAACvB,SAAS,CAAC,CAACwB,IAAI,CAAC,IAAI,CAAC;;AAE5C;AACF;AACA;AACA;AACA;AACEG,EAAAA,OAAOA,GACP;AACE,IAAA,KAAK,MAAMC,IAAI,IAAI,CAAE,IAAI,CAACN,SAAS,EAAE,IAAI,CAACG,UAAU,EAAE,IAAI,CAACC,UAAU,CAAE,EACvE;MACE,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,KAAK7B,SAAS,EAAE,EAAE6B,CAAC,EACpC;AACED,QAAAA,IAAI,CAACC,CAAC,CAAC,EAAEF,OAAO,EAAE;AAClBC,QAAAA,IAAI,CAACC,CAAC,CAAC,GAAG,IAAI;AAChB,MAAA;AACF,IAAA;IAEA,IAAI,CAACV,WAAW,GAAG,CAAC;IACpB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACC,aAAa,GAAG,CAAC;AACxB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACES,eAAeA,CAACC,QAAQ,EAAEC,cAAc,EAAEC,oBAAoB,EAAEC,sBAAsB,EAAEC,aAAa,EACrG;AACE,IAAA,IAAIH,cAAc,KAAK,CAAC,EAAE,OAAOI,QAAQ,CAACC,IAAI;IAE9C,MAAMC,WAAW,GAAG,IAAI,CAACC,YAAY,CAACR,QAAQ,EAAEC,cAAc,CAAC;AAE/D,IAAA,IAAIM,WAAW,KAAK,CAAC,EAAE,OAAOF,QAAQ,CAACI,YAAY;AAEnD,IAAA,MAAMC,IAAI,GAAG,IAAI,CAACtB,WAAW;AAC7B,IAAA,MAAMuB,MAAM,GAAG,IAAI,CAACC,aAAa,CAACL,WAAW,EAAEL,oBAAoB,EAAEC,sBAAsB,EAAEO,IAAI,EAAEN,aAAa,CAAC;AAEjH,IAAA,IAAIS,MAAM,CAACF,MAAM,CAAC,EAAE,OAAOA,MAAM;AAEjC,IAAA,IAAI,CAACP,aAAa,CAACU,eAAe,CAAC,CAAC,EAAE,IAAI,CAACvB,SAAS,CAACmB,IAAI,CAAC,EAAE,CAAC,EAAEP,sBAAsB,CAAC,EACtF;MACE,OAAOE,QAAQ,CAACU,MAAM;AACxB,IAAA;IAEA,IAAI,CAAC3B,WAAW,GAAG,CAAC,IAAI,CAACA,WAAW,GAAG,CAAC,IAAInB,SAAS;AAErD,IAAA,OAAOmC,aAAa,CAACY,aAAa,CAAC,CAAC,EAAEf,cAAc,CAAC,GAAGI,QAAQ,CAACC,IAAI,GAAGD,QAAQ,CAACU,MAAM;AACzF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEE,EAAAA,sBAAsBA,CACpBjB,QAAQ,EACRkB,WAAW,EACXjB,cAAc,EACdkB,SAAS,EACTjB,oBAAoB,EACpBC,sBAAsB,EACtBC,aAAa,EAEf;AACE,IAAA,IAAIH,cAAc,KAAK,CAAC,EAAE,OAAOI,QAAQ,CAACC,IAAI;IAC9C,IAAI,CAACa,SAAS,IAAI,CAACjB,oBAAoB,EAAE,OAAOG,QAAQ,CAACI,YAAY;;AAErE;AACA;AACA;AACA,IAAA,MAAMW,aAAa,GAAGD,SAAS,CAACE,iBAAiB;IAEjD,IAAID,aAAa,KAAK,CAAC,IAAIA,aAAa,KAAK,CAAC,EAAE,OAAOf,QAAQ,CAACI,YAAY;IAE5E,MAAMa,UAAU,GAAG,IAAI,CAACd,YAAY,CAACR,QAAQ,EAAEC,cAAc,CAAC;AAE9D,IAAA,IAAIqB,UAAU,KAAK,CAAC,EAAE,OAAOjB,QAAQ,CAACI,YAAY;AAElD,IAAA,MAAMc,UAAU,GAAG,IAAI,CAACnC,WAAW;AACnC,IAAA,MAAMuB,MAAM,GAAG,IAAI,CAACC,aAAa,CAC/BM,WAAW,EACXhB,oBAAoB,EACpBC,sBAAsB,EACtBoB,UAAU,EACVnB,aACF,CAAC;AAED,IAAA,IAAIS,MAAM,CAACF,MAAM,CAAC,EAAE,OAAOA,MAAM;AAEjC,IAAA,IAAI,CAACP,aAAa,CAACU,eAAe,CAAC,CAAC,EAAE,IAAI,CAACvB,SAAS,CAACgC,UAAU,CAAC,EAAE,CAAC,EAAEpB,sBAAsB,CAAC,EAC5F;MACE,OAAOE,QAAQ,CAACU,MAAM;AACxB,IAAA;IAEA,IAAI,CAAC3B,WAAW,GAAG,CAAC,IAAI,CAACA,WAAW,GAAG,CAAC,IAAInB,SAAS;AAErD,IAAA,MAAM4B,IAAI,GAAGuB,aAAa,KAAK,CAAC,GAAG,IAAI,CAAC1B,UAAU,GAAG,IAAI,CAACC,UAAU;AACpE,IAAA,MAAM6B,SAAS,GAAGJ,aAAa,KAAK,CAAC,GAAG,IAAI,CAAC/B,aAAa,GAAG,IAAI,CAACC,aAAa;AAC/E,IAAA,MAAMmC,OAAO,GAAG,IAAI,CAACC,YAAY,CAACJ,UAAU,EAAEH,SAAS,EAAEC,aAAa,EAAEvB,IAAI,EAAE2B,SAAS,EAAEpB,aAAa,CAAC;AAEvG,IAAA,IAAIS,MAAM,CAACY,OAAO,CAAC,EAAE,OAAOA,OAAO;AAEnC,IAAA,IAAI,CAACrB,aAAa,CAACuB,UAAU,CAAC9B,IAAI,CAAC2B,SAAS,CAAC,EAAEJ,aAAa,CAAC,EAAE,OAAOf,QAAQ,CAACU,MAAM;AAErF,IAAA,IAAIK,aAAa,KAAK,CAAC,EAAE,IAAI,CAAC/B,aAAa,GAAG,CAAC,IAAI,CAACA,aAAa,GAAG,CAAC,IAAIpB,SAAS,CAAC,KAC9E,IAAI,CAACqB,aAAa,GAAG,CAAC,IAAI,CAACA,aAAa,GAAG,CAAC,IAAIrB,SAAS;AAE9D,IAAA,OAAOmC,aAAa,CAACwB,oBAAoB,CAACV,WAAW,EAAE,CAAC,EAAEjB,cAAc,CAAC,GAAGI,QAAQ,CAACC,IAAI,GAAGD,QAAQ,CAACU,MAAM;AAC7G,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEP,EAAAA,YAAYA,CAACR,QAAQ,EAAEC,cAAc,EACrC;IACE,OAAO/B,YAAY,CAAC8B,QAAQ,CAAC,GAAGC,cAAc,CAAC,IAAI,CAAC;AACtD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,aAAaA,CAACL,WAAW,EAAEL,oBAAoB,EAAEC,sBAAsB,EAAEO,IAAI,EAAEN,aAAa,EAC5F;AACE,IAAA,MAAMyB,SAAS,GAAGtB,WAAW,GAAGJ,sBAAsB;;AAEtD;AACA;AACA;AACA,IAAA,IAAI0B,SAAS,KAAK,CAAC,EAAE,OAAO,IAAI,CAACtC,SAAS,CAACmB,IAAI,CAAC,GAAGL,QAAQ,CAACC,IAAI,GAAGD,QAAQ,CAACI,YAAY;AAExF,IAAA,IAAI,CAACP,oBAAoB,EAAE,OAAOG,QAAQ,CAACI,YAAY;AACvD,IAAA,IAAI5B,OAAO,CAACqB,oBAAoB,CAAC,CAAC4B,MAAM,GAAGD,SAAS,EAAE,OAAOxB,QAAQ,CAACI,YAAY;AAElF,IAAA,MAAMsB,QAAQ,GAAG,IAAI,CAACxC,SAAS,CAACmB,IAAI,CAAC;AAErC,IAAA,IAAI,CAACqB,QAAQ,IAAIA,QAAQ,CAACC,OAAO,EAAE,CAACC,cAAc,EAAE,GAAGJ,SAAS,EAChE;AACE;AACA;AACA;AACA;AACA,MAAA,MAAMK,OAAO,GAAG9B,aAAa,CAAC+B,YAAY,CACxCC,sBAAsB,CAACC,UAAU,CAC/B,CAAC,EACDC,IAAI,CAACC,KAAK,CAAC,CAACV,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,EAC/BW,WAAW,CAACC,aAAa,EACzBC,WAAW,CAACC,WACd,CACF,CAAC;AAED,MAAA,IAAI,CAACT,OAAO,EAAE,OAAO7B,QAAQ,CAACU,MAAM;MAEpCgB,QAAQ,EAAEnC,OAAO,EAAE;AACnB,MAAA,IAAI,CAACL,SAAS,CAACmB,IAAI,CAAC,GAAGwB,OAAO;AAChC,IAAA;IAEA,OAAO,IAAI,CAACU,KAAK,CAAC,IAAI,CAACrD,SAAS,CAACmB,IAAI,CAAC,EAAE7B,OAAO,CAACqB,oBAAoB,CAAC,CAAC2C,QAAQ,CAAC,CAAC,EAAEhB,SAAS,CAAC,EAAEzB,aAAa,CAAC;AAC9G,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEsB,EAAAA,YAAYA,CAACJ,UAAU,EAAEG,OAAO,EAAEL,aAAa,EAAEvB,IAAI,EAAEa,IAAI,EAAEN,aAAa,EAC1E;IACE,IAAIqB,OAAO,CAACK,MAAM,GAAGR,UAAU,EAAE,OAAOjB,QAAQ,CAACI,YAAY;AAE7D,IAAA,MAAMsB,QAAQ,GAAGlC,IAAI,CAACa,IAAI,CAAC;;AAE3B;AACA;AACA,IAAA,IAAI,CAACqB,QAAQ,IAAIA,QAAQ,CAACC,OAAO,EAAE,CAACzD,KAAK,GAAG+C,UAAU,EACtD;MACE,MAAMY,OAAO,GAAG9B,aAAa,CAAC+B,YAAY,CACxCC,sBAAsB,CAACC,UAAU,CAACjB,aAAa,EAAEE,UAAU,EAAEkB,WAAW,CAACM,YAAY,EAAEJ,WAAW,CAACC,WAAW,CAChH,CAAC;AAED,MAAA,IAAI,CAACT,OAAO,EAAE,OAAO7B,QAAQ,CAACU,MAAM;MAEpCgB,QAAQ,EAAEnC,OAAO,EAAE;AACnBC,MAAAA,IAAI,CAACa,IAAI,CAAC,GAAGwB,OAAO;AACtB,IAAA;AAEA,IAAA,MAAMa,MAAM,GAAG,IAAIhE,UAAU,CAAC0C,OAAO,CAACzC,MAAM,EAAEyC,OAAO,CAACxC,UAAU,EAAEqC,UAAU,GAAGF,aAAa,CAAC;AAE7F,IAAA,OAAO,IAAI,CAACwB,KAAK,CAAC/C,IAAI,CAACa,IAAI,CAAC,EAAEqC,MAAM,EAAE3C,aAAa,CAAC;AACtD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEwC,EAAAA,KAAKA,CAAC5D,MAAM,EAAE+D,MAAM,EAAE3C,aAAa,EACnC;AACE;AACA;AACA;AACA;IACA,MAAM;MAAE4C,MAAM;AAAElE,MAAAA;AAAK,KAAC,GAAGE,MAAM,CAACiE,aAAa,CAAC7C,aAAa,CAAC;AAE5D,IAAA,IAAIS,MAAM,CAACmC,MAAM,CAAC,IAAI,CAAClE,IAAI,EAC3B;AACEE,MAAAA,MAAM,CAACkE,eAAe,CAAC9C,aAAa,CAAC;MAErC,OAAOS,MAAM,CAACmC,MAAM,CAAC,GAAGA,MAAM,GAAG3C,QAAQ,CAACU,MAAM;AAClD,IAAA;AAEAjC,IAAAA,IAAI,CAACqE,GAAG,CAACJ,MAAM,CAAC;AAChB/D,IAAAA,MAAM,CAACkE,eAAe,CAAC9C,aAAa,CAAC;IAErC,OAAOC,QAAQ,CAACC,IAAI;AACtB,EAAA;AACF;;AAGA;AACA;AACA;AACA;AACA8C,SAAS,CAACC,MAAM,CAAClE,eAAe,EAAE;AAAEmE,EAAAA,SAAS,EAAE,iBAAiB;AAAEC,EAAAA,MAAM,EAAE;AAAkB,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"Tr2DrawUPHelper.js","sources":["../../../src/trinityal/Tr2DrawUPHelper.js"],"sourcesContent":["// Source: trinity/trinityal/Tr2DrawUPHelper.cpp, trinity/trinityal/Tr2DrawUPHelper.h\n//\n// The DX9 `Draw*PrimitiveUP` calls let a caller hand the driver vertices and\n// indices out of its own memory, with nothing bound. No modern API can do that,\n// so Carbon emulates them ONCE, in a backend-agnostic helper every backend\n// delegates to: DX11 `m_drawUP` (`Tr2RenderContextDx11.cpp:1114-1139`), DX12\n// `m_drawUPHelper` (`Tr2RenderContextDx12.cpp:1199-1224`), Metal the same\n// (`Tr2RenderContextMetal.mm:558-571`). The emulation is the obvious one: copy\n// the caller's bytes into a scratch buffer, bind it, issue an ordinary draw.\n//\n// THE RING IS WHY IT IS A CLASS AND NOT A FUNCTION. Four vertex buffers, four\n// 16-bit index buffers, four 32-bit, each cursor advancing after use. A single\n// scratch buffer would be rewritten while a previous draw in the same frame\n// still referred to it, and the second draw would silently take the first's\n// geometry. Four is Carbon's number (`DRAW_UP_RING_SIZE`), and it is not a\n// guess about GPU latency: these draws come from line sets and debug geometry,\n// which issue a handful per frame.\n//\n// GROWTH IS ONE-WAY. A buffer too small for the request is recreated at the new\n// size and never shrinks again, so a frame that draws one big batch leaves the\n// slot large. Carbon does the same by calling `Create` on the existing\n// `Tr2BufferAL`; here the context's `CreateBuffer` hands back a fresh buffer of\n// the running backend's kind, because a shared file cannot name one.\n//\n// ONE SIGNATURE DIFFERENCE. Carbon's methods take the render context AND the\n// device, because its `Tr2BufferAL::Create` wants the device. Ours reaches the\n// device through the context, as every other buffer creation here does, so the\n// parameter is gone. Carbon's two indexed overloads differ only in index width;\n// this is one method that reads the width off the array it is given.\n\nimport { ALResult, Failed } from \"./ALResult.js\";\nimport { Tr2BufferDescriptionAL } from \"./stub/Tr2BufferALStub.js\";\nimport { CjsSchema } from \"#schema\";\nimport { Topology, Tr2CpuUsage, Tr2GpuUsage } from \"../global/consts/renderContext/index.js\";\n\n\n/** `DRAW_UP_RING_SIZE`. */\nconst RING_SIZE = 4;\n\n\n// Carbon's file-local `ComputeVertexCount` (`Tr2DrawUPHelper.cpp:13-33`).\n//\n// IT DISAGREES WITH THE RENDER CONTEXT'S OWN TABLE ON ONE ENTRY, and the\n// disagreement is Carbon's: a triangle fan counts as `primitiveCount` here and\n// as `primitiveCount + 2` where a fan is converted. Transcribed as written,\n// because no backend draws a fan at all - DX11 calls the topology invalid\n// (`Tr2RenderContextEnum.h:138`), Metal says NOT SUPPORTED\n// (`Tr2RenderContextMetal.mm:370`) - so the entry describes a path that cannot\n// be reached rather than a count anything relies on.\nconst VERTEX_COUNT = Object.freeze({\n [Topology.TOP_TRIANGLES]: count => count * 3,\n [Topology.TOP_TRIANGLE_STRIP]: count => count + 2,\n [Topology.TOP_LINES]: count => count * 2,\n [Topology.TOP_LINE_STRIP]: count => count + 1,\n [Topology.TOP_POINTS]: count => count,\n [Topology.TOP_TRIANGLE_FAN]: count => count\n});\n\n\n/**\n * Returns the caller's bytes as a byte view, whatever view they arrived in.\n *\n * @param {ArrayBufferView} data The caller's data.\n * @returns {Uint8Array} A view over the same bytes.\n */\nfunction bytesOf(data)\n{\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n}\n\n\n/**\n * Emulates the user-pointer draws with scratch buffers.\n *\n * A backend owns one of these and forwards its `Draw*PrimitiveUP` to it.\n */\nexport class Tr2DrawUPHelper\n{\n /** m_nextRingVB. */\n _nextRingVB = 0;\n\n /** m_nextRingIB16. */\n _nextRingIB16 = 0;\n\n /** m_nextRingIB32. */\n _nextRingIB32 = 0;\n\n /** m_vertexUP. */\n _vertexUP = new Array(RING_SIZE).fill(null);\n\n /** m_indexUP16. */\n _indexUP16 = new Array(RING_SIZE).fill(null);\n\n /** m_indexUP32. */\n _indexUP32 = new Array(RING_SIZE).fill(null);\n\n /**\n * Drops every scratch buffer and rewinds the ring.\n *\n * @returns {void}\n */\n Destroy()\n {\n for (const ring of [ this._vertexUP, this._indexUP16, this._indexUP32 ])\n {\n for (let i = 0; i !== RING_SIZE; ++i)\n {\n ring[i]?.Destroy();\n ring[i] = null;\n }\n }\n\n this._nextRingVB = 0;\n this._nextRingIB16 = 0;\n this._nextRingIB32 = 0;\n }\n\n /**\n * Draws non-indexed from caller memory.\n *\n * @param {number} topology A `Topology` value; the context's bound topology.\n * @param {number} primitiveCount Primitives to draw.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @param {object} renderContext The render context to bind and draw through.\n * @returns {number} An `ALResult` value.\n */\n DrawPrimitiveUP(topology, primitiveCount, vertexStreamZeroData, vertexStreamZeroStride, renderContext)\n {\n if (primitiveCount === 0) return ALResult.S_OK;\n\n const vertexCount = this._VertexCount(topology, primitiveCount);\n\n if (vertexCount === 0) return ALResult.E_INVALIDARG;\n\n const slot = this._nextRingVB;\n const filled = this._FillVertices(vertexCount, vertexStreamZeroData, vertexStreamZeroStride, slot, renderContext);\n\n if (Failed(filled)) return filled;\n\n if (!renderContext.SetStreamSource(0, this._vertexUP[slot], 0, vertexStreamZeroStride))\n {\n return ALResult.E_FAIL;\n }\n\n this._nextRingVB = (this._nextRingVB + 1) % RING_SIZE;\n\n return renderContext.DrawPrimitive(0, primitiveCount) ? ALResult.S_OK : ALResult.E_FAIL;\n }\n\n /**\n * Draws indexed from caller memory.\n *\n * @param {number} topology A `Topology` value; the context's bound topology.\n * @param {number} numVertices Vertices the index data spans.\n * @param {number} primitiveCount Primitives to draw.\n * @param {Uint16Array|Uint32Array} indexData The indices; its width picks the ring.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @param {object} renderContext The render context to bind and draw through.\n * @returns {number} An `ALResult` value.\n */\n DrawIndexedPrimitiveUP(\n topology,\n numVertices,\n primitiveCount,\n indexData,\n vertexStreamZeroData,\n vertexStreamZeroStride,\n renderContext\n )\n {\n if (primitiveCount === 0) return ALResult.S_OK;\n if (!indexData || !vertexStreamZeroData) return ALResult.E_INVALIDARG;\n\n // Carbon picks the overload at the call site and so picks the ring with it.\n // A JavaScript caller hands one array, so the ELEMENT WIDTH decides - which\n // is the same information, read later.\n const bytesPerIndex = indexData.BYTES_PER_ELEMENT;\n\n if (bytesPerIndex !== 2 && bytesPerIndex !== 4) return ALResult.E_INVALIDARG;\n\n const indexCount = this._VertexCount(topology, primitiveCount);\n\n if (indexCount === 0) return ALResult.E_INVALIDARG;\n\n const vertexSlot = this._nextRingVB;\n const filled = this._FillVertices(\n numVertices,\n vertexStreamZeroData,\n vertexStreamZeroStride,\n vertexSlot,\n renderContext\n );\n\n if (Failed(filled)) return filled;\n\n if (!renderContext.SetStreamSource(0, this._vertexUP[vertexSlot], 0, vertexStreamZeroStride))\n {\n return ALResult.E_FAIL;\n }\n\n this._nextRingVB = (this._nextRingVB + 1) % RING_SIZE;\n\n const ring = bytesPerIndex === 2 ? this._indexUP16 : this._indexUP32;\n const indexSlot = bytesPerIndex === 2 ? this._nextRingIB16 : this._nextRingIB32;\n const indices = this._FillIndices(indexCount, indexData, bytesPerIndex, ring, indexSlot, renderContext);\n\n if (Failed(indices)) return indices;\n\n if (!renderContext.SetIndices(ring[indexSlot], bytesPerIndex)) return ALResult.E_FAIL;\n\n if (bytesPerIndex === 2) this._nextRingIB16 = (this._nextRingIB16 + 1) % RING_SIZE;\n else this._nextRingIB32 = (this._nextRingIB32 + 1) % RING_SIZE;\n\n return renderContext.DrawIndexedPrimitive(numVertices, 0, primitiveCount) ? ALResult.S_OK : ALResult.E_FAIL;\n }\n\n /**\n * Carbon's `ComputeVertexCount`, refusing a topology it has no entry for.\n *\n * Carbon asserts and returns zero; an assert is not available here, so zero\n * is the whole answer and the callers turn it into `E_INVALIDARG`.\n *\n * @param {number} topology A `Topology` value.\n * @param {number} primitiveCount Primitives.\n * @returns {number} Vertices, or zero for an unsupported topology.\n */\n _VertexCount(topology, primitiveCount)\n {\n return VERTEX_COUNT[topology]?.(primitiveCount) ?? 0;\n }\n\n /**\n * `FillUPVertexBuffer`: grows the slot if needed, then copies the vertices in.\n *\n * @param {number} vertexCount Vertices to copy.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @param {number} slot Ring slot to fill.\n * @param {object} renderContext The render context.\n * @returns {number} An `ALResult` value.\n */\n _FillVertices(vertexCount, vertexStreamZeroData, vertexStreamZeroStride, slot, renderContext)\n {\n const totalSize = vertexCount * vertexStreamZeroStride;\n\n // Carbon returns S_OK for nothing to copy and goes on to bind and draw the\n // slot anyway, so a zero-size request is not an error. It IS a no-draw here\n // when the slot is still empty, because there is no buffer to bind.\n if (totalSize === 0) return this._vertexUP[slot] ? ALResult.S_OK : ALResult.E_INVALIDARG;\n\n if (!vertexStreamZeroData) return ALResult.E_INVALIDARG;\n if (bytesOf(vertexStreamZeroData).length < totalSize) return ALResult.E_INVALIDARG;\n\n const existing = this._vertexUP[slot];\n\n if (!existing || existing.GetDesc().GetSizeInBytes() < totalSize)\n {\n // Carbon's own rounding: a four-byte stride over `(totalSize + 3) / 4`\n // elements, so the buffer is described in words whatever the vertex\n // stride is. The stride the DRAW uses comes from `SetStreamSource`, not\n // from the description, so the two never have to agree.\n const created = renderContext.CreateBuffer(\n Tr2BufferDescriptionAL.FromStride(\n 4,\n Math.floor((totalSize + 3) / 4),\n Tr2GpuUsage.VERTEX_BUFFER,\n Tr2CpuUsage.WRITE_OFTEN\n )\n );\n\n if (!created) return ALResult.E_FAIL;\n\n existing?.Destroy();\n this._vertexUP[slot] = created;\n }\n\n return this._Copy(this._vertexUP[slot], bytesOf(vertexStreamZeroData).subarray(0, totalSize), renderContext);\n }\n\n /**\n * `FillUPIndexBuffer`: grows the slot if needed, then copies the indices in.\n *\n * @param {number} indexCount Indices to copy.\n * @param {Uint16Array|Uint32Array} indices The indices.\n * @param {number} bytesPerIndex Index width in bytes.\n * @param {Array<object|null>} ring The ring for this width.\n * @param {number} slot Ring slot to fill.\n * @param {object} renderContext The render context.\n * @returns {number} An `ALResult` value.\n */\n _FillIndices(indexCount, indices, bytesPerIndex, ring, slot, renderContext)\n {\n if (indices.length < indexCount) return ALResult.E_INVALIDARG;\n\n const existing = ring[slot];\n\n // Carbon compares the COUNT here and the byte size for vertices\n // (`:74,164`), which comes to the same thing while the width is fixed.\n if (!existing || existing.GetDesc().count < indexCount)\n {\n const created = renderContext.CreateBuffer(\n Tr2BufferDescriptionAL.FromStride(bytesPerIndex, indexCount, Tr2GpuUsage.INDEX_BUFFER, Tr2CpuUsage.WRITE_OFTEN)\n );\n\n if (!created) return ALResult.E_FAIL;\n\n existing?.Destroy();\n ring[slot] = created;\n }\n\n const source = new Uint8Array(indices.buffer, indices.byteOffset, indexCount * bytesPerIndex);\n\n return this._Copy(ring[slot], source, renderContext);\n }\n\n /**\n * Maps a scratch buffer, copies bytes into it and unmaps.\n *\n * @param {object} buffer The scratch buffer.\n * @param {Uint8Array} source The bytes to copy.\n * @param {object} renderContext The render context.\n * @returns {number} An `ALResult` value.\n */\n _Copy(buffer, source, renderContext)\n {\n // `UpdateBuffer` is NOT the route: it refuses a `WRITE_OFTEN` buffer, as\n // Carbon's stub does (`Tr2BufferALStub.cpp:138-141`), and these are all\n // `WRITE_OFTEN`. The map family is the write path for this usage, which is\n // what Carbon's helper uses too.\n const { result, data } = buffer.MapForWriting(renderContext);\n\n if (Failed(result) || !data)\n {\n buffer.UnmapForWriting(renderContext);\n\n return Failed(result) ? result : ALResult.E_FAIL;\n }\n\n data.set(source);\n buffer.UnmapForWriting(renderContext);\n\n return ALResult.S_OK;\n }\n}\n\n\n// DECLARED AS A CALL, NOT A DECORATOR. The abstraction layer is imported\n// straight from source by its tests - `#trinityal/...` resolves to `src/` - and\n// raw Node cannot parse decorator syntax, so a decorator here breaks every test\n// that reaches this file without a build first.\nCjsSchema.define(Tr2DrawUPHelper, { className: \"Tr2DrawUPHelper\", carbon: \"Tr2DrawUPHelper\" });\n"],"names":["RING_SIZE","VERTEX_COUNT","Object","freeze","Topology","TOP_TRIANGLES","count","TOP_TRIANGLE_STRIP","TOP_LINES","TOP_LINE_STRIP","TOP_POINTS","TOP_TRIANGLE_FAN","bytesOf","data","Uint8Array","buffer","byteOffset","byteLength","Tr2DrawUPHelper","_nextRingVB","_nextRingIB16","_nextRingIB32","_vertexUP","Array","fill","_indexUP16","_indexUP32","Destroy","ring","i","DrawPrimitiveUP","topology","primitiveCount","vertexStreamZeroData","vertexStreamZeroStride","renderContext","ALResult","S_OK","vertexCount","_VertexCount","E_INVALIDARG","slot","filled","_FillVertices","Failed","SetStreamSource","E_FAIL","DrawPrimitive","DrawIndexedPrimitiveUP","numVertices","indexData","bytesPerIndex","BYTES_PER_ELEMENT","indexCount","vertexSlot","indexSlot","indices","_FillIndices","SetIndices","DrawIndexedPrimitive","totalSize","length","existing","GetDesc","GetSizeInBytes","created","CreateBuffer","Tr2BufferDescriptionAL","FromStride","Math","floor","Tr2GpuUsage","VERTEX_BUFFER","Tr2CpuUsage","WRITE_OFTEN","_Copy","subarray","INDEX_BUFFER","source","result","MapForWriting","UnmapForWriting","set","CjsSchema","define","className","carbon"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA,MAAMA,SAAS,GAAG,CAAC;;AAGnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,YAAY,GAAGC,MAAM,CAACC,MAAM,CAAC;EACjC,CAACC,QAAQ,CAACC,aAAa,GAAGC,KAAK,IAAIA,KAAK,GAAG,CAAC;EAC5C,CAACF,QAAQ,CAACG,kBAAkB,GAAGD,KAAK,IAAIA,KAAK,GAAG,CAAC;EACjD,CAACF,QAAQ,CAACI,SAAS,GAAGF,KAAK,IAAIA,KAAK,GAAG,CAAC;EACxC,CAACF,QAAQ,CAACK,cAAc,GAAGH,KAAK,IAAIA,KAAK,GAAG,CAAC;AAC7C,EAAA,CAACF,QAAQ,CAACM,UAAU,GAAGJ,KAAK,IAAIA,KAAK;AACrC,EAAA,CAACF,QAAQ,CAACO,gBAAgB,GAAGL,KAAK,IAAIA;AACxC,CAAC,CAAC;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA,SAASM,OAAOA,CAACC,IAAI,EACrB;AACE,EAAA,OAAO,IAAIC,UAAU,CAACD,IAAI,CAACE,MAAM,EAAEF,IAAI,CAACG,UAAU,EAAEH,IAAI,CAACI,UAAU,CAAC;AACtE;;AAGA;AACA;AACA;AACA;AACA;AACO,MAAMC,eAAe,CAC5B;AACE;AACAC,EAAAA,WAAW,GAAG,CAAC;;AAEf;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;EACAC,SAAS,GAAG,IAAIC,KAAK,CAACvB,SAAS,CAAC,CAACwB,IAAI,CAAC,IAAI,CAAC;;AAE3C;EACAC,UAAU,GAAG,IAAIF,KAAK,CAACvB,SAAS,CAAC,CAACwB,IAAI,CAAC,IAAI,CAAC;;AAE5C;EACAE,UAAU,GAAG,IAAIH,KAAK,CAACvB,SAAS,CAAC,CAACwB,IAAI,CAAC,IAAI,CAAC;;AAE5C;AACF;AACA;AACA;AACA;AACEG,EAAAA,OAAOA,GACP;AACE,IAAA,KAAK,MAAMC,IAAI,IAAI,CAAE,IAAI,CAACN,SAAS,EAAE,IAAI,CAACG,UAAU,EAAE,IAAI,CAACC,UAAU,CAAE,EACvE;MACE,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,KAAK7B,SAAS,EAAE,EAAE6B,CAAC,EACpC;AACED,QAAAA,IAAI,CAACC,CAAC,CAAC,EAAEF,OAAO,EAAE;AAClBC,QAAAA,IAAI,CAACC,CAAC,CAAC,GAAG,IAAI;AAChB,MAAA;AACF,IAAA;IAEA,IAAI,CAACV,WAAW,GAAG,CAAC;IACpB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACC,aAAa,GAAG,CAAC;AACxB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACES,eAAeA,CAACC,QAAQ,EAAEC,cAAc,EAAEC,oBAAoB,EAAEC,sBAAsB,EAAEC,aAAa,EACrG;AACE,IAAA,IAAIH,cAAc,KAAK,CAAC,EAAE,OAAOI,QAAQ,CAACC,IAAI;IAE9C,MAAMC,WAAW,GAAG,IAAI,CAACC,YAAY,CAACR,QAAQ,EAAEC,cAAc,CAAC;AAE/D,IAAA,IAAIM,WAAW,KAAK,CAAC,EAAE,OAAOF,QAAQ,CAACI,YAAY;AAEnD,IAAA,MAAMC,IAAI,GAAG,IAAI,CAACtB,WAAW;AAC7B,IAAA,MAAMuB,MAAM,GAAG,IAAI,CAACC,aAAa,CAACL,WAAW,EAAEL,oBAAoB,EAAEC,sBAAsB,EAAEO,IAAI,EAAEN,aAAa,CAAC;AAEjH,IAAA,IAAIS,MAAM,CAACF,MAAM,CAAC,EAAE,OAAOA,MAAM;AAEjC,IAAA,IAAI,CAACP,aAAa,CAACU,eAAe,CAAC,CAAC,EAAE,IAAI,CAACvB,SAAS,CAACmB,IAAI,CAAC,EAAE,CAAC,EAAEP,sBAAsB,CAAC,EACtF;MACE,OAAOE,QAAQ,CAACU,MAAM;AACxB,IAAA;IAEA,IAAI,CAAC3B,WAAW,GAAG,CAAC,IAAI,CAACA,WAAW,GAAG,CAAC,IAAInB,SAAS;AAErD,IAAA,OAAOmC,aAAa,CAACY,aAAa,CAAC,CAAC,EAAEf,cAAc,CAAC,GAAGI,QAAQ,CAACC,IAAI,GAAGD,QAAQ,CAACU,MAAM;AACzF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEE,EAAAA,sBAAsBA,CACpBjB,QAAQ,EACRkB,WAAW,EACXjB,cAAc,EACdkB,SAAS,EACTjB,oBAAoB,EACpBC,sBAAsB,EACtBC,aAAa,EAEf;AACE,IAAA,IAAIH,cAAc,KAAK,CAAC,EAAE,OAAOI,QAAQ,CAACC,IAAI;IAC9C,IAAI,CAACa,SAAS,IAAI,CAACjB,oBAAoB,EAAE,OAAOG,QAAQ,CAACI,YAAY;;AAErE;AACA;AACA;AACA,IAAA,MAAMW,aAAa,GAAGD,SAAS,CAACE,iBAAiB;IAEjD,IAAID,aAAa,KAAK,CAAC,IAAIA,aAAa,KAAK,CAAC,EAAE,OAAOf,QAAQ,CAACI,YAAY;IAE5E,MAAMa,UAAU,GAAG,IAAI,CAACd,YAAY,CAACR,QAAQ,EAAEC,cAAc,CAAC;AAE9D,IAAA,IAAIqB,UAAU,KAAK,CAAC,EAAE,OAAOjB,QAAQ,CAACI,YAAY;AAElD,IAAA,MAAMc,UAAU,GAAG,IAAI,CAACnC,WAAW;AACnC,IAAA,MAAMuB,MAAM,GAAG,IAAI,CAACC,aAAa,CAC/BM,WAAW,EACXhB,oBAAoB,EACpBC,sBAAsB,EACtBoB,UAAU,EACVnB,aACF,CAAC;AAED,IAAA,IAAIS,MAAM,CAACF,MAAM,CAAC,EAAE,OAAOA,MAAM;AAEjC,IAAA,IAAI,CAACP,aAAa,CAACU,eAAe,CAAC,CAAC,EAAE,IAAI,CAACvB,SAAS,CAACgC,UAAU,CAAC,EAAE,CAAC,EAAEpB,sBAAsB,CAAC,EAC5F;MACE,OAAOE,QAAQ,CAACU,MAAM;AACxB,IAAA;IAEA,IAAI,CAAC3B,WAAW,GAAG,CAAC,IAAI,CAACA,WAAW,GAAG,CAAC,IAAInB,SAAS;AAErD,IAAA,MAAM4B,IAAI,GAAGuB,aAAa,KAAK,CAAC,GAAG,IAAI,CAAC1B,UAAU,GAAG,IAAI,CAACC,UAAU;AACpE,IAAA,MAAM6B,SAAS,GAAGJ,aAAa,KAAK,CAAC,GAAG,IAAI,CAAC/B,aAAa,GAAG,IAAI,CAACC,aAAa;AAC/E,IAAA,MAAMmC,OAAO,GAAG,IAAI,CAACC,YAAY,CAACJ,UAAU,EAAEH,SAAS,EAAEC,aAAa,EAAEvB,IAAI,EAAE2B,SAAS,EAAEpB,aAAa,CAAC;AAEvG,IAAA,IAAIS,MAAM,CAACY,OAAO,CAAC,EAAE,OAAOA,OAAO;AAEnC,IAAA,IAAI,CAACrB,aAAa,CAACuB,UAAU,CAAC9B,IAAI,CAAC2B,SAAS,CAAC,EAAEJ,aAAa,CAAC,EAAE,OAAOf,QAAQ,CAACU,MAAM;AAErF,IAAA,IAAIK,aAAa,KAAK,CAAC,EAAE,IAAI,CAAC/B,aAAa,GAAG,CAAC,IAAI,CAACA,aAAa,GAAG,CAAC,IAAIpB,SAAS,CAAC,KAC9E,IAAI,CAACqB,aAAa,GAAG,CAAC,IAAI,CAACA,aAAa,GAAG,CAAC,IAAIrB,SAAS;AAE9D,IAAA,OAAOmC,aAAa,CAACwB,oBAAoB,CAACV,WAAW,EAAE,CAAC,EAAEjB,cAAc,CAAC,GAAGI,QAAQ,CAACC,IAAI,GAAGD,QAAQ,CAACU,MAAM;AAC7G,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEP,EAAAA,YAAYA,CAACR,QAAQ,EAAEC,cAAc,EACrC;IACE,OAAO/B,YAAY,CAAC8B,QAAQ,CAAC,GAAGC,cAAc,CAAC,IAAI,CAAC;AACtD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,aAAaA,CAACL,WAAW,EAAEL,oBAAoB,EAAEC,sBAAsB,EAAEO,IAAI,EAAEN,aAAa,EAC5F;AACE,IAAA,MAAMyB,SAAS,GAAGtB,WAAW,GAAGJ,sBAAsB;;AAEtD;AACA;AACA;AACA,IAAA,IAAI0B,SAAS,KAAK,CAAC,EAAE,OAAO,IAAI,CAACtC,SAAS,CAACmB,IAAI,CAAC,GAAGL,QAAQ,CAACC,IAAI,GAAGD,QAAQ,CAACI,YAAY;AAExF,IAAA,IAAI,CAACP,oBAAoB,EAAE,OAAOG,QAAQ,CAACI,YAAY;AACvD,IAAA,IAAI5B,OAAO,CAACqB,oBAAoB,CAAC,CAAC4B,MAAM,GAAGD,SAAS,EAAE,OAAOxB,QAAQ,CAACI,YAAY;AAElF,IAAA,MAAMsB,QAAQ,GAAG,IAAI,CAACxC,SAAS,CAACmB,IAAI,CAAC;AAErC,IAAA,IAAI,CAACqB,QAAQ,IAAIA,QAAQ,CAACC,OAAO,EAAE,CAACC,cAAc,EAAE,GAAGJ,SAAS,EAChE;AACE;AACA;AACA;AACA;AACA,MAAA,MAAMK,OAAO,GAAG9B,aAAa,CAAC+B,YAAY,CACxCC,sBAAsB,CAACC,UAAU,CAC/B,CAAC,EACDC,IAAI,CAACC,KAAK,CAAC,CAACV,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,EAC/BW,WAAW,CAACC,aAAa,EACzBC,WAAW,CAACC,WACd,CACF,CAAC;AAED,MAAA,IAAI,CAACT,OAAO,EAAE,OAAO7B,QAAQ,CAACU,MAAM;MAEpCgB,QAAQ,EAAEnC,OAAO,EAAE;AACnB,MAAA,IAAI,CAACL,SAAS,CAACmB,IAAI,CAAC,GAAGwB,OAAO;AAChC,IAAA;IAEA,OAAO,IAAI,CAACU,KAAK,CAAC,IAAI,CAACrD,SAAS,CAACmB,IAAI,CAAC,EAAE7B,OAAO,CAACqB,oBAAoB,CAAC,CAAC2C,QAAQ,CAAC,CAAC,EAAEhB,SAAS,CAAC,EAAEzB,aAAa,CAAC;AAC9G,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEsB,EAAAA,YAAYA,CAACJ,UAAU,EAAEG,OAAO,EAAEL,aAAa,EAAEvB,IAAI,EAAEa,IAAI,EAAEN,aAAa,EAC1E;IACE,IAAIqB,OAAO,CAACK,MAAM,GAAGR,UAAU,EAAE,OAAOjB,QAAQ,CAACI,YAAY;AAE7D,IAAA,MAAMsB,QAAQ,GAAGlC,IAAI,CAACa,IAAI,CAAC;;AAE3B;AACA;AACA,IAAA,IAAI,CAACqB,QAAQ,IAAIA,QAAQ,CAACC,OAAO,EAAE,CAACzD,KAAK,GAAG+C,UAAU,EACtD;MACE,MAAMY,OAAO,GAAG9B,aAAa,CAAC+B,YAAY,CACxCC,sBAAsB,CAACC,UAAU,CAACjB,aAAa,EAAEE,UAAU,EAAEkB,WAAW,CAACM,YAAY,EAAEJ,WAAW,CAACC,WAAW,CAChH,CAAC;AAED,MAAA,IAAI,CAACT,OAAO,EAAE,OAAO7B,QAAQ,CAACU,MAAM;MAEpCgB,QAAQ,EAAEnC,OAAO,EAAE;AACnBC,MAAAA,IAAI,CAACa,IAAI,CAAC,GAAGwB,OAAO;AACtB,IAAA;AAEA,IAAA,MAAMa,MAAM,GAAG,IAAIhE,UAAU,CAAC0C,OAAO,CAACzC,MAAM,EAAEyC,OAAO,CAACxC,UAAU,EAAEqC,UAAU,GAAGF,aAAa,CAAC;AAE7F,IAAA,OAAO,IAAI,CAACwB,KAAK,CAAC/C,IAAI,CAACa,IAAI,CAAC,EAAEqC,MAAM,EAAE3C,aAAa,CAAC;AACtD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEwC,EAAAA,KAAKA,CAAC5D,MAAM,EAAE+D,MAAM,EAAE3C,aAAa,EACnC;AACE;AACA;AACA;AACA;IACA,MAAM;MAAE4C,MAAM;AAAElE,MAAAA;AAAK,KAAC,GAAGE,MAAM,CAACiE,aAAa,CAAC7C,aAAa,CAAC;AAE5D,IAAA,IAAIS,MAAM,CAACmC,MAAM,CAAC,IAAI,CAAClE,IAAI,EAC3B;AACEE,MAAAA,MAAM,CAACkE,eAAe,CAAC9C,aAAa,CAAC;MAErC,OAAOS,MAAM,CAACmC,MAAM,CAAC,GAAGA,MAAM,GAAG3C,QAAQ,CAACU,MAAM;AAClD,IAAA;AAEAjC,IAAAA,IAAI,CAACqE,GAAG,CAACJ,MAAM,CAAC;AAChB/D,IAAAA,MAAM,CAACkE,eAAe,CAAC9C,aAAa,CAAC;IAErC,OAAOC,QAAQ,CAACC,IAAI;AACtB,EAAA;AACF;;AAGA;AACA;AACA;AACA;AACA8C,SAAS,CAACC,MAAM,CAAClE,eAAe,EAAE;AAAEmE,EAAAA,SAAS,EAAE,iBAAiB;AAAEC,EAAAA,MAAM,EAAE;AAAkB,CAAC,CAAC;;;;"}
@@ -0,0 +1,45 @@
1
+ // Source: trinity/trinityal/Tr2HalHelperStructures.h
2
+ // Source: trinity/trinityal/Tr2HalHelperStructures.cpp
3
+ //
4
+ // ONE FOLDER PER DONOR HEADER. Carbon declares six types in this header, and a
5
+ // C++ header is an include unit rather than a class container. Splitting them one
6
+ // per file keeps every class findable by its own name without inventing anything:
7
+ // the folder still names the donor, so each file has something to be diffed
8
+ // against. It also makes an unported sibling visible as a missing FILE, which is
9
+ // how two of these were found absent.
10
+
11
+ /**
12
+ * A multisample description.
13
+ */
14
+ class Tr2MsaaDesc {
15
+ /** Samples per pixel; never below one. */
16
+ samples = 1;
17
+
18
+ /** Backend-defined quality level. */
19
+ quality = 0;
20
+
21
+ /**
22
+ * @param {number} [samples] Samples per pixel.
23
+ * @param {number} [quality] Quality level.
24
+ */
25
+ constructor(samples = 1, quality = 0) {
26
+ this.samples = Math.max(samples, 1);
27
+ this.quality = quality;
28
+ }
29
+
30
+ /**
31
+ * Whether two descriptions match.
32
+ *
33
+ * Carbon clamps both sample counts to at least one before comparing, so a
34
+ * zero and a one are the same description.
35
+ *
36
+ * @param {Tr2MsaaDesc} other The description to compare with.
37
+ * @returns {boolean} True when they match.
38
+ */
39
+ Equals(other) {
40
+ return Math.max(this.samples, 1) === Math.max(other.samples, 1) && this.quality === other.quality;
41
+ }
42
+ }
43
+
44
+ export { Tr2MsaaDesc };
45
+ //# sourceMappingURL=Tr2MsaaDesc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tr2MsaaDesc.js","sources":["../../../../src/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js"],"sourcesContent":["// Source: trinity/trinityal/Tr2HalHelperStructures.h\n// Source: trinity/trinityal/Tr2HalHelperStructures.cpp\n//\n// ONE FOLDER PER DONOR HEADER. Carbon declares six types in this header, and a\n// C++ header is an include unit rather than a class container. Splitting them one\n// per file keeps every class findable by its own name without inventing anything:\n// the folder still names the donor, so each file has something to be diffed\n// against. It also makes an unported sibling visible as a missing FILE, which is\n// how two of these were found absent.\n\n/**\n * A multisample description.\n */\nexport class Tr2MsaaDesc\n{\n /** Samples per pixel; never below one. */\n samples = 1;\n\n /** Backend-defined quality level. */\n quality = 0;\n\n /**\n * @param {number} [samples] Samples per pixel.\n * @param {number} [quality] Quality level.\n */\n constructor(samples = 1, quality = 0)\n {\n this.samples = Math.max(samples, 1);\n this.quality = quality;\n }\n\n /**\n * Whether two descriptions match.\n *\n * Carbon clamps both sample counts to at least one before comparing, so a\n * zero and a one are the same description.\n *\n * @param {Tr2MsaaDesc} other The description to compare with.\n * @returns {boolean} True when they match.\n */\n Equals(other)\n {\n return Math.max(this.samples, 1) === Math.max(other.samples, 1) && this.quality === other.quality;\n }\n}\n"],"names":["Tr2MsaaDesc","samples","quality","constructor","Math","max","Equals","other"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO,MAAMA,WAAW,CACxB;AACE;AACAC,EAAAA,OAAO,GAAG,CAAC;;AAEX;AACAC,EAAAA,OAAO,GAAG,CAAC;;AAEX;AACF;AACA;AACA;EACEC,WAAWA,CAACF,OAAO,GAAG,CAAC,EAAEC,OAAO,GAAG,CAAC,EACpC;IACE,IAAI,CAACD,OAAO,GAAGG,IAAI,CAACC,GAAG,CAACJ,OAAO,EAAE,CAAC,CAAC;IACnC,IAAI,CAACC,OAAO,GAAGA,OAAO;AACxB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEI,MAAMA,CAACC,KAAK,EACZ;AACE,IAAA,OAAOH,IAAI,CAACC,GAAG,CAAC,IAAI,CAACJ,OAAO,EAAE,CAAC,CAAC,KAAKG,IAAI,CAACC,GAAG,CAACE,KAAK,CAACN,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,CAACC,OAAO,KAAKK,KAAK,CAACL,OAAO;AACnG,EAAA;AACF;;;;"}
@@ -0,0 +1,154 @@
1
+ import '../../global/consts/renderContext/formats.js';
2
+ import '../../global/consts/renderContext/pipeline.js';
3
+ import { CompareFunc, TextureAddressMode, TextureFilter } from '../../global/consts/renderContext/renderStates.js';
4
+
5
+ // Source: trinity/trinityal/Tr2HalHelperStructures.h:137-254 (struct Tr2SamplerDescription)
6
+ // trinity/trinityal/Tr2HalHelperStructures.h:255-277 (struct hash<Tr2SamplerDescription>)
7
+ // trinity/trinityal/include/Tr2SamplerStateAL.h (forward declaration, and the factory)
8
+ //
9
+ // ONE FOLDER PER DONOR HEADER - see the sibling files for why.
10
+ //
11
+ // THE CLASS WAS MISSING AND THIS FILE HELD ONLY FUNCTIONS. Carbon declares a
12
+ // struct with a documented default constructor; we had a normaliser returning an
13
+ // anonymous object, and the previous provenance header named `Tr2SamplerAL.h`,
14
+ // which does not declare it. A struct with defaults reduced to a literal with
15
+ // `?? 0` is how those defaults drifted - see below.
16
+ //
17
+ // THREE DEFAULTS WERE WRONG, and two were not even members of their enum. Carbon's
18
+ // default constructor sets TF_POINT (1), TA_WRAP (1) and CMP_ALWAYS (8); the
19
+ // normaliser defaulted all three to 0. `TextureFilter` does have a zero
20
+ // (`TF_NONE`), so an omitted filter silently meant NO filtering rather than point
21
+ // sampling. `TextureAddressMode` and `CompareFunc` are 1-based and have no zero at
22
+ // all, so an omitted address mode or comparison produced a value outside the enum,
23
+ // which no backend can map and nothing reported.
24
+ //
25
+ // THE FACTORY KEY IS CARBON'S TOO. `Tr2SamplerStateAL::Create` is a lookup in a
26
+ // `Tr2ObjectFactory<..., Tr2SamplerDescription>` owned by the primary context
27
+ // (`Tr2SamplerStateAL.cpp:25-28`), so two equal descriptions yield one state and
28
+ // `operator==` on states is identity. Carbon reaches that through
29
+ // `std::hash<Tr2SamplerDescription>`; JavaScript has no hash specialisation to
30
+ // install, so `SamplerDescriptionKey` is the equivalent and the Map it feeds is
31
+ // the factory.
32
+ const rawView = new DataView(new ArrayBuffer(4));
33
+
34
+ /** A float from its raw IEEE-754 bits, or the float itself. */
35
+ function floatOf(value, raw, fallback) {
36
+ if (Number.isFinite(value)) return value;
37
+ if (Number.isInteger(raw)) {
38
+ rawView.setUint32(0, raw >>> 0, true);
39
+ return rawView.getFloat32(0, true);
40
+ }
41
+ return fallback;
42
+ }
43
+
44
+ /**
45
+ * Carbon's `std::numeric_limits<float>::max()`, the open upper LOD bound an author
46
+ * leaves unbounded.
47
+ */
48
+ const SAMPLER_LOD_UNBOUNDED = 3.4028234663852886e38;
49
+
50
+ /**
51
+ * The authored sampler state a `Tr2SamplerStateAL` is created from, and the key
52
+ * its factory dedupes on.
53
+ */
54
+ class Tr2SamplerDescription {
55
+ m_minFilter = TextureFilter.TF_POINT;
56
+ m_magFilter = TextureFilter.TF_POINT;
57
+ m_mipFilter = TextureFilter.TF_POINT;
58
+ m_isComparisonFilter = false;
59
+ m_addressU = TextureAddressMode.TA_WRAP;
60
+ m_addressV = TextureAddressMode.TA_WRAP;
61
+ m_addressW = TextureAddressMode.TA_WRAP;
62
+ m_mipLODBias = 0;
63
+ m_maxAnisotropy = 1;
64
+ m_comparisonFunc = CompareFunc.CMP_ALWAYS;
65
+
66
+ /** Four floats, RGBA. Carbon's constructor zeroes all four. */
67
+ m_borderColor = [0, 0, 0, 0];
68
+ m_minLOD = 0;
69
+ m_maxLOD = SAMPLER_LOD_UNBOUNDED;
70
+
71
+ /**
72
+ * Carbon's second constructor, which takes every field.
73
+ *
74
+ * Its first form is the default constructor, which is the field initialisers
75
+ * above. Passing nothing here is that form.
76
+ *
77
+ * @param {object} [values] Field values in the normal form, as
78
+ * {@link NormalizeSamplerDescription} produces.
79
+ */
80
+ constructor(values = undefined) {
81
+ if (!values) return;
82
+ Object.assign(this, {
83
+ m_minFilter: values.minFilter,
84
+ m_magFilter: values.magFilter,
85
+ m_mipFilter: values.mipFilter,
86
+ m_isComparisonFilter: values.isComparisonFilter,
87
+ m_addressU: values.addressU,
88
+ m_addressV: values.addressV,
89
+ m_addressW: values.addressW,
90
+ m_mipLODBias: values.mipLODBias,
91
+ m_maxAnisotropy: values.maxAnisotropy,
92
+ m_comparisonFunc: values.comparisonFunc,
93
+ m_borderColor: [...values.borderColor],
94
+ m_minLOD: values.minLOD,
95
+ m_maxLOD: values.maxLOD
96
+ });
97
+ }
98
+ }
99
+
100
+ /**
101
+ * The normal form of a sampler description.
102
+ *
103
+ * TWO SPELLINGS ARRIVE HERE. The effect reader keeps floats as their raw bits
104
+ * (`Tr2SamplerSetup.fromCarbonBinary`: `minLODRaw`, `maxLODRaw`, `mipLODBiasRaw`,
105
+ * `borderColorRaw`) so a round trip is byte-exact; an override built at runtime
106
+ * carries plain floats. The normal form is the floats, and both spellings
107
+ * normalise to it, so the factory key is the same whichever road a description
108
+ * took.
109
+ *
110
+ * @param {object|null} description Authored state in either spelling.
111
+ * @returns {object|null} The normalised description, or null for nothing.
112
+ */
113
+ function NormalizeSamplerDescription(description) {
114
+ if (!description || typeof description !== "object") return null;
115
+ const border = description.borderColor ?? description.borderColorRaw ?? [];
116
+ const rawBorder = description.borderColor ? null : description.borderColorRaw ?? null;
117
+
118
+ // Defaults are Carbon's default constructor, NOT zero. `isComparisonFilter` is
119
+ // also Carbon's field name; it was `comparison` here, which reads as the
120
+ // comparison FUNCTION rather than the flag selecting a comparison sampler.
121
+ return {
122
+ minFilter: description.minFilter ?? TextureFilter.TF_POINT,
123
+ magFilter: description.magFilter ?? TextureFilter.TF_POINT,
124
+ mipFilter: description.mipFilter ?? TextureFilter.TF_POINT,
125
+ isComparisonFilter: Boolean(description.isComparisonFilter ?? description.comparison),
126
+ addressU: description.addressU ?? TextureAddressMode.TA_WRAP,
127
+ addressV: description.addressV ?? TextureAddressMode.TA_WRAP,
128
+ addressW: description.addressW ?? TextureAddressMode.TA_WRAP,
129
+ mipLODBias: floatOf(description.mipLODBias, description.mipLODBiasRaw, 0),
130
+ maxAnisotropy: description.maxAnisotropy ?? 1,
131
+ comparisonFunc: description.comparisonFunc ?? CompareFunc.CMP_ALWAYS,
132
+ borderColor: [0, 1, 2, 3].map(index => floatOf(rawBorder ? undefined : border[index], rawBorder?.[index], 0)),
133
+ minLOD: floatOf(description.minLOD, description.minLODRaw, 0),
134
+ maxLOD: floatOf(description.maxLOD, description.maxLODRaw, SAMPLER_LOD_UNBOUNDED)
135
+ };
136
+ }
137
+
138
+ /**
139
+ * The factory key for a description: two descriptions with equal keys are one
140
+ * sampler state.
141
+ *
142
+ * This is what Carbon reaches through `std::hash<Tr2SamplerDescription>`
143
+ * (`Tr2HalHelperStructures.h:255-277`), which JavaScript cannot install.
144
+ *
145
+ * @param {object} description A description in either spelling.
146
+ * @returns {string|null} The key, or null for nothing.
147
+ */
148
+ function SamplerDescriptionKey(description) {
149
+ const normalized = NormalizeSamplerDescription(description);
150
+ return normalized ? JSON.stringify(normalized) : null;
151
+ }
152
+
153
+ export { NormalizeSamplerDescription, SAMPLER_LOD_UNBOUNDED, SamplerDescriptionKey, Tr2SamplerDescription };
154
+ //# sourceMappingURL=Tr2SamplerDescription.js.map