@carbonenginejs/runtime 0.1.0-alpha.2 → 0.1.0-alpha.4

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 (1638) hide show
  1. package/NOTICE +5 -4
  2. package/dist/audio/generated/audio/AudEventKey.js +2 -2
  3. package/dist/audio/generated/audio/AudEventKey.js.map +1 -1
  4. package/dist/audio/generated/audio/AudSettings.js +2 -2
  5. package/dist/audio/generated/audio/AudSettings.js.map +1 -1
  6. package/dist/audio/index.js +1 -1
  7. package/dist/audio/trinity/audio/AudEmitter.js +4 -5
  8. package/dist/audio/trinity/audio/AudEmitter.js.map +1 -1
  9. package/dist/audio/trinity/audio/AudEventCurve.js +14 -14
  10. package/dist/audio/trinity/audio/AudEventCurve.js.map +1 -1
  11. package/dist/audio/trinity/audio/AudGameObjResource.js +13 -25
  12. package/dist/audio/trinity/audio/AudGameObjResource.js.map +1 -1
  13. package/dist/audio/trinity/audio/AudManager.js +2 -2
  14. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  15. package/dist/audio/trinity/audio/AudParameter.js +7 -11
  16. package/dist/audio/trinity/audio/AudParameter.js.map +1 -1
  17. package/dist/audio/trinity/audio/AudUIPlayer.js +2 -2
  18. package/dist/audio/trinity/audio/AudUIPlayer.js.map +1 -1
  19. package/dist/audio/trinity/audio/AudioCurveSetDriver.js +2 -2
  20. package/dist/audio/trinity/audio/AudioCurveSetDriver.js.map +1 -1
  21. package/dist/audio/trinity/audio/StretchAudio.js +2 -2
  22. package/dist/audio/trinity/audio/StretchAudio.js.map +1 -1
  23. package/dist/audio/trinity/index.js +1 -1
  24. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchAuto.js +2 -2
  25. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchAuto.js.map +1 -1
  26. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchBase.js +2 -2
  27. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchBase.js.map +1 -1
  28. package/dist/audio/trinity/trinityAudioApi/ITr2AudEmitter.js +1 -37
  29. package/dist/audio/trinity/trinityAudioApi/ITr2AudEmitter.js.map +1 -1
  30. package/dist/character/incarna/curves/Tr2ColorCurve.js +2 -2
  31. package/dist/character/incarna/curves/Tr2ColorCurve.js.map +1 -1
  32. package/dist/character/incarna/curves/Tr2ColorKey.js +2 -2
  33. package/dist/character/incarna/curves/Tr2ColorKey.js.map +1 -1
  34. package/dist/character/incarna/curves/Tr2ScalarCurve.js +2 -2
  35. package/dist/character/incarna/curves/Tr2ScalarCurve.js.map +1 -1
  36. package/dist/character/incarna/curves/Tr2ScalarKey.js +2 -2
  37. package/dist/character/incarna/curves/Tr2ScalarKey.js.map +1 -1
  38. package/dist/character/incarna/interior/Tr2InteriorCell.js +2 -2
  39. package/dist/character/incarna/interior/Tr2InteriorCell.js.map +1 -1
  40. package/dist/character/library/CjsCharacterLibrary.js +9 -16
  41. package/dist/character/library/CjsCharacterLibrary.js.map +1 -1
  42. package/dist/character/library/CjsCharacterLibraryDocuments.js +20 -4
  43. package/dist/character/library/CjsCharacterLibraryDocuments.js.map +1 -1
  44. package/dist/character/model/CjsCharacterRecord.js +2 -2
  45. package/dist/character/model/CjsCharacterRecord.js.map +1 -1
  46. package/dist/character/model/activity/CjsCharacterArchetype.js +2 -2
  47. package/dist/character/model/activity/CjsCharacterArchetype.js.map +1 -1
  48. package/dist/character/model/appearance/CjsCharacterColorLocation.js +2 -2
  49. package/dist/character/model/appearance/CjsCharacterColorLocation.js.map +1 -1
  50. package/dist/character/model/appearance/CjsCharacterColorName.js +2 -2
  51. package/dist/character/model/appearance/CjsCharacterColorName.js.map +1 -1
  52. package/dist/character/model/appearance/CjsCharacterColorSelection.js +2 -2
  53. package/dist/character/model/appearance/CjsCharacterColorSelection.js.map +1 -1
  54. package/dist/character/model/appearance/CjsCharacterSculptSelection.js +2 -2
  55. package/dist/character/model/appearance/CjsCharacterSculptSelection.js.map +1 -1
  56. package/dist/character/model/appearance/CjsCharacterSculptingLocation.js +2 -2
  57. package/dist/character/model/appearance/CjsCharacterSculptingLocation.js.map +1 -1
  58. package/dist/character/model/behavior/CjsCharacterAvatarBehavior.js +2 -2
  59. package/dist/character/model/behavior/CjsCharacterAvatarBehavior.js.map +1 -1
  60. package/dist/character/model/catalog/CjsCharacterColorValue.js +2 -2
  61. package/dist/character/model/catalog/CjsCharacterColorValue.js.map +1 -1
  62. package/dist/character/model/catalog/CjsCharacterDefinition.js +2 -2
  63. package/dist/character/model/catalog/CjsCharacterDefinition.js.map +1 -1
  64. package/dist/character/model/catalog/CjsCharacterMaterialProfile.js +2 -2
  65. package/dist/character/model/catalog/CjsCharacterMaterialProfile.js.map +1 -1
  66. package/dist/character/model/catalog/CjsCharacterModifierReference.js +2 -2
  67. package/dist/character/model/catalog/CjsCharacterModifierReference.js.map +1 -1
  68. package/dist/character/model/catalog/CjsCharacterPartMetadata.js +2 -2
  69. package/dist/character/model/catalog/CjsCharacterPartMetadata.js.map +1 -1
  70. package/dist/character/model/catalog/CjsCharacterPartModelBundle.js +2 -2
  71. package/dist/character/model/catalog/CjsCharacterPartModelBundle.js.map +1 -1
  72. package/dist/character/model/catalog/CjsCharacterPartSource.js +2 -2
  73. package/dist/character/model/catalog/CjsCharacterPartSource.js.map +1 -1
  74. package/dist/character/model/catalog/CjsCharacterPartSourceVersion.js +2 -2
  75. package/dist/character/model/catalog/CjsCharacterPartSourceVersion.js.map +1 -1
  76. package/dist/character/model/catalog/CjsCharacterPartType.js +2 -2
  77. package/dist/character/model/catalog/CjsCharacterPartType.js.map +1 -1
  78. package/dist/character/model/catalog/CjsCharacterProjectionProfile.js +2 -2
  79. package/dist/character/model/catalog/CjsCharacterProjectionProfile.js.map +1 -1
  80. package/dist/character/model/catalog/CjsCharacterRecipeEntry.js +2 -2
  81. package/dist/character/model/catalog/CjsCharacterRecipeEntry.js.map +1 -1
  82. package/dist/character/model/catalog/CjsCharacterRecipeProfile.js +2 -2
  83. package/dist/character/model/catalog/CjsCharacterRecipeProfile.js.map +1 -1
  84. package/dist/character/model/catalog/CjsCharacterTextureMetadata.js +2 -2
  85. package/dist/character/model/catalog/CjsCharacterTextureMetadata.js.map +1 -1
  86. package/dist/character/model/composition/CjsCharacterModifierLocation.js +2 -2
  87. package/dist/character/model/composition/CjsCharacterModifierLocation.js.map +1 -1
  88. package/dist/character/model/composition/CjsCharacterModifierSelection.js +2 -2
  89. package/dist/character/model/composition/CjsCharacterModifierSelection.js.map +1 -1
  90. package/dist/character/model/creation/CjsCharacterPaperdoll.js +2 -2
  91. package/dist/character/model/creation/CjsCharacterPaperdoll.js.map +1 -1
  92. package/dist/character/model/demographics/CjsCharacterAncestry.js +2 -2
  93. package/dist/character/model/demographics/CjsCharacterAncestry.js.map +1 -1
  94. package/dist/character/model/demographics/CjsCharacterBloodline.js +2 -2
  95. package/dist/character/model/demographics/CjsCharacterBloodline.js.map +1 -1
  96. package/dist/character/model/demographics/CjsCharacterRace.js +2 -2
  97. package/dist/character/model/demographics/CjsCharacterRace.js.map +1 -1
  98. package/dist/character/model/planning/CjsCharacterAppearanceBinding.js +2 -2
  99. package/dist/character/model/planning/CjsCharacterAppearanceBinding.js.map +1 -1
  100. package/dist/character/model/planning/CjsCharacterAppearanceColorSelection.js +2 -2
  101. package/dist/character/model/planning/CjsCharacterAppearanceColorSelection.js.map +1 -1
  102. package/dist/character/model/planning/CjsCharacterAppearanceDiagnostic.js +2 -2
  103. package/dist/character/model/planning/CjsCharacterAppearanceDiagnostic.js.map +1 -1
  104. package/dist/character/model/planning/CjsCharacterAppearanceLayer.js +2 -2
  105. package/dist/character/model/planning/CjsCharacterAppearanceLayer.js.map +1 -1
  106. package/dist/character/model/planning/CjsCharacterAppearancePlan.js +2 -2
  107. package/dist/character/model/planning/CjsCharacterAppearancePlan.js.map +1 -1
  108. package/dist/character/model/planning/CjsCharacterAppearanceSelection.js +2 -2
  109. package/dist/character/model/planning/CjsCharacterAppearanceSelection.js.map +1 -1
  110. package/dist/character/model/planning/CjsCharacterBindingAlpha.js +2 -2
  111. package/dist/character/model/planning/CjsCharacterBindingAlpha.js.map +1 -1
  112. package/dist/character/model/planning/CjsCharacterCompositionInput.js +2 -2
  113. package/dist/character/model/planning/CjsCharacterCompositionInput.js.map +1 -1
  114. package/dist/character/model/planning/CjsCharacterCompositionPass.js +2 -2
  115. package/dist/character/model/planning/CjsCharacterCompositionPass.js.map +1 -1
  116. package/dist/character/model/planning/CjsCharacterCompositionTarget.js +2 -2
  117. package/dist/character/model/planning/CjsCharacterCompositionTarget.js.map +1 -1
  118. package/dist/character/model/planning/CjsCharacterCoverage.js +2 -2
  119. package/dist/character/model/planning/CjsCharacterCoverage.js.map +1 -1
  120. package/dist/character/model/planning/CjsCharacterMorphTargetWeight.js +2 -2
  121. package/dist/character/model/planning/CjsCharacterMorphTargetWeight.js.map +1 -1
  122. package/dist/character/model/planning/CjsCharacterOrigin.js +2 -2
  123. package/dist/character/model/planning/CjsCharacterOrigin.js.map +1 -1
  124. package/dist/character/model/planning/CjsCharacterResolvedPart.js +2 -2
  125. package/dist/character/model/planning/CjsCharacterResolvedPart.js.map +1 -1
  126. package/dist/character/model/planning/CjsCharacterTextureAsset.js +2 -2
  127. package/dist/character/model/planning/CjsCharacterTextureAsset.js.map +1 -1
  128. package/dist/character/model/planning/CjsCharacterTextureChannel.js +2 -2
  129. package/dist/character/model/planning/CjsCharacterTextureChannel.js.map +1 -1
  130. package/dist/character/model/resources/CjsCharacterPortraitResource.js +2 -2
  131. package/dist/character/model/resources/CjsCharacterPortraitResource.js.map +1 -1
  132. package/dist/character/model/resources/CjsCharacterResource.js +2 -2
  133. package/dist/character/model/resources/CjsCharacterResource.js.map +1 -1
  134. package/dist/character/trinity/interior/Tr2IntSkinnedObject.js +6 -5
  135. package/dist/character/trinity/interior/Tr2IntSkinnedObject.js.map +1 -1
  136. package/dist/character/trinity/interior/Tr2InteriorLightSource.js +2 -2
  137. package/dist/character/trinity/interior/Tr2InteriorLightSource.js.map +1 -1
  138. package/dist/character/trinity/interior/Tr2InteriorPlaceable.js +4 -5
  139. package/dist/character/trinity/interior/Tr2InteriorPlaceable.js.map +1 -1
  140. package/dist/character/trinity/interior/Tr2InteriorScene.js +2 -2
  141. package/dist/character/trinity/interior/Tr2InteriorScene.js.map +1 -1
  142. package/dist/character/trinity/trinityCore/Tr2GStateAnimation.js +2 -2
  143. package/dist/character/trinity/trinityCore/Tr2GStateAnimation.js.map +1 -1
  144. package/dist/character/trinity/trinityCore/Tr2GStateParameter.js +2 -2
  145. package/dist/character/trinity/trinityCore/Tr2GStateParameter.js.map +1 -1
  146. package/dist/character/trinity/trinityCore/Tr2Model.js +2 -2
  147. package/dist/character/trinity/trinityCore/Tr2Model.js.map +1 -1
  148. package/dist/character/trinity/trinityCore/Tr2SkinnedModel.js +21 -10
  149. package/dist/character/trinity/trinityCore/Tr2SkinnedModel.js.map +1 -1
  150. package/dist/character/trinity/trinityCore/Tr2SkinnedObject.js +64 -57
  151. package/dist/character/trinity/trinityCore/Tr2SkinnedObject.js.map +1 -1
  152. package/dist/character/trinity/trinityCore/Tr2SkinnedObjectLod.js +1 -1
  153. package/dist/character/trinity/trinityCore/Tr2SkinnedObjectLod.js.map +1 -1
  154. package/dist/character/trinity/wod/WodBakingScene.js +2 -2
  155. package/dist/character/trinity/wod/WodBakingScene.js.map +1 -1
  156. package/dist/core/CjsLibrary.js +32 -685
  157. package/dist/core/CjsLibrary.js.map +1 -1
  158. package/dist/core/index.js +1 -2
  159. package/dist/core/index.js.map +1 -1
  160. package/dist/global/blue/BeInfo.js +95 -0
  161. package/dist/global/blue/BeInfo.js.map +1 -0
  162. package/dist/global/blue/CcpDateTime.js +53 -0
  163. package/dist/global/blue/CcpDateTime.js.map +1 -0
  164. package/dist/global/blue/CcpTime.js +148 -0
  165. package/dist/global/blue/CcpTime.js.map +1 -0
  166. package/dist/global/blue/CjsBlueOS.js +301 -0
  167. package/dist/global/blue/CjsBlueOS.js.map +1 -0
  168. package/dist/global/blue/CjsBluePaths.js +97 -0
  169. package/dist/global/blue/CjsBluePaths.js.map +1 -0
  170. package/dist/global/blue/IBlueDynamicResourceConstructor.js +29 -0
  171. package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -0
  172. package/dist/global/blue/IBlueEvents.js +34 -0
  173. package/dist/global/blue/IBlueEvents.js.map +1 -0
  174. package/dist/global/blue/IBlueOS.js +132 -0
  175. package/dist/global/blue/IBlueOS.js.map +1 -0
  176. package/dist/global/blue/IBluePaths.js +72 -0
  177. package/dist/global/blue/IBluePaths.js.map +1 -0
  178. package/dist/global/blue/IBlueResMan.js +93 -0
  179. package/dist/global/blue/IBlueResMan.js.map +1 -0
  180. package/dist/global/blue/IBlueResManNotifications.js +51 -0
  181. package/dist/global/blue/IBlueResManNotifications.js.map +1 -0
  182. package/dist/global/blue/ICatchupTicks.js +25 -0
  183. package/dist/global/blue/ICatchupTicks.js.map +1 -0
  184. package/dist/global/blue/IInitialize.js +47 -0
  185. package/dist/global/blue/IInitialize.js.map +1 -0
  186. package/dist/global/blue/IListNotify.js +44 -0
  187. package/dist/global/blue/IListNotify.js.map +1 -0
  188. package/dist/global/blue/INotify.js +65 -0
  189. package/dist/global/blue/INotify.js.map +1 -0
  190. package/dist/global/blue/ISimTimeRebaseNotify.js +28 -0
  191. package/dist/global/blue/ISimTimeRebaseNotify.js.map +1 -0
  192. package/dist/global/blue/IVariableTicker.js +24 -0
  193. package/dist/global/blue/IVariableTicker.js.map +1 -0
  194. package/dist/global/blue/blue.js +61 -0
  195. package/dist/global/blue/blue.js.map +1 -0
  196. package/dist/global/blue/enums/CjsBlueEnumRegistry.js +173 -0
  197. package/dist/global/blue/enums/CjsBlueEnumRegistry.js.map +1 -0
  198. package/dist/global/blue/index.js +19 -0
  199. package/dist/global/blue/index.js.map +1 -1
  200. package/dist/global/blue/registerTrinityEnums.js +43 -0
  201. package/dist/global/blue/registerTrinityEnums.js.map +1 -0
  202. package/dist/global/compose/abstract.js +81 -0
  203. package/dist/global/compose/abstract.js.map +1 -0
  204. package/dist/global/compose/interface.js +131 -26
  205. package/dist/global/compose/interface.js.map +1 -1
  206. package/dist/global/compose/notify.js +10 -1
  207. package/dist/global/compose/notify.js.map +1 -1
  208. package/dist/global/compose/values.js +116 -53
  209. package/dist/global/compose/values.js.map +1 -1
  210. package/dist/global/consts/blue.js +73 -0
  211. package/dist/global/consts/blue.js.map +1 -0
  212. package/dist/global/consts/graphics/index.js +1 -1
  213. package/dist/global/consts/graphics/trinityEnums.js +19 -7
  214. package/dist/global/consts/graphics/trinityEnums.js.map +1 -1
  215. package/dist/global/consts/index.js +2 -1
  216. package/dist/global/consts/index.js.map +1 -1
  217. package/dist/global/consts/trinity.js.map +1 -1
  218. package/dist/global/contracts/ITr2BoundingBox.js +1 -34
  219. package/dist/global/contracts/ITr2BoundingBox.js.map +1 -1
  220. package/dist/global/contracts/ITr2RenderNode.js +1 -27
  221. package/dist/global/contracts/ITr2RenderNode.js.map +1 -1
  222. package/dist/global/contracts/index.js +2 -4
  223. package/dist/global/contracts/index.js.map +1 -1
  224. package/dist/global/index.js +23 -5
  225. package/dist/global/index.js.map +1 -1
  226. package/dist/global/model/CjsModel.js +82 -99
  227. package/dist/global/model/CjsModel.js.map +1 -1
  228. package/dist/global/model/CjsModelState.js +0 -15
  229. package/dist/global/model/CjsModelState.js.map +1 -1
  230. package/dist/global/model/document/CjsDocumentHydrator.js +5 -1
  231. package/dist/global/model/document/CjsDocumentHydrator.js.map +1 -1
  232. package/dist/global/model/index.js +1 -1
  233. package/dist/global/schema/CjsSchema.js +275 -69
  234. package/dist/global/schema/CjsSchema.js.map +1 -1
  235. package/dist/global/schema/hydration.js +10 -8
  236. package/dist/global/schema/hydration.js.map +1 -1
  237. package/dist/global/schema/index.js +4 -3
  238. package/dist/global/schema/index.js.map +1 -1
  239. package/dist/global/schema/types/carbonTypes.js +1 -1
  240. package/dist/global/schema/types/carbonTypes.js.map +1 -1
  241. package/dist/global/utils/bytes.js +2 -0
  242. package/dist/global/utils/bytes.js.map +1 -1
  243. package/dist/global/utils/path.js +30 -1
  244. package/dist/global/utils/path.js.map +1 -1
  245. package/dist/index.js +59 -24
  246. package/dist/index.js.map +1 -1
  247. package/dist/resource/CjsResMan.js +206 -43
  248. package/dist/resource/CjsResMan.js.map +1 -1
  249. package/dist/resource/CjsResource.js +4 -1
  250. package/dist/resource/CjsResource.js.map +1 -1
  251. package/dist/resource/format/CjsBlueReader.js +8 -2
  252. package/dist/resource/format/CjsBlueReader.js.map +1 -1
  253. package/dist/resource/format/CjsResourceProbe.js +15 -16
  254. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  255. package/dist/resource/format/carbonEffect/carbonEffectResourceTransform.js +132 -75
  256. package/dist/resource/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -1
  257. package/dist/resource/formats/black/core/CjsBlackPropertyReaders.js +26 -0
  258. package/dist/resource/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  259. package/dist/resource/formats/black/core/CjsBlackSchemaRegistry.js +2 -1
  260. package/dist/resource/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  261. package/dist/resource/formats/black/core/black-schema-v1-2026-09-19.json.js +4 -0
  262. package/dist/resource/formats/black/core/black-schema-v1-2026-09-19.json.js.map +1 -0
  263. package/dist/resource/formats/black/core/blackDefinitions.js +1 -1
  264. package/dist/resource/formats/black/core/blackDefinitions.js.map +1 -1
  265. package/dist/resource/formats/black/core/blackSchema.js +1 -1
  266. package/dist/resource/formats/dds/CjsDdsFormat.js +50 -1
  267. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  268. package/dist/resource/formats/dds/core/helpers.js +51 -5
  269. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  270. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierGraphicIds.js +94 -0
  271. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierGraphicIds.js.map +1 -0
  272. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierTypes.js +189 -0
  273. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierTypes.js.map +1 -0
  274. package/dist/resource/formats/fsd/64/readers/index.js +2 -0
  275. package/dist/resource/formats/fsd/64/readers/index.js.map +1 -1
  276. package/dist/resource/formats/hlsl/core/detailMapFamily.js +18 -92
  277. package/dist/resource/formats/hlsl/core/detailMapFamily.js.map +1 -1
  278. package/dist/resource/formats/hlsl/core/textureArrayFamilies.js +285 -0
  279. package/dist/resource/formats/hlsl/core/textureArrayFamilies.js.map +1 -0
  280. package/dist/resource/formats/pickle/CjsPickleFormat.js +34 -14
  281. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  282. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +60 -451
  283. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
  284. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +407 -0
  285. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -0
  286. package/dist/resource/formats/pickle/core/pickleCommon.js +671 -0
  287. package/dist/resource/formats/pickle/core/pickleCommon.js.map +1 -0
  288. package/dist/resource/formats/red/core/blackDefinitions.js +1 -1
  289. package/dist/resource/formats/webgl/core/effectPackage.js +85 -7
  290. package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
  291. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +666 -565
  292. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  293. package/dist/resource/formats/webgl/core/glslBackendBodySet.js +4 -4
  294. package/dist/resource/formats/webgl/core/glslBackendBodySet.js.map +1 -1
  295. package/dist/resource/formats/webgl/core/helpers.js +2 -2
  296. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  297. package/dist/resource/geometry/TriGeometryRes.js +61 -7
  298. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  299. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +11 -11
  300. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  301. package/dist/resource/index.js +11 -0
  302. package/dist/resource/index.js.map +1 -1
  303. package/dist/resource/shader/Tr2EffectRes.js +2 -3
  304. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  305. package/dist/resource/shader/Tr2MaterialArea.js +3 -3
  306. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
  307. package/dist/resource/shader/Tr2MaterialMesh.js +2 -2
  308. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
  309. package/dist/resource/shader/Tr2MaterialRes.js +3 -3
  310. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
  311. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +2 -2
  312. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  313. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +2 -2
  314. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  315. package/dist/resource/shader/reflection/Tr2Pass.js +4 -4
  316. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  317. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  318. package/dist/resource/texture/SolidColorTextureConstructor.js +46 -0
  319. package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -0
  320. package/dist/resource/texture/Tr2ImageRes.js +3 -4
  321. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  322. package/dist/resource/texture/Tr2TextureLodManager.js +0 -1
  323. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  324. package/dist/resource/texture/Tr2TexturePackChannel.js +4 -4
  325. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePipeline.js +3 -4
  327. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +5 -5
  329. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +3 -3
  331. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +2 -2
  333. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +6 -6
  335. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  336. package/dist/resource/texture/TriTextureRes.js +65 -21
  337. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  338. package/dist/resource/texture/index.js +2 -0
  339. package/dist/resource/texture/index.js.map +1 -1
  340. package/dist/resource/texture/solidColorTexture.js +111 -0
  341. package/dist/resource/texture/solidColorTexture.js.map +1 -0
  342. package/dist/resource/video/AudioMetadata.js +41 -0
  343. package/dist/resource/video/AudioMetadata.js.map +1 -0
  344. package/dist/resource/video/IAudioSink.js +51 -0
  345. package/dist/resource/video/IAudioSink.js.map +1 -0
  346. package/dist/resource/video/IEncodedFrame.js +52 -0
  347. package/dist/resource/video/IEncodedFrame.js.map +1 -0
  348. package/dist/resource/video/IVideoContainerParser.js +70 -0
  349. package/dist/resource/video/IVideoContainerParser.js.map +1 -0
  350. package/dist/resource/video/IVideoDecoder.js +36 -0
  351. package/dist/resource/video/IVideoDecoder.js.map +1 -0
  352. package/dist/resource/video/PcmFrame.js +33 -0
  353. package/dist/resource/video/PcmFrame.js.map +1 -0
  354. package/dist/resource/video/VideoFrame.js +45 -0
  355. package/dist/resource/video/VideoFrame.js.map +1 -0
  356. package/dist/resource/video/VideoMetadata.js +34 -0
  357. package/dist/resource/video/VideoMetadata.js.map +1 -0
  358. package/dist/resource/video/enums.js +30 -0
  359. package/dist/resource/video/enums.js.map +1 -0
  360. package/dist/sof/EveSOF.js +176 -176
  361. package/dist/sof/EveSOF.js.map +1 -1
  362. package/dist/sof/EveSOFDNA.js +5 -1
  363. package/dist/sof/EveSOFDNA.js.map +1 -1
  364. package/dist/sof/EveSOFData.js +2 -2
  365. package/dist/sof/EveSOFData.js.map +1 -1
  366. package/dist/sof/faction/EveSOFDataFaction.js +2 -2
  367. package/dist/sof/faction/EveSOFDataFaction.js.map +1 -1
  368. package/dist/sof/faction/EveSOFDataFactionChild.js +2 -2
  369. package/dist/sof/faction/EveSOFDataFactionChild.js.map +1 -1
  370. package/dist/sof/faction/EveSOFDataFactionColorSet.js +189 -3
  371. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  372. package/dist/sof/faction/EveSOFDataFactionHullArea.js +2 -2
  373. package/dist/sof/faction/EveSOFDataFactionHullArea.js.map +1 -1
  374. package/dist/sof/faction/EveSOFDataFactionPlaneSet.js +2 -2
  375. package/dist/sof/faction/EveSOFDataFactionPlaneSet.js.map +1 -1
  376. package/dist/sof/faction/EveSOFDataFactionSpotlightSet.js +2 -2
  377. package/dist/sof/faction/EveSOFDataFactionSpotlightSet.js.map +1 -1
  378. package/dist/sof/faction/EveSOFDataFactionVisibilityGroupSet.js +2 -2
  379. package/dist/sof/faction/EveSOFDataFactionVisibilityGroupSet.js.map +1 -1
  380. package/dist/sof/generic/EveSOFDataGeneric.js +234 -230
  381. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  382. package/dist/sof/generic/EveSOFDataGenericDamage.js +2 -2
  383. package/dist/sof/generic/EveSOFDataGenericDamage.js.map +1 -1
  384. package/dist/sof/generic/EveSOFDataGenericDecalShader.js +2 -2
  385. package/dist/sof/generic/EveSOFDataGenericDecalShader.js.map +1 -1
  386. package/dist/sof/generic/EveSOFDataGenericHullCategory.js +27 -23
  387. package/dist/sof/generic/EveSOFDataGenericHullCategory.js.map +1 -1
  388. package/dist/sof/generic/EveSOFDataGenericHullDamage.js +2 -2
  389. package/dist/sof/generic/EveSOFDataGenericHullDamage.js.map +1 -1
  390. package/dist/sof/generic/EveSOFDataGenericShader.js +2 -2
  391. package/dist/sof/generic/EveSOFDataGenericShader.js.map +1 -1
  392. package/dist/sof/generic/EveSOFDataGenericString.js +2 -2
  393. package/dist/sof/generic/EveSOFDataGenericString.js.map +1 -1
  394. package/dist/sof/generic/EveSOFDataGenericSwarm.js +2 -2
  395. package/dist/sof/generic/EveSOFDataGenericSwarm.js.map +1 -1
  396. package/dist/sof/generic/EveSOFDataGenericVariant.js +2 -2
  397. package/dist/sof/generic/EveSOFDataGenericVariant.js.map +1 -1
  398. package/dist/sof/generic/EveSOFDataVisibilityGroup.js +2 -2
  399. package/dist/sof/generic/EveSOFDataVisibilityGroup.js.map +1 -1
  400. package/dist/sof/hull/EveSOFDataHull.js +56 -3
  401. package/dist/sof/hull/EveSOFDataHull.js.map +1 -1
  402. package/dist/sof/hull/EveSOFDataHullAnimation.js +2 -2
  403. package/dist/sof/hull/EveSOFDataHullAnimation.js.map +1 -1
  404. package/dist/sof/hull/EveSOFDataHullArea.js +58 -54
  405. package/dist/sof/hull/EveSOFDataHullArea.js.map +1 -1
  406. package/dist/sof/hull/EveSOFDataHullBanner.js +109 -3
  407. package/dist/sof/hull/EveSOFDataHullBanner.js.map +1 -1
  408. package/dist/sof/hull/EveSOFDataHullBannerLight.js +2 -2
  409. package/dist/sof/hull/EveSOFDataHullBannerLight.js.map +1 -1
  410. package/dist/sof/hull/EveSOFDataHullBannerSet.js +2 -2
  411. package/dist/sof/hull/EveSOFDataHullBannerSet.js.map +1 -1
  412. package/dist/sof/hull/EveSOFDataHullBannerSetItem.js +109 -3
  413. package/dist/sof/hull/EveSOFDataHullBannerSetItem.js.map +1 -1
  414. package/dist/sof/hull/EveSOFDataHullBooster.js +2 -2
  415. package/dist/sof/hull/EveSOFDataHullBooster.js.map +1 -1
  416. package/dist/sof/hull/EveSOFDataHullBoosterItem.js +2 -2
  417. package/dist/sof/hull/EveSOFDataHullBoosterItem.js.map +1 -1
  418. package/dist/sof/hull/EveSOFDataHullChild.js +55 -50
  419. package/dist/sof/hull/EveSOFDataHullChild.js.map +1 -1
  420. package/dist/sof/hull/EveSOFDataHullChildSet.js +2 -2
  421. package/dist/sof/hull/EveSOFDataHullChildSet.js.map +1 -1
  422. package/dist/sof/hull/EveSOFDataHullChildSetItem.js +51 -46
  423. package/dist/sof/hull/EveSOFDataHullChildSetItem.js.map +1 -1
  424. package/dist/sof/hull/EveSOFDataHullController.js +2 -2
  425. package/dist/sof/hull/EveSOFDataHullController.js.map +1 -1
  426. package/dist/sof/hull/EveSOFDataHullDecalSet.js +2 -2
  427. package/dist/sof/hull/EveSOFDataHullDecalSet.js.map +1 -1
  428. package/dist/sof/hull/EveSOFDataHullDecalSetItem.js +45 -3
  429. package/dist/sof/hull/EveSOFDataHullDecalSetItem.js.map +1 -1
  430. package/dist/sof/hull/EveSOFDataHullHazeSet.js +21 -3
  431. package/dist/sof/hull/EveSOFDataHullHazeSet.js.map +1 -1
  432. package/dist/sof/hull/EveSOFDataHullHazeSetItem.js +47 -43
  433. package/dist/sof/hull/EveSOFDataHullHazeSetItem.js.map +1 -1
  434. package/dist/sof/hull/EveSOFDataHullLightSet.js +2 -2
  435. package/dist/sof/hull/EveSOFDataHullLightSet.js.map +1 -1
  436. package/dist/sof/hull/EveSOFDataHullLightSetItem.js +4 -2
  437. package/dist/sof/hull/EveSOFDataHullLightSetItem.js.map +1 -1
  438. package/dist/sof/hull/EveSOFDataHullLightSetSpotLight.js +2 -2
  439. package/dist/sof/hull/EveSOFDataHullLightSetSpotLight.js.map +1 -1
  440. package/dist/sof/hull/EveSOFDataHullLightSetTexturedPointLight.js +2 -2
  441. package/dist/sof/hull/EveSOFDataHullLightSetTexturedPointLight.js.map +1 -1
  442. package/dist/sof/hull/EveSOFDataHullLocator.js +2 -2
  443. package/dist/sof/hull/EveSOFDataHullLocator.js.map +1 -1
  444. package/dist/sof/hull/EveSOFDataHullLocatorSet.js +2 -2
  445. package/dist/sof/hull/EveSOFDataHullLocatorSet.js.map +1 -1
  446. package/dist/sof/hull/EveSOFDataHullLocatorSetGroup.js +2 -2
  447. package/dist/sof/hull/EveSOFDataHullLocatorSetGroup.js.map +1 -1
  448. package/dist/sof/hull/EveSOFDataHullPlaneSet.js +29 -3
  449. package/dist/sof/hull/EveSOFDataHullPlaneSet.js.map +1 -1
  450. package/dist/sof/hull/EveSOFDataHullPlaneSetItem.js +81 -75
  451. package/dist/sof/hull/EveSOFDataHullPlaneSetItem.js.map +1 -1
  452. package/dist/sof/hull/EveSOFDataHullSoundEmitter.js +2 -2
  453. package/dist/sof/hull/EveSOFDataHullSoundEmitter.js.map +1 -1
  454. package/dist/sof/hull/EveSOFDataHullSpotlightSet.js +2 -2
  455. package/dist/sof/hull/EveSOFDataHullSpotlightSet.js.map +1 -1
  456. package/dist/sof/hull/EveSOFDataHullSpotlightSetItem.js +45 -41
  457. package/dist/sof/hull/EveSOFDataHullSpotlightSetItem.js.map +1 -1
  458. package/dist/sof/hull/EveSOFDataHullSpriteLineSet.js +2 -2
  459. package/dist/sof/hull/EveSOFDataHullSpriteLineSet.js.map +1 -1
  460. package/dist/sof/hull/EveSOFDataHullSpriteLineSetItem.js +70 -66
  461. package/dist/sof/hull/EveSOFDataHullSpriteLineSetItem.js.map +1 -1
  462. package/dist/sof/hull/EveSOFDataHullSpriteSet.js +2 -2
  463. package/dist/sof/hull/EveSOFDataHullSpriteSet.js.map +1 -1
  464. package/dist/sof/hull/EveSOFDataHullSpriteSetItem.js +45 -41
  465. package/dist/sof/hull/EveSOFDataHullSpriteSetItem.js.map +1 -1
  466. package/dist/sof/hull/EveSOFDataMultiHullDecalIndexBuffers.js +2 -2
  467. package/dist/sof/hull/EveSOFDataMultiHullDecalIndexBuffers.js.map +1 -1
  468. package/dist/sof/layout/EveSOFDataDistributionDepletionCounter.js +2 -2
  469. package/dist/sof/layout/EveSOFDataDistributionDepletionCounter.js.map +1 -1
  470. package/dist/sof/layout/EveSOFDataHullExtensionBucket.js +2 -2
  471. package/dist/sof/layout/EveSOFDataHullExtensionBucket.js.map +1 -1
  472. package/dist/sof/layout/EveSOFDataHullExtensionPlacement.js +2 -2
  473. package/dist/sof/layout/EveSOFDataHullExtensionPlacement.js.map +1 -1
  474. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionDepletionCounter.js +2 -2
  475. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionDepletionCounter.js.map +1 -1
  476. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionMapGraphicSettings.js +35 -3
  477. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionMapGraphicSettings.js.map +1 -1
  478. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionParentMatch.js +2 -2
  479. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionParentMatch.js.map +1 -1
  480. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionPlacement.js +2 -2
  481. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionPlacement.js.map +1 -1
  482. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionRandomChance.js +2 -2
  483. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionRandomChance.js.map +1 -1
  484. package/dist/sof/layout/EveSOFDataHullExtensionPlacementGroup.js +2 -2
  485. package/dist/sof/layout/EveSOFDataHullExtensionPlacementGroup.js.map +1 -1
  486. package/dist/sof/layout/EveSOFDataLayout.js +2 -2
  487. package/dist/sof/layout/EveSOFDataLayout.js.map +1 -1
  488. package/dist/sof/pattern/EveSOFDataPattern.js +2 -2
  489. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  490. package/dist/sof/pattern/EveSOFDataPatternApplicationGroup.js +2 -2
  491. package/dist/sof/pattern/EveSOFDataPatternApplicationGroup.js.map +1 -1
  492. package/dist/sof/pattern/EveSOFDataPatternLayer.js +60 -3
  493. package/dist/sof/pattern/EveSOFDataPatternLayer.js.map +1 -1
  494. package/dist/sof/pattern/EveSOFDataPatternLayerProperties.js +23 -3
  495. package/dist/sof/pattern/EveSOFDataPatternLayerProperties.js.map +1 -1
  496. package/dist/sof/pattern/EveSOFDataPatternMaterialOverride.js +2 -2
  497. package/dist/sof/pattern/EveSOFDataPatternMaterialOverride.js.map +1 -1
  498. package/dist/sof/pattern/EveSOFDataPatternPerHull.js +2 -2
  499. package/dist/sof/pattern/EveSOFDataPatternPerHull.js.map +1 -1
  500. package/dist/sof/pattern/EveSOFDataPatternTransform.js +2 -2
  501. package/dist/sof/pattern/EveSOFDataPatternTransform.js.map +1 -1
  502. package/dist/sof/race/EveSOFDataRace.js +46 -42
  503. package/dist/sof/race/EveSOFDataRace.js.map +1 -1
  504. package/dist/sof/race/EveSOFDataRaceDamage.js +2 -2
  505. package/dist/sof/race/EveSOFDataRaceDamage.js.map +1 -1
  506. package/dist/sof/shared/CjsExternalRef.js +2 -2
  507. package/dist/sof/shared/CjsExternalRef.js.map +1 -1
  508. package/dist/sof/shared/EveSOFDNADescriptor.js +2 -2
  509. package/dist/sof/shared/EveSOFDNADescriptor.js.map +1 -1
  510. package/dist/sof/shared/EveSOFDataArea.js +61 -3
  511. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  512. package/dist/sof/shared/EveSOFDataAreaMaterial.js +4 -2
  513. package/dist/sof/shared/EveSOFDataAreaMaterial.js.map +1 -1
  514. package/dist/sof/shared/EveSOFDataBlinkType.js +48 -8
  515. package/dist/sof/shared/EveSOFDataBlinkType.js.map +1 -1
  516. package/dist/sof/shared/EveSOFDataBooster.js +2 -2
  517. package/dist/sof/shared/EveSOFDataBooster.js.map +1 -1
  518. package/dist/sof/shared/EveSOFDataBoosterShape.js +2 -2
  519. package/dist/sof/shared/EveSOFDataBoosterShape.js.map +1 -1
  520. package/dist/sof/shared/EveSOFDataDecalIndexBuffer.js +2 -2
  521. package/dist/sof/shared/EveSOFDataDecalIndexBuffer.js.map +1 -1
  522. package/dist/sof/shared/EveSOFDataInstancedMesh.js +40 -3
  523. package/dist/sof/shared/EveSOFDataInstancedMesh.js.map +1 -1
  524. package/dist/sof/shared/EveSOFDataLogo.js +2 -2
  525. package/dist/sof/shared/EveSOFDataLogo.js.map +1 -1
  526. package/dist/sof/shared/EveSOFDataLogoSet.js +33 -3
  527. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  528. package/dist/sof/shared/EveSOFDataMaterial.js +2 -2
  529. package/dist/sof/shared/EveSOFDataMaterial.js.map +1 -1
  530. package/dist/sof/shared/EveSOFDataParameter.js +2 -2
  531. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  532. package/dist/sof/shared/EveSOFDataParameterBool.js +2 -2
  533. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -1
  534. package/dist/sof/shared/EveSOFDataParameterColor.js +2 -2
  535. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -1
  536. package/dist/sof/shared/EveSOFDataParameterFloat.js +2 -2
  537. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -1
  538. package/dist/sof/shared/EveSOFDataParameterInt.js +2 -2
  539. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -1
  540. package/dist/sof/shared/EveSOFDataParameterVector2.js +2 -2
  541. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -1
  542. package/dist/sof/shared/EveSOFDataParameterVector3.js +2 -2
  543. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -1
  544. package/dist/sof/shared/EveSOFDataPointLightAttachment.js +2 -2
  545. package/dist/sof/shared/EveSOFDataPointLightAttachment.js.map +1 -1
  546. package/dist/sof/shared/EveSOFDataSpotLightAttachment.js +2 -2
  547. package/dist/sof/shared/EveSOFDataSpotLightAttachment.js.map +1 -1
  548. package/dist/sof/shared/EveSOFDataTexture.js +2 -2
  549. package/dist/sof/shared/EveSOFDataTexture.js.map +1 -1
  550. package/dist/sof/shared/EveSOFDataTransform.js +2 -2
  551. package/dist/sof/shared/EveSOFDataTransform.js.map +1 -1
  552. package/dist/sof/shared/EveSofDataMeshInstance.js +2 -2
  553. package/dist/sof/shared/EveSofDataMeshInstance.js.map +1 -1
  554. package/dist/sof/sofDocumentValues.js +9 -0
  555. package/dist/sof/sofDocumentValues.js.map +1 -1
  556. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +2 -25
  557. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -1
  558. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js +2 -72
  559. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -1
  560. package/dist/trinity/controllers/ITr2ControllerOwner.js +1 -36
  561. package/dist/trinity/controllers/ITr2ControllerOwner.js.map +1 -1
  562. package/dist/trinity/controllers/Tr2Controller.js +4 -5
  563. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  564. package/dist/trinity/controllers/Tr2ControllerEventHandler.js +2 -2
  565. package/dist/trinity/controllers/Tr2ControllerEventHandler.js.map +1 -1
  566. package/dist/trinity/controllers/Tr2ControllerReference.js +9 -17
  567. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  568. package/dist/trinity/controllers/Tr2SyncToAnimation.js +4 -5
  569. package/dist/trinity/controllers/Tr2SyncToAnimation.js.map +1 -1
  570. package/dist/trinity/controllers/action/ITr2ControllerAction.js +1 -28
  571. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  572. package/dist/trinity/controllers/action/Tr2ActionAnimateCurveSet.js +9 -7
  573. package/dist/trinity/controllers/action/Tr2ActionAnimateCurveSet.js.map +1 -1
  574. package/dist/trinity/controllers/action/Tr2ActionAnimateValue.js +11 -9
  575. package/dist/trinity/controllers/action/Tr2ActionAnimateValue.js.map +1 -1
  576. package/dist/trinity/controllers/action/Tr2ActionBindRTPC.js +9 -7
  577. package/dist/trinity/controllers/action/Tr2ActionBindRTPC.js.map +1 -1
  578. package/dist/trinity/controllers/action/Tr2ActionCallback.js +4 -5
  579. package/dist/trinity/controllers/action/Tr2ActionCallback.js.map +1 -1
  580. package/dist/trinity/controllers/action/Tr2ActionChildEffect.js +4 -5
  581. package/dist/trinity/controllers/action/Tr2ActionChildEffect.js.map +1 -1
  582. package/dist/trinity/controllers/action/Tr2ActionOverlay.js +4 -5
  583. package/dist/trinity/controllers/action/Tr2ActionOverlay.js.map +1 -1
  584. package/dist/trinity/controllers/action/Tr2ActionPlayCurveSet.js +4 -5
  585. package/dist/trinity/controllers/action/Tr2ActionPlayCurveSet.js.map +1 -1
  586. package/dist/trinity/controllers/action/Tr2ActionPlayMeshAnimation.js +13 -9
  587. package/dist/trinity/controllers/action/Tr2ActionPlayMeshAnimation.js.map +1 -1
  588. package/dist/trinity/controllers/action/Tr2ActionPlaySound.js +4 -5
  589. package/dist/trinity/controllers/action/Tr2ActionPlaySound.js.map +1 -1
  590. package/dist/trinity/controllers/action/Tr2ActionPython.js +6 -6
  591. package/dist/trinity/controllers/action/Tr2ActionPython.js.map +1 -1
  592. package/dist/trinity/controllers/action/Tr2ActionResetClipSphereCenter.js +4 -5
  593. package/dist/trinity/controllers/action/Tr2ActionResetClipSphereCenter.js.map +1 -1
  594. package/dist/trinity/controllers/action/Tr2ActionSetAttenuationScaling.js +4 -5
  595. package/dist/trinity/controllers/action/Tr2ActionSetAttenuationScaling.js.map +1 -1
  596. package/dist/trinity/controllers/action/Tr2ActionSetAudioEmitterPrefix.js +4 -5
  597. package/dist/trinity/controllers/action/Tr2ActionSetAudioEmitterPrefix.js.map +1 -1
  598. package/dist/trinity/controllers/action/Tr2ActionSetAudioSwitch.js +4 -5
  599. package/dist/trinity/controllers/action/Tr2ActionSetAudioSwitch.js.map +1 -1
  600. package/dist/trinity/controllers/action/Tr2ActionSetExternalControllerVariable.js +8 -17
  601. package/dist/trinity/controllers/action/Tr2ActionSetExternalControllerVariable.js.map +1 -1
  602. package/dist/trinity/controllers/action/Tr2ActionSetShaderOption.js +4 -5
  603. package/dist/trinity/controllers/action/Tr2ActionSetShaderOption.js.map +1 -1
  604. package/dist/trinity/controllers/action/Tr2ActionSetValue.js +11 -9
  605. package/dist/trinity/controllers/action/Tr2ActionSetValue.js.map +1 -1
  606. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +4 -5
  607. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  608. package/dist/trinity/controllers/contracts.js +27 -19
  609. package/dist/trinity/controllers/contracts.js.map +1 -1
  610. package/dist/trinity/controllers/expression/Tr2BindingPoint.js +6 -15
  611. package/dist/trinity/controllers/expression/Tr2BindingPoint.js.map +1 -1
  612. package/dist/trinity/controllers/expression/Tr2ControllerFloatVariable.js +2 -2
  613. package/dist/trinity/controllers/expression/Tr2ControllerFloatVariable.js.map +1 -1
  614. package/dist/trinity/controllers/expression/expressionRuntime.js +136 -0
  615. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -1
  616. package/dist/trinity/controllers/index.js +6 -6
  617. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +1 -24
  618. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  619. package/dist/trinity/controllers/state/Tr2StateMachine.js +4 -6
  620. package/dist/trinity/controllers/state/Tr2StateMachine.js.map +1 -1
  621. package/dist/trinity/controllers/state/Tr2StateMachineState.js +6 -6
  622. package/dist/trinity/controllers/state/Tr2StateMachineState.js.map +1 -1
  623. package/dist/trinity/controllers/state/Tr2StateMachineTransition.js +12 -9
  624. package/dist/trinity/controllers/state/Tr2StateMachineTransition.js.map +1 -1
  625. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +5 -6
  626. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  627. package/dist/trinity/core/ITr2Renderable.js +1 -49
  628. package/dist/trinity/core/ITr2Renderable.js.map +1 -1
  629. package/dist/trinity/core/ITr2Updateable.js +1 -22
  630. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  631. package/dist/trinity/core/ITriReroutable.js +56 -0
  632. package/dist/trinity/core/ITriReroutable.js.map +1 -0
  633. package/dist/trinity/core/Tr2Denoiser.js +2 -2
  634. package/dist/trinity/core/Tr2Denoiser.js.map +1 -1
  635. package/dist/trinity/core/Tr2MaterialParameterStore.js +2 -2
  636. package/dist/trinity/core/Tr2MaterialParameterStore.js.map +1 -1
  637. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js +2 -2
  638. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -1
  639. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +1 -1
  640. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -1
  641. package/dist/trinity/core/Tr2Renderer.js +161 -4
  642. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  643. package/dist/trinity/core/Tr2ShadowMap.js +3 -3
  644. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  645. package/dist/trinity/core/Tr2StreamingBitmapSaver.js +2 -2
  646. package/dist/trinity/core/Tr2StreamingBitmapSaver.js.map +1 -1
  647. package/dist/trinity/core/Tr2Transform.js +4 -5
  648. package/dist/trinity/core/Tr2Transform.js.map +1 -1
  649. package/dist/trinity/core/animation/Tr2GrannyAnimation.js +2 -2
  650. package/dist/trinity/core/animation/Tr2GrannyAnimation.js.map +1 -1
  651. package/dist/trinity/core/animation/Tr2TextureAnimation.js +2 -2
  652. package/dist/trinity/core/animation/Tr2TextureAnimation.js.map +1 -1
  653. package/dist/trinity/core/animation/TriRigidOrientation.js +2 -2
  654. package/dist/trinity/core/animation/TriRigidOrientation.js.map +1 -1
  655. package/dist/trinity/core/animation/TriTorque.js +2 -2
  656. package/dist/trinity/core/animation/TriTorque.js.map +1 -1
  657. package/dist/trinity/core/batch/CjsBatchManager.js +15 -50
  658. package/dist/trinity/core/batch/CjsBatchManager.js.map +1 -1
  659. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -1
  660. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js +12 -14
  661. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -1
  662. package/dist/trinity/core/binding/Tr2BindingVector3.js +2 -2
  663. package/dist/trinity/core/binding/Tr2BindingVector3.js.map +1 -1
  664. package/dist/trinity/core/binding/Tr2DynamicBinding.js +6 -20
  665. package/dist/trinity/core/binding/Tr2DynamicBinding.js.map +1 -1
  666. package/dist/trinity/core/binding/Tr2ExternalParameter.js +3 -6
  667. package/dist/trinity/core/binding/Tr2ExternalParameter.js.map +1 -1
  668. package/dist/trinity/core/binding/Tr2PyValueBinding.js +2 -2
  669. package/dist/trinity/core/binding/Tr2PyValueBinding.js.map +1 -1
  670. package/dist/trinity/core/binding/TriValueBinding.js +50 -24
  671. package/dist/trinity/core/binding/TriValueBinding.js.map +1 -1
  672. package/dist/trinity/core/context/CjsDirectTrinityStepExecutor.js +0 -6
  673. package/dist/trinity/core/context/CjsDirectTrinityStepExecutor.js.map +1 -1
  674. package/dist/trinity/core/context/CjsTrinityStepExecutor.js +7 -10
  675. package/dist/trinity/core/context/CjsTrinityStepExecutor.js.map +1 -1
  676. package/dist/trinity/core/context/Tr2RenderContext.js +74 -116
  677. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  678. package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
  679. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  680. package/dist/trinity/core/device/Tr2GpuBuffer.js +2 -2
  681. package/dist/trinity/core/device/Tr2GpuBuffer.js.map +1 -1
  682. package/dist/trinity/core/device/Tr2RenderTarget.js +2 -2
  683. package/dist/trinity/core/device/Tr2RenderTarget.js.map +1 -1
  684. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +2 -2
  685. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -1
  686. package/dist/trinity/core/device/Tr2SwapChain.js +2 -2
  687. package/dist/trinity/core/device/Tr2SwapChain.js.map +1 -1
  688. package/dist/trinity/core/device/TriDevice.js +576 -37
  689. package/dist/trinity/core/device/TriDevice.js.map +1 -1
  690. package/dist/trinity/core/device/gTriDev.js +49 -0
  691. package/dist/trinity/core/device/gTriDev.js.map +1 -0
  692. package/dist/trinity/core/index.js +9 -5
  693. package/dist/trinity/core/index.js.map +1 -1
  694. package/dist/trinity/core/lighting/Tr2KelvinColor.js +2 -2
  695. package/dist/trinity/core/lighting/Tr2KelvinColor.js.map +1 -1
  696. package/dist/trinity/core/lighting/Tr2LightManager.js +7 -17
  697. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  698. package/dist/trinity/core/lighting/Tr2ShLightingManager.js +2 -2
  699. package/dist/trinity/core/lighting/Tr2ShLightingManager.js.map +1 -1
  700. package/dist/trinity/core/line/Tr2BoundingLineSet.js +2 -2
  701. package/dist/trinity/core/line/Tr2BoundingLineSet.js.map +1 -1
  702. package/dist/trinity/core/line/Tr2CurveLineSet.js +10 -7
  703. package/dist/trinity/core/line/Tr2CurveLineSet.js.map +1 -1
  704. package/dist/trinity/core/line/Tr2LineGraph.js +2 -2
  705. package/dist/trinity/core/line/Tr2LineGraph.js.map +1 -1
  706. package/dist/trinity/core/line/Tr2PrimitiveSet.js +4 -5
  707. package/dist/trinity/core/line/Tr2PrimitiveSet.js.map +1 -1
  708. package/dist/trinity/core/line/TriLineSet.js +2 -2
  709. package/dist/trinity/core/line/TriLineSet.js.map +1 -1
  710. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js +1 -37
  711. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -1
  712. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js +1 -34
  713. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -1
  714. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +5 -6
  715. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  716. package/dist/trinity/core/mesh/Tr2InstancedMesh.js +2 -2
  717. package/dist/trinity/core/mesh/Tr2InstancedMesh.js.map +1 -1
  718. package/dist/trinity/core/mesh/Tr2Mesh.js +288 -183
  719. package/dist/trinity/core/mesh/Tr2Mesh.js.map +1 -1
  720. package/dist/trinity/core/mesh/Tr2MeshArea.js +32 -3
  721. package/dist/trinity/core/mesh/Tr2MeshArea.js.map +1 -1
  722. package/dist/trinity/core/mesh/Tr2MeshBase.js +58 -8
  723. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  724. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +141 -142
  725. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  726. package/dist/trinity/core/mesh/Tr2SerializedMorphAnimation.js +2 -2
  727. package/dist/trinity/core/mesh/Tr2SerializedMorphAnimation.js.map +1 -1
  728. package/dist/trinity/core/procedural/GradientTextureConstructor.js +62 -0
  729. package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -0
  730. package/dist/trinity/core/procedural/gradientTexture.js +196 -0
  731. package/dist/trinity/core/procedural/gradientTexture.js.map +1 -0
  732. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -1
  733. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +5 -0
  734. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -1
  735. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +2 -0
  736. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -1
  737. package/dist/trinity/core/tool/Tr2ManipulationTool.js +2 -2
  738. package/dist/trinity/core/tool/Tr2ManipulationTool.js.map +1 -1
  739. package/dist/trinity/core/tool/Tr2RotationTool.js +2 -2
  740. package/dist/trinity/core/tool/Tr2RotationTool.js.map +1 -1
  741. package/dist/trinity/core/tool/Tr2ScalingTool.js +2 -2
  742. package/dist/trinity/core/tool/Tr2ScalingTool.js.map +1 -1
  743. package/dist/trinity/core/tool/Tr2TranslationTool.js +2 -2
  744. package/dist/trinity/core/tool/Tr2TranslationTool.js.map +1 -1
  745. package/dist/trinity/core/variable/Tr2ExpressionTermInfo.js +2 -2
  746. package/dist/trinity/core/variable/Tr2ExpressionTermInfo.js.map +1 -1
  747. package/dist/trinity/core/variable/TriFloat.js +2 -2
  748. package/dist/trinity/core/variable/TriFloat.js.map +1 -1
  749. package/dist/trinity/core/variable/TriObserverLocal.js +2 -2
  750. package/dist/trinity/core/variable/TriObserverLocal.js.map +1 -1
  751. package/dist/trinity/core/variable/TriVariable.js +2 -2
  752. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  753. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js +2 -0
  754. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -1
  755. package/dist/trinity/core/view/TriProjection.js +2 -2
  756. package/dist/trinity/core/view/TriProjection.js.map +1 -1
  757. package/dist/trinity/core/view/TriRect.js +2 -2
  758. package/dist/trinity/core/view/TriRect.js.map +1 -1
  759. package/dist/trinity/core/view/TriView.js +2 -2
  760. package/dist/trinity/core/view/TriView.js.map +1 -1
  761. package/dist/trinity/core/view/TriViewport.js +2 -2
  762. package/dist/trinity/core/view/TriViewport.js.map +1 -1
  763. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +3 -3
  764. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  765. package/dist/trinity/curves/Tr2CurveSetRange.js +2 -2
  766. package/dist/trinity/curves/Tr2CurveSetRange.js.map +1 -1
  767. package/dist/trinity/curves/TriCurveSet.js +2 -2
  768. package/dist/trinity/curves/TriCurveSet.js.map +1 -1
  769. package/dist/trinity/curves/curve/Tr2BoneMatrixCurve.js +2 -2
  770. package/dist/trinity/curves/curve/Tr2BoneMatrixCurve.js.map +1 -1
  771. package/dist/trinity/curves/curve/Tr2CurveColor.js +2 -2
  772. package/dist/trinity/curves/curve/Tr2CurveColor.js.map +1 -1
  773. package/dist/trinity/curves/curve/Tr2CurveColorMixer.js +2 -2
  774. package/dist/trinity/curves/curve/Tr2CurveColorMixer.js.map +1 -1
  775. package/dist/trinity/curves/curve/Tr2CurveCombiner.js +3 -3
  776. package/dist/trinity/curves/curve/Tr2CurveCombiner.js.map +1 -1
  777. package/dist/trinity/curves/curve/Tr2CurveConstant.js +2 -2
  778. package/dist/trinity/curves/curve/Tr2CurveConstant.js.map +1 -1
  779. package/dist/trinity/curves/curve/Tr2CurveEulerRotation.js +2 -2
  780. package/dist/trinity/curves/curve/Tr2CurveEulerRotation.js.map +1 -1
  781. package/dist/trinity/curves/curve/Tr2CurveEulerRotationExpression.js +2 -2
  782. package/dist/trinity/curves/curve/Tr2CurveEulerRotationExpression.js.map +1 -1
  783. package/dist/trinity/curves/curve/Tr2CurveQuaternion.js +3 -3
  784. package/dist/trinity/curves/curve/Tr2CurveQuaternion.js.map +1 -1
  785. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +2 -2
  786. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  787. package/dist/trinity/curves/curve/Tr2CurveScalar.js +3 -3
  788. package/dist/trinity/curves/curve/Tr2CurveScalar.js.map +1 -1
  789. package/dist/trinity/curves/curve/Tr2CurveScalarExpression.js +2 -2
  790. package/dist/trinity/curves/curve/Tr2CurveScalarExpression.js.map +1 -1
  791. package/dist/trinity/curves/curve/Tr2CurveVector2.js +2 -2
  792. package/dist/trinity/curves/curve/Tr2CurveVector2.js.map +1 -1
  793. package/dist/trinity/curves/curve/Tr2CurveVector3.js +2 -2
  794. package/dist/trinity/curves/curve/Tr2CurveVector3.js.map +1 -1
  795. package/dist/trinity/curves/curve/Tr2CurveVector3Expression.js +2 -2
  796. package/dist/trinity/curves/curve/Tr2CurveVector3Expression.js.map +1 -1
  797. package/dist/trinity/curves/curve/Tr2CurveVector3Lerp.js +2 -2
  798. package/dist/trinity/curves/curve/Tr2CurveVector3Lerp.js.map +1 -1
  799. package/dist/trinity/curves/curve/Tr2DistanceTracker.js +5 -5
  800. package/dist/trinity/curves/curve/Tr2DistanceTracker.js.map +1 -1
  801. package/dist/trinity/curves/curve/Tr2FollowCurve.js +2 -2
  802. package/dist/trinity/curves/curve/Tr2FollowCurve.js.map +1 -1
  803. package/dist/trinity/curves/curve/Tr2QuaternionLerpCurve.js +2 -2
  804. package/dist/trinity/curves/curve/Tr2QuaternionLerpCurve.js.map +1 -1
  805. package/dist/trinity/curves/curve/Tr2RotationAdapter.js +2 -2
  806. package/dist/trinity/curves/curve/Tr2RotationAdapter.js.map +1 -1
  807. package/dist/trinity/curves/curve/Tr2ScalarExprKeyCurve.js +2 -2
  808. package/dist/trinity/curves/curve/Tr2ScalarExprKeyCurve.js.map +1 -1
  809. package/dist/trinity/curves/curve/Tr2ScalarFader.js +2 -2
  810. package/dist/trinity/curves/curve/Tr2ScalarFader.js.map +1 -1
  811. package/dist/trinity/curves/curve/Tr2TranslationAdapter.js +2 -2
  812. package/dist/trinity/curves/curve/Tr2TranslationAdapter.js.map +1 -1
  813. package/dist/trinity/curves/curve/Tr2VectorFunctionModifier.js +2 -2
  814. package/dist/trinity/curves/curve/Tr2VectorFunctionModifier.js.map +1 -1
  815. package/dist/trinity/curves/curve/TriColorSequencer.js +18 -18
  816. package/dist/trinity/curves/curve/TriColorSequencer.js.map +1 -1
  817. package/dist/trinity/curves/curve/TriEventCurve.js +51 -51
  818. package/dist/trinity/curves/curve/TriEventCurve.js.map +1 -1
  819. package/dist/trinity/curves/curve/TriPerlinCurve.js +2 -2
  820. package/dist/trinity/curves/curve/TriPerlinCurve.js.map +1 -1
  821. package/dist/trinity/curves/curve/TriVectorSequencer.js +36 -36
  822. package/dist/trinity/curves/curve/TriVectorSequencer.js.map +1 -1
  823. package/dist/trinity/curves/key/Tr2CameraFollowCurveKey.js +2 -2
  824. package/dist/trinity/curves/key/Tr2CameraFollowCurveKey.js.map +1 -1
  825. package/dist/trinity/curves/key/Tr2MatrixKey.js +2 -2
  826. package/dist/trinity/curves/key/Tr2MatrixKey.js.map +1 -1
  827. package/dist/trinity/curves/key/Tr2ObjectFollowCurveKey.js +2 -2
  828. package/dist/trinity/curves/key/Tr2ObjectFollowCurveKey.js.map +1 -1
  829. package/dist/trinity/curves/key/Tr2ScalarExprKey.js +28 -24
  830. package/dist/trinity/curves/key/Tr2ScalarExprKey.js.map +1 -1
  831. package/dist/trinity/curves/key/TriEventKey.js +2 -2
  832. package/dist/trinity/curves/key/TriEventKey.js.map +1 -1
  833. package/dist/trinity/curves/track/Tr2GrannyEventTrack.js +2 -2
  834. package/dist/trinity/curves/track/Tr2GrannyEventTrack.js.map +1 -1
  835. package/dist/trinity/curves/track/Tr2GrannyTrack.js +9 -4
  836. package/dist/trinity/curves/track/Tr2GrannyTrack.js.map +1 -1
  837. package/dist/trinity/curves/track/Tr2GrannyTransformTrack.js +2 -2
  838. package/dist/trinity/curves/track/Tr2GrannyTransformTrack.js.map +1 -1
  839. package/dist/trinity/curves/track/Tr2GrannyVectorTrack.js +2 -2
  840. package/dist/trinity/curves/track/Tr2GrannyVectorTrack.js.map +1 -1
  841. package/dist/trinity/eve/AudioGameObject.js +6 -8
  842. package/dist/trinity/eve/AudioGameObject.js.map +1 -1
  843. package/dist/trinity/eve/EveCustomMask.js +2 -2
  844. package/dist/trinity/eve/EveCustomMask.js.map +1 -1
  845. package/dist/trinity/eve/EveDistanceField.js +6 -4
  846. package/dist/trinity/eve/EveDistanceField.js.map +1 -1
  847. package/dist/trinity/eve/EveImpactOverlay.js +2 -2
  848. package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
  849. package/dist/trinity/eve/EveThrottleable.js +2 -2
  850. package/dist/trinity/eve/EveThrottleable.js.map +1 -1
  851. package/dist/trinity/eve/EveTriggerVolume.js +4 -5
  852. package/dist/trinity/eve/EveTriggerVolume.js.map +1 -1
  853. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +1 -23
  854. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  855. package/dist/trinity/eve/IEveSpaceObject2.js +1 -24
  856. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  857. package/dist/trinity/eve/IEveTransform.js +1 -22
  858. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  859. package/dist/trinity/eve/attachment/banner/EveBannerItem.js +2 -2
  860. package/dist/trinity/eve/attachment/banner/EveBannerItem.js.map +1 -1
  861. package/dist/trinity/eve/attachment/banner/EveBannerLight.js +2 -2
  862. package/dist/trinity/eve/attachment/banner/EveBannerLight.js.map +1 -1
  863. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +20 -3
  864. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  865. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +127 -122
  866. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  867. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +5 -5
  868. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -1
  869. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +4 -5
  870. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  871. package/dist/trinity/eve/attachment/booster/EveTrailsSet.js +4 -2
  872. package/dist/trinity/eve/attachment/booster/EveTrailsSet.js.map +1 -1
  873. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +169 -155
  874. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  875. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +3 -3
  876. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  877. package/dist/trinity/eve/attachment/haze/EveHazeSetItem.js +2 -2
  878. package/dist/trinity/eve/attachment/haze/EveHazeSetItem.js.map +1 -1
  879. package/dist/trinity/eve/attachment/haze/EveHazeSetLight.js +2 -2
  880. package/dist/trinity/eve/attachment/haze/EveHazeSetLight.js.map +1 -1
  881. package/dist/trinity/eve/attachment/plane/EvePlaneLight.js +2 -2
  882. package/dist/trinity/eve/attachment/plane/EvePlaneLight.js.map +1 -1
  883. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +10 -4
  884. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  885. package/dist/trinity/eve/attachment/plane/EvePlaneSetItem.js +3 -2
  886. package/dist/trinity/eve/attachment/plane/EvePlaneSetItem.js.map +1 -1
  887. package/dist/trinity/eve/attachment/spotlight/EveSpotlightLight.js +2 -2
  888. package/dist/trinity/eve/attachment/spotlight/EveSpotlightLight.js.map +1 -1
  889. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +3 -3
  890. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  891. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSetItem.js +2 -2
  892. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSetItem.js.map +1 -1
  893. package/dist/trinity/eve/attachment/sprite/EveSpriteLight.js +2 -2
  894. package/dist/trinity/eve/attachment/sprite/EveSpriteLight.js.map +1 -1
  895. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +4 -4
  896. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  897. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSetItem.js +2 -2
  898. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSetItem.js.map +1 -1
  899. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +5 -5
  900. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  901. package/dist/trinity/eve/attachment/sprite/EveSpriteSetItem.js +2 -2
  902. package/dist/trinity/eve/attachment/sprite/EveSpriteSetItem.js.map +1 -1
  903. package/dist/trinity/eve/attachment/turrets/EveTurretFiringFX.js +7 -4
  904. package/dist/trinity/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
  905. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +177 -144
  906. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  907. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +2 -2
  908. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
  909. package/dist/trinity/eve/camera/EveCamera.js +5 -11
  910. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  911. package/dist/trinity/eve/child/EveChildAudio.js +4 -5
  912. package/dist/trinity/eve/child/EveChildAudio.js.map +1 -1
  913. package/dist/trinity/eve/child/EveChildBehaviorSystem.js +5 -6
  914. package/dist/trinity/eve/child/EveChildBehaviorSystem.js.map +1 -1
  915. package/dist/trinity/eve/child/EveChildBoosterSet.js +6 -6
  916. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  917. package/dist/trinity/eve/child/EveChildBulletStorm.js +4 -5
  918. package/dist/trinity/eve/child/EveChildBulletStorm.js.map +1 -1
  919. package/dist/trinity/eve/child/EveChildCloud.js +5 -6
  920. package/dist/trinity/eve/child/EveChildCloud.js.map +1 -1
  921. package/dist/trinity/eve/child/EveChildCloud2.js +166 -166
  922. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  923. package/dist/trinity/eve/child/EveChildContainer.js +235 -169
  924. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  925. package/dist/trinity/eve/child/EveChildEffectPropagator.js +9 -9
  926. package/dist/trinity/eve/child/EveChildEffectPropagator.js.map +1 -1
  927. package/dist/trinity/eve/child/EveChildExplosion.js +11 -7
  928. package/dist/trinity/eve/child/EveChildExplosion.js.map +1 -1
  929. package/dist/trinity/eve/child/EveChildFogVolume.js +2 -2
  930. package/dist/trinity/eve/child/EveChildFogVolume.js.map +1 -1
  931. package/dist/trinity/eve/child/EveChildInheritProperties.js +2 -2
  932. package/dist/trinity/eve/child/EveChildInheritProperties.js.map +1 -1
  933. package/dist/trinity/eve/child/EveChildInstanceContainer.js +2 -2
  934. package/dist/trinity/eve/child/EveChildInstanceContainer.js.map +1 -1
  935. package/dist/trinity/eve/child/EveChildInstanceMeshRenderer.js +11 -7
  936. package/dist/trinity/eve/child/EveChildInstanceMeshRenderer.js.map +1 -1
  937. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +2 -2
  938. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
  939. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +2 -2
  940. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -1
  941. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +2 -2
  942. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -1
  943. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +4 -5
  944. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
  945. package/dist/trinity/eve/child/EveChildLightingOverride.js +4 -5
  946. package/dist/trinity/eve/child/EveChildLightingOverride.js.map +1 -1
  947. package/dist/trinity/eve/child/EveChildLineSet.js +4 -5
  948. package/dist/trinity/eve/child/EveChildLineSet.js.map +1 -1
  949. package/dist/trinity/eve/child/EveChildLink.js +2 -2
  950. package/dist/trinity/eve/child/EveChildLink.js.map +1 -1
  951. package/dist/trinity/eve/child/EveChildMesh.js +315 -229
  952. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  953. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +2 -2
  954. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -1
  955. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js +2 -2
  956. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -1
  957. package/dist/trinity/eve/child/EveChildParticleSphere.js +4 -5
  958. package/dist/trinity/eve/child/EveChildParticleSphere.js.map +1 -1
  959. package/dist/trinity/eve/child/EveChildParticleSystem.js +36 -36
  960. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  961. package/dist/trinity/eve/child/EveChildPlug.js +60 -14
  962. package/dist/trinity/eve/child/EveChildPlug.js.map +1 -1
  963. package/dist/trinity/eve/child/EveChildPostProcessVolume.js +2 -2
  964. package/dist/trinity/eve/child/EveChildPostProcessVolume.js.map +1 -1
  965. package/dist/trinity/eve/child/EveChildQuad.js +4 -5
  966. package/dist/trinity/eve/child/EveChildQuad.js.map +1 -1
  967. package/dist/trinity/eve/child/EveChildRef.js +2 -2
  968. package/dist/trinity/eve/child/EveChildRef.js.map +1 -1
  969. package/dist/trinity/eve/child/EveChildSocket.js +2 -2
  970. package/dist/trinity/eve/child/EveChildSocket.js.map +1 -1
  971. package/dist/trinity/eve/child/EveChildSpherePin.js +4 -4
  972. package/dist/trinity/eve/child/EveChildSpherePin.js.map +1 -1
  973. package/dist/trinity/eve/child/EveChildTurret.js +4 -4
  974. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  975. package/dist/trinity/eve/child/EveCloudVolumeBall.js +2 -2
  976. package/dist/trinity/eve/child/EveCloudVolumeBall.js.map +1 -1
  977. package/dist/trinity/eve/child/EveCloudVolumeTextureParameter.js +6 -6
  978. package/dist/trinity/eve/child/EveCloudVolumeTextureParameter.js.map +1 -1
  979. package/dist/trinity/eve/child/EveSpaceObjectChild.js +2 -2
  980. package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
  981. package/dist/trinity/eve/child/IEveLightingOverride.js +1 -23
  982. package/dist/trinity/eve/child/IEveLightingOverride.js.map +1 -1
  983. package/dist/trinity/eve/child/behaviors/Allign.js +2 -2
  984. package/dist/trinity/eve/child/behaviors/Allign.js.map +1 -1
  985. package/dist/trinity/eve/child/behaviors/ApproachGroup.js +2 -2
  986. package/dist/trinity/eve/child/behaviors/ApproachGroup.js.map +1 -1
  987. package/dist/trinity/eve/child/behaviors/BackAndForth.js +2 -2
  988. package/dist/trinity/eve/child/behaviors/BackAndForth.js.map +1 -1
  989. package/dist/trinity/eve/child/behaviors/BehaviorGroup.js +4 -4
  990. package/dist/trinity/eve/child/behaviors/BehaviorGroup.js.map +1 -1
  991. package/dist/trinity/eve/child/behaviors/BehaviorGroupBooster.js +2 -2
  992. package/dist/trinity/eve/child/behaviors/BehaviorGroupBooster.js.map +1 -1
  993. package/dist/trinity/eve/child/behaviors/CollisionAvoidance.js +2 -2
  994. package/dist/trinity/eve/child/behaviors/CollisionAvoidance.js.map +1 -1
  995. package/dist/trinity/eve/child/behaviors/DroneAvoidance.js +2 -2
  996. package/dist/trinity/eve/child/behaviors/DroneAvoidance.js.map +1 -1
  997. package/dist/trinity/eve/child/behaviors/FollowASpline.js +2 -2
  998. package/dist/trinity/eve/child/behaviors/FollowASpline.js.map +1 -1
  999. package/dist/trinity/eve/child/behaviors/Formation.js +2 -2
  1000. package/dist/trinity/eve/child/behaviors/Formation.js.map +1 -1
  1001. package/dist/trinity/eve/child/behaviors/InclusionVolume.js +2 -2
  1002. package/dist/trinity/eve/child/behaviors/InclusionVolume.js.map +1 -1
  1003. package/dist/trinity/eve/child/behaviors/Inertia.js +2 -2
  1004. package/dist/trinity/eve/child/behaviors/Inertia.js.map +1 -1
  1005. package/dist/trinity/eve/child/behaviors/PlayFX.js +2 -2
  1006. package/dist/trinity/eve/child/behaviors/PlayFX.js.map +1 -1
  1007. package/dist/trinity/eve/child/behaviors/SeekTarget.js +2 -2
  1008. package/dist/trinity/eve/child/behaviors/SeekTarget.js.map +1 -1
  1009. package/dist/trinity/eve/child/behaviors/SpawnDrones.js +2 -2
  1010. package/dist/trinity/eve/child/behaviors/SpawnDrones.js.map +1 -1
  1011. package/dist/trinity/eve/child/behaviors/Wander.js +2 -2
  1012. package/dist/trinity/eve/child/behaviors/Wander.js.map +1 -1
  1013. package/dist/trinity/eve/child/behaviors/lifecycle/ProcessLifetime.js +2 -2
  1014. package/dist/trinity/eve/child/behaviors/lifecycle/ProcessLifetime.js.map +1 -1
  1015. package/dist/trinity/eve/child/behaviors/tunnels/SplineTunnelGroup.js +2 -2
  1016. package/dist/trinity/eve/child/behaviors/tunnels/SplineTunnelGroup.js.map +1 -1
  1017. package/dist/trinity/eve/child/lineSetPaths/EveBezierCurve.js +8 -8
  1018. package/dist/trinity/eve/child/lineSetPaths/EveBezierCurve.js.map +1 -1
  1019. package/dist/trinity/eve/child/lineSetPaths/EveCircle.js +8 -8
  1020. package/dist/trinity/eve/child/lineSetPaths/EveCircle.js.map +1 -1
  1021. package/dist/trinity/eve/child/lineSetPaths/EveLineChildContainer.js +2 -2
  1022. package/dist/trinity/eve/child/lineSetPaths/EveLineChildContainer.js.map +1 -1
  1023. package/dist/trinity/eve/child/modifiers/EveChildModifierAttachToBone.js +2 -2
  1024. package/dist/trinity/eve/child/modifiers/EveChildModifierAttachToBone.js.map +1 -1
  1025. package/dist/trinity/eve/child/modifiers/EveChildModifierBillboard3D.js +2 -2
  1026. package/dist/trinity/eve/child/modifiers/EveChildModifierBillboard3D.js.map +1 -1
  1027. package/dist/trinity/eve/child/modifiers/EveChildModifierSRT.js +2 -2
  1028. package/dist/trinity/eve/child/modifiers/EveChildModifierSRT.js.map +1 -1
  1029. package/dist/trinity/eve/child/modifiers/EveChildModifierStretch.js +2 -2
  1030. package/dist/trinity/eve/child/modifiers/EveChildModifierStretch.js.map +1 -1
  1031. package/dist/trinity/eve/child/modifiers/EveChildModifierTranslateWithCamera.js +2 -2
  1032. package/dist/trinity/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +1 -1
  1033. package/dist/trinity/eve/child/procedural/EveChildProceduralContainer.js +5 -6
  1034. package/dist/trinity/eve/child/procedural/EveChildProceduralContainer.js.map +1 -1
  1035. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js +3 -3
  1036. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +1 -1
  1037. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js +3 -3
  1038. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +1 -1
  1039. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCycling.js +2 -2
  1040. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +1 -1
  1041. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js +3 -3
  1042. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +1 -1
  1043. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandom.js +4 -4
  1044. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +1 -1
  1045. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js +4 -4
  1046. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +1 -1
  1047. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js +4 -4
  1048. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +1 -1
  1049. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholds.js +4 -4
  1050. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +1 -1
  1051. package/dist/trinity/eve/distribution/EveBaseDistributionMethod.js +2 -2
  1052. package/dist/trinity/eve/distribution/EveBaseDistributionMethod.js.map +1 -1
  1053. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js +2 -2
  1054. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +1 -1
  1055. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js +2 -2
  1056. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +1 -1
  1057. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js +2 -2
  1058. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +1 -1
  1059. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js +2 -2
  1060. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +1 -1
  1061. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js +4 -4
  1062. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +1 -1
  1063. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js +2 -2
  1064. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +1 -1
  1065. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js +2 -2
  1066. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +1 -1
  1067. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js +2 -2
  1068. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +1 -1
  1069. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js +2 -2
  1070. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +1 -1
  1071. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js +2 -2
  1072. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +1 -1
  1073. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerBurst.js +2 -2
  1074. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +1 -1
  1075. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js +2 -2
  1076. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +1 -1
  1077. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerInterval.js +2 -2
  1078. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +1 -1
  1079. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js +2 -2
  1080. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +1 -1
  1081. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js +2 -2
  1082. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +1 -1
  1083. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js +2 -2
  1084. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +1 -1
  1085. package/dist/trinity/eve/effect/lensflare/EveLensflare.js +4 -5
  1086. package/dist/trinity/eve/effect/lensflare/EveLensflare.js.map +1 -1
  1087. package/dist/trinity/eve/effect/multiEffect/EveMultiEffect.js +4 -5
  1088. package/dist/trinity/eve/effect/multiEffect/EveMultiEffect.js.map +1 -1
  1089. package/dist/trinity/eve/effect/multiEffect/EveMultiEffectParameter.js +4 -4
  1090. package/dist/trinity/eve/effect/multiEffect/EveMultiEffectParameter.js.map +1 -1
  1091. package/dist/trinity/eve/index.js +4 -4
  1092. package/dist/trinity/eve/lights/Tr2FactionLight.js +5 -6
  1093. package/dist/trinity/eve/lights/Tr2FactionLight.js.map +1 -1
  1094. package/dist/trinity/eve/lights/Tr2Light.js +37 -9
  1095. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  1096. package/dist/trinity/eve/lights/Tr2PointLight.js +2 -2
  1097. package/dist/trinity/eve/lights/Tr2PointLight.js.map +1 -1
  1098. package/dist/trinity/eve/lights/Tr2SpotLight.js +2 -2
  1099. package/dist/trinity/eve/lights/Tr2SpotLight.js.map +1 -1
  1100. package/dist/trinity/eve/lights/Tr2TexturedPointLight.js +29 -31
  1101. package/dist/trinity/eve/lights/Tr2TexturedPointLight.js.map +1 -1
  1102. package/dist/trinity/eve/locator/EveLocator2.js +2 -2
  1103. package/dist/trinity/eve/locator/EveLocator2.js.map +1 -1
  1104. package/dist/trinity/eve/locator/EveLocatorSets.js +13 -4
  1105. package/dist/trinity/eve/locator/EveLocatorSets.js.map +1 -1
  1106. package/dist/trinity/eve/locator/Locator.js +2 -2
  1107. package/dist/trinity/eve/locator/Locator.js.map +1 -1
  1108. package/dist/trinity/eve/overlays/EveDamageOverlay.js +2 -2
  1109. package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
  1110. package/dist/trinity/eve/overlays/EveMeshOverlayEffect.js +2 -2
  1111. package/dist/trinity/eve/overlays/EveMeshOverlayEffect.js.map +1 -1
  1112. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +5 -6
  1113. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  1114. package/dist/trinity/eve/renderable/stretch/EveFiringEffectElementContainer.js +4 -5
  1115. package/dist/trinity/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
  1116. package/dist/trinity/eve/renderable/stretch/EveLocalPositionCurve.js +2 -2
  1117. package/dist/trinity/eve/renderable/stretch/EveLocalPositionCurve.js.map +1 -1
  1118. package/dist/trinity/eve/renderable/stretch/EveRemotePositionCurve.js +2 -2
  1119. package/dist/trinity/eve/renderable/stretch/EveRemotePositionCurve.js.map +1 -1
  1120. package/dist/trinity/eve/renderable/stretch/EveStretch.js +6 -6
  1121. package/dist/trinity/eve/renderable/stretch/EveStretch.js.map +1 -1
  1122. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +10 -8
  1123. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  1124. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +4 -5
  1125. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  1126. package/dist/trinity/eve/scene/EveSpaceScene.js +2 -2
  1127. package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
  1128. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -2
  1129. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
  1130. package/dist/trinity/eve/scene/components/EveComponentRegistry.js +3 -3
  1131. package/dist/trinity/eve/scene/components/EveComponentRegistry.js.map +1 -1
  1132. package/dist/trinity/eve/smartLights/EveChildSmartLightSet.js +6 -7
  1133. package/dist/trinity/eve/smartLights/EveChildSmartLightSet.js.map +1 -1
  1134. package/dist/trinity/eve/smartLights/EveSmartLightBaseGroup.js +2 -2
  1135. package/dist/trinity/eve/smartLights/EveSmartLightBaseGroup.js.map +1 -1
  1136. package/dist/trinity/eve/smartLights/EveSmartLightColorShareGroup.js +4 -8
  1137. package/dist/trinity/eve/smartLights/EveSmartLightColorShareGroup.js.map +1 -1
  1138. package/dist/trinity/eve/smartLights/EveSmartLightMesh.js +7 -4
  1139. package/dist/trinity/eve/smartLights/EveSmartLightMesh.js.map +1 -1
  1140. package/dist/trinity/eve/smartLights/EveSmartLightPointLight.js +25 -15
  1141. package/dist/trinity/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
  1142. package/dist/trinity/eve/smartLights/EveSmartLightQuad.js +4 -9
  1143. package/dist/trinity/eve/smartLights/EveSmartLightQuad.js.map +1 -1
  1144. package/dist/trinity/eve/smartLights/EveSmartLightSpotLight.js +2 -2
  1145. package/dist/trinity/eve/smartLights/EveSmartLightSpotLight.js.map +1 -1
  1146. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js +2 -3
  1147. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +1 -1
  1148. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js +2 -2
  1149. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +1 -1
  1150. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js +2 -2
  1151. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +1 -1
  1152. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js +10 -18
  1153. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +1 -1
  1154. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js +2 -2
  1155. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +1 -1
  1156. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js +2 -2
  1157. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +1 -1
  1158. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js +4 -9
  1159. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +1 -1
  1160. package/dist/trinity/eve/socket/EveSocketParameterBool.js +2 -2
  1161. package/dist/trinity/eve/socket/EveSocketParameterBool.js.map +1 -1
  1162. package/dist/trinity/eve/socket/EveSocketParameterColor.js +2 -2
  1163. package/dist/trinity/eve/socket/EveSocketParameterColor.js.map +1 -1
  1164. package/dist/trinity/eve/socket/EveSocketParameterFloat.js +2 -2
  1165. package/dist/trinity/eve/socket/EveSocketParameterFloat.js.map +1 -1
  1166. package/dist/trinity/eve/socket/EveSocketParameterInt.js +2 -2
  1167. package/dist/trinity/eve/socket/EveSocketParameterInt.js.map +1 -1
  1168. package/dist/trinity/eve/socket/EveSocketParameterString.js +2 -2
  1169. package/dist/trinity/eve/socket/EveSocketParameterString.js.map +1 -1
  1170. package/dist/trinity/eve/socket/EveSocketParameterVector2.js +2 -2
  1171. package/dist/trinity/eve/socket/EveSocketParameterVector2.js.map +1 -1
  1172. package/dist/trinity/eve/socket/EveSocketParameterVector3.js +2 -2
  1173. package/dist/trinity/eve/socket/EveSocketParameterVector3.js.map +1 -1
  1174. package/dist/trinity/eve/socket/EveSocketParameterVector4.js +2 -2
  1175. package/dist/trinity/eve/socket/EveSocketParameterVector4.js.map +1 -1
  1176. package/dist/trinity/eve/spaceObject/EveEffectRoot2.js +20 -17
  1177. package/dist/trinity/eve/spaceObject/EveEffectRoot2.js.map +1 -1
  1178. package/dist/trinity/eve/spaceObject/EveMissile.js +2 -2
  1179. package/dist/trinity/eve/spaceObject/EveMissile.js.map +1 -1
  1180. package/dist/trinity/eve/spaceObject/EveMissileWarhead.js +2 -2
  1181. package/dist/trinity/eve/spaceObject/EveMissileWarhead.js.map +1 -1
  1182. package/dist/trinity/eve/spaceObject/EveMobile.js +2 -2
  1183. package/dist/trinity/eve/spaceObject/EveMobile.js.map +1 -1
  1184. package/dist/trinity/eve/spaceObject/EveRootTransform.js +2 -2
  1185. package/dist/trinity/eve/spaceObject/EveRootTransform.js.map +1 -1
  1186. package/dist/trinity/eve/spaceObject/EveShip2.js +2 -2
  1187. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  1188. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +539 -432
  1189. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  1190. package/dist/trinity/eve/spaceObject/EveTransform.js +7 -7
  1191. package/dist/trinity/eve/spaceObject/EveTransform.js.map +1 -1
  1192. package/dist/trinity/eve/spaceObject/IEveSpaceObject2ParentData.js +44 -52
  1193. package/dist/trinity/eve/spaceObject/IEveSpaceObject2ParentData.js.map +1 -1
  1194. package/dist/trinity/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js +2 -2
  1195. package/dist/trinity/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js.map +1 -1
  1196. package/dist/trinity/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js +2 -2
  1197. package/dist/trinity/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js.map +1 -1
  1198. package/dist/trinity/eve/spaceObject/planet/EvePlanet.js +2 -2
  1199. package/dist/trinity/eve/spaceObject/planet/EvePlanet.js.map +1 -1
  1200. package/dist/trinity/eve/spaceObject/swarm/EveSwarm.js +2 -2
  1201. package/dist/trinity/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
  1202. package/dist/trinity/eve/spaceObject/swarm/EveSwarmRenderable.js +7 -8
  1203. package/dist/trinity/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -1
  1204. package/dist/trinity/eve/ui/EveConnector.js +2 -2
  1205. package/dist/trinity/eve/ui/EveConnector.js.map +1 -1
  1206. package/dist/trinity/eve/ui/EveEllipseDefinition.js +2 -2
  1207. package/dist/trinity/eve/ui/EveEllipseDefinition.js.map +1 -1
  1208. package/dist/trinity/eve/ui/EveEllipseSet.js +36 -6
  1209. package/dist/trinity/eve/ui/EveEllipseSet.js.map +1 -1
  1210. package/dist/trinity/eve/ui/EveLineContainer.js +4 -5
  1211. package/dist/trinity/eve/ui/EveLineContainer.js.map +1 -1
  1212. package/dist/trinity/eve/ui/EveProjectBracket.js +11 -3
  1213. package/dist/trinity/eve/ui/EveProjectBracket.js.map +1 -1
  1214. package/dist/trinity/eve/ui/EveSpherePin.js +6 -7
  1215. package/dist/trinity/eve/ui/EveSpherePin.js.map +1 -1
  1216. package/dist/trinity/eve/ui/EveSprite2dBracket.js +2 -2
  1217. package/dist/trinity/eve/ui/EveSprite2dBracket.js.map +1 -1
  1218. package/dist/trinity/eve/ui/EveSprite2dBracketRenderer.js +2 -2
  1219. package/dist/trinity/eve/ui/EveSprite2dBracketRenderer.js.map +1 -1
  1220. package/dist/trinity/eve/ui/EveTacticalOverlay.js +6 -24
  1221. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  1222. package/dist/trinity/eve/ui/EveUiObject.js +2 -2
  1223. package/dist/trinity/eve/ui/EveUiObject.js.map +1 -1
  1224. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +4 -5
  1225. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  1226. package/dist/trinity/eve/ui/lines/EveLineSet.js +6 -7
  1227. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  1228. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js +2 -2
  1229. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js.map +1 -1
  1230. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +8 -9
  1231. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  1232. package/dist/trinity/eve/virtualCamera/EveVirtualCamera.js +2 -2
  1233. package/dist/trinity/eve/virtualCamera/EveVirtualCamera.js.map +1 -1
  1234. package/dist/trinity/eve/virtualCamera/EveVirtualCameraSystem.js +2 -2
  1235. package/dist/trinity/eve/virtualCamera/EveVirtualCameraSystem.js.map +1 -1
  1236. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js +2 -2
  1237. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js.map +1 -1
  1238. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js +4 -4
  1239. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js.map +1 -1
  1240. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js +2 -2
  1241. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js.map +1 -1
  1242. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js +2 -2
  1243. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js.map +1 -1
  1244. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js +2 -2
  1245. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js.map +1 -1
  1246. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js +4 -4
  1247. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js.map +1 -1
  1248. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js +2 -2
  1249. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js.map +1 -1
  1250. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js +2 -2
  1251. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js.map +1 -1
  1252. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js +2 -2
  1253. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js.map +1 -1
  1254. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js +2 -2
  1255. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js.map +1 -1
  1256. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js +2 -2
  1257. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js.map +1 -1
  1258. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js +2 -2
  1259. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js.map +1 -1
  1260. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js +2 -2
  1261. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js.map +1 -1
  1262. package/dist/trinity/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js +2 -2
  1263. package/dist/trinity/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js.map +1 -1
  1264. package/dist/trinity/eve/volume/EveBoxVolume.js +44 -44
  1265. package/dist/trinity/eve/volume/EveBoxVolume.js.map +1 -1
  1266. package/dist/trinity/eve/volume/EveEllipsoidVolume.js +2 -2
  1267. package/dist/trinity/eve/volume/EveEllipsoidVolume.js.map +1 -1
  1268. package/dist/trinity/eve/volume/EveSphereVolume.js +5 -6
  1269. package/dist/trinity/eve/volume/EveSphereVolume.js.map +1 -1
  1270. package/dist/trinity/generated/eve/child/EveCloudEditableVolume.js +2 -2
  1271. package/dist/trinity/generated/eve/child/EveCloudEditableVolume.js.map +1 -1
  1272. package/dist/trinity/generated/eve/effect/EveOccluder.js +2 -2
  1273. package/dist/trinity/generated/eve/effect/EveOccluder.js.map +1 -1
  1274. package/dist/trinity/generated/eve/effect/EveStarfield.js +2 -2
  1275. package/dist/trinity/generated/eve/effect/EveStarfield.js.map +1 -1
  1276. package/dist/trinity/generated/font/Tr2FontManager.js +2 -2
  1277. package/dist/trinity/generated/font/Tr2FontManager.js.map +1 -1
  1278. package/dist/trinity/generated/font/Tr2FontMeasurer.js +2 -2
  1279. package/dist/trinity/generated/font/Tr2FontMeasurer.js.map +1 -1
  1280. package/dist/trinity/generated/font/Tr2SBitWrapper.js +2 -2
  1281. package/dist/trinity/generated/font/Tr2SBitWrapper.js.map +1 -1
  1282. package/dist/trinity/generated/particle/Tr2GpuParticleSystem.js +2 -2
  1283. package/dist/trinity/generated/particle/Tr2GpuParticleSystem.js.map +1 -1
  1284. package/dist/trinity/generated/raytracing/Tr2RaytracingManager.js +2 -2
  1285. package/dist/trinity/generated/raytracing/Tr2RaytracingManager.js.map +1 -1
  1286. package/dist/trinity/generated/sprite2d/Tr2Sprite2d.js +2 -2
  1287. package/dist/trinity/generated/sprite2d/Tr2Sprite2d.js.map +1 -1
  1288. package/dist/trinity/generated/sprite2d/Tr2Sprite2dArc.js +2 -2
  1289. package/dist/trinity/generated/sprite2d/Tr2Sprite2dArc.js.map +1 -1
  1290. package/dist/trinity/generated/sprite2d/Tr2Sprite2dContainer.js +2 -2
  1291. package/dist/trinity/generated/sprite2d/Tr2Sprite2dContainer.js.map +1 -1
  1292. package/dist/trinity/generated/sprite2d/Tr2Sprite2dFrame.js +2 -2
  1293. package/dist/trinity/generated/sprite2d/Tr2Sprite2dFrame.js.map +1 -1
  1294. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLayer.js +2 -2
  1295. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLayer.js.map +1 -1
  1296. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLine.js +2 -2
  1297. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLine.js.map +1 -1
  1298. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretch.js +2 -2
  1299. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretch.js.map +1 -1
  1300. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretchVertical.js +2 -2
  1301. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretchVertical.js.map +1 -1
  1302. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTextObject.js +2 -2
  1303. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTextObject.js.map +1 -1
  1304. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTexture.js +2 -2
  1305. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTexture.js.map +1 -1
  1306. package/dist/trinity/generated/sprite2d/Tr2SpriteObject.js +2 -2
  1307. package/dist/trinity/generated/sprite2d/Tr2SpriteObject.js.map +1 -1
  1308. package/dist/trinity/generated/trinityCore/Tr2AtlasTexture.js +2 -2
  1309. package/dist/trinity/generated/trinityCore/Tr2AtlasTexture.js.map +1 -1
  1310. package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js +2 -2
  1311. package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js.map +1 -1
  1312. package/dist/trinity/generated/trinityCore/Tr2GrannyPrimitiveSet.js +2 -2
  1313. package/dist/trinity/generated/trinityCore/Tr2GrannyPrimitiveSet.js.map +1 -1
  1314. package/dist/trinity/generated/trinityCore/Tr2HostBitmap.js +2 -2
  1315. package/dist/trinity/generated/trinityCore/Tr2HostBitmap.js.map +1 -1
  1316. package/dist/trinity/generated/trinityCore/Tr2ImpostorManager.js +2 -2
  1317. package/dist/trinity/generated/trinityCore/Tr2ImpostorManager.js.map +1 -1
  1318. package/dist/trinity/generated/trinityCore/Tr2PrimitiveScene.js +2 -2
  1319. package/dist/trinity/generated/trinityCore/Tr2PrimitiveScene.js.map +1 -1
  1320. package/dist/trinity/generated/trinityCore/Tr2PrimitiveText.js +2 -2
  1321. package/dist/trinity/generated/trinityCore/Tr2PrimitiveText.js.map +1 -1
  1322. package/dist/trinity/generated/trinityCore/Tr2ReflectionProbe.js +2 -2
  1323. package/dist/trinity/generated/trinityCore/Tr2ReflectionProbe.js.map +1 -1
  1324. package/dist/trinity/generated/trinityCore/Tr2SSSSS.js +2 -2
  1325. package/dist/trinity/generated/trinityCore/Tr2SSSSS.js.map +1 -1
  1326. package/dist/trinity/generated/trinityCore/Tr2TextureAtlas.js +2 -2
  1327. package/dist/trinity/generated/trinityCore/Tr2TextureAtlas.js.map +1 -1
  1328. package/dist/trinity/generated/trinityCore/Tr2TextureAtlasMan.js +2 -2
  1329. package/dist/trinity/generated/trinityCore/Tr2TextureAtlasMan.js.map +1 -1
  1330. package/dist/trinity/index.js +23 -16
  1331. package/dist/trinity/index.js.map +1 -1
  1332. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js +1 -31
  1333. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -1
  1334. package/dist/trinity/particle/Tr2ParticleSystem.js +51 -52
  1335. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  1336. package/dist/trinity/particle/attribute/Tr2CapsuleShapeAttributeGenerator.js +2 -2
  1337. package/dist/trinity/particle/attribute/Tr2CapsuleShapeAttributeGenerator.js.map +1 -1
  1338. package/dist/trinity/particle/attribute/Tr2ConsecutiveIntegerAttributeGenerator.js +2 -2
  1339. package/dist/trinity/particle/attribute/Tr2ConsecutiveIntegerAttributeGenerator.js.map +1 -1
  1340. package/dist/trinity/particle/attribute/Tr2RandomDirectionAttributeGenerator.js +2 -2
  1341. package/dist/trinity/particle/attribute/Tr2RandomDirectionAttributeGenerator.js.map +1 -1
  1342. package/dist/trinity/particle/attribute/Tr2RandomIntegerAttributeGenerator.js +2 -2
  1343. package/dist/trinity/particle/attribute/Tr2RandomIntegerAttributeGenerator.js.map +1 -1
  1344. package/dist/trinity/particle/attribute/Tr2RandomUniformAttributeGenerator.js +2 -2
  1345. package/dist/trinity/particle/attribute/Tr2RandomUniformAttributeGenerator.js.map +1 -1
  1346. package/dist/trinity/particle/attribute/Tr2SphereShapeAttributeGenerator.js +2 -2
  1347. package/dist/trinity/particle/attribute/Tr2SphereShapeAttributeGenerator.js.map +1 -1
  1348. package/dist/trinity/particle/constraint/Tr2ElementBlendConstraint.js +2 -2
  1349. package/dist/trinity/particle/constraint/Tr2ElementBlendConstraint.js.map +1 -1
  1350. package/dist/trinity/particle/constraint/Tr2PlaneConstraint.js +13 -3
  1351. package/dist/trinity/particle/constraint/Tr2PlaneConstraint.js.map +1 -1
  1352. package/dist/trinity/particle/constraint/Tr2SphereConstraint.js +2 -2
  1353. package/dist/trinity/particle/constraint/Tr2SphereConstraint.js.map +1 -1
  1354. package/dist/trinity/particle/element/Tr2ParticleElementData.js +22 -8
  1355. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  1356. package/dist/trinity/particle/element/Tr2ParticleElementDeclaration.js +13 -25
  1357. package/dist/trinity/particle/element/Tr2ParticleElementDeclaration.js.map +1 -1
  1358. package/dist/trinity/particle/element/Tr2ParticleElementDeclarationName.js +38 -3
  1359. package/dist/trinity/particle/element/Tr2ParticleElementDeclarationName.js.map +1 -1
  1360. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +26 -27
  1361. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  1362. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +4 -5
  1363. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  1364. package/dist/trinity/particle/emitter/Tr2GpuUniqueEmitter.js +2 -2
  1365. package/dist/trinity/particle/emitter/Tr2GpuUniqueEmitter.js.map +1 -1
  1366. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +17 -18
  1367. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  1368. package/dist/trinity/particle/force/Tr2ForceSphereVolume.js +2 -2
  1369. package/dist/trinity/particle/force/Tr2ForceSphereVolume.js.map +1 -1
  1370. package/dist/trinity/particle/force/Tr2ParticleAttractorForce.js +2 -2
  1371. package/dist/trinity/particle/force/Tr2ParticleAttractorForce.js.map +1 -1
  1372. package/dist/trinity/particle/force/Tr2ParticleDirectForce.js +2 -2
  1373. package/dist/trinity/particle/force/Tr2ParticleDirectForce.js.map +1 -1
  1374. package/dist/trinity/particle/force/Tr2ParticleDragForce.js +2 -2
  1375. package/dist/trinity/particle/force/Tr2ParticleDragForce.js.map +1 -1
  1376. package/dist/trinity/particle/force/Tr2ParticleFluidDragForce.js +2 -2
  1377. package/dist/trinity/particle/force/Tr2ParticleFluidDragForce.js.map +1 -1
  1378. package/dist/trinity/particle/force/Tr2ParticleSpring.js +2 -2
  1379. package/dist/trinity/particle/force/Tr2ParticleSpring.js.map +1 -1
  1380. package/dist/trinity/particle/force/Tr2ParticleTurbulenceForce.js +2 -2
  1381. package/dist/trinity/particle/force/Tr2ParticleTurbulenceForce.js.map +1 -1
  1382. package/dist/trinity/particle/force/Tr2ParticleVortexForce.js +2 -2
  1383. package/dist/trinity/particle/force/Tr2ParticleVortexForce.js.map +1 -1
  1384. package/dist/trinity/particle/index.js +1 -1
  1385. package/dist/trinity/postProcess/Tr2PostProcess.js +2 -2
  1386. package/dist/trinity/postProcess/Tr2PostProcess.js.map +1 -1
  1387. package/dist/trinity/postProcess/Tr2PostProcess2.js +2 -2
  1388. package/dist/trinity/postProcess/Tr2PostProcess2.js.map +1 -1
  1389. package/dist/trinity/postProcess/Tr2PostProcessAttributes.js +2 -2
  1390. package/dist/trinity/postProcess/Tr2PostProcessAttributes.js.map +1 -1
  1391. package/dist/trinity/postProcess/Tr2PostProcessRenderer.js +4 -4
  1392. package/dist/trinity/postProcess/Tr2PostProcessRenderer.js.map +1 -1
  1393. package/dist/trinity/postProcess/Tr2SSAO.js +4 -4
  1394. package/dist/trinity/postProcess/Tr2SSAO.js.map +1 -1
  1395. package/dist/trinity/postProcess/effect/Tr2PPBloomEffect.js +2 -2
  1396. package/dist/trinity/postProcess/effect/Tr2PPBloomEffect.js.map +1 -1
  1397. package/dist/trinity/postProcess/effect/Tr2PPColorCorrectionEffect.js +2 -2
  1398. package/dist/trinity/postProcess/effect/Tr2PPColorCorrectionEffect.js.map +1 -1
  1399. package/dist/trinity/postProcess/effect/Tr2PPDepthOfFieldEffect.js +2 -2
  1400. package/dist/trinity/postProcess/effect/Tr2PPDepthOfFieldEffect.js.map +1 -1
  1401. package/dist/trinity/postProcess/effect/Tr2PPDesaturateEffect.js +2 -2
  1402. package/dist/trinity/postProcess/effect/Tr2PPDesaturateEffect.js.map +1 -1
  1403. package/dist/trinity/postProcess/effect/Tr2PPDynamicExposureEffect.js +2 -2
  1404. package/dist/trinity/postProcess/effect/Tr2PPDynamicExposureEffect.js.map +1 -1
  1405. package/dist/trinity/postProcess/effect/Tr2PPEffect.js +2 -2
  1406. package/dist/trinity/postProcess/effect/Tr2PPEffect.js.map +1 -1
  1407. package/dist/trinity/postProcess/effect/Tr2PPFadeEffect.js +2 -2
  1408. package/dist/trinity/postProcess/effect/Tr2PPFadeEffect.js.map +1 -1
  1409. package/dist/trinity/postProcess/effect/Tr2PPFilmGrainEffect.js +2 -2
  1410. package/dist/trinity/postProcess/effect/Tr2PPFilmGrainEffect.js.map +1 -1
  1411. package/dist/trinity/postProcess/effect/Tr2PPFogEffect.js +2 -2
  1412. package/dist/trinity/postProcess/effect/Tr2PPFogEffect.js.map +1 -1
  1413. package/dist/trinity/postProcess/effect/Tr2PPGenericEffect.js +2 -2
  1414. package/dist/trinity/postProcess/effect/Tr2PPGenericEffect.js.map +1 -1
  1415. package/dist/trinity/postProcess/effect/Tr2PPGodRaysEffect.js +2 -2
  1416. package/dist/trinity/postProcess/effect/Tr2PPGodRaysEffect.js.map +1 -1
  1417. package/dist/trinity/postProcess/effect/Tr2PPLutEffect.js +2 -2
  1418. package/dist/trinity/postProcess/effect/Tr2PPLutEffect.js.map +1 -1
  1419. package/dist/trinity/postProcess/effect/Tr2PPSignalLossEffect.js +2 -2
  1420. package/dist/trinity/postProcess/effect/Tr2PPSignalLossEffect.js.map +1 -1
  1421. package/dist/trinity/postProcess/effect/Tr2PPTaaEffect.js +2 -2
  1422. package/dist/trinity/postProcess/effect/Tr2PPTaaEffect.js.map +1 -1
  1423. package/dist/trinity/postProcess/effect/Tr2PPTonemappingEffect.js +2 -2
  1424. package/dist/trinity/postProcess/effect/Tr2PPTonemappingEffect.js.map +1 -1
  1425. package/dist/trinity/postProcess/effect/Tr2PPVignetteEffect.js +2 -2
  1426. package/dist/trinity/postProcess/effect/Tr2PPVignetteEffect.js.map +1 -1
  1427. package/dist/trinity/renderJob/Tr2RenderJobs.js +5 -5
  1428. package/dist/trinity/renderJob/Tr2RenderJobs.js.map +1 -1
  1429. package/dist/trinity/renderJob/TriRenderJob.js +4 -4
  1430. package/dist/trinity/renderJob/TriRenderJob.js.map +1 -1
  1431. package/dist/trinity/renderJob/node/Tr2RenderNodeEffect.js +4 -5
  1432. package/dist/trinity/renderJob/node/Tr2RenderNodeEffect.js.map +1 -1
  1433. package/dist/trinity/renderJob/node/Tr2RenderNodeSprite2dScene.js +4 -5
  1434. package/dist/trinity/renderJob/node/Tr2RenderNodeSprite2dScene.js.map +1 -1
  1435. package/dist/trinity/renderJob/step/Tr2StepExecuteRenderNode.js +2 -2
  1436. package/dist/trinity/renderJob/step/Tr2StepExecuteRenderNode.js.map +1 -1
  1437. package/dist/trinity/renderJob/step/TriRenderStep.js +2 -2
  1438. package/dist/trinity/renderJob/step/TriRenderStep.js.map +1 -1
  1439. package/dist/trinity/renderJob/step/TriStepClear.js +2 -2
  1440. package/dist/trinity/renderJob/step/TriStepClear.js.map +1 -1
  1441. package/dist/trinity/renderJob/step/TriStepClearUav.js +2 -2
  1442. package/dist/trinity/renderJob/step/TriStepClearUav.js.map +1 -1
  1443. package/dist/trinity/renderJob/step/TriStepCopyRenderTarget.js +2 -2
  1444. package/dist/trinity/renderJob/step/TriStepCopyRenderTarget.js.map +1 -1
  1445. package/dist/trinity/renderJob/step/TriStepEnableWireframeMode.js +2 -2
  1446. package/dist/trinity/renderJob/step/TriStepEnableWireframeMode.js.map +1 -1
  1447. package/dist/trinity/renderJob/step/TriStepFilterVisibilityResults.js +2 -2
  1448. package/dist/trinity/renderJob/step/TriStepFilterVisibilityResults.js.map +1 -1
  1449. package/dist/trinity/renderJob/step/TriStepGenerateMipMaps.js +2 -2
  1450. package/dist/trinity/renderJob/step/TriStepGenerateMipMaps.js.map +1 -1
  1451. package/dist/trinity/renderJob/step/TriStepPopRenderTarget.js +2 -2
  1452. package/dist/trinity/renderJob/step/TriStepPopRenderTarget.js.map +1 -1
  1453. package/dist/trinity/renderJob/step/TriStepPresentSwapChain.js +2 -2
  1454. package/dist/trinity/renderJob/step/TriStepPresentSwapChain.js.map +1 -1
  1455. package/dist/trinity/renderJob/step/TriStepPushDepthStencil.js +2 -2
  1456. package/dist/trinity/renderJob/step/TriStepPushDepthStencil.js.map +1 -1
  1457. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +2 -2
  1458. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  1459. package/dist/trinity/renderJob/step/TriStepRenderAtlas.js +2 -2
  1460. package/dist/trinity/renderJob/step/TriStepRenderAtlas.js.map +1 -1
  1461. package/dist/trinity/renderJob/step/TriStepRenderDebug.js +2 -2
  1462. package/dist/trinity/renderJob/step/TriStepRenderDebug.js.map +1 -1
  1463. package/dist/trinity/renderJob/step/TriStepRenderEffect.js +2 -2
  1464. package/dist/trinity/renderJob/step/TriStepRenderEffect.js.map +1 -1
  1465. package/dist/trinity/renderJob/step/TriStepRenderFps.js +2 -2
  1466. package/dist/trinity/renderJob/step/TriStepRenderFps.js.map +1 -1
  1467. package/dist/trinity/renderJob/step/TriStepRenderLineGraph.js +2 -2
  1468. package/dist/trinity/renderJob/step/TriStepRenderLineGraph.js.map +1 -1
  1469. package/dist/trinity/renderJob/step/TriStepRenderObject.js +2 -2
  1470. package/dist/trinity/renderJob/step/TriStepRenderObject.js.map +1 -1
  1471. package/dist/trinity/renderJob/step/TriStepRenderPass.js +2 -2
  1472. package/dist/trinity/renderJob/step/TriStepRenderPass.js.map +1 -1
  1473. package/dist/trinity/renderJob/step/TriStepRenderScene.js +2 -2
  1474. package/dist/trinity/renderJob/step/TriStepRenderScene.js.map +1 -1
  1475. package/dist/trinity/renderJob/step/TriStepRenderSceneDebug.js +2 -2
  1476. package/dist/trinity/renderJob/step/TriStepRenderSceneDebug.js.map +1 -1
  1477. package/dist/trinity/renderJob/step/TriStepRenderTexture.js +2 -2
  1478. package/dist/trinity/renderJob/step/TriStepRenderTexture.js.map +1 -1
  1479. package/dist/trinity/renderJob/step/TriStepResolve.js +2 -2
  1480. package/dist/trinity/renderJob/step/TriStepResolve.js.map +1 -1
  1481. package/dist/trinity/renderJob/step/TriStepRunComputeShader.js +2 -2
  1482. package/dist/trinity/renderJob/step/TriStepRunComputeShader.js.map +1 -1
  1483. package/dist/trinity/renderJob/step/TriStepRunJob.js +2 -2
  1484. package/dist/trinity/renderJob/step/TriStepRunJob.js.map +1 -1
  1485. package/dist/trinity/renderJob/step/TriStepSetDebugRenderer.js +2 -2
  1486. package/dist/trinity/renderJob/step/TriStepSetDebugRenderer.js.map +1 -1
  1487. package/dist/trinity/renderJob/step/TriStepSetDepthStencil.js +2 -2
  1488. package/dist/trinity/renderJob/step/TriStepSetDepthStencil.js.map +1 -1
  1489. package/dist/trinity/renderJob/step/TriStepSetProjection.js +2 -2
  1490. package/dist/trinity/renderJob/step/TriStepSetProjection.js.map +1 -1
  1491. package/dist/trinity/renderJob/step/TriStepSetRenderState.js +2 -2
  1492. package/dist/trinity/renderJob/step/TriStepSetRenderState.js.map +1 -1
  1493. package/dist/trinity/renderJob/step/TriStepSetRenderTarget.js +2 -2
  1494. package/dist/trinity/renderJob/step/TriStepSetRenderTarget.js.map +1 -1
  1495. package/dist/trinity/renderJob/step/TriStepSetStdRndStates.js +2 -2
  1496. package/dist/trinity/renderJob/step/TriStepSetStdRndStates.js.map +1 -1
  1497. package/dist/trinity/renderJob/step/TriStepSetUpscalingContextID.js +2 -2
  1498. package/dist/trinity/renderJob/step/TriStepSetUpscalingContextID.js.map +1 -1
  1499. package/dist/trinity/renderJob/step/TriStepSetVariableStore.js +2 -2
  1500. package/dist/trinity/renderJob/step/TriStepSetVariableStore.js.map +1 -1
  1501. package/dist/trinity/renderJob/step/TriStepSetView.js +2 -2
  1502. package/dist/trinity/renderJob/step/TriStepSetView.js.map +1 -1
  1503. package/dist/trinity/renderJob/step/TriStepSetViewport.js +2 -2
  1504. package/dist/trinity/renderJob/step/TriStepSetViewport.js.map +1 -1
  1505. package/dist/trinity/renderJob/step/TriStepSetVisualizationMode.js +2 -2
  1506. package/dist/trinity/renderJob/step/TriStepSetVisualizationMode.js.map +1 -1
  1507. package/dist/trinity/renderJob/step/TriStepTestBlocking.js +2 -2
  1508. package/dist/trinity/renderJob/step/TriStepTestBlocking.js.map +1 -1
  1509. package/dist/trinity/renderJob/step/TriStepToggleCubemap.js +2 -2
  1510. package/dist/trinity/renderJob/step/TriStepToggleCubemap.js.map +1 -1
  1511. package/dist/trinity/renderJob/step/TriStepUpdate.js +2 -2
  1512. package/dist/trinity/renderJob/step/TriStepUpdate.js.map +1 -1
  1513. package/dist/trinity/shader/Tr2DataTextureManager.js +9 -9
  1514. package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
  1515. package/dist/trinity/shader/Tr2Effect.js +370 -347
  1516. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  1517. package/dist/trinity/shader/Tr2Material.js +5 -5
  1518. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  1519. package/dist/trinity/shader/Tr2ShaderBuffer.js +3 -4
  1520. package/dist/trinity/shader/Tr2ShaderBuffer.js.map +1 -1
  1521. package/dist/trinity/shader/index.js +3 -0
  1522. package/dist/trinity/shader/index.js.map +1 -1
  1523. package/dist/trinity/shader/parameter/CjsParameter.js +202 -185
  1524. package/dist/trinity/shader/parameter/CjsParameter.js.map +1 -1
  1525. package/dist/trinity/shader/parameter/CjsVectorParameter.js +2 -2
  1526. package/dist/trinity/shader/parameter/CjsVectorParameter.js.map +1 -1
  1527. package/dist/trinity/shader/parameter/ITriEffectParameter.js +56 -0
  1528. package/dist/trinity/shader/parameter/ITriEffectParameter.js.map +1 -0
  1529. package/dist/trinity/shader/parameter/ITriEffectResourceParameter.js +31 -0
  1530. package/dist/trinity/shader/parameter/ITriEffectResourceParameter.js.map +1 -0
  1531. package/dist/trinity/shader/parameter/ITriEffectTextureParameter.js +43 -0
  1532. package/dist/trinity/shader/parameter/ITriEffectTextureParameter.js.map +1 -0
  1533. package/dist/trinity/shader/parameter/Tr2ConstantEffectParameter.js +17 -5
  1534. package/dist/trinity/shader/parameter/Tr2ConstantEffectParameter.js.map +1 -1
  1535. package/dist/trinity/shader/parameter/Tr2FloatParameter.js +46 -45
  1536. package/dist/trinity/shader/parameter/Tr2FloatParameter.js.map +1 -1
  1537. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +14 -12
  1538. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  1539. package/dist/trinity/shader/parameter/Tr2Matrix4Parameter.js +33 -32
  1540. package/dist/trinity/shader/parameter/Tr2Matrix4Parameter.js.map +1 -1
  1541. package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js +11 -10
  1542. package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
  1543. package/dist/trinity/shader/parameter/Tr2TextureAnimationParameter.js +55 -53
  1544. package/dist/trinity/shader/parameter/Tr2TextureAnimationParameter.js.map +1 -1
  1545. package/dist/trinity/shader/parameter/Tr2Vector2Parameter.js +49 -48
  1546. package/dist/trinity/shader/parameter/Tr2Vector2Parameter.js.map +1 -1
  1547. package/dist/trinity/shader/parameter/Tr2Vector3Parameter.js +52 -51
  1548. package/dist/trinity/shader/parameter/Tr2Vector3Parameter.js.map +1 -1
  1549. package/dist/trinity/shader/parameter/Tr2Vector4Parameter.js +56 -55
  1550. package/dist/trinity/shader/parameter/Tr2Vector4Parameter.js.map +1 -1
  1551. package/dist/trinity/shader/parameter/TriFloatArrayParameter.js +8 -8
  1552. package/dist/trinity/shader/parameter/TriFloatArrayParameter.js.map +1 -1
  1553. package/dist/trinity/shader/parameter/TriTextureParameter.js +27 -22
  1554. package/dist/trinity/shader/parameter/TriTextureParameter.js.map +1 -1
  1555. package/dist/trinity/shader/parameter/TriTransformParameter.js +27 -27
  1556. package/dist/trinity/shader/parameter/TriTransformParameter.js.map +1 -1
  1557. package/dist/trinity/shader/parameter/TriVariableParameter.js +53 -54
  1558. package/dist/trinity/shader/parameter/TriVariableParameter.js.map +1 -1
  1559. package/dist/trinity/shader/parameter/TriVector4.js +2 -2
  1560. package/dist/trinity/shader/parameter/TriVector4.js.map +1 -1
  1561. package/dist/trinity/shader/reflection/Tr2ShaderOption.js +4 -2
  1562. package/dist/trinity/shader/reflection/Tr2ShaderOption.js.map +1 -1
  1563. package/dist/trinity/shader/sampler/Tr2SamplerOverride.js +11 -2
  1564. package/dist/trinity/shader/sampler/Tr2SamplerOverride.js.map +1 -1
  1565. package/dist/trinity/sprite2d/Tr2Sprite2dContainerBase.js +2 -2
  1566. package/dist/trinity/sprite2d/Tr2Sprite2dContainerBase.js.map +1 -1
  1567. package/dist/trinity/sprite2d/Tr2Sprite2dLineTrace.js +2 -2
  1568. package/dist/trinity/sprite2d/Tr2Sprite2dLineTrace.js.map +1 -1
  1569. package/dist/trinity/sprite2d/Tr2Sprite2dLineTraceVertex.js +2 -2
  1570. package/dist/trinity/sprite2d/Tr2Sprite2dLineTraceVertex.js.map +1 -1
  1571. package/dist/trinity/sprite2d/Tr2Sprite2dPickingMask.js +8 -9
  1572. package/dist/trinity/sprite2d/Tr2Sprite2dPickingMask.js.map +1 -1
  1573. package/dist/trinity/sprite2d/Tr2Sprite2dPolygon.js +2 -2
  1574. package/dist/trinity/sprite2d/Tr2Sprite2dPolygon.js.map +1 -1
  1575. package/dist/trinity/sprite2d/Tr2Sprite2dRenderJob.js +2 -2
  1576. package/dist/trinity/sprite2d/Tr2Sprite2dRenderJob.js.map +1 -1
  1577. package/dist/trinity/sprite2d/Tr2Sprite2dScene.js +4 -4
  1578. package/dist/trinity/sprite2d/Tr2Sprite2dScene.js.map +1 -1
  1579. package/dist/trinity/sprite2d/Tr2Sprite2dTransform.js +2 -2
  1580. package/dist/trinity/sprite2d/Tr2Sprite2dTransform.js.map +1 -1
  1581. package/dist/trinity/sprite2d/Tr2Sprite2dTriangle.js +2 -2
  1582. package/dist/trinity/sprite2d/Tr2Sprite2dTriangle.js.map +1 -1
  1583. package/dist/trinity/sprite2d/Tr2SpriteObjectBase.js +2 -2
  1584. package/dist/trinity/sprite2d/Tr2SpriteObjectBase.js.map +1 -1
  1585. package/dist/trinity/ui/Tr2PresentParameters.js +2 -2
  1586. package/dist/trinity/ui/Tr2PresentParameters.js.map +1 -1
  1587. package/dist/trinity/ui/Tr2ProjectBoundingBoxBracket.js +3 -3
  1588. package/dist/trinity/ui/Tr2ProjectBoundingBoxBracket.js.map +1 -1
  1589. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -1
  1590. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
  1591. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  1592. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  1593. package/docs/core/README.md +38 -38
  1594. package/docs/core/architecture.md +6 -5
  1595. package/docs/core/reference/api.md +0 -10
  1596. package/docs/core/reference/classes/README.md +57 -67
  1597. package/docs/global/architecture.md +1 -3
  1598. package/docs/global/blue-enums.md +115 -0
  1599. package/docs/global/concepts/model-lifecycle.md +177 -182
  1600. package/docs/global/core-types/README.md +394 -317
  1601. package/docs/global/reference/api.md +2 -2
  1602. package/docs/global/reference/classes/README.md +355 -205
  1603. package/docs/global/reference/classes/dropped.md +40 -0
  1604. package/docs/resource/architecture.md +152 -112
  1605. package/docs/resource/concepts/resource-lifecycle.md +21 -15
  1606. package/docs/resource/formats/geometry-interchange.md +50 -0
  1607. package/docs/resource/formats/pickle.md +126 -100
  1608. package/docs/resource/formats/provenance.md +15 -9
  1609. package/docs/resource/formats/webgl/carbon-constant-layouts.md +98 -232
  1610. package/docs/resource/formats/webgl/decl-io.md +241 -397
  1611. package/docs/resource/formats/webgl/memory-structured.md +91 -128
  1612. package/docs/resource/formats/webgl/texture-sample.md +306 -469
  1613. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +278 -530
  1614. package/docs/resource/reference/classes/README.md +3 -1
  1615. package/docs/resource/reference/classes/dropped.md +21 -1
  1616. package/docs/resource/reference/classes/formats.md +33 -0
  1617. package/docs/resource/reference/classes/texture.md +11 -1
  1618. package/docs/resource/reference/classes/video.md +92 -0
  1619. package/docs/resource/reference/events.md +10 -9
  1620. package/docs/resource/reference/motherlode-cache.md +24 -11
  1621. package/docs/resource/reference/queues.md +30 -1
  1622. package/docs/trinity/README.md +5 -5
  1623. package/docs/trinity/architecture.md +355 -344
  1624. package/docs/trinity/concepts/eve-runtime-behavior.md +1 -1
  1625. package/docs/trinity/reference/api.md +19 -7
  1626. package/docs/trinity/reference/classes/dropped.md +2 -11
  1627. package/docs/trinity/reference/classes/eve-runtime.md +1 -1
  1628. package/docs/trinity/reference/classes/trinity-core.md +1672 -1622
  1629. package/docs/trinity/reference/implementation-status.md +92 -92
  1630. package/package.json +2 -1
  1631. package/dist/core/CjsFrameDriver.js +0 -109
  1632. package/dist/core/CjsFrameDriver.js.map +0 -1
  1633. package/dist/global/contracts/CjsFrameLifecycle.js +0 -49
  1634. package/dist/global/contracts/CjsFrameLifecycle.js.map +0 -1
  1635. package/dist/global/contracts/CjsInstancedMeshManager.js +0 -58
  1636. package/dist/global/contracts/CjsInstancedMeshManager.js.map +0 -1
  1637. package/dist/resource/formats/black/core/black-schema-v1-2026-07-23.json.js +0 -4
  1638. package/dist/resource/formats/black/core/black-schema-v1-2026-07-23.json.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2RenderContext.js","sources":["../../../../../src/trinity/core/context/Tr2RenderContext.js"],"sourcesContent":["// Source: trinity/trinity/Tr2RenderContext.h (name/role)\n// trinity/trinityal/*/Tr2RenderContext*.h (command surface)\n// trinity/trinity/Tr2Renderer.cpp (view-state statics, relocated here)\n// Hand-maintained amalgam of three Carbon surfaces (audited 2026-07-18):\n// 1. The command surface (PushRenderTarget/Clear/SetViewport/Present/\n// SetRenderState/...) mirrors the backend AL context classes and CALLS the\n// installed backend, as Carbon does.\n//\n// IT USED TO RECORD INTENTS, and that mechanism is gone (2026-09-06). The\n// recording existed because \"the engine does device work\" was read as the\n// trinityal/webgpu PACKAGE rather than the abstraction layer, so a queue was\n// invented to carry work across a boundary Carbon does not have.\n//\n// THE BACKEND IS NEVER ABSENT. Carbon's context INHERITS Tr2RenderContextAL,\n// a compile-time platform typedef, so it cannot be missing one; ours\n// defaults the field to the stub for the same guarantee. A bare context is\n// therefore headless, not broken - see the field's own comment.\n//\n// Four verbs refuse outright rather than pretend: DrawLineSet, RenderAtlas,\n// RenderLineGraphs and RenderDebug are unported and name what they need.\n// 2. The cached view state (SetViewTransform -> GetViewTransform/\n// GetInverseViewTransform/GetViewPosition) relocates Carbon's Tr2Renderer\n// STATICS onto this context so frame consumers read it via the threaded\n// updateContext.renderContext instead of a global.\n// 3. Carbon's actual Tr2RenderContext.h surface. GetConstantBuffer is ported\n// (2026-09-06) and the RenderBatches family is next; GetBackBuffer is not.\n// Fork/Join parallel encoding is deliberately omitted - it exists to spread\n// batch encoding across threads, and there is one.\nimport { impl, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { mat4 } from \"#math/mat4\";\nimport { vec3 } from \"#math/vec3\";\nimport { ALResult, Failed } from \"../../../trinityal/ALResult.js\";\nimport { ConstantBufferSlot } from \"#consts/render-context\";\nimport { RenderingMode } from \"#consts/graphics\";\nimport { Tr2VariableStore } from \"../variable/Tr2VariableStore.js\";\nimport { TriPoolAllocator } from \"../rawData/TriPoolAllocator.js\";\nimport { Tr2PerObjectData } from \"../rawData/perObjectData/Tr2PerObjectData.js\";\nimport { CjsDirectTrinityStepExecutor } from \"./CjsDirectTrinityStepExecutor.js\";\nimport { CjsTrinityStepExecutor } from \"./CjsTrinityStepExecutor.js\";\nimport { Tr2RenderBatch } from \"../batch/TriRenderBatch/index.js\";\nimport { Tr2Shader } from \"#resource/shader\";\nimport { Tr2EffectStateManager } from \"../../shader/Tr2EffectStateManager.js\";\nimport { Tr2RenderContextALStub } from \"../../../trinityal/stub/Tr2RenderContextALStub/index.js\";\nimport { Tr2Blitter } from \"../Tr2Blitter.js\";\nimport { RealizeBatchGeometry } from \"../mesh/TriGeometryResAllocations.js\";\n\nconst DIRECT_STEP_EXECUTOR = Object.freeze(new CjsDirectTrinityStepExecutor());\n\n/** Carbon DEFAULT_TECHNIQUE (Tr2RenderContext.h:37). */\nconst DEFAULT_TECHNIQUE = \"Main\";\n\n/** Tr2RenderContext (trinityCore) - generated from schema shapeHash 73e2a4e7.... */\n@type.define({ className: \"Tr2RenderContext\", family: \"trinityCore\" })\nexport class Tr2RenderContext extends CjsModel\n{\n #diagnostics = [];\n\n #stepExecutor = DIRECT_STEP_EXECUTOR;\n\n\n\n /**\n * The abstraction-layer backend. THERE IS ALWAYS ONE.\n *\n * Carbon's context does not hold a backend, it IS one:\n *\n * BLUE_CLASS( Tr2RenderContext ) :\n * public Tr2RenderContextBase,\n * public Tr2RenderContextAL // Tr2RenderContext.h:85-87\n *\n * `Tr2RenderContextAL` is a compile-time platform typedef - dx11, dx12, metal\n * or stub - so a context without a backend is structurally impossible there.\n * Carbon therefore has no fallback for the case AND no error for it either.\n *\n * We compose rather than inherit, so the field could be empty; defaulting it\n * to the stub is how the state stays impossible. A bare `new\n * Tr2RenderContext()` then behaves exactly as Carbon compiled against its\n * stub backend does: real render-target and depth-stencil stacks, real sizes,\n * draws counted, nothing drawn, and `IsValid()` false until `CreateDevice`.\n *\n * TWO EARLIER ANSWERS HERE WERE BOTH INVENTED. The first was to RECORD every\n * verb into an intent queue when no backend was installed; the second, while\n * removing that, was to THROW. Carbon does neither, because Carbon never\n * reaches the state. Deleting a behaviour still means choosing what stands in\n * its place, and that choice needs a citation like any other.\n */\n #al = new Tr2RenderContextALStub();\n\n // Carbon's context OWNS its state manager as a public member\n // (`Tr2RenderContext.h:35`), and its render steps reach the Trinity-level\n // verbs through it - `renderContext.m_esm.SetViewport(...)`\n // (`TriStepSetViewport.cpp:25`). Ours composes rather than inherits, so the\n // manager is bound to this context once and never rebound.\n\n /** m_esm */\n #esm = new Tr2EffectStateManager().SetRenderContext(this);\n\n /** Carbon's s_blitter, per context rather than per process; see GetBlitter. */\n #blitter = null;\n\n #depthStencil = null;\n\n #viewport = null;\n\n #view = null;\n\n #projection = null;\n\n // Tr2Renderer::GetFieldOfView relocated beside the projection matrix. It is\n // accepted from a typed TriProjection step or derived once when raw matrix\n // state changes, not recomputed by every camera-dependent transform.\n #fieldOfView = 0;\n\n // Carbon-faithful cached view state (Tr2Renderer::SetViewTransform): the raw\n // column-major view matrix, its inverse (computed once per view change, read\n // many times per frame by camera-dependent modifiers), and the view/eye\n // position taken from the inverse-view translation row. Allocated once and\n // copied into - never reallocated per read (allocation rules E/F).\n #viewTransform = mat4.create();\n\n #inverseViewTransform = mat4.create();\n\n #viewPosition = vec3.create();\n\n #hasViewMatrix = false;\n\n\n #projectionStack = [];\n\n #viewTransformStack = [];\n\n // Carbon keeps ONE pool allocator as a Tr2Renderer static, created in\n // Initialize (Tr2Renderer.cpp:345), read through GetPoolAllocator\n // (cpp:1083) and Clear()ed in EndRenderContext (cpp:1072-1081). Those\n // renderer statics relocate onto this context (see the file header), so the\n // pool lives here too, per context rather than per process. Created on first\n // request: constructing a context is not a frame, and the arena retains its\n // chunks once it exists.\n #poolAllocator = null;\n\n // The frame clock, relocated here with the other Tr2Renderer statics. Carbon\n // keeps the counter as a file-scope global in TriDevice.cpp:143 and the\n // animation time as a TriDevice member; both are ADVANCED by the tick\n // (TriDevice::Update, cpp:805/:823) and only READ by the render path\n // (Tr2Renderer::GetCurrentFrameCounter, cpp:1090). Holding them here is what\n // lets BeginFrame stay zero-argument as Carbon declares it, and matches the\n // frameIndex an EveSpaceScene driver already documents as coming from\n // GetCurrentFrameCounter. Trinity does not advance them: a driver does.\n #frameCounter = 0;\n\n #animationTime = 0;\n\n #previousAnimationTime = 0;\n\n #debugRenderer = null;\n\n static TextureFilter = Object.freeze({\n TF_NONE: 0,\n TF_POINT: 1,\n TF_LINEAR: 2,\n TF_ANISOTROPIC: 3,\n TF_COMPARISON: 0x80\n });\n\n static TextureAddressMode = Object.freeze({\n TA_WRAP: 1,\n TA_MIRROR: 2,\n TA_CLAMP: 3,\n TA_BORDER: 4,\n TA_MIRROR_ONCE: 5\n });\n\n /** Installs a nominal step executor; null restores direct step execution. */\n SetStepExecutor(executor)\n {\n if (executor !== null && !(executor instanceof CjsTrinityStepExecutor))\n {\n throw new TypeError(\"Tr2RenderContext.SetStepExecutor expects a CjsTrinityStepExecutor or null.\");\n }\n this.#stepExecutor = executor ?? DIRECT_STEP_EXECUTOR;\n return this;\n }\n\n\n\n /**\n * Delegates step setup to the installed nominal executor.\n */\n BeginStep(step, realTime, simTime, job)\n {\n return this.#stepExecutor.BeginStep(step, realTime, simTime, job, this);\n }\n\n /**\n * Delegates step execution to the installed nominal executor.\n */\n /**\n * Installs the abstraction-layer backend this context drives.\n *\n * `Tr2RenderContextALStub` gives a headless context that still carries\n * correct data; an engine installs its own. Passing null restores the\n * recording fallback.\n *\n * @param {object|null} al The backend.\n * @returns {object|null} The backend now installed.\n */\n SetRenderContextAL(al = null)\n {\n // Null RESTORES THE STUB rather than emptying the field: Carbon cannot\n // detach a backend, so neither can this.\n this.#al = al ?? new Tr2RenderContextALStub();\n\n // EVERYTHING THE OLD BACKEND MADE IS THE OLD BACKEND'S. A device is\n // acquired asynchronously, so \"context constructed, effects loaded, AL\n // installed later\" is the ordinary order - and the per-object constant\n // buffers and the realized programs and layouts the state manager keeps per\n // context were all created through the stub. Left in place, WebGPU met a\n // stub buffer at a uniform slot and a stub program at the resource set.\n for (const buffer of this.#perObjectConstantBuffers) buffer?.Destroy();\n this.#perObjectConstantBuffers.fill(null);\n this.#esm.ReleaseRealizedObjects();\n\n return this.#al;\n }\n\n /** The installed backend; never null. */\n GetRenderContextAL()\n {\n return this.#al;\n }\n\n /**\n * Delegates step execution to the installed nominal executor.\n *\n * @param {object} step The step to run.\n * @param {number} realTime Wall-clock time.\n * @param {number} simTime Simulation time.\n * @param {object} job The render job the step belongs to.\n * @returns {*} Whatever the executor reports.\n */\n ExecuteStep(step, realTime, simTime, job)\n {\n return this.#stepExecutor.ExecuteStep(step, realTime, simTime, job, this);\n }\n\n /**\n * Delegates step teardown to the installed nominal executor.\n */\n EndStep(step, realTime, simTime, job)\n {\n return this.#stepExecutor.EndStep(step, realTime, simTime, job, this);\n }\n\n /** Opens the render-job batch scope through the installed executor. */\n BeginBatch(owner)\n {\n return this.#stepExecutor.BeginBatch(owner, this);\n }\n\n /** Closes the render-job batch scope through the installed executor. */\n EndBatch(owner)\n {\n return this.#stepExecutor.EndBatch(owner, this);\n }\n\n // Carbon Tr2Renderer::GetCurrentFrameCounter (Tr2Renderer.cpp:1088-1091).\n\n /** The frame the render path is currently working on. */\n GetCurrentFrameCounter()\n {\n return this.#frameCounter;\n }\n\n /** The animation clock the render path publishes, in seconds. */\n GetAnimationTime()\n {\n return this.#animationTime;\n }\n\n // Carbon advances both in TriDevice::Update (cpp:805/:823), which is the\n // tick, and the tick is engine-owned (see the frame-driver contract in\n // docs/architecture.md). A driver calls this once per frame BEFORE Render.\n // Trinity never advances the clock itself: it cannot prove a frame boundary.\n\n /**\n * Advances the frame clock: increments the frame counter and records the new\n * animation time, keeping the previous one for the render-time vector.\n * Returns this for chaining.\n */\n AdvanceFrame(animationTime = this.#animationTime)\n {\n this.#frameCounter++;\n this.#previousAnimationTime = this.#animationTime;\n this.#animationTime = Number(animationTime) || 0;\n return this;\n }\n\n // Carbon Tr2Renderer::BeginFrame (Tr2Renderer.cpp:1040-1051): publishes the\n // \"Time\" vector every consumer reads - x is the animation time, y its\n // fractional part (a free 0..1 sawtooth for shaders), z the frame counter,\n // and w the PREVIOUS frame's animation time, which is what makes a shader\n // able to compute its own delta. Carbon registers this on the global store\n // (cpp:329), and Tr2VariableStore.GlobalStore() is the same root here.\n\n /**\n * Publishes the per-frame \"Time\" vector into the global variable store, as\n * Carbon does at the start of every frame; returns the published vector.\n */\n BeginFrame()\n {\n const animationTime = this.#animationTime;\n const time = [\n animationTime,\n animationTime - Math.floor(animationTime),\n this.#frameCounter,\n this.#previousAnimationTime\n ];\n\n Tr2VariableStore.GlobalStore().RegisterVariable(\"Time\", time);\n return time;\n }\n\n // Carbon Tr2Renderer::EndFrame (Tr2Renderer.cpp:1053-1064) clears the debug\n // text renderer and the debug line set, both Tr2Renderer statics. Only the\n // debug renderer has a counterpart here (SetDebugRenderer); Carbon's global\n // debug line set has no Trinity surface, so nothing stands in for it.\n\n /**\n * Ends the frame, clearing the installed debug renderer; returns this for\n * chaining.\n */\n EndFrame()\n {\n // `SetDebugRenderer` takes whatever a render job hands it, and Carbon's\n // own type (`Tr2DebugTextRenderer`) is not ported, so this is a foreign\n // object. Asked explicitly rather than hedged, because the question really\n // is \"does this thing clear\" and not \"is one of our classes incomplete\".\n if (typeof this.#debugRenderer?.Clear === \"function\") this.#debugRenderer.Clear();\n\n return this;\n }\n\n // Carbon Tr2Renderer::BeginRenderContext (Tr2Renderer.cpp:1066-1070) forwards\n // to the backend context's BeginScene. The GPU-free context records the\n // intent; an installed executor performs it.\n\n /**\n * Opens the scene for this frame, recording the intent and delegating to an\n * installed executor's BeginScene; returns this for chaining.\n */\n BeginRenderContext()\n {\n this.#stepExecutor.BeginScene(this);\n return this;\n }\n\n // Carbon: Tr2Renderer::GetPoolAllocator (Tr2Renderer.cpp:1083). The store\n // this returns is the one CjsBatchManager binds onto the batch map, so every\n // GetPerObjectData Alloc leases from it. Every catalogued Carbon struct is\n // registered on it already - Trinity owns the offsets, so an engine supplies\n // nothing to make per-object data work.\n\n /**\n * The per-object constant-data pool for this context, created on first use;\n * an engine or host may replace it with SetTriPoolAllocator.\n */\n GetTriPoolAllocator()\n {\n if (!this.#poolAllocator)\n {\n this.#poolAllocator = new TriPoolAllocator().RegisterCatalog();\n }\n return this.#poolAllocator;\n }\n\n /**\n * Replaces the per-object constant-data pool, for a host that shares one\n * arena across contexts or registers extra structs; passing null restores\n * lazy creation. Returns this for chaining.\n */\n SetTriPoolAllocator(allocator)\n {\n this.#poolAllocator = allocator ?? null;\n return this;\n }\n\n // Carbon clears the pool in Tr2Renderer::EndRenderContext (cpp:1072-1081),\n // BEFORE EndScene, so every transient payload leased during the frame dies at\n // one point. The frame driver calls this; nothing else may. EndScene is the\n // required final operation even when resetting the transient pool throws.\n\n /**\n * Clears the per-object pool arena at the end of a frame, freeing every\n * transient payload leased during it (Carbon calls TriPoolAllocator::Clear\n * here, Tr2Renderer.cpp:1072-1081); a context that never leased one does\n * nothing.\n */\n EndRenderContext()\n {\n try\n {\n this.#poolAllocator?.Clear();\n }\n finally\n {\n this.#stepExecutor.EndScene(this);\n }\n return this;\n }\n\n /**\n * Saves the target currently bound to a slot, and binds a new one if given.\n *\n * TWO CARBON CALLS IN ONE, AND THAT SPLIT MATTERS. Carbon's abstraction layer\n * takes only a SLOT and saves whatever is bound there\n * (`Tr2RenderContextDx11.cpp:2178-2188`). The two-argument form is the effect\n * state manager's convenience, and it is push THEN set\n * (`Tr2EffectStateManager.cpp:1048-1052`). This context carries the state\n * manager's verbs, so it does both here and asks the backend only to push.\n *\n * This previously pushed the SUPPLIED target and bound nothing, which meant a\n * render job that pushed a target went on drawing into the previous one -\n * silently, and exactly where an offscreen pass would notice least.\n */\n PushRenderTarget(slot = 0)\n {\n const index = Number(slot) >>> 0;\n\n return this.#requireAL(\"PushRenderTarget\").PushRenderTarget(index);\n }\n\n /**\n * Restores the target saved for a slot, binding it again.\n *\n * Carbon's pop rebinds (`Tr2RenderContextDx11.cpp:2190-2206` ends in\n * `SetRtDsToDevice`), so restoring without binding would leave the pushed\n * target live for the rest of the frame.\n *\n * @returns {boolean} False when nothing was pushed for that slot.\n */\n PopRenderTarget(slot = 0)\n {\n return this.#requireAL(\"PopRenderTarget\").PopRenderTarget(slot);\n }\n\n /** Depth of one slot's render-target stack; zero for a slot never pushed to. */\n GetStackSizeRT(slot = 0)\n {\n return this.#requireAL(\"GetStackSizeRT\").GetStackSizeRT(slot);\n }\n\n /**\n * Saves the bound depth-stencil, and binds a new one if given.\n *\n * The same split as `PushRenderTarget`: Carbon's AL push takes no argument\n * and saves what is bound, while the state manager's one-argument form is\n * push then set (`Tr2EffectStateManager.cpp:1031-1036`).\n */\n PushDepthStencil()\n {\n return this.#requireAL(\"PushDepthStencil\").PushDepthStencil();\n }\n\n /**\n * Restores the saved depth-stencil, binding it again.\n *\n * @returns {boolean} False when nothing was pushed.\n */\n PopDepthStencil()\n {\n return this.#requireAL(\"PopDepthStencil\").PopDepthStencil();\n }\n\n /** Depth of the depth-stencil stack. */\n GetStackSizeDS()\n {\n return this.#requireAL(\"GetStackSizeDS\").GetStackSizeDS();\n }\n\n /**\n * Binds a render target to a slot and records a set-render-target intent for\n * the engine to realize.\n */\n SetRenderTarget(slot, renderTarget, slice = 0)\n {\n // THE BACKEND OWNS THE BINDING, as Carbon's do (m_boundRenderTarget), and\n // GetRenderTarget below reads it back from there. The context kept a\n // duplicate map while it was also a recorder; two copies of one binding is\n // one too many, and the local one was the stale half.\n return this.#requireAL(\"SetRenderTarget\").SetRenderTarget(Number(slot) >>> 0, renderTarget, Number(slice) >>> 0);\n }\n\n // THE BACKEND'S FRAME CLOCK, WHICH IS NOT THE ONE ABOVE. `AdvanceFrame` and\n // `GetCurrentFrameCounter` are Trinity's - frames the render path has begun,\n // driven by the frame driver. These two are the DEVICE's, and the gap between\n // them is what a ring buffer fences against: rows recorded for a frame cannot\n // be reused until the device reports that frame finished. Carbon keeps them\n // per backend (`Tr2PrimaryRenderContextDx11.h:46-47`), so they are the\n // abstraction layer's to answer and this only forwards.\n\n /**\n * The frame the device is recording now.\n *\n * @returns {number} The frame number, or zero with no backend installed.\n */\n GetRecordingFrameNumber()\n {\n return this.#al ? this.#al.GetRecordingFrameNumber() : 0;\n }\n\n /**\n * The last frame the device has finished.\n *\n * @returns {number} The frame number, or zero with no backend installed.\n */\n GetRenderedFrameNumber()\n {\n return this.#al ? this.#al.GetRenderedFrameNumber() : 0;\n }\n\n /**\n * Whether a device exists behind this context.\n *\n * Carbon's context answers this because it INHERITS the abstraction layer,\n * so every AL call that takes a context - a buffer create, a texture map -\n * can be handed the Trinity one. Ours composes instead, so the question is\n * forwarded rather than inherited, and the callers read the same.\n *\n * @returns {boolean} True once a backend is installed and has a device.\n */\n IsValid()\n {\n return this.#al ? this.#al.IsValid() : false;\n }\n\n /**\n * The extent of a bound render target.\n *\n * Carbon's context answers this because it IS the abstraction layer\n * (`Tr2RenderContextDx11.cpp` GetRenderTargetSize), and the effect state\n * manager asks it rather than measuring a texture, because a bound target\n * may be a null one.\n *\n * @param {number} [slot] Target slot.\n * @returns {{result: number, width: number, height: number}} The extent.\n */\n GetRenderTargetSize(slot = 0)\n {\n return this.#requireAL(\"GetRenderTargetSize\").GetRenderTargetSize(slot);\n }\n\n /**\n * The render target currently bound to a slot, or null when that slot was\n * never set.\n *\n * THE BACKEND OWNS THE BINDING WHEN THERE IS ONE. Carbon has no split to\n * bridge here - its `Tr2RenderContext` IS `Tr2RenderContextBase` plus\n * `Tr2RenderContextAL`, so there is one piece of state. Ours composes the two,\n * and a getter that answered from the recording path while the backend held\n * the real binding would report a target nothing is drawing to.\n */\n GetRenderTarget(slot = 0)\n {\n return this.#requireAL(\"GetRenderTarget\").GetRenderTarget(slot);\n }\n\n /** Binds the depth-stencil surface and records a set-depth-stencil intent. */\n SetDepthStencil(depthStencil)\n {\n this.#depthStencil = depthStencil ?? null;\n\n return this.#requireAL(\"SetDepthStencil\").SetDepthStencil(this.#depthStencil);\n }\n\n /** The currently bound depth-stencil surface, or null. */\n GetDepthStencil()\n {\n return this.#requireAL(\"GetDepthStencil\").GetDepthStencil();\n }\n\n /**\n * Clears the bound attachments, with separate colour, depth and stencil\n * enables.\n *\n * @param {object} options `{ color, depth, stencil, clearColor, clearDepth,\n * clearStencil }`.\n * @returns {boolean} Whether the backend accepted the clear.\n */\n Clear(options)\n {\n return this.#requireAL(\"Clear\").Clear(options);\n }\n\n /**\n * Binds the depth buffer read-only, so it can be sampled while still tested.\n *\n * Carbon reaches this straight off the context because its Tr2RenderContext IS\n * the backend context; ours forwards, like every other device verb here.\n *\n * @param {boolean} enable Whether depth is read-only.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetReadOnlyDepth(enable)\n {\n return this.#requireAL(\"SetReadOnlyDepth\").SetReadOnlyDepth(enable);\n }\n\n /**\n * Declares what the next render pass does with its attachments.\n *\n * Carbon calls this on the render context (`Tr2Denoiser.cpp:106` and each\n * pass after it). It is a BACKEND concept - Metal names the record\n * `MetalRenderPassHint` and WebGPU spells the same thing as loadOp/storeOp on\n * a pass descriptor - so this forwards, exactly as SetReadOnlyDepth does.\n *\n * Declaring DONT_CARE for a target about to be fully overwritten is the\n * difference between the driver preserving its previous contents and\n * discarding them; on a tiler that is the whole cost of the pass.\n *\n * @param {...object} attachments Colour attachments, then depth.\n * @returns {*} Whatever the backend reports.\n */\n RenderPassHint(...attachments)\n {\n return this.#requireAL(\"RenderPassHint\").RenderPassHint(...attachments);\n }\n\n /**\n * The projection with its depth range reversed.\n *\n * Carbon `Tr2Renderer::GetReversedDepthProjectionTransform`\n * (`Tr2Renderer.cpp:477-483`): the projection with `_33` negated and offset\n * by one, and `_43` negated. It lives here because this runtime keeps the\n * projection here - the same relocation as the other Tr2Renderer statics.\n *\n * WHO NEEDS IT: a pass reconstructing view-space position from a depth\n * buffer written under reverse-Z, which is what Carbon renders with. The\n * denoiser takes it to weight neighbouring samples by depth.\n *\n * @param {Array<number>} [out] A mat4 to receive it.\n * @returns {Array<number>|null} The reversed projection, or null if unset.\n */\n GetReversedDepthProjectionTransform(out = mat4.create())\n {\n if (!this.#projection) return null;\n\n mat4.copy(out, this.#projection);\n // Carbon indexes _33 and _43 in row-major; column-major here puts them at\n // 10 and 14.\n out[10] = -out[10] - 1;\n out[14] = -out[14];\n return out;\n }\n\n /**\n * What the installed backend can do.\n *\n * Carbon reaches capabilities through the context and nowhere else\n * (`TriDevice.cpp:1295-1300,1399-1403` both read\n * `renderContext.GetCaps().SupportsX()`), so this is the only door.\n *\n * With no backend there is nothing to ask, and answering anyway would mean\n * inventing a capability set - so it fails rather than guessing.\n *\n * @returns {object} The backend capabilities.\n */\n GetCaps()\n {\n if (!this.#al)\n {\n throw new Error(\"Tr2RenderContext has no render-context AL installed; capabilities belong to one.\");\n }\n\n return this.#al.GetCaps();\n }\n\n // THE GEOMETRY BINDING FAMILY, which forwards to the AL and fails without one.\n //\n // Every other verb here has a recording fallback, because the intent stream\n // has a vocabulary for it. These have none, and inventing one would be\n // building exactly what the WebGPU AL is about to replace. Carbon's\n // `SubmitGeometry` (`Tr2RenderContext.cpp:83-103`) is the sequence they\n // exist for: topology, then the declaration, streams and indices through the\n // state manager's `Apply*` redundancy filter, then the draw.\n\n /**\n * Sets the primitive topology for following draws.\n *\n * @param {number} topology A `Topology` value, NOT a `D3dPrimitiveTopology`.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetTopology(topology)\n {\n return this.#requireAL(\"SetTopology\").SetTopology(topology);\n }\n\n /**\n * The per-object constant buffer for one slot, created on first use.\n *\n * Carbon `Tr2RenderContext::GetConstantBuffer` (`Tr2RenderContext.h:56-59`),\n * which returns a pointer into `m_perObjectConstantBuffers` - an array of\n * `CBUFFER_COUNT` value members, one per shader stage plus a GUI slot.\n *\n * THE CONTEXT OWNING THESE IS THE POINT, not an implementation detail.\n * `RenderBatchGroup` collects them once and hands the same array to every\n * batch in a group, so a group of two hundred objects refills one buffer per\n * stage rather than allocating two hundred. A per-draw allocation would be\n * correct and unusably slow.\n *\n * Carbon default-constructs them eagerly and they are invalid until\n * `FillAndSetConstants` creates one at the size it needs; ours are made on\n * first ask, which reaches the same state without holding seven objects a\n * headless context never uses.\n *\n * @param {number} slot A `ShaderType`, or `CBUFFER_GUI`.\n * @returns {object|null} A `Tr2ConstantBufferAL`, or null for a bad slot.\n */\n GetConstantBuffer(slot)\n {\n if (!Number.isInteger(slot) || slot < 0 || slot >= ConstantBufferSlot.CBUFFER_COUNT) return null;\n\n // The backend's kind, not the stub's. This constructed `Tr2ConstantBufferALStub`\n // directly, so per-object constants landed in a CPU shadow on every\n // backend - the same hard-wiring `Tr2RingBuffer` had, fixed the same way.\n this.#perObjectConstantBuffers[slot] ??= this.CreateConstantBuffer();\n\n return this.#perObjectConstantBuffers[slot];\n }\n\n /**\n * Every per-object constant buffer, in slot order, for handing to a batch\n * group. Carbon builds this array on the stack in `RenderBatchGroup`.\n *\n * @returns {Array<object>} One `Tr2ConstantBufferAL` per slot.\n */\n GetConstantBuffers()\n {\n return Array.from(\n { length: ConstantBufferSlot.CBUFFER_COUNT },\n (unused, slot) => this.GetConstantBuffer(slot)\n );\n }\n\n #perObjectConstantBuffers = new Array(ConstantBufferSlot.CBUFFER_COUNT).fill(null);\n\n /**\n * Binds a realized resource set for following draws.\n *\n * Carbon's `Tr2Material::ApplyMaterialDataForPass` ends in exactly this call.\n * Trinity fills a `Tr2ResourceSetDescriptionAL`, the abstraction layer turns\n * it into whatever its API calls a bind group, and this binds the result.\n *\n * @param {object} resourceSet A `Tr2ResourceSetAL`.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetResourceSet(resourceSet)\n {\n return this.#requireAL(\"SetResourceSet\").SetResourceSet(resourceSet);\n }\n\n /**\n * Binds a constant buffer to one shader stage at one register.\n *\n * @param {object} buffer A `Tr2ConstantBufferAL`.\n * @param {number} constantType A `ShaderType`.\n * @param {number} registerIndex The constant-buffer register.\n * @param {number} [maxRegisterCount] Carbon's optional bound.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetConstants(buffer, constantType, registerIndex, maxRegisterCount = 0)\n {\n return this.#requireAL(\"SetConstants\").SetConstants(buffer, constantType, registerIndex, maxRegisterCount);\n }\n\n /**\n * Binds one vertex stream. Reached through `ApplyStreamSource`, which filters\n * a redundant bind out first.\n *\n * @param {number} stream The stream index.\n * @param {object} buffer A `Tr2BufferAL`.\n * @param {number} offset Byte offset into the buffer.\n * @param {number} stride Bytes per vertex.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetStreamSource(stream, buffer, offset, stride)\n {\n return this.#requireAL(\"SetStreamSource\").SetStreamSource(stream, buffer, offset, stride);\n }\n\n /**\n * Binds the index buffer. Reached through `ApplyIndexBuffer`.\n *\n * @param {object} buffer A `Tr2BufferAL`.\n * @param {number} [stride] Bytes per index.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetIndices(buffer, stride = 0)\n {\n return this.#requireAL(\"SetIndices\").SetIndices(buffer, stride);\n }\n\n /**\n * Creates a buffer of the running backend's kind.\n *\n * Carbon's `Tr2BufferAL` is a compile-time platform typedef, so a Trinity\n * class declares one and the build picks the implementation. Here the context\n * picks it, which is the same authority: Carbon's `Create` already takes a\n * `Tr2PrimaryRenderContextAL&`. A Trinity class that imports a concrete\n * buffer instead picks a backend at authoring time.\n *\n * @param {object} description A `Tr2BufferDescriptionAL`.\n * @param {ArrayBufferView|null} [initialData] Initial contents, if any.\n * @returns {object|null} The buffer, or null when the backend refused.\n */\n CreateBuffer(description, initialData = null)\n {\n return this.#requireAL(\"CreateBuffer\").CreateBuffer(description, initialData);\n }\n\n /**\n * Creates a constant buffer of the running backend's kind.\n *\n * The same reason `CreateBuffer` is here. Carbon default-constructs a\n * `Tr2ConstantBufferAL` member and sizes it later (`FillAndSetConstants`,\n * `Tr2MaterialStageInput::AllocateConstants`); a caller here asks for the\n * empty object with no size and fills it the same way.\n *\n * @param {number} [size] Bytes; zero returns an empty, invalid buffer.\n * @param {number} [usage] A `Tr2ConstantUsageAL`.\n * @param {ArrayBufferView|null} [initialData] Initial contents, if any.\n * @returns {object|null} A `Tr2ConstantBufferAL`, or null when a sized Create refused.\n */\n CreateConstantBuffer(size = 0, usage = undefined, initialData = null)\n {\n return this.#requireAL(\"CreateConstantBuffer\").CreateConstantBuffer(size, usage, initialData);\n }\n\n /**\n * The running backend's sampler state for a description.\n *\n * Carbon's `Tr2SamplerStateAL::Create` is a factory lookup on the primary\n * context; equal descriptions are one state. Created at effect load\n * (`Tr2EffectDescription.cpp:436`) and for sampler overrides\n * (`Tr2Effect.cpp:690`), both through the main-thread context, which is\n * `GetDefault()` here.\n *\n * @param {object} description A `Tr2SamplerDescription`.\n * @returns {object|null} A `Tr2SamplerStateAL`, shared, or null.\n */\n CreateSamplerState(description)\n {\n return this.#requireAL(\"CreateSamplerState\").CreateSamplerState(description);\n }\n\n /**\n * Creates a resource set of the running backend's kind from a filled\n * description and the realized program it binds against.\n *\n * Carbon's `Tr2ResourceSetAL::Create( description, program, context )` is a\n * member call on a default-constructed set (`Tr2Material.cpp:234`); the\n * context makes it here for the reason `CreateBuffer` is here.\n *\n * @param {object} description A `Tr2ResourceSetDescriptionAL`.\n * @param {object} program A `Tr2ShaderProgramAL`.\n * @returns {object|null} A `Tr2ResourceSetAL`, or null when Create refused.\n */\n @impl.custom\n @impl.reason(\"Forwards JS platform selection and its internal allocation mode to the installed abstraction-layer context.\")\n CreateResourceSet(description, program, implementationOnly = false)\n {\n return this.#requireAL(\"CreateResourceSet\").CreateResourceSet(description, program, implementationOnly);\n }\n\n /**\n * Creates a texture of the running backend's kind.\n *\n * Carbon's `Tr2TextureAL::Create( desc, usage, cpuUsage, initialData, ctx )`\n * on a default-constructed member (`Tr2ImageIOHelpers.cpp:126`); the context\n * makes it here for the reason `CreateBuffer` is here.\n *\n * @param {object} desc A `Tr2BitmapDimensions`.\n * @param {object} options `{ gpuUsage, cpuUsage, msaa, initialData }`.\n * @returns {object|null} A `Tr2TextureAL`, or null when Create refused.\n */\n CreateTexture(desc, options)\n {\n return this.#requireAL(\"CreateTexture\").CreateTexture(desc, options);\n }\n\n /**\n * Creates the running backend's vertex layout from a vertex definition.\n *\n * The same reason `CreateBuffer` is here. Carbon's effect state manager holds\n * a `Tr2VertexLayoutAL` in its own intern table and calls `hvl.Create` on\n * first use (`Tr2EffectStateManager.cpp:899-906`), which it can do because\n * one backend is compiled. The manager here cannot name a layout class, so it\n * asks the context, which knows which backend it holds.\n *\n * @param {object[]|object} definition The vertex element list or definition.\n * @returns {object|null} A `Tr2VertexLayoutAL`, or null when Create refused.\n */\n CreateVertexLayout(definition)\n {\n return this.#requireAL(\"CreateVertexLayout\").CreateVertexLayout(definition);\n }\n\n /**\n * Creates one shader stage on the running backend.\n *\n * @param {number} stageType A `ShaderType`.\n * @param {ArrayBufferView|string} bytecode The stage's bytecode.\n * @param {object|null} signature The reflected signature.\n * @param {string} [shaderPath] A debug label.\n * @returns {object|null} A `Tr2ShaderAL`, or null when Create refused.\n */\n CreateShader(stageType, bytecode, signature, shaderPath = \"\")\n {\n return this.#requireAL(\"CreateShader\").CreateShader(stageType, bytecode, signature, shaderPath);\n }\n\n /**\n * Links created stages into a program on the running backend.\n *\n * @param {object[]} shaders The stages to link.\n * @returns {object|null} A `Tr2ShaderProgramAL`, or null when Create refused.\n */\n CreateShaderProgram(shaders)\n {\n return this.#requireAL(\"CreateShaderProgram\").CreateShaderProgram(shaders);\n }\n\n /**\n * Binds the shader program following draws use.\n *\n * Carbon's effect state manager calls this from `ApplyShaderProgram`\n * (`Tr2EffectStateManager.cpp:770-776`), and a NULL program is the unbind its\n * else branch performs with a default-constructed one. This context had no\n * such method at all until 2026-09-09, which is why the manager recorded a\n * handle and bound nothing.\n *\n * @param {object|null} shaderProgram A `Tr2ShaderProgramAL`, or null to unbind.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetShaderProgram(shaderProgram)\n {\n return this.#requireAL(\"SetShaderProgram\").SetShaderProgram(shaderProgram);\n }\n\n /**\n * The fullscreen-quad blitter, created on first use.\n *\n * WHERE CARBON PUTS IT, AND WHY WE DO NOT. Carbon holds one in a file-scope\n * `s_blitter` in `Tr2Renderer.cpp:25`, immediately under its own comment:\n * \"The whole s_blitter thing needs to be rethough anyway.\" Its\n * `DrawTexture`/`DrawFullScreenWithShader` statics are three-line wrappers\n * that null-check it.\n *\n * Ours is per-context because `Tr2Renderer` here is deliberately NOT a\n * process-wide singleton - see that file's head comment, which explains that\n * two libraries with two resource managers would silently share one. The\n * blitter owns a vertex buffer created against a context, so a context is\n * exactly the lifetime it wants, and every render step already has one.\n *\n * @returns {Tr2Blitter} The blitter.\n */\n GetBlitter()\n {\n this.#blitter ??= new Tr2Blitter();\n\n return this.#blitter;\n }\n\n // Carbon's four immediate draws (Tr2RenderContext.h). Trinity calls these\n // directly - Tr2Blitter ends DrawHelper with SetTopology + DrawPrimitive, and\n // TriStepRenderDebug draws its line vertices with DrawPrimitiveUP - so the\n // context needs them even though the AL is what does the work. They were\n // missing for the usual reason: the batch path never reaches them, and the\n // batch path was all that had been driven.\n\n /**\n * Draws non-indexed from the bound stream source.\n *\n * @param {number} startVertex First vertex to read.\n * @param {number} primitiveCount Primitives to draw.\n * @returns {boolean} Whether the AL accepted the draw.\n */\n DrawPrimitive(startVertex, primitiveCount)\n {\n return this.#requireAL(\"DrawPrimitive\").DrawPrimitive(startVertex, primitiveCount);\n }\n\n /**\n * Draws indexed from the bound stream source and index buffer.\n *\n * @param {number} numVertices Vertices the index range spans.\n * @param {number} startIndex First index to read.\n * @param {number} primitiveCount Primitives to draw.\n * @param {number} [minimumIndex] Smallest index value in the range.\n * @returns {boolean} Whether the AL accepted the draw.\n */\n DrawIndexedPrimitive(numVertices, startIndex, primitiveCount, minimumIndex = 0)\n {\n return this.#requireAL(\"DrawIndexedPrimitive\").DrawIndexedPrimitive(numVertices, startIndex, primitiveCount, minimumIndex);\n }\n\n /**\n * Draws non-indexed straight from caller memory, with no buffer bound.\n *\n * @param {number} primitiveCount Primitives to draw.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @returns {boolean} Whether the AL accepted the draw.\n */\n DrawPrimitiveUP(primitiveCount, vertexStreamZeroData, vertexStreamZeroStride)\n {\n return this.#requireAL(\"DrawPrimitiveUP\").DrawPrimitiveUP(primitiveCount, vertexStreamZeroData, vertexStreamZeroStride);\n }\n\n /**\n * Draws indexed straight from caller memory. The index width is carried by\n * the array's own type rather than Carbon's two separate overloads.\n *\n * @param {number} numVertices Vertices the index data spans.\n * @param {number} primitiveCount Primitives to draw.\n * @param {ArrayBufferView} indexData The indices.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @returns {boolean} Whether the AL accepted the draw.\n */\n DrawIndexedPrimitiveUP(numVertices, primitiveCount, indexData, vertexStreamZeroData, vertexStreamZeroStride)\n {\n return this.#requireAL(\"DrawIndexedPrimitiveUP\")\n .DrawIndexedPrimitiveUP(numVertices, primitiveCount, indexData, vertexStreamZeroData, vertexStreamZeroStride);\n }\n\n /**\n * Binds the vertex declaration. Reached through `ApplyVertexDeclaration`.\n *\n * @param {object} layout A `Tr2VertexLayoutAL`.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetVertexLayout(layout)\n {\n return this.#requireAL(\"SetVertexLayout\").SetVertexLayout(layout);\n }\n\n /**\n * Draws the bound geometry, indexed.\n *\n * @param {number} indexCountPerInstance Indices each instance reads.\n * @param {number} instanceCount Instances to draw.\n * @param {number} startIndexLocation First index to read.\n * @param {number} baseVertexLocation Value added to every index.\n * @param {number} startInstanceLocation First instance id.\n * @returns {boolean} Whether the AL accepted it.\n */\n DrawIndexedInstanced(\n indexCountPerInstance,\n instanceCount,\n startIndexLocation,\n baseVertexLocation,\n startInstanceLocation\n )\n {\n return this.#requireAL(\"DrawIndexedInstanced\").DrawIndexedInstanced(\n indexCountPerInstance,\n instanceCount,\n startIndexLocation,\n baseVertexLocation,\n startInstanceLocation\n );\n }\n\n /**\n * Draws the bound geometry, non-indexed.\n *\n * @param {number} vertexCountPerInstance Vertices each instance reads.\n * @param {number} instanceCount Instances to draw.\n * @param {number} startVertexLocation First vertex to read.\n * @param {number} startInstanceLocation First instance id.\n * @returns {boolean} Whether the AL accepted it.\n */\n DrawInstanced(vertexCountPerInstance, instanceCount, startVertexLocation, startInstanceLocation)\n {\n return this.#requireAL(\"DrawInstanced\").DrawInstanced(\n vertexCountPerInstance,\n instanceCount,\n startVertexLocation,\n startInstanceLocation\n );\n }\n\n /**\n * The installed backend, or a failure naming the verb that needed one.\n *\n * @param {string} verb The verb being forwarded.\n * @returns {object} The render-context AL.\n */\n // There is no \"no backend\" case to guard - the field defaults to the stub and\n // a null assignment restores it. What remains worth checking is whether the\n // installed backend implements the verb: without this, a backend that has not\n // yet ported one fails as \"this.#al.Foo is not a function\" from inside a\n // pass-through, which reads like a typo in Trinity rather than a gap in the\n // backend.\n #requireAL(verb)\n {\n if (typeof this.#al[verb] !== \"function\")\n {\n throw new Error(`${this.#al.constructor.name} does not implement ${verb}.`);\n }\n\n return this.#al;\n }\n\n /**\n * The effect state manager this context owns.\n *\n * @returns {Tr2EffectStateManager} The manager.\n */\n GetEffectStateManager()\n {\n return this.#esm;\n }\n\n /** GPU-free validity check: any non-null render target counts as valid. */\n IsRenderTargetValid(renderTarget)\n {\n return this.#requireAL(\"IsRenderTargetValid\").IsRenderTargetValid(renderTarget);\n }\n\n /**\n * Records a resolve intent moving a multisampled source into a resolved\n * destination.\n */\n ResolveRenderTarget(source, destination)\n {\n return this.#requireAL(\"ResolveRenderTarget\").ResolveRenderTarget(source, destination);\n }\n\n /**\n * Records a copy-render-target intent, spreading the caller's descriptor\n * fields into it.\n */\n CopyRenderTarget(intent)\n {\n return this.#requireAL(\"CopyRenderTarget\").CopyRenderTarget(intent);\n }\n\n /** Records a generate-mipmaps intent for a render target. */\n GenerateMipMaps(renderTarget)\n {\n return this.#requireAL(\"GenerateMipMaps\").GenerateMipMaps(renderTarget);\n }\n\n /**\n * Draws one finalized batch accumulator.\n *\n * Carbon's RenderBatches (Tr2RenderContext.h:37-52) walks the accumulator and\n * issues draws immediately, through `RenderBatchesInOrder`, and so does this.\n * THE BACKEND IS NEVER HANDED A BATCH: Carbon declares this family on\n * `Tr2RenderContext.h` and a grep of `trinity/trinityal/` finds none of it.\n * Until 2026-09-10 this forwarded to an AL method of the same name, which is\n * the inversion the whole lane was opened to undo - the backend then needed\n * a resolver and a dispatcher to turn batches into bindings, and the\n * material's own apply was never reached.\n *\n * The accumulator is passed by reference, not copied. It is finalized by the\n * time it arrives - sorting and grouping are Trinity's - and copying it would\n * lose the group runs that Finalize wrote.\n *\n * @param {object} batches Finalized accumulator.\n * @param {string} [techniqueName] Carbon's DEFAULT_TECHNIQUE.\n * @returns {boolean} Whether an accumulator was walked.\n */\n RenderBatches(batches, techniqueName = DEFAULT_TECHNIQUE)\n {\n if (!batches) return false;\n\n this.RenderBatchesInOrder(batches, techniqueName);\n\n return true;\n }\n\n /**\n * Binds one batch's geometry and draws it.\n *\n * Carbon's free function `SubmitGeometry` (`Tr2RenderContext.cpp:83-103`),\n * verbatim in order: topology, declaration, both streams, then either the\n * index buffer and an indexed draw or a non-indexed one.\n *\n * A STREAM HERE MAY BE A DESCRIPTOR RATHER THAN A BUFFER. Carbon's batches\n * carry realized allocations because `Tr2MeshBase::CreateGeometryBatch` bakes\n * them in during collection; ours carry a geometry-resource descriptor that\n * something realizes later (`Tr2RenderBatch.geometrySource`). This passes\n * whatever the batch holds, exactly as Carbon does, and it is the backend's\n * business what it receives - which is the point of the boundary.\n *\n * @param {object} batch A `Tr2RenderBatch`.\n * @returns {boolean} Whether the draw was accepted.\n */\n SubmitGeometry(batch)\n {\n // A MESH BATCH ARRIVES WITH A DESCRIPTOR, NOT BUFFERS. Carbon's\n // TriGeometryRes suballocates a LOD's vertex and index data into the shared\n // geometry buffer at LOAD, through the main-thread context\n // (TriGeometryRes.cpp:2019-2140), and the batch carries the allocations'\n // buffers. Our geometry resource cannot reach a context, so the LOD's\n // allocations are made here, at the first submit through THIS context, and\n // the batch's streams and draw arguments are set from them exactly as\n // CreateGeometryBatch sets them in Carbon (Tr2MeshBase.cpp:372-392).\n if (batch.geometrySource && !batch.vertexStreams[0]) RealizeBatchGeometry(batch, this);\n\n this.SetTopology(batch.topology);\n this.#esm.ApplyVertexDeclaration(batch.vertexDeclaration);\n\n if (batch.vertexStreams[0]) this.#esm.ApplyStreamSource(0, batch.vertexStreams[0], 0, batch.stride[0]);\n if (batch.vertexStreams[1]) this.#esm.ApplyStreamSource(1, batch.vertexStreams[1], 0, batch.stride[1]);\n\n if (batch.indexBuffer)\n {\n this.#esm.ApplyIndexBuffer(batch.indexBuffer, batch.indexStride);\n\n return this.DrawIndexedInstanced(\n batch.indexCountPerInstance,\n batch.instanceCount,\n batch.startIndexLocation,\n batch.baseVertexLocation,\n batch.startInstanceLocation\n );\n }\n\n return this.DrawInstanced(\n batch.indexCountPerInstance,\n batch.instanceCount,\n batch.startIndexLocation,\n batch.startInstanceLocation\n );\n }\n\n /**\n * Draws every batch in the accumulator's own order.\n *\n * Carbon `Tr2RenderContextBase::RenderBatchesInOrder`\n * (`Tr2RenderContext.cpp:357-430`). THE WALK IS TRINITY'S, and that is the\n * whole point of it being here: Carbon declares this on `Tr2RenderContext.h`,\n * not on any abstraction-layer header, and a grep of `trinity/trinityal/`\n * finds no `RenderBatches` at all. The backend is handed verbs - topology,\n * resource set, constants, draw - and never a batch, a material or an\n * accumulator.\n *\n * Carbon's three `Tr2RingBuffer::PrepareBuffer` calls at the top are not\n * ported: the ring buffer's device half is the AL's, and preparing it from\n * here would reach past the boundary this method exists to restore.\n *\n * @param {object} batches A finalized accumulator.\n * @param {string} [techniqueName] The technique to draw.\n * @returns {number} How many passes were submitted.\n */\n RenderBatchesInOrder(batches, techniqueName = DEFAULT_TECHNIQUE, overrideMaterial = null)\n {\n if (!batches) return 0;\n\n // Carbon's override walk substitutes the override material - and its\n // shader - for every batch's (`RenderBatchesWithOverride`, cpp:810-814);\n // the geometry and per-object data stay the batch's own.\n const shaderOf = batch => (overrideMaterial ? overrideMaterial.GetShaderStateInterface() : batch.shader);\n const materialOf = batch => overrideMaterial ?? batch.material;\n\n let lastShader = null;\n let currentObjectData = null;\n let technique = 0;\n let passCount = 0;\n let shaderMask = 0;\n let drawn = 0;\n\n for (const batch of batches.GetBatches())\n {\n // RM_ANY means \"whatever is already set\", so Carbon skips the apply\n // rather than applying a mode called any.\n if (batch.renderingMode !== RenderingMode.RM_ANY)\n {\n this.#esm.ApplyStandardStates(batch.renderingMode);\n }\n\n const shader = shaderOf(batch);\n\n if (shader !== lastShader)\n {\n // Direct, as Carbon is: a batch with no shader is not valid, and\n // Tr2RenderBatch.IsValid uses the shader as its key.\n const found = shader.GetTechniqueIndex(techniqueName);\n\n // Carbon `continue`s on both of these, which SKIPS THE BATCH and\n // leaves lastShader unchanged, so the next batch re-tests. Reproduced\n // rather than tidied into a cached failure.\n //\n // AND `technique` MUST NOT BE CLOBBERED ON THE WAY OUT. Carbon's\n // GetTechniqueIndex is an out-parameter that it does NOT write when it\n // returns false (`Tr2Shader.cpp:28-46`), so the variable keeps the\n // previous batch's value. Assigning -1 here was wrong in a way only a\n // three-batch sequence shows: S1, S2, S1 - the middle one fails and\n // leaves -1 behind, and the third takes the `shader === lastShader`\n // fast path and draws with technique -1.\n if (found < 0) continue;\n\n technique = found;\n\n passCount = shader.GetPassCount(technique);\n\n if (passCount === 0) continue;\n\n shaderMask = shader.GetShaderTypeMask(technique);\n lastShader = shader;\n }\n\n if (batch.objectData && batch.objectData !== currentObjectData)\n {\n // Carbon fills an array of POINTERS into m_perObjectConstantBuffers\n // before the loop, so every slot exists. Ours are created on demand by\n // GetConstantBuffer, so the array is materialised the same way.\n const buffers = Array.from(\n { length: ConstantBufferSlot.CBUFFER_COUNT },\n (_unused, slot) => this.GetConstantBuffer(slot)\n );\n\n // STATIC, TAKING THE DATA. Carbon dispatches this on the per-object\n // data's subclass, so the port was written as a method call on\n // `batch.objectData` - but almost nothing here IS a `Tr2PerObjectData`:\n // every renderable's `GetPerObjectData` returns a plain `{ vs, ps }`\n // pair of `RawData` records, which is why the method beside the data is\n // static and takes it. Calling it on the data threw `TypeError` for\n // every batch that carried any, so NO REAL RENDERABLE COULD DRAW - the\n // existing tests walk batches with no per-object data at all, and a\n // real hull found it in one frame.\n Tr2PerObjectData.setPerObjectDataToDevice(batch.objectData, buffers, shaderMask, this);\n currentObjectData = batch.objectData;\n }\n\n for (let passIndex = 0; passIndex < passCount; passIndex += 1)\n {\n shader.ApplyAllStateForPass(technique, passIndex, this);\n materialOf(batch).ApplyMaterialDataForPass(technique, passIndex, this);\n\n this.SubmitGeometry(batch);\n\n // COUNTED PER PASS, INSIDE THE LOOP, which is where Carbon counts\n // (`Tr2RenderContext.cpp:424-425`, batchCount and batchNormalDraws).\n // Counting after the loop counted a batch whose passCount was zero -\n // reachable through a stale passCount left by a previous batch on the\n // same shader - as a batch that drew.\n drawn += 1;\n }\n }\n\n return drawn;\n }\n\n /**\n * Records a submission drawn with a material substituted for every batch's\n * own, which is how Carbon renders a depth or picking pass over geometry\n * authored for colour (RenderBatchesWithOverride, Tr2RenderContext.cpp:806).\n *\n * A null override is Carbon's own no-op: it falls straight through to\n * RenderBatches (cpp:810-814), and a port that treated null as \"no draw\"\n * would silently drop the default visualizer path.\n *\n * @param {object} batches Finalized accumulator.\n * @param {object|null} overrideMaterial Material to substitute, or null.\n * @param {string} [techniqueName] Carbon's DEFAULT_TECHNIQUE.\n * @returns {boolean} Whether the submission was recorded.\n */\n RenderBatchesWithOverride(batches, overrideMaterial = null, techniqueName = DEFAULT_TECHNIQUE)\n {\n if (!batches) return false;\n if (!overrideMaterial) return this.RenderBatches(batches, techniqueName);\n\n this.RenderBatchesInOrder(batches, techniqueName, overrideMaterial);\n\n return true;\n }\n\n /**\n * Records a submission for picking, which Carbon separates because it reads\n * the batch's user data as an object id rather than shading it\n * (RenderBatchesForPicking, Tr2RenderContext.h:44).\n *\n * @param {object} batches Finalized accumulator.\n * @param {string} [techniqueName] Carbon's DEFAULT_TECHNIQUE.\n * @returns {boolean} Whether the submission was recorded.\n */\n RenderBatchesForPicking(_batches, _techniqueName = DEFAULT_TECHNIQUE)\n {\n // NOT PORTED. Carbon's picking walk stamps each batch's user data into the\n // global \"objectId\" variable and draws the picking technique; the 32-bit\n // target and the readback are not here yet (docs: \"Why no Carbon picker\").\n // Refuses by name rather than drawing a colour pass that returns pixels.\n throw new Error(\"Tr2RenderContext.RenderBatchesForPicking is not ported.\");\n }\n\n // THE FOUR BELOW ARE NOT PORTED, AND THEY REFUSE RATHER THAN RECORD.\n //\n // Each used to push an intent nothing ever read - the queue's whole failure\n // mode: a call that reports success and moves nothing. Refusing by name costs\n // a caller one clear error instead of a silent absence they debug elsewhere.\n //\n // What each actually needs:\n // DrawLineSet - line rendering; Carbon has no TriStepDrawLineSet, this\n // verb is ours (see the non-Carbon extension register).\n // RenderAtlas - Tr2TextureAtlas, an unported shell with no\n // GetFreeAreas/GetUsedAreas/GetMargin. Debug visualiser.\n // RenderLineGraphs - Tr2Renderer::PrintfImmediate, so fonts.\n // RenderDebug - DrawPrimitiveUP plus fonts.\n\n /** NOT PORTED: line rendering. @returns {never} Always throws. */\n DrawLineSet(_lineSet)\n {\n throw new Error(\"Tr2RenderContext.DrawLineSet is not ported; it needs the line-rendering path.\");\n }\n\n /**\n * Records a clear-unordered-access-view intent; the clear value is copied by\n * value and clearWithFloat selects float rather than integer clearing.\n */\n ClearUav(buffer, value, clearWithFloat = false)\n {\n return this.#requireAL(\"ClearUav\").ClearUav(buffer, value, clearWithFloat);\n }\n\n /** NOT PORTED: needs Tr2TextureAtlas. @returns {never} Always throws. */\n RenderAtlas(_step)\n {\n throw new Error(\"Tr2RenderContext.RenderAtlas is not ported; Tr2TextureAtlas is an unported shell.\");\n }\n\n /** NOT PORTED: needs the font path. @returns {never} Always throws. */\n RenderLineGraphs(_step)\n {\n throw new Error(\"Tr2RenderContext.RenderLineGraphs is not ported; it needs Tr2Renderer::PrintfImmediate.\");\n }\n\n /** NOT PORTED: needs DrawPrimitiveUP and fonts. @returns {never} Always throws. */\n RenderDebug(_debugStep)\n {\n throw new Error(\"Tr2RenderContext.RenderDebug is not ported; it needs DrawPrimitiveUP and the font path.\");\n }\n\n /**\n * Records a compute-dispatch intent with an explicit thread-group count per\n * axis.\n */\n RunComputeShader(effect, groupDimX = 1, groupDimY = 1, groupDimZ = 1)\n {\n return this.#requireAL(\"RunComputeShader\").RunComputeShader(effect, groupDimX, groupDimY, groupDimZ);\n }\n\n /**\n * Records an indirect compute-dispatch intent reading its group counts from a\n * buffer at the given byte offset.\n */\n RunComputeShaderIndirect(effect, indirectionBuffer, offsetForArgs = 0)\n {\n return this.#requireAL(\"RunComputeShaderIndirect\").RunComputeShaderIndirect(effect, indirectionBuffer, offsetForArgs);\n }\n\n /** Records the upscaler context the following work belongs to. */\n SetUpscalingContextID(upscalingContextID)\n {\n return true;\n }\n\n /**\n * Records the debug renderer to route subsequent debug drawing through; null\n * detaches it. The renderer is retained because EndFrame clears it, as\n * Carbon clears its s_debugTextRenderer static.\n */\n SetDebugRenderer(renderer)\n {\n this.#debugRenderer = renderer ?? null;\n return true;\n }\n\n /**\n * Ends the frame at the device level.\n *\n * THIS IS NOT THE SWAP CHAIN'S PRESENT. Carbon has two, and they are reached\n * from different places: `TriDevice::HandleRenderTick` calls\n * `renderContext.Present()` (`TriDeviceStub.cpp:25`), which is the AL\n * context's frame boundary and what advances the frame number; publishing the\n * surface is `Tr2SwapChain::Present`, reached from `TriStepPresentSwapChain`.\n *\n * Carbon's `Tr2RenderContext` INHERITS `Tr2RenderContextAL`, so its `Present`\n * is the AL's. We compose, so this forwards. It was called `PresentSwapChain`\n * and took a swap chain it ignored until 2026-09-09; that name belongs to the\n * render STEP and Carbon has no such method on either context.\n *\n * @returns {number} An `ALResult` value.\n */\n Present()\n {\n return this.#requireAL(\"Present\").Present();\n }\n\n /**\n * Sets the viewport. The viewport object is held by reference, not copied.\n *\n * @param {object} viewport `{ x, y, width, height, minZ, maxZ }`.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetViewport(viewport)\n {\n this.#viewport = viewport ?? null;\n\n return this.#requireAL(\"SetViewport\").SetViewport(viewport);\n }\n\n /**\n * Clears the cached viewport and records a fullscreen-viewport intent, leaving\n * the engine to resolve the actual target extent.\n */\n SetFullScreenViewport()\n {\n // Nothing to defer: the backend knows the bound target's extent, so \"full\n // screen\" resolves here and now. The old recording path deferred it as its\n // own intent because without a backend the extent was unknown until\n // realization - which is exactly the deferral the queue existed to provide.\n const size = this.#requireAL(\"GetRenderTargetSize\").GetRenderTargetSize(0);\n\n if (Failed(size.result)) return false;\n\n this.#esm.UpdateRenderTargetViewport(size.width, size.height);\n this.#esm.SetupViewport();\n\n return true;\n }\n\n /**\n * The viewport last set, or null while the context is in fullscreen-viewport\n * mode.\n */\n GetViewport()\n {\n return this.#requireAL(\"GetViewport\").GetViewport();\n }\n\n // The viewport save stack is the effect state manager's, not this context's\n // (`TriStepPushViewport.cpp:9` pushes through `renderContext.m_esm`). It used\n // to live here, which put the authored viewport in one place and the stack\n // that saves it in another.\n\n /**\n * Caches the view/camera/simTime record, refreshes the cached view matrix and\n * its inverse from the view matrix, and records a set-view intent.\n */\n SetView(view, camera = null, simTime = 0)\n {\n this.#view = { view: view ?? null, camera: camera ?? null, simTime };\n this.#ApplyViewMatrix(view);\n return true;\n }\n\n /**\n * Caches a raw view matrix (Tr2Renderer::SetViewTransform), refreshes the\n * inverse and eye position, and records a set-view-transform intent.\n */\n SetViewTransform(transform, source = null)\n {\n this.#view = { transform: transform ?? null, source: source ?? null };\n this.#ApplyViewMatrix(transform);\n return true;\n }\n\n // Mirrors Tr2Renderer::SetViewTransform: cache the view matrix, compute its\n // inverse once, and derive the view position from the inverse-view\n // translation row (Carbon reads _41.._43 -> column-major indices [12,13,14]).\n\n /**\n * Mirrors Tr2Renderer::SetViewTransform - copies the view matrix into the\n * cached buffer, inverts it once (falling back to identity when singular) and\n * derives the eye position from the inverse-view translation; anything that is\n * not a 16-element matrix is ignored and leaves the cache untouched.\n */\n #ApplyViewMatrix(matrix)\n {\n if (!matrix || matrix.length !== 16)\n {\n return;\n }\n\n mat4.copy(this.#viewTransform, matrix);\n\n if (!mat4.invert(this.#inverseViewTransform, this.#viewTransform))\n {\n mat4.identity(this.#inverseViewTransform);\n }\n\n vec3.set(\n this.#viewPosition,\n this.#inverseViewTransform[12],\n this.#inverseViewTransform[13],\n this.#inverseViewTransform[14]\n );\n this.#hasViewMatrix = true;\n }\n\n /**\n * A shallow copy of the last view or view-transform record, or null when none\n * has been set.\n */\n GetView()\n {\n return this.#view ? { ...this.#view } : null;\n }\n\n // Raw column-major view matrix (Tr2Renderer::GetViewTransform). Live buffer -\n // callers read, never mutate.\n\n /**\n * The raw column-major view matrix (Tr2Renderer::GetViewTransform); a live\n * buffer owned by the context that callers read and never mutate.\n */\n GetViewTransform()\n {\n return this.#viewTransform;\n }\n\n // Inverse of the view matrix (Tr2Renderer::GetInverseViewTransform), cached on\n // the last view change. Live buffer - callers read, never mutate.\n\n /**\n * The inverse view matrix (Tr2Renderer::GetInverseViewTransform), recomputed\n * on each view change; a live buffer callers read and never mutate.\n */\n GetInverseViewTransform()\n {\n return this.#inverseViewTransform;\n }\n\n // World-space view/eye position (Tr2Renderer::GetViewPosition): the\n // inverse-view translation. Live buffer - callers read, never mutate.\n\n /**\n * The world-space eye position taken from the inverse-view translation; a live\n * buffer callers read and never mutate.\n */\n GetViewPosition()\n {\n return this.#viewPosition;\n }\n\n // Whether a view matrix has been set (camera-dependent modifiers fall back to\n // an unchanged transform when it has not).\n\n /**\n * Whether a view matrix has been set; camera-dependent modifiers fall back to\n * an unchanged transform when it has not.\n */\n HasViewMatrix()\n {\n return this.#hasViewMatrix;\n }\n\n // Save/restore stack for the cached view transform (Carbon Push/PopViewTransform).\n // Push snapshots the current view object, its matrix, and the has-matrix flag;\n // pop restores them and re-derives the inverse/eye-position via ApplyViewMatrix.\n\n /**\n * Snapshots the current view record, its matrix and the has-matrix flag onto\n * the view-transform stack, copying the matrix rather than aliasing the live\n * buffer.\n */\n PushViewTransform()\n {\n this.#viewTransformStack.push({\n view: this.#view,\n hasViewMatrix: this.#hasViewMatrix,\n transform: this.#hasViewMatrix ? mat4.copy(mat4.create(), this.#viewTransform) : null\n });\n return true;\n }\n\n /**\n * Restores the last pushed view transform, re-deriving the inverse and eye\n * position (or resetting them to identity when nothing was cached), and\n * re-records a set-view-transform intent; returns false when the stack is\n * empty.\n */\n PopViewTransform()\n {\n if (!this.#viewTransformStack.length) return false;\n\n const saved = this.#viewTransformStack.pop();\n this.#view = saved.view;\n if (saved.transform)\n {\n this.#ApplyViewMatrix(saved.transform);\n }\n else\n {\n mat4.identity(this.#viewTransform);\n mat4.identity(this.#inverseViewTransform);\n vec3.set(this.#viewPosition, 0, 0, 0);\n this.#hasViewMatrix = false;\n }\n return true;\n }\n\n /** Depth of the view-transform save/restore stack. */\n GetStackSizeViewTransform()\n {\n return this.#viewTransformStack.length;\n }\n\n /**\n * Copies the active 4x4 projection matrix and records it as an intent.\n * Tr2RenderContext owns this matrix so later caller mutations cannot change\n * the state observed by frame consumers.\n */\n SetProjection(projection, fieldOfView = undefined)\n {\n if (!projection || projection.length !== 16)\n {\n throw new TypeError(\"Tr2RenderContext.SetProjection requires a 16-element matrix\");\n }\n if (!this.#projection) this.#projection = mat4.create();\n mat4.copy(this.#projection, projection);\n this.#fieldOfView = fieldOfView === undefined\n ? (projection[5] ? 2 * Math.atan(1 / projection[5]) : 0)\n : Number(fieldOfView);\n return true;\n }\n\n /**\n * Sets a single render state, as `TriStepSetRenderState` does\n * (`TriStepSetRenderState.cpp:10-14`). Both arguments are coerced to\n * unsigned integers.\n *\n * @param {number} state A `RenderState` value.\n * @param {number} value The value to set.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetRenderState(state, value)\n {\n return this.#requireAL(\"SetRenderState\").SetRenderState(Number(state) >>> 0, Number(value) >>> 0);\n }\n\n /**\n * Applies a whole render-state setup, with the state manager's overrides.\n *\n * Carbon's `DoApplyRenderStates` ends with\n * `m_renderContext.SetRenderStates( &kv[0], kv.size() / 2 )`\n * (`Tr2EffectStateManager.cpp:753`), where its context IS the backend. Ours\n * composes, so this forwards - and carries the interpreted setup rather than\n * a resolved pair list, because a registered setup is interpreted once at\n * registration here and the backend projects it.\n *\n * @param {object} setup A `Tr2RenderStateSetup`.\n * @param {object} [overrides] The state manager's render-state overrides.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetRenderStates(setup, overrides = null)\n {\n return this.#requireAL(\"SetRenderStates\").SetRenderStates(setup, overrides);\n }\n\n /** Records the intent to apply the standard state block for a rendering mode. */\n ApplyStandardStates(renderingMode)\n {\n // The state manager owns this, and always did. Recording it instead sent\n // the call to a planner that classified it PIPELINE_STATE and then failed\n // on it - `requires a WebGPU pipeline-state translator` - so the intent was\n // not merely redundant, it was fatal if ever planned.\n return this.#esm.ApplyStandardStates(Number(renderingMode) >>> 0);\n }\n\n /**\n * Toggles wireframe rendering.\n *\n * THE STATE MANAGER OWNS THIS, as it owns the cull-mode and depth-test\n * overrides beside it. Carbon's own step goes straight there -\n * `renderContext.m_esm.SetWireframeRendering( m_enableWireframe )`\n * (`TriStepEnableWireframeMode.cpp:...`) - and never through the context at\n * all. This forwards for callers that already hold a context.\n *\n * @param {boolean} enabled Whether to draw wireframe.\n * @returns {boolean} Whether the override was applied.\n */\n SetWireframeRendering(enabled)\n {\n return this.#esm.SetWireframeRendering(!!enabled);\n }\n\n /**\n * The projection matrix last recorded on the context, or null before a pass\n * sets one.\n */\n GetProjection()\n {\n return this.#projection;\n }\n\n /**\n * The vertical field of view cached when the active projection was set.\n * This is Carbon's Tr2Renderer::GetFieldOfView state, cached on the context.\n */\n GetFieldOfView()\n {\n return this.#fieldOfView;\n }\n\n // Save/restore stack for the current projection (Carbon Push/PopProjection).\n\n /** Saves the current projection on its own save/restore stack. */\n PushProjection()\n {\n this.#projectionStack.push({\n projection: this.#projection ? mat4.clone(this.#projection) : null,\n fieldOfView: this.#fieldOfView\n });\n return true;\n }\n\n /**\n * Restores the last pushed projection and re-records a set-projection intent;\n * returns false when the stack is empty.\n */\n PopProjection()\n {\n if (!this.#projectionStack.length) return false;\n const saved = this.#projectionStack.pop();\n if (saved.projection)\n {\n if (!this.#projection) this.#projection = mat4.create();\n mat4.copy(this.#projection, saved.projection);\n }\n else\n {\n this.#projection = null;\n }\n this.#fieldOfView = saved.fieldOfView;\n return true;\n }\n\n /** Depth of the projection save/restore stack. */\n GetStackSizeProjection()\n {\n return this.#projectionStack.length;\n }\n\n /**\n * Appends a diagnostic record for the frame.\n */\n AddDiagnostic(diagnostic)\n {\n this.#diagnostics.push(diagnostic);\n }\n\n /** A copy of the diagnostics recorded since the last ClearDiagnostics. */\n GetDiagnostics()\n {\n return this.#diagnostics.slice();\n }\n\n /** Drops all recorded diagnostics. */\n ClearDiagnostics()\n {\n this.#diagnostics.length = 0;\n }\n\n /**\n * The process-wide fallback context, constructed once when the class is\n * defined, for callers with no context of their own.\n */\n static GetDefault()\n {\n return Tr2RenderContext.#defaultContext;\n }\n\n /**\n * The global \"objectId\" TriVariable Carbon registers at context\n * construction and stamps per batch during picking. Registered lazily\n * here so contexts that never pick pay nothing.\n */\n GetObjectIdVariable()\n {\n if (!this.#objectIdVariable)\n {\n this.#objectIdVariable = Tr2VariableStore.GlobalStore().RegisterVariable(\"objectId\", 0.0);\n }\n return this.#objectIdVariable;\n }\n\n #objectIdVariable = null;\n\n /**\n * True when any batch's shader implements the technique with at least one\n * pass - Carbon's cheap \"can this pass be skipped entirely\" pre-check.\n * Consecutive batches sharing a shader are tested once.\n */\n static TechniqueInBatch(batches, techniqueName)\n {\n let prevShader = null;\n for (const batch of batches)\n {\n if (!(batch instanceof Tr2RenderBatch))\n {\n throw new TypeError(\"Tr2RenderContext.TechniqueInBatch expects Tr2RenderBatch entries.\");\n }\n const shader = batch.shader;\n if (shader === null || shader === prevShader)\n {\n continue;\n }\n if (!(shader instanceof Tr2Shader))\n {\n throw new TypeError(\"Tr2RenderBatch.shader must be a Tr2Shader or null.\");\n }\n prevShader = shader;\n const technique = shader.GetTechniqueIndex(techniqueName);\n if (technique < 0)\n {\n continue;\n }\n if (shader.GetPassCount(technique) > 0)\n {\n return true;\n }\n }\n return false;\n }\n\n static #defaultContext = new Tr2RenderContext();\n}\n"],"names":["DIRECT_STEP_EXECUTOR","Object","freeze","CjsDirectTrinityStepExecutor","DEFAULT_TECHNIQUE","_Tr2RenderContext","_identity","Tr2RenderContext","CjsModel","e","_initProto","c","_initClass","_applyDecs","type","define","className","family","impl","custom","reason","Tr2RenderContextALStub","Tr2EffectStateManager","SetRenderContext","mat4","create","vec3","SetStepExecutor","executor","CjsTrinityStepExecutor","TypeError","BeginStep","step","realTime","simTime","job","SetRenderContextAL","al","buffer","Destroy","fill","ReleaseRealizedObjects","GetRenderContextAL","ExecuteStep","EndStep","BeginBatch","owner","EndBatch","GetCurrentFrameCounter","GetAnimationTime","AdvanceFrame","animationTime","Number","BeginFrame","time","Math","floor","Tr2VariableStore","GlobalStore","RegisterVariable","EndFrame","Clear","BeginRenderContext","BeginScene","GetTriPoolAllocator","TriPoolAllocator","RegisterCatalog","SetTriPoolAllocator","allocator","EndRenderContext","EndScene","PushRenderTarget","slot","index","PopRenderTarget","GetStackSizeRT","PushDepthStencil","PopDepthStencil","GetStackSizeDS","SetRenderTarget","renderTarget","slice","GetRecordingFrameNumber","GetRenderedFrameNumber","IsValid","GetRenderTargetSize","GetRenderTarget","SetDepthStencil","depthStencil","GetDepthStencil","options","SetReadOnlyDepth","enable","RenderPassHint","attachments","GetReversedDepthProjectionTransform","out","copy","GetCaps","Error","SetTopology","topology","GetConstantBuffer","isInteger","ConstantBufferSlot","CBUFFER_COUNT","CreateConstantBuffer","GetConstantBuffers","Array","from","length","unused","SetResourceSet","resourceSet","SetConstants","constantType","registerIndex","maxRegisterCount","SetStreamSource","stream","offset","stride","SetIndices","CreateBuffer","description","initialData","size","usage","undefined","CreateSamplerState","CreateResourceSet","program","implementationOnly","CreateTexture","desc","CreateVertexLayout","definition","CreateShader","stageType","bytecode","signature","shaderPath","CreateShaderProgram","shaders","SetShaderProgram","shaderProgram","GetBlitter","Tr2Blitter","DrawPrimitive","startVertex","primitiveCount","DrawIndexedPrimitive","numVertices","startIndex","minimumIndex","DrawPrimitiveUP","vertexStreamZeroData","vertexStreamZeroStride","DrawIndexedPrimitiveUP","indexData","SetVertexLayout","layout","DrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation","DrawInstanced","vertexCountPerInstance","startVertexLocation","#requireAL","verb","constructor","name","GetEffectStateManager","IsRenderTargetValid","ResolveRenderTarget","source","destination","CopyRenderTarget","intent","GenerateMipMaps","RenderBatches","batches","techniqueName","RenderBatchesInOrder","SubmitGeometry","batch","geometrySource","vertexStreams","RealizeBatchGeometry","ApplyVertexDeclaration","vertexDeclaration","ApplyStreamSource","indexBuffer","ApplyIndexBuffer","indexStride","overrideMaterial","shaderOf","GetShaderStateInterface","shader","materialOf","material","lastShader","currentObjectData","technique","passCount","shaderMask","drawn","GetBatches","renderingMode","RenderingMode","RM_ANY","ApplyStandardStates","found","GetTechniqueIndex","GetPassCount","GetShaderTypeMask","objectData","buffers","_unused","Tr2PerObjectData","setPerObjectDataToDevice","passIndex","ApplyAllStateForPass","ApplyMaterialDataForPass","RenderBatchesWithOverride","RenderBatchesForPicking","_batches","_techniqueName","DrawLineSet","_lineSet","ClearUav","value","clearWithFloat","RenderAtlas","_step","RenderLineGraphs","RenderDebug","_debugStep","RunComputeShader","effect","groupDimX","groupDimY","groupDimZ","RunComputeShaderIndirect","indirectionBuffer","offsetForArgs","SetUpscalingContextID","upscalingContextID","SetDebugRenderer","renderer","Present","SetViewport","viewport","SetFullScreenViewport","Failed","result","UpdateRenderTargetViewport","width","height","SetupViewport","GetViewport","SetView","view","camera","SetViewTransform","transform","#ApplyViewMatrix","matrix","invert","identity","set","GetView","GetViewTransform","GetInverseViewTransform","GetViewPosition","HasViewMatrix","PushViewTransform","push","hasViewMatrix","PopViewTransform","saved","pop","GetStackSizeViewTransform","SetProjection","projection","fieldOfView","atan","SetRenderState","state","SetRenderStates","setup","overrides","SetWireframeRendering","enabled","GetProjection","GetFieldOfView","PushProjection","clone","PopProjection","GetStackSizeProjection","AddDiagnostic","diagnostic","GetDiagnostics","ClearDiagnostics","GetDefault","GetObjectIdVariable","TechniqueInBatch","prevShader","Tr2RenderBatch","Tr2Shader","TextureFilter","TF_NONE","TF_POINT","TF_LINEAR","TF_ANISOTROPIC","TF_COMPARISON","TextureAddressMode","TA_WRAP","TA_MIRROR","TA_CLAMP","TA_BORDER","TA_MIRROR_ONCE"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2RenderContext.js","sources":["../../../../../src/trinity/core/context/Tr2RenderContext.js"],"sourcesContent":["// Source: trinity/trinity/Tr2RenderContext.h (name/role)\n// trinity/trinityal/*/Tr2RenderContext*.h (command surface)\n// trinity/trinity/Tr2Renderer.cpp (view-state statics, relocated here)\n// Hand-maintained amalgam of three Carbon surfaces (audited 2026-07-18):\n// 1. The command surface (PushRenderTarget/Clear/SetViewport/Present/\n// SetRenderState/...) mirrors the backend AL context classes and CALLS the\n// installed backend, as Carbon does.\n//\n// IT USED TO RECORD INTENTS, and that mechanism is gone (2026-09-06). The\n// recording existed because \"the engine does device work\" was read as the\n// trinityal/webgpu PACKAGE rather than the abstraction layer, so a queue was\n// invented to carry work across a boundary Carbon does not have.\n//\n// THE BACKEND IS NEVER ABSENT. Carbon's context INHERITS Tr2RenderContextAL,\n// a compile-time platform typedef, so it cannot be missing one; ours\n// defaults the field to the stub for the same guarantee. A bare context is\n// therefore headless, not broken - see the field's own comment.\n//\n// Four verbs refuse outright rather than pretend: DrawLineSet, RenderAtlas,\n// RenderLineGraphs and RenderDebug are unported and name what they need.\n// 2. The cached view state (SetViewTransform -> GetViewTransform/\n// GetInverseViewTransform/GetViewPosition) relocates Carbon's Tr2Renderer\n// STATICS onto this context so frame consumers read it via the threaded\n// updateContext.renderContext instead of a global.\n// 3. Carbon's actual Tr2RenderContext.h surface. GetConstantBuffer is ported\n// (2026-09-06) and the RenderBatches family is next; GetBackBuffer is not.\n// Fork/Join parallel encoding is deliberately omitted - it exists to spread\n// batch encoding across threads, and there is one.\nimport { carbon, impl, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { mat4 } from \"#math/mat4\";\nimport { vec3 } from \"#math/vec3\";\nimport { ALResult, Failed } from \"../../../trinityal/ALResult.js\";\nimport { ConstantBufferSlot } from \"#consts/render-context\";\nimport { RenderingMode } from \"#consts/graphics\";\nimport { Tr2VariableStore } from \"../variable/Tr2VariableStore.js\";\nimport { TriPoolAllocator } from \"../rawData/TriPoolAllocator.js\";\nimport { Tr2PerObjectData } from \"../rawData/perObjectData/Tr2PerObjectData.js\";\nimport { CjsDirectTrinityStepExecutor } from \"./CjsDirectTrinityStepExecutor.js\";\nimport { CjsTrinityStepExecutor } from \"./CjsTrinityStepExecutor.js\";\nimport { gTriDev } from \"../device/gTriDev.js\";\nimport { Tr2RenderBatch } from \"../batch/TriRenderBatch/index.js\";\nimport { Tr2Shader } from \"#resource/shader\";\nimport { Tr2EffectStateManager } from \"../../shader/Tr2EffectStateManager.js\";\nimport { Tr2RenderContextALStub } from \"../../../trinityal/stub/Tr2RenderContextALStub/index.js\";\nimport { Tr2Blitter } from \"../Tr2Blitter.js\";\nimport { RealizeBatchGeometry } from \"../mesh/TriGeometryResAllocations.js\";\n\nconst DIRECT_STEP_EXECUTOR = Object.freeze(new CjsDirectTrinityStepExecutor());\n\n/** Carbon DEFAULT_TECHNIQUE (Tr2RenderContext.h:37). */\nconst DEFAULT_TECHNIQUE = \"Main\";\n\n/** Tr2RenderContext (trinityCore) - generated from schema shapeHash 73e2a4e7.... */\n@type.define({ className: \"Tr2RenderContext\", family: \"trinityCore\" })\nexport class Tr2RenderContext extends CjsModel\n{\n #diagnostics = [];\n\n #stepExecutor = DIRECT_STEP_EXECUTOR;\n\n\n\n /**\n * The abstraction-layer backend. THERE IS ALWAYS ONE.\n *\n * Carbon's context does not hold a backend, it IS one:\n *\n * BLUE_CLASS( Tr2RenderContext ) :\n * public Tr2RenderContextBase,\n * public Tr2RenderContextAL // Tr2RenderContext.h:85-87\n *\n * `Tr2RenderContextAL` is a compile-time platform typedef - dx11, dx12, metal\n * or stub - so a context without a backend is structurally impossible there.\n * Carbon therefore has no fallback for the case AND no error for it either.\n *\n * We compose rather than inherit, so the field could be empty; defaulting it\n * to the stub is how the state stays impossible. A bare `new\n * Tr2RenderContext()` then behaves exactly as Carbon compiled against its\n * stub backend does: real render-target and depth-stencil stacks, real sizes,\n * draws counted, nothing drawn, and `IsValid()` false until `CreateDevice`.\n *\n * TWO EARLIER ANSWERS HERE WERE BOTH INVENTED. The first was to RECORD every\n * verb into an intent queue when no backend was installed; the second, while\n * removing that, was to THROW. Carbon does neither, because Carbon never\n * reaches the state. Deleting a behaviour still means choosing what stands in\n * its place, and that choice needs a citation like any other.\n */\n #al = new Tr2RenderContextALStub();\n\n // Carbon's context OWNS its state manager as a public member\n // (`Tr2RenderContext.h:35`), and its render steps reach the Trinity-level\n // verbs through it - `renderContext.m_esm.SetViewport(...)`\n // (`TriStepSetViewport.cpp:25`). Ours composes rather than inherits, so the\n // manager is bound to this context once and never rebound.\n\n /** m_esm */\n #esm = new Tr2EffectStateManager().SetRenderContext(this);\n\n /** Carbon's s_blitter, per context rather than per process; see GetBlitter. */\n #blitter = null;\n\n #depthStencil = null;\n\n #viewport = null;\n\n #view = null;\n\n #projection = null;\n\n // Tr2Renderer::GetFieldOfView relocated beside the projection matrix. It is\n // accepted from a typed TriProjection step or derived once when raw matrix\n // state changes, not recomputed by every camera-dependent transform.\n #fieldOfView = 0;\n\n // Carbon-faithful cached view state (Tr2Renderer::SetViewTransform): the raw\n // column-major view matrix, its inverse (computed once per view change, read\n // many times per frame by camera-dependent modifiers), and the view/eye\n // position taken from the inverse-view translation row. Allocated once and\n // copied into - never reallocated per read (allocation rules E/F).\n #viewTransform = mat4.create();\n\n #inverseViewTransform = mat4.create();\n\n #viewPosition = vec3.create();\n\n #hasViewMatrix = false;\n\n\n #projectionStack = [];\n\n #viewTransformStack = [];\n\n // Carbon keeps ONE pool allocator as a Tr2Renderer static, created in\n // Initialize (Tr2Renderer.cpp:345), read through GetPoolAllocator\n // (cpp:1083) and Clear()ed in EndRenderContext (cpp:1072-1081). Those\n // renderer statics relocate onto this context (see the file header), so the\n // pool lives here too, per context rather than per process. Created on first\n // request: constructing a context is not a frame, and the arena retains its\n // chunks once it exists.\n #poolAllocator = null;\n\n // THE FRAME CLOCK IS NOT HERE. It was, as a stand-in while the tick was\n // unported; the tick landed on TriDevice (2026-09-18) and the readers moved\n // to Tr2Renderer's statics with it, which is where Carbon declares them\n // (Tr2Renderer.h:125-133).\n\n #debugRenderer = null;\n\n static TextureFilter = Object.freeze({\n TF_NONE: 0,\n TF_POINT: 1,\n TF_LINEAR: 2,\n TF_ANISOTROPIC: 3,\n TF_COMPARISON: 0x80\n });\n\n static TextureAddressMode = Object.freeze({\n TA_WRAP: 1,\n TA_MIRROR: 2,\n TA_CLAMP: 3,\n TA_BORDER: 4,\n TA_MIRROR_ONCE: 5\n });\n\n /** Installs a nominal step executor; null restores direct step execution. */\n SetStepExecutor(executor)\n {\n if (executor !== null && !(executor instanceof CjsTrinityStepExecutor))\n {\n throw new TypeError(\"Tr2RenderContext.SetStepExecutor expects a CjsTrinityStepExecutor or null.\");\n }\n this.#stepExecutor = executor ?? DIRECT_STEP_EXECUTOR;\n return this;\n }\n\n\n\n /**\n * Delegates step setup to the installed nominal executor.\n */\n BeginStep(step, realTime, simTime, job)\n {\n return this.#stepExecutor.BeginStep(step, realTime, simTime, job, this);\n }\n\n /**\n * Delegates step execution to the installed nominal executor.\n */\n /**\n * Installs the abstraction-layer backend this context drives.\n *\n * `Tr2RenderContextALStub` gives a headless context that still carries\n * correct data; an engine installs its own. Passing null restores the\n * recording fallback.\n *\n * @param {object|null} al The backend.\n * @returns {object|null} The backend now installed.\n */\n SetRenderContextAL(al = null)\n {\n // Null RESTORES THE STUB rather than emptying the field: Carbon cannot\n // detach a backend, so neither can this.\n this.#al = al ?? new Tr2RenderContextALStub();\n\n // EVERYTHING THE OLD BACKEND MADE IS THE OLD BACKEND'S. A device is\n // acquired asynchronously, so \"context constructed, effects loaded, AL\n // installed later\" is the ordinary order - and the per-object constant\n // buffers and the realized programs and layouts the state manager keeps per\n // context were all created through the stub. Left in place, WebGPU met a\n // stub buffer at a uniform slot and a stub program at the resource set.\n for (const buffer of this.#perObjectConstantBuffers) buffer?.Destroy();\n this.#perObjectConstantBuffers.fill(null);\n this.#esm.ReleaseRealizedObjects();\n\n return this.#al;\n }\n\n /** The installed backend; never null. */\n GetRenderContextAL()\n {\n return this.#al;\n }\n\n /**\n * Delegates step execution to the installed nominal executor.\n *\n * @param {object} step The step to run.\n * @param {number} realTime Wall-clock time.\n * @param {number} simTime Simulation time.\n * @param {object} job The render job the step belongs to.\n * @returns {*} Whatever the executor reports.\n */\n ExecuteStep(step, realTime, simTime, job)\n {\n return this.#stepExecutor.ExecuteStep(step, realTime, simTime, job, this);\n }\n\n /**\n * Delegates step teardown to the installed nominal executor.\n */\n EndStep(step, realTime, simTime, job)\n {\n return this.#stepExecutor.EndStep(step, realTime, simTime, job, this);\n }\n\n /** Opens the render-job batch scope through the installed executor. */\n BeginBatch(owner)\n {\n return this.#stepExecutor.BeginBatch(owner, this);\n }\n\n /** Closes the render-job batch scope through the installed executor. */\n EndBatch(owner)\n {\n return this.#stepExecutor.EndBatch(owner, this);\n }\n\n // Carbon's context INHERITS BeginScene/EndScene from the abstraction layer\n // (`Tr2RenderContextDx11.h:67-68`, and the same pair on dx12, metal and the\n // stub), and `Tr2Renderer::BeginRenderContext` is a one-line forward to them\n // (`Tr2Renderer.cpp:1066-1081`). The frame bracket therefore belongs to the\n // backend, not to a step executor: the AL stub's own comment already says so,\n // and the WebGPU backend opens its command encoder in BeginScene and submits\n // in EndScene.\n\n /**\n * Opens the backend's scene for this frame.\n *\n * @returns {*} Whatever the backend returns; the stub returns true.\n */\n BeginScene()\n {\n return this.#requireAL(\"BeginScene\").BeginScene();\n }\n\n /**\n * Closes the backend's scene, submitting whatever it recorded.\n *\n * @returns {*} Whatever the backend returns; WebGPU's returns a promise.\n */\n EndScene()\n {\n return this.#requireAL(\"EndScene\").EndScene();\n }\n\n // Carbon: Tr2Renderer::GetPoolAllocator (Tr2Renderer.cpp:1083). The store\n // this returns is the one CjsBatchManager binds onto the batch map, so every\n // GetPerObjectData Alloc leases from it. Every catalogued Carbon struct is\n // registered on it already - Trinity owns the offsets, so an engine supplies\n // nothing to make per-object data work.\n\n /**\n * The per-object constant-data pool for this context, created on first use;\n * an engine or host may replace it with SetTriPoolAllocator.\n */\n GetTriPoolAllocator()\n {\n if (!this.#poolAllocator)\n {\n this.#poolAllocator = new TriPoolAllocator().RegisterCatalog();\n }\n return this.#poolAllocator;\n }\n\n /**\n * Replaces the per-object constant-data pool, for a host that shares one\n * arena across contexts or registers extra structs; passing null restores\n * lazy creation. Returns this for chaining.\n */\n SetTriPoolAllocator(allocator)\n {\n this.#poolAllocator = allocator ?? null;\n return this;\n }\n\n /**\n * Saves the target currently bound to a slot, and binds a new one if given.\n *\n * TWO CARBON CALLS IN ONE, AND THAT SPLIT MATTERS. Carbon's abstraction layer\n * takes only a SLOT and saves whatever is bound there\n * (`Tr2RenderContextDx11.cpp:2178-2188`). The two-argument form is the effect\n * state manager's convenience, and it is push THEN set\n * (`Tr2EffectStateManager.cpp:1048-1052`). This context carries the state\n * manager's verbs, so it does both here and asks the backend only to push.\n *\n * This previously pushed the SUPPLIED target and bound nothing, which meant a\n * render job that pushed a target went on drawing into the previous one -\n * silently, and exactly where an offscreen pass would notice least.\n */\n PushRenderTarget(slot = 0)\n {\n const index = Number(slot) >>> 0;\n\n return this.#requireAL(\"PushRenderTarget\").PushRenderTarget(index);\n }\n\n /**\n * Restores the target saved for a slot, binding it again.\n *\n * Carbon's pop rebinds (`Tr2RenderContextDx11.cpp:2190-2206` ends in\n * `SetRtDsToDevice`), so restoring without binding would leave the pushed\n * target live for the rest of the frame.\n *\n * @returns {boolean} False when nothing was pushed for that slot.\n */\n PopRenderTarget(slot = 0)\n {\n return this.#requireAL(\"PopRenderTarget\").PopRenderTarget(slot);\n }\n\n /** Depth of one slot's render-target stack; zero for a slot never pushed to. */\n GetStackSizeRT(slot = 0)\n {\n return this.#requireAL(\"GetStackSizeRT\").GetStackSizeRT(slot);\n }\n\n /**\n * Saves the bound depth-stencil, and binds a new one if given.\n *\n * The same split as `PushRenderTarget`: Carbon's AL push takes no argument\n * and saves what is bound, while the state manager's one-argument form is\n * push then set (`Tr2EffectStateManager.cpp:1031-1036`).\n */\n PushDepthStencil()\n {\n return this.#requireAL(\"PushDepthStencil\").PushDepthStencil();\n }\n\n /**\n * Restores the saved depth-stencil, binding it again.\n *\n * @returns {boolean} False when nothing was pushed.\n */\n PopDepthStencil()\n {\n return this.#requireAL(\"PopDepthStencil\").PopDepthStencil();\n }\n\n /** Depth of the depth-stencil stack. */\n GetStackSizeDS()\n {\n return this.#requireAL(\"GetStackSizeDS\").GetStackSizeDS();\n }\n\n /**\n * Binds a render target to a slot and records a set-render-target intent for\n * the engine to realize.\n */\n SetRenderTarget(slot, renderTarget, slice = 0)\n {\n // THE BACKEND OWNS THE BINDING, as Carbon's do (m_boundRenderTarget), and\n // GetRenderTarget below reads it back from there. The context kept a\n // duplicate map while it was also a recorder; two copies of one binding is\n // one too many, and the local one was the stale half.\n return this.#requireAL(\"SetRenderTarget\").SetRenderTarget(Number(slot) >>> 0, renderTarget, Number(slice) >>> 0);\n }\n\n // THE BACKEND'S FRAME CLOCK, WHICH IS NOT TRINITY'S.\n // `Tr2Renderer.GetCurrentFrameCounter` counts frames the render path has\n // begun. These two count frames the BACKEND has recorded and retired, and the\n // gap between them is what a ring buffer fences against: rows recorded for a frame cannot\n // be reused until the device reports that frame finished. Carbon keeps them\n // per backend (`Tr2PrimaryRenderContextDx11.h:46-47`), so they are the\n // abstraction layer's to answer and this only forwards.\n\n /**\n * The frame the device is recording now.\n *\n * @returns {number} The frame number, or zero with no backend installed.\n */\n GetRecordingFrameNumber()\n {\n return this.#al ? this.#al.GetRecordingFrameNumber() : 0;\n }\n\n /**\n * The last frame the device has finished.\n *\n * @returns {number} The frame number, or zero with no backend installed.\n */\n GetRenderedFrameNumber()\n {\n return this.#al ? this.#al.GetRenderedFrameNumber() : 0;\n }\n\n /**\n * Whether a device exists behind this context.\n *\n * Carbon's context answers this because it INHERITS the abstraction layer,\n * so every AL call that takes a context - a buffer create, a texture map -\n * can be handed the Trinity one. Ours composes instead, so the question is\n * forwarded rather than inherited, and the callers read the same.\n *\n * @returns {boolean} True once a backend is installed and has a device.\n */\n IsValid()\n {\n return this.#al ? this.#al.IsValid() : false;\n }\n\n /**\n * The extent of a bound render target.\n *\n * Carbon's context answers this because it IS the abstraction layer\n * (`Tr2RenderContextDx11.cpp` GetRenderTargetSize), and the effect state\n * manager asks it rather than measuring a texture, because a bound target\n * may be a null one.\n *\n * @param {number} [slot] Target slot.\n * @returns {{result: number, width: number, height: number}} The extent.\n */\n GetRenderTargetSize(slot = 0)\n {\n return this.#requireAL(\"GetRenderTargetSize\").GetRenderTargetSize(slot);\n }\n\n /**\n * The render target currently bound to a slot, or null when that slot was\n * never set.\n *\n * THE BACKEND OWNS THE BINDING WHEN THERE IS ONE. Carbon has no split to\n * bridge here - its `Tr2RenderContext` IS `Tr2RenderContextBase` plus\n * `Tr2RenderContextAL`, so there is one piece of state. Ours composes the two,\n * and a getter that answered from the recording path while the backend held\n * the real binding would report a target nothing is drawing to.\n */\n GetRenderTarget(slot = 0)\n {\n return this.#requireAL(\"GetRenderTarget\").GetRenderTarget(slot);\n }\n\n /** Binds the depth-stencil surface and records a set-depth-stencil intent. */\n SetDepthStencil(depthStencil)\n {\n this.#depthStencil = depthStencil ?? null;\n\n return this.#requireAL(\"SetDepthStencil\").SetDepthStencil(this.#depthStencil);\n }\n\n /** The currently bound depth-stencil surface, or null. */\n GetDepthStencil()\n {\n return this.#requireAL(\"GetDepthStencil\").GetDepthStencil();\n }\n\n /**\n * Clears the bound attachments, with separate colour, depth and stencil\n * enables.\n *\n * @param {object} options `{ color, depth, stencil, clearColor, clearDepth,\n * clearStencil }`.\n * @returns {boolean} Whether the backend accepted the clear.\n */\n Clear(options)\n {\n return this.#requireAL(\"Clear\").Clear(options);\n }\n\n /**\n * Binds the depth buffer read-only, so it can be sampled while still tested.\n *\n * Carbon reaches this straight off the context because its Tr2RenderContext IS\n * the backend context; ours forwards, like every other device verb here.\n *\n * @param {boolean} enable Whether depth is read-only.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetReadOnlyDepth(enable)\n {\n return this.#requireAL(\"SetReadOnlyDepth\").SetReadOnlyDepth(enable);\n }\n\n /**\n * Declares what the next render pass does with its attachments.\n *\n * Carbon calls this on the render context (`Tr2Denoiser.cpp:106` and each\n * pass after it). It is a BACKEND concept - Metal names the record\n * `MetalRenderPassHint` and WebGPU spells the same thing as loadOp/storeOp on\n * a pass descriptor - so this forwards, exactly as SetReadOnlyDepth does.\n *\n * Declaring DONT_CARE for a target about to be fully overwritten is the\n * difference between the driver preserving its previous contents and\n * discarding them; on a tiler that is the whole cost of the pass.\n *\n * @param {...object} attachments Colour attachments, then depth.\n * @returns {*} Whatever the backend reports.\n */\n RenderPassHint(...attachments)\n {\n return this.#requireAL(\"RenderPassHint\").RenderPassHint(...attachments);\n }\n\n /**\n * The projection with its depth range reversed.\n *\n * Carbon `Tr2Renderer::GetReversedDepthProjectionTransform`\n * (`Tr2Renderer.cpp:477-483`): the projection with `_33` negated and offset\n * by one, and `_43` negated. It lives here because this runtime keeps the\n * projection here - the same relocation as the other Tr2Renderer statics.\n *\n * WHO NEEDS IT: a pass reconstructing view-space position from a depth\n * buffer written under reverse-Z, which is what Carbon renders with. The\n * denoiser takes it to weight neighbouring samples by depth.\n *\n * @param {Array<number>} [out] A mat4 to receive it.\n * @returns {Array<number>|null} The reversed projection, or null if unset.\n */\n GetReversedDepthProjectionTransform(out = mat4.create())\n {\n if (!this.#projection) return null;\n\n mat4.copy(out, this.#projection);\n // Carbon indexes _33 and _43 in row-major; column-major here puts them at\n // 10 and 14.\n out[10] = -out[10] - 1;\n out[14] = -out[14];\n return out;\n }\n\n /**\n * What the installed backend can do.\n *\n * Carbon reaches capabilities through the context and nowhere else\n * (`TriDevice.cpp:1295-1300,1399-1403` both read\n * `renderContext.GetCaps().SupportsX()`), so this is the only door.\n *\n * With no backend there is nothing to ask, and answering anyway would mean\n * inventing a capability set - so it fails rather than guessing.\n *\n * @returns {object} The backend capabilities.\n */\n GetCaps()\n {\n if (!this.#al)\n {\n throw new Error(\"Tr2RenderContext has no render-context AL installed; capabilities belong to one.\");\n }\n\n return this.#al.GetCaps();\n }\n\n // THE GEOMETRY BINDING FAMILY, which forwards to the AL and fails without one.\n //\n // Every other verb here has a recording fallback, because the intent stream\n // has a vocabulary for it. These have none, and inventing one would be\n // building exactly what the WebGPU AL is about to replace. Carbon's\n // `SubmitGeometry` (`Tr2RenderContext.cpp:83-103`) is the sequence they\n // exist for: topology, then the declaration, streams and indices through the\n // state manager's `Apply*` redundancy filter, then the draw.\n\n /**\n * Sets the primitive topology for following draws.\n *\n * @param {number} topology A `Topology` value, NOT a `D3dPrimitiveTopology`.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetTopology(topology)\n {\n return this.#requireAL(\"SetTopology\").SetTopology(topology);\n }\n\n /**\n * The per-object constant buffer for one slot, created on first use.\n *\n * Carbon `Tr2RenderContext::GetConstantBuffer` (`Tr2RenderContext.h:56-59`),\n * which returns a pointer into `m_perObjectConstantBuffers` - an array of\n * `CBUFFER_COUNT` value members, one per shader stage plus a GUI slot.\n *\n * THE CONTEXT OWNING THESE IS THE POINT, not an implementation detail.\n * `RenderBatchGroup` collects them once and hands the same array to every\n * batch in a group, so a group of two hundred objects refills one buffer per\n * stage rather than allocating two hundred. A per-draw allocation would be\n * correct and unusably slow.\n *\n * Carbon default-constructs them eagerly and they are invalid until\n * `FillAndSetConstants` creates one at the size it needs; ours are made on\n * first ask, which reaches the same state without holding seven objects a\n * headless context never uses.\n *\n * @param {number} slot A `ShaderType`, or `CBUFFER_GUI`.\n * @returns {object|null} A `Tr2ConstantBufferAL`, or null for a bad slot.\n */\n GetConstantBuffer(slot)\n {\n if (!Number.isInteger(slot) || slot < 0 || slot >= ConstantBufferSlot.CBUFFER_COUNT) return null;\n\n // The backend's kind, not the stub's. This constructed `Tr2ConstantBufferALStub`\n // directly, so per-object constants landed in a CPU shadow on every\n // backend - the same hard-wiring `Tr2RingBuffer` had, fixed the same way.\n this.#perObjectConstantBuffers[slot] ??= this.CreateConstantBuffer();\n\n return this.#perObjectConstantBuffers[slot];\n }\n\n /**\n * Every per-object constant buffer, in slot order, for handing to a batch\n * group. Carbon builds this array on the stack in `RenderBatchGroup`.\n *\n * @returns {Array<object>} One `Tr2ConstantBufferAL` per slot.\n */\n GetConstantBuffers()\n {\n return Array.from(\n { length: ConstantBufferSlot.CBUFFER_COUNT },\n (unused, slot) => this.GetConstantBuffer(slot)\n );\n }\n\n #perObjectConstantBuffers = new Array(ConstantBufferSlot.CBUFFER_COUNT).fill(null);\n\n /**\n * Binds a realized resource set for following draws.\n *\n * Carbon's `Tr2Material::ApplyMaterialDataForPass` ends in exactly this call.\n * Trinity fills a `Tr2ResourceSetDescriptionAL`, the abstraction layer turns\n * it into whatever its API calls a bind group, and this binds the result.\n *\n * @param {object} resourceSet A `Tr2ResourceSetAL`.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetResourceSet(resourceSet)\n {\n return this.#requireAL(\"SetResourceSet\").SetResourceSet(resourceSet);\n }\n\n /**\n * Binds a constant buffer to one shader stage at one register.\n *\n * @param {object} buffer A `Tr2ConstantBufferAL`.\n * @param {number} constantType A `ShaderType`.\n * @param {number} registerIndex The constant-buffer register.\n * @param {number} [maxRegisterCount] Carbon's optional bound.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetConstants(buffer, constantType, registerIndex, maxRegisterCount = 0)\n {\n return this.#requireAL(\"SetConstants\").SetConstants(buffer, constantType, registerIndex, maxRegisterCount);\n }\n\n /**\n * Binds one vertex stream. Reached through `ApplyStreamSource`, which filters\n * a redundant bind out first.\n *\n * @param {number} stream The stream index.\n * @param {object} buffer A `Tr2BufferAL`.\n * @param {number} offset Byte offset into the buffer.\n * @param {number} stride Bytes per vertex.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetStreamSource(stream, buffer, offset, stride)\n {\n return this.#requireAL(\"SetStreamSource\").SetStreamSource(stream, buffer, offset, stride);\n }\n\n /**\n * Binds the index buffer. Reached through `ApplyIndexBuffer`.\n *\n * @param {object} buffer A `Tr2BufferAL`.\n * @param {number} [stride] Bytes per index.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetIndices(buffer, stride = 0)\n {\n return this.#requireAL(\"SetIndices\").SetIndices(buffer, stride);\n }\n\n /**\n * Creates a buffer of the running backend's kind.\n *\n * Carbon's `Tr2BufferAL` is a compile-time platform typedef, so a Trinity\n * class declares one and the build picks the implementation. Here the context\n * picks it, which is the same authority: Carbon's `Create` already takes a\n * `Tr2PrimaryRenderContextAL&`. A Trinity class that imports a concrete\n * buffer instead picks a backend at authoring time.\n *\n * @param {object} description A `Tr2BufferDescriptionAL`.\n * @param {ArrayBufferView|null} [initialData] Initial contents, if any.\n * @returns {object|null} The buffer, or null when the backend refused.\n */\n CreateBuffer(description, initialData = null)\n {\n return this.#requireAL(\"CreateBuffer\").CreateBuffer(description, initialData);\n }\n\n /**\n * Creates a constant buffer of the running backend's kind.\n *\n * The same reason `CreateBuffer` is here. Carbon default-constructs a\n * `Tr2ConstantBufferAL` member and sizes it later (`FillAndSetConstants`,\n * `Tr2MaterialStageInput::AllocateConstants`); a caller here asks for the\n * empty object with no size and fills it the same way.\n *\n * @param {number} [size] Bytes; zero returns an empty, invalid buffer.\n * @param {number} [usage] A `Tr2ConstantUsageAL`.\n * @param {ArrayBufferView|null} [initialData] Initial contents, if any.\n * @returns {object|null} A `Tr2ConstantBufferAL`, or null when a sized Create refused.\n */\n CreateConstantBuffer(size = 0, usage = undefined, initialData = null)\n {\n return this.#requireAL(\"CreateConstantBuffer\").CreateConstantBuffer(size, usage, initialData);\n }\n\n /**\n * The running backend's sampler state for a description.\n *\n * Carbon's `Tr2SamplerStateAL::Create` is a factory lookup on the primary\n * context; equal descriptions are one state. Created at effect load\n * (`Tr2EffectDescription.cpp:436`) and for sampler overrides\n * (`Tr2Effect.cpp:690`), both through the main-thread context, which is\n * `Tr2RenderContext_GetMainThreadRenderContext()` here.\n *\n * @param {object} description A `Tr2SamplerDescription`.\n * @returns {object|null} A `Tr2SamplerStateAL`, shared, or null.\n */\n CreateSamplerState(description)\n {\n return this.#requireAL(\"CreateSamplerState\").CreateSamplerState(description);\n }\n\n /**\n * Creates a resource set of the running backend's kind from a filled\n * description and the realized program it binds against.\n *\n * Carbon's `Tr2ResourceSetAL::Create( description, program, context )` is a\n * member call on a default-constructed set (`Tr2Material.cpp:234`); the\n * context makes it here for the reason `CreateBuffer` is here.\n *\n * @param {object} description A `Tr2ResourceSetDescriptionAL`.\n * @param {object} program A `Tr2ShaderProgramAL`.\n * @returns {object|null} A `Tr2ResourceSetAL`, or null when Create refused.\n */\n @impl.custom\n @impl.reason(\"Forwards JS platform selection and its internal allocation mode to the installed abstraction-layer context.\")\n CreateResourceSet(description, program, implementationOnly = false)\n {\n return this.#requireAL(\"CreateResourceSet\").CreateResourceSet(description, program, implementationOnly);\n }\n\n /**\n * Creates a texture of the running backend's kind.\n *\n * Carbon's `Tr2TextureAL::Create( desc, usage, cpuUsage, initialData, ctx )`\n * on a default-constructed member (`Tr2ImageIOHelpers.cpp:126`); the context\n * makes it here for the reason `CreateBuffer` is here.\n *\n * @param {object} desc A `Tr2BitmapDimensions`.\n * @param {object} options `{ gpuUsage, cpuUsage, msaa, initialData }`.\n * @returns {object|null} A `Tr2TextureAL`, or null when Create refused.\n */\n CreateTexture(desc, options)\n {\n return this.#requireAL(\"CreateTexture\").CreateTexture(desc, options);\n }\n\n /**\n * Creates the running backend's vertex layout from a vertex definition.\n *\n * The same reason `CreateBuffer` is here. Carbon's effect state manager holds\n * a `Tr2VertexLayoutAL` in its own intern table and calls `hvl.Create` on\n * first use (`Tr2EffectStateManager.cpp:899-906`), which it can do because\n * one backend is compiled. The manager here cannot name a layout class, so it\n * asks the context, which knows which backend it holds.\n *\n * @param {object[]|object} definition The vertex element list or definition.\n * @returns {object|null} A `Tr2VertexLayoutAL`, or null when Create refused.\n */\n CreateVertexLayout(definition)\n {\n return this.#requireAL(\"CreateVertexLayout\").CreateVertexLayout(definition);\n }\n\n /**\n * Creates one shader stage on the running backend.\n *\n * @param {number} stageType A `ShaderType`.\n * @param {ArrayBufferView|string} bytecode The stage's bytecode.\n * @param {object|null} signature The reflected signature.\n * @param {string} [shaderPath] A debug label.\n * @returns {object|null} A `Tr2ShaderAL`, or null when Create refused.\n */\n CreateShader(stageType, bytecode, signature, shaderPath = \"\")\n {\n return this.#requireAL(\"CreateShader\").CreateShader(stageType, bytecode, signature, shaderPath);\n }\n\n /**\n * Links created stages into a program on the running backend.\n *\n * @param {object[]} shaders The stages to link.\n * @returns {object|null} A `Tr2ShaderProgramAL`, or null when Create refused.\n */\n CreateShaderProgram(shaders)\n {\n return this.#requireAL(\"CreateShaderProgram\").CreateShaderProgram(shaders);\n }\n\n /**\n * Binds the shader program following draws use.\n *\n * Carbon's effect state manager calls this from `ApplyShaderProgram`\n * (`Tr2EffectStateManager.cpp:770-776`), and a NULL program is the unbind its\n * else branch performs with a default-constructed one. This context had no\n * such method at all until 2026-09-09, which is why the manager recorded a\n * handle and bound nothing.\n *\n * @param {object|null} shaderProgram A `Tr2ShaderProgramAL`, or null to unbind.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetShaderProgram(shaderProgram)\n {\n return this.#requireAL(\"SetShaderProgram\").SetShaderProgram(shaderProgram);\n }\n\n /**\n * The fullscreen-quad blitter, created on first use.\n *\n * WHERE CARBON PUTS IT, AND WHY WE DO NOT. Carbon holds one in a file-scope\n * `s_blitter` in `Tr2Renderer.cpp:25`, immediately under its own comment:\n * \"The whole s_blitter thing needs to be rethough anyway.\" Its\n * `DrawTexture`/`DrawFullScreenWithShader` statics are three-line wrappers\n * that null-check it.\n *\n * Ours is per-context because `Tr2Renderer` here is deliberately NOT a\n * process-wide singleton - see that file's head comment, which explains that\n * two libraries with two resource managers would silently share one. The\n * blitter owns a vertex buffer created against a context, so a context is\n * exactly the lifetime it wants, and every render step already has one.\n *\n * @returns {Tr2Blitter} The blitter.\n */\n GetBlitter()\n {\n this.#blitter ??= new Tr2Blitter();\n\n return this.#blitter;\n }\n\n // Carbon's four immediate draws (Tr2RenderContext.h). Trinity calls these\n // directly - Tr2Blitter ends DrawHelper with SetTopology + DrawPrimitive, and\n // TriStepRenderDebug draws its line vertices with DrawPrimitiveUP - so the\n // context needs them even though the AL is what does the work. They were\n // missing for the usual reason: the batch path never reaches them, and the\n // batch path was all that had been driven.\n\n /**\n * Draws non-indexed from the bound stream source.\n *\n * @param {number} startVertex First vertex to read.\n * @param {number} primitiveCount Primitives to draw.\n * @returns {boolean} Whether the AL accepted the draw.\n */\n DrawPrimitive(startVertex, primitiveCount)\n {\n return this.#requireAL(\"DrawPrimitive\").DrawPrimitive(startVertex, primitiveCount);\n }\n\n /**\n * Draws indexed from the bound stream source and index buffer.\n *\n * @param {number} numVertices Vertices the index range spans.\n * @param {number} startIndex First index to read.\n * @param {number} primitiveCount Primitives to draw.\n * @param {number} [minimumIndex] Smallest index value in the range.\n * @returns {boolean} Whether the AL accepted the draw.\n */\n DrawIndexedPrimitive(numVertices, startIndex, primitiveCount, minimumIndex = 0)\n {\n return this.#requireAL(\"DrawIndexedPrimitive\").DrawIndexedPrimitive(numVertices, startIndex, primitiveCount, minimumIndex);\n }\n\n /**\n * Draws non-indexed straight from caller memory, with no buffer bound.\n *\n * @param {number} primitiveCount Primitives to draw.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @returns {boolean} Whether the AL accepted the draw.\n */\n DrawPrimitiveUP(primitiveCount, vertexStreamZeroData, vertexStreamZeroStride)\n {\n return this.#requireAL(\"DrawPrimitiveUP\").DrawPrimitiveUP(primitiveCount, vertexStreamZeroData, vertexStreamZeroStride);\n }\n\n /**\n * Draws indexed straight from caller memory. The index width is carried by\n * the array's own type rather than Carbon's two separate overloads.\n *\n * @param {number} numVertices Vertices the index data spans.\n * @param {number} primitiveCount Primitives to draw.\n * @param {ArrayBufferView} indexData The indices.\n * @param {ArrayBufferView} vertexStreamZeroData The vertices.\n * @param {number} vertexStreamZeroStride Bytes per vertex.\n * @returns {boolean} Whether the AL accepted the draw.\n */\n DrawIndexedPrimitiveUP(numVertices, primitiveCount, indexData, vertexStreamZeroData, vertexStreamZeroStride)\n {\n return this.#requireAL(\"DrawIndexedPrimitiveUP\")\n .DrawIndexedPrimitiveUP(numVertices, primitiveCount, indexData, vertexStreamZeroData, vertexStreamZeroStride);\n }\n\n /**\n * Binds the vertex declaration. Reached through `ApplyVertexDeclaration`.\n *\n * @param {object} layout A `Tr2VertexLayoutAL`.\n * @returns {boolean} Whether the AL accepted it.\n */\n SetVertexLayout(layout)\n {\n return this.#requireAL(\"SetVertexLayout\").SetVertexLayout(layout);\n }\n\n /**\n * Draws the bound geometry, indexed.\n *\n * @param {number} indexCountPerInstance Indices each instance reads.\n * @param {number} instanceCount Instances to draw.\n * @param {number} startIndexLocation First index to read.\n * @param {number} baseVertexLocation Value added to every index.\n * @param {number} startInstanceLocation First instance id.\n * @returns {boolean} Whether the AL accepted it.\n */\n DrawIndexedInstanced(\n indexCountPerInstance,\n instanceCount,\n startIndexLocation,\n baseVertexLocation,\n startInstanceLocation\n )\n {\n return this.#requireAL(\"DrawIndexedInstanced\").DrawIndexedInstanced(\n indexCountPerInstance,\n instanceCount,\n startIndexLocation,\n baseVertexLocation,\n startInstanceLocation\n );\n }\n\n /**\n * Draws the bound geometry, non-indexed.\n *\n * @param {number} vertexCountPerInstance Vertices each instance reads.\n * @param {number} instanceCount Instances to draw.\n * @param {number} startVertexLocation First vertex to read.\n * @param {number} startInstanceLocation First instance id.\n * @returns {boolean} Whether the AL accepted it.\n */\n DrawInstanced(vertexCountPerInstance, instanceCount, startVertexLocation, startInstanceLocation)\n {\n return this.#requireAL(\"DrawInstanced\").DrawInstanced(\n vertexCountPerInstance,\n instanceCount,\n startVertexLocation,\n startInstanceLocation\n );\n }\n\n /**\n * The installed backend, or a failure naming the verb that needed one.\n *\n * @param {string} verb The verb being forwarded.\n * @returns {object} The render-context AL.\n */\n // There is no \"no backend\" case to guard - the field defaults to the stub and\n // a null assignment restores it. What remains worth checking is whether the\n // installed backend implements the verb: without this, a backend that has not\n // yet ported one fails as \"this.#al.Foo is not a function\" from inside a\n // pass-through, which reads like a typo in Trinity rather than a gap in the\n // backend.\n #requireAL(verb)\n {\n if (typeof this.#al[verb] !== \"function\")\n {\n throw new Error(`${this.#al.constructor.name} does not implement ${verb}.`);\n }\n\n return this.#al;\n }\n\n /**\n * The effect state manager this context owns.\n *\n * @returns {Tr2EffectStateManager} The manager.\n */\n GetEffectStateManager()\n {\n return this.#esm;\n }\n\n /** GPU-free validity check: any non-null render target counts as valid. */\n IsRenderTargetValid(renderTarget)\n {\n return this.#requireAL(\"IsRenderTargetValid\").IsRenderTargetValid(renderTarget);\n }\n\n /**\n * Records a resolve intent moving a multisampled source into a resolved\n * destination.\n */\n ResolveRenderTarget(source, destination)\n {\n return this.#requireAL(\"ResolveRenderTarget\").ResolveRenderTarget(source, destination);\n }\n\n /**\n * Records a copy-render-target intent, spreading the caller's descriptor\n * fields into it.\n */\n CopyRenderTarget(intent)\n {\n return this.#requireAL(\"CopyRenderTarget\").CopyRenderTarget(intent);\n }\n\n /** Records a generate-mipmaps intent for a render target. */\n GenerateMipMaps(renderTarget)\n {\n return this.#requireAL(\"GenerateMipMaps\").GenerateMipMaps(renderTarget);\n }\n\n /**\n * Draws one finalized batch accumulator.\n *\n * Carbon's RenderBatches (Tr2RenderContext.h:37-52) walks the accumulator and\n * issues draws immediately, through `RenderBatchesInOrder`, and so does this.\n * THE BACKEND IS NEVER HANDED A BATCH: Carbon declares this family on\n * `Tr2RenderContext.h` and a grep of `trinity/trinityal/` finds none of it.\n * Until 2026-09-10 this forwarded to an AL method of the same name, which is\n * the inversion the whole lane was opened to undo - the backend then needed\n * a resolver and a dispatcher to turn batches into bindings, and the\n * material's own apply was never reached.\n *\n * The accumulator is passed by reference, not copied. It is finalized by the\n * time it arrives - sorting and grouping are Trinity's - and copying it would\n * lose the group runs that Finalize wrote.\n *\n * @param {object} batches Finalized accumulator.\n * @param {string} [techniqueName] Carbon's DEFAULT_TECHNIQUE.\n * @returns {boolean} Whether an accumulator was walked.\n */\n RenderBatches(batches, techniqueName = DEFAULT_TECHNIQUE)\n {\n if (!batches) return false;\n\n this.RenderBatchesInOrder(batches, techniqueName);\n\n return true;\n }\n\n /**\n * Binds one batch's geometry and draws it.\n *\n * Carbon's free function `SubmitGeometry` (`Tr2RenderContext.cpp:83-103`),\n * verbatim in order: topology, declaration, both streams, then either the\n * index buffer and an indexed draw or a non-indexed one.\n *\n * A STREAM HERE MAY BE A DESCRIPTOR RATHER THAN A BUFFER. Carbon's batches\n * carry realized allocations because `Tr2MeshBase::CreateGeometryBatch` bakes\n * them in during collection; ours carry a geometry-resource descriptor that\n * something realizes later (`Tr2RenderBatch.geometrySource`). This passes\n * whatever the batch holds, exactly as Carbon does, and it is the backend's\n * business what it receives - which is the point of the boundary.\n *\n * @param {object} batch A `Tr2RenderBatch`.\n * @returns {boolean} Whether the draw was accepted.\n */\n SubmitGeometry(batch)\n {\n // A MESH BATCH ARRIVES WITH A DESCRIPTOR, NOT BUFFERS. Carbon's\n // TriGeometryRes suballocates a LOD's vertex and index data into the shared\n // geometry buffer at LOAD, through the main-thread context\n // (TriGeometryRes.cpp:2019-2140), and the batch carries the allocations'\n // buffers. Our geometry resource cannot reach a context, so the LOD's\n // allocations are made here, at the first submit through THIS context, and\n // the batch's streams and draw arguments are set from them exactly as\n // CreateGeometryBatch sets them in Carbon (Tr2MeshBase.cpp:372-392).\n if (batch.geometrySource && !batch.vertexStreams[0]) RealizeBatchGeometry(batch, this);\n\n this.SetTopology(batch.topology);\n this.#esm.ApplyVertexDeclaration(batch.vertexDeclaration);\n\n if (batch.vertexStreams[0]) this.#esm.ApplyStreamSource(0, batch.vertexStreams[0], 0, batch.stride[0]);\n if (batch.vertexStreams[1]) this.#esm.ApplyStreamSource(1, batch.vertexStreams[1], 0, batch.stride[1]);\n\n if (batch.indexBuffer)\n {\n this.#esm.ApplyIndexBuffer(batch.indexBuffer, batch.indexStride);\n\n return this.DrawIndexedInstanced(\n batch.indexCountPerInstance,\n batch.instanceCount,\n batch.startIndexLocation,\n batch.baseVertexLocation,\n batch.startInstanceLocation\n );\n }\n\n return this.DrawInstanced(\n batch.indexCountPerInstance,\n batch.instanceCount,\n batch.startIndexLocation,\n batch.startInstanceLocation\n );\n }\n\n /**\n * Draws every batch in the accumulator's own order.\n *\n * Carbon `Tr2RenderContextBase::RenderBatchesInOrder`\n * (`Tr2RenderContext.cpp:357-430`). THE WALK IS TRINITY'S, and that is the\n * whole point of it being here: Carbon declares this on `Tr2RenderContext.h`,\n * not on any abstraction-layer header, and a grep of `trinity/trinityal/`\n * finds no `RenderBatches` at all. The backend is handed verbs - topology,\n * resource set, constants, draw - and never a batch, a material or an\n * accumulator.\n *\n * Carbon's three `Tr2RingBuffer::PrepareBuffer` calls at the top are not\n * ported: the ring buffer's device half is the AL's, and preparing it from\n * here would reach past the boundary this method exists to restore.\n *\n * @param {object} batches A finalized accumulator.\n * @param {string} [techniqueName] The technique to draw.\n * @returns {number} How many passes were submitted.\n */\n RenderBatchesInOrder(batches, techniqueName = DEFAULT_TECHNIQUE, overrideMaterial = null)\n {\n if (!batches) return 0;\n\n // Carbon's override walk substitutes the override material - and its\n // shader - for every batch's (`RenderBatchesWithOverride`, cpp:810-814);\n // the geometry and per-object data stay the batch's own.\n const shaderOf = batch => (overrideMaterial ? overrideMaterial.GetShaderStateInterface() : batch.shader);\n const materialOf = batch => overrideMaterial ?? batch.material;\n\n let lastShader = null;\n let currentObjectData = null;\n let technique = 0;\n let passCount = 0;\n let shaderMask = 0;\n let drawn = 0;\n\n for (const batch of batches.GetBatches())\n {\n // RM_ANY means \"whatever is already set\", so Carbon skips the apply\n // rather than applying a mode called any.\n if (batch.renderingMode !== RenderingMode.RM_ANY)\n {\n this.#esm.ApplyStandardStates(batch.renderingMode);\n }\n\n const shader = shaderOf(batch);\n\n if (shader !== lastShader)\n {\n // Direct, as Carbon is: a batch with no shader is not valid, and\n // Tr2RenderBatch.IsValid uses the shader as its key.\n const found = shader.GetTechniqueIndex(techniqueName);\n\n // Carbon `continue`s on both of these, which SKIPS THE BATCH and\n // leaves lastShader unchanged, so the next batch re-tests. Reproduced\n // rather than tidied into a cached failure.\n //\n // AND `technique` MUST NOT BE CLOBBERED ON THE WAY OUT. Carbon's\n // GetTechniqueIndex is an out-parameter that it does NOT write when it\n // returns false (`Tr2Shader.cpp:28-46`), so the variable keeps the\n // previous batch's value. Assigning -1 here was wrong in a way only a\n // three-batch sequence shows: S1, S2, S1 - the middle one fails and\n // leaves -1 behind, and the third takes the `shader === lastShader`\n // fast path and draws with technique -1.\n if (found < 0) continue;\n\n technique = found;\n\n passCount = shader.GetPassCount(technique);\n\n if (passCount === 0) continue;\n\n shaderMask = shader.GetShaderTypeMask(technique);\n lastShader = shader;\n }\n\n if (batch.objectData && batch.objectData !== currentObjectData)\n {\n // Carbon fills an array of POINTERS into m_perObjectConstantBuffers\n // before the loop, so every slot exists. Ours are created on demand by\n // GetConstantBuffer, so the array is materialised the same way.\n const buffers = Array.from(\n { length: ConstantBufferSlot.CBUFFER_COUNT },\n (_unused, slot) => this.GetConstantBuffer(slot)\n );\n\n // STATIC, TAKING THE DATA. Carbon dispatches this on the per-object\n // data's subclass, so the port was written as a method call on\n // `batch.objectData` - but almost nothing here IS a `Tr2PerObjectData`:\n // every renderable's `GetPerObjectData` returns a plain `{ vs, ps }`\n // pair of `RawData` records, which is why the method beside the data is\n // static and takes it. Calling it on the data threw `TypeError` for\n // every batch that carried any, so NO REAL RENDERABLE COULD DRAW - the\n // existing tests walk batches with no per-object data at all, and a\n // real hull found it in one frame.\n Tr2PerObjectData.setPerObjectDataToDevice(batch.objectData, buffers, shaderMask, this);\n currentObjectData = batch.objectData;\n }\n\n for (let passIndex = 0; passIndex < passCount; passIndex += 1)\n {\n shader.ApplyAllStateForPass(technique, passIndex, this);\n materialOf(batch).ApplyMaterialDataForPass(technique, passIndex, this);\n\n this.SubmitGeometry(batch);\n\n // COUNTED PER PASS, INSIDE THE LOOP, which is where Carbon counts\n // (`Tr2RenderContext.cpp:424-425`, batchCount and batchNormalDraws).\n // Counting after the loop counted a batch whose passCount was zero -\n // reachable through a stale passCount left by a previous batch on the\n // same shader - as a batch that drew.\n drawn += 1;\n }\n }\n\n return drawn;\n }\n\n /**\n * Records a submission drawn with a material substituted for every batch's\n * own, which is how Carbon renders a depth or picking pass over geometry\n * authored for colour (RenderBatchesWithOverride, Tr2RenderContext.cpp:806).\n *\n * A null override is Carbon's own no-op: it falls straight through to\n * RenderBatches (cpp:810-814), and a port that treated null as \"no draw\"\n * would silently drop the default visualizer path.\n *\n * @param {object} batches Finalized accumulator.\n * @param {object|null} overrideMaterial Material to substitute, or null.\n * @param {string} [techniqueName] Carbon's DEFAULT_TECHNIQUE.\n * @returns {boolean} Whether the submission was recorded.\n */\n RenderBatchesWithOverride(batches, overrideMaterial = null, techniqueName = DEFAULT_TECHNIQUE)\n {\n if (!batches) return false;\n if (!overrideMaterial) return this.RenderBatches(batches, techniqueName);\n\n this.RenderBatchesInOrder(batches, techniqueName, overrideMaterial);\n\n return true;\n }\n\n /**\n * Records a submission for picking, which Carbon separates because it reads\n * the batch's user data as an object id rather than shading it\n * (RenderBatchesForPicking, Tr2RenderContext.h:44).\n *\n * @param {object} batches Finalized accumulator.\n * @param {string} [techniqueName] Carbon's DEFAULT_TECHNIQUE.\n * @returns {boolean} Whether the submission was recorded.\n */\n RenderBatchesForPicking(_batches, _techniqueName = DEFAULT_TECHNIQUE)\n {\n // NOT PORTED. Carbon's picking walk stamps each batch's user data into the\n // global \"objectId\" variable and draws the picking technique; the 32-bit\n // target and the readback are not here yet (docs: \"Why no Carbon picker\").\n // Refuses by name rather than drawing a colour pass that returns pixels.\n throw new Error(\"Tr2RenderContext.RenderBatchesForPicking is not ported.\");\n }\n\n // THE FOUR BELOW ARE NOT PORTED, AND THEY REFUSE RATHER THAN RECORD.\n //\n // Each used to push an intent nothing ever read - the queue's whole failure\n // mode: a call that reports success and moves nothing. Refusing by name costs\n // a caller one clear error instead of a silent absence they debug elsewhere.\n //\n // What each actually needs:\n // DrawLineSet - line rendering; Carbon has no TriStepDrawLineSet, this\n // verb is ours (see the non-Carbon extension register).\n // RenderAtlas - Tr2TextureAtlas, an unported shell with no\n // GetFreeAreas/GetUsedAreas/GetMargin. Debug visualiser.\n // RenderLineGraphs - Tr2Renderer::PrintfImmediate, so fonts.\n // RenderDebug - DrawPrimitiveUP plus fonts.\n\n /** NOT PORTED: line rendering. @returns {never} Always throws. */\n DrawLineSet(_lineSet)\n {\n throw new Error(\"Tr2RenderContext.DrawLineSet is not ported; it needs the line-rendering path.\");\n }\n\n /**\n * Records a clear-unordered-access-view intent; the clear value is copied by\n * value and clearWithFloat selects float rather than integer clearing.\n */\n ClearUav(buffer, value, clearWithFloat = false)\n {\n return this.#requireAL(\"ClearUav\").ClearUav(buffer, value, clearWithFloat);\n }\n\n /** NOT PORTED: needs Tr2TextureAtlas. @returns {never} Always throws. */\n RenderAtlas(_step)\n {\n throw new Error(\"Tr2RenderContext.RenderAtlas is not ported; Tr2TextureAtlas is an unported shell.\");\n }\n\n /** NOT PORTED: needs the font path. @returns {never} Always throws. */\n RenderLineGraphs(_step)\n {\n throw new Error(\"Tr2RenderContext.RenderLineGraphs is not ported; it needs Tr2Renderer::PrintfImmediate.\");\n }\n\n /** NOT PORTED: needs DrawPrimitiveUP and fonts. @returns {never} Always throws. */\n RenderDebug(_debugStep)\n {\n throw new Error(\"Tr2RenderContext.RenderDebug is not ported; it needs DrawPrimitiveUP and the font path.\");\n }\n\n /**\n * Records a compute-dispatch intent with an explicit thread-group count per\n * axis.\n */\n RunComputeShader(effect, groupDimX = 1, groupDimY = 1, groupDimZ = 1)\n {\n return this.#requireAL(\"RunComputeShader\").RunComputeShader(effect, groupDimX, groupDimY, groupDimZ);\n }\n\n /**\n * Records an indirect compute-dispatch intent reading its group counts from a\n * buffer at the given byte offset.\n */\n RunComputeShaderIndirect(effect, indirectionBuffer, offsetForArgs = 0)\n {\n return this.#requireAL(\"RunComputeShaderIndirect\").RunComputeShaderIndirect(effect, indirectionBuffer, offsetForArgs);\n }\n\n /** Records the upscaler context the following work belongs to. */\n SetUpscalingContextID(upscalingContextID)\n {\n return true;\n }\n\n /**\n * Records the debug renderer to route subsequent debug drawing through; null\n * detaches it. The renderer is retained because EndFrame clears it, as\n * Carbon clears its s_debugTextRenderer static.\n */\n SetDebugRenderer(renderer)\n {\n this.#debugRenderer = renderer ?? null;\n return true;\n }\n\n /**\n * The debug renderer installed on this context, or null.\n *\n * Carbon has no getter because its equivalent is a `Tr2Renderer` static the\n * clearing code reads directly; ours lives here, so `Tr2Renderer.EndFrame`\n * needs a way to reach it.\n *\n * @returns {object|null} The installed debug renderer.\n */\n GetDebugRenderer()\n {\n return this.#debugRenderer;\n }\n\n /**\n * Ends the frame at the device level.\n *\n * THIS IS NOT THE SWAP CHAIN'S PRESENT. Carbon has two, and they are reached\n * from different places: `TriDevice::HandleRenderTick` calls\n * `renderContext.Present()` (`TriDeviceStub.cpp:25`), which is the AL\n * context's frame boundary and what advances the frame number; publishing the\n * surface is `Tr2SwapChain::Present`, reached from `TriStepPresentSwapChain`.\n *\n * Carbon's `Tr2RenderContext` INHERITS `Tr2RenderContextAL`, so its `Present`\n * is the AL's. We compose, so this forwards. It was called `PresentSwapChain`\n * and took a swap chain it ignored until 2026-09-09; that name belongs to the\n * render STEP and Carbon has no such method on either context.\n *\n * @returns {number} An `ALResult` value.\n */\n Present()\n {\n return this.#requireAL(\"Present\").Present();\n }\n\n /**\n * Sets the viewport. The viewport object is held by reference, not copied.\n *\n * @param {object} viewport `{ x, y, width, height, minZ, maxZ }`.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetViewport(viewport)\n {\n this.#viewport = viewport ?? null;\n\n return this.#requireAL(\"SetViewport\").SetViewport(viewport);\n }\n\n /**\n * Clears the cached viewport and records a fullscreen-viewport intent, leaving\n * the engine to resolve the actual target extent.\n */\n SetFullScreenViewport()\n {\n // Nothing to defer: the backend knows the bound target's extent, so \"full\n // screen\" resolves here and now. The old recording path deferred it as its\n // own intent because without a backend the extent was unknown until\n // realization - which is exactly the deferral the queue existed to provide.\n const size = this.#requireAL(\"GetRenderTargetSize\").GetRenderTargetSize(0);\n\n if (Failed(size.result)) return false;\n\n this.#esm.UpdateRenderTargetViewport(size.width, size.height);\n this.#esm.SetupViewport();\n\n return true;\n }\n\n /**\n * The viewport last set, or null while the context is in fullscreen-viewport\n * mode.\n */\n GetViewport()\n {\n return this.#requireAL(\"GetViewport\").GetViewport();\n }\n\n // The viewport save stack is the effect state manager's, not this context's\n // (`TriStepPushViewport.cpp:9` pushes through `renderContext.m_esm`). It used\n // to live here, which put the authored viewport in one place and the stack\n // that saves it in another.\n\n /**\n * Caches the view/camera/simTime record, refreshes the cached view matrix and\n * its inverse from the view matrix, and records a set-view intent.\n */\n SetView(view, camera = null, simTime = 0)\n {\n this.#view = { view: view ?? null, camera: camera ?? null, simTime };\n this.#ApplyViewMatrix(view);\n return true;\n }\n\n /**\n * Caches a raw view matrix (Tr2Renderer::SetViewTransform), refreshes the\n * inverse and eye position, and records a set-view-transform intent.\n */\n SetViewTransform(transform, source = null)\n {\n this.#view = { transform: transform ?? null, source: source ?? null };\n this.#ApplyViewMatrix(transform);\n return true;\n }\n\n // Mirrors Tr2Renderer::SetViewTransform: cache the view matrix, compute its\n // inverse once, and derive the view position from the inverse-view\n // translation row (Carbon reads _41.._43 -> column-major indices [12,13,14]).\n\n /**\n * Mirrors Tr2Renderer::SetViewTransform - copies the view matrix into the\n * cached buffer, inverts it once (falling back to identity when singular) and\n * derives the eye position from the inverse-view translation; anything that is\n * not a 16-element matrix is ignored and leaves the cache untouched.\n */\n #ApplyViewMatrix(matrix)\n {\n if (!matrix || matrix.length !== 16)\n {\n return;\n }\n\n mat4.copy(this.#viewTransform, matrix);\n\n if (!mat4.invert(this.#inverseViewTransform, this.#viewTransform))\n {\n mat4.identity(this.#inverseViewTransform);\n }\n\n vec3.set(\n this.#viewPosition,\n this.#inverseViewTransform[12],\n this.#inverseViewTransform[13],\n this.#inverseViewTransform[14]\n );\n this.#hasViewMatrix = true;\n }\n\n /**\n * A shallow copy of the last view or view-transform record, or null when none\n * has been set.\n */\n GetView()\n {\n return this.#view ? { ...this.#view } : null;\n }\n\n // Raw column-major view matrix (Tr2Renderer::GetViewTransform). Live buffer -\n // callers read, never mutate.\n\n /**\n * The raw column-major view matrix (Tr2Renderer::GetViewTransform); a live\n * buffer owned by the context that callers read and never mutate.\n */\n GetViewTransform()\n {\n return this.#viewTransform;\n }\n\n // Inverse of the view matrix (Tr2Renderer::GetInverseViewTransform), cached on\n // the last view change. Live buffer - callers read, never mutate.\n\n /**\n * The inverse view matrix (Tr2Renderer::GetInverseViewTransform), recomputed\n * on each view change; a live buffer callers read and never mutate.\n */\n GetInverseViewTransform()\n {\n return this.#inverseViewTransform;\n }\n\n // World-space view/eye position (Tr2Renderer::GetViewPosition): the\n // inverse-view translation. Live buffer - callers read, never mutate.\n\n /**\n * The world-space eye position taken from the inverse-view translation; a live\n * buffer callers read and never mutate.\n */\n GetViewPosition()\n {\n return this.#viewPosition;\n }\n\n // Whether a view matrix has been set (camera-dependent modifiers fall back to\n // an unchanged transform when it has not).\n\n /**\n * Whether a view matrix has been set; camera-dependent modifiers fall back to\n * an unchanged transform when it has not.\n */\n HasViewMatrix()\n {\n return this.#hasViewMatrix;\n }\n\n // Save/restore stack for the cached view transform (Carbon Push/PopViewTransform).\n // Push snapshots the current view object, its matrix, and the has-matrix flag;\n // pop restores them and re-derives the inverse/eye-position via ApplyViewMatrix.\n\n /**\n * Snapshots the current view record, its matrix and the has-matrix flag onto\n * the view-transform stack, copying the matrix rather than aliasing the live\n * buffer.\n */\n PushViewTransform()\n {\n this.#viewTransformStack.push({\n view: this.#view,\n hasViewMatrix: this.#hasViewMatrix,\n transform: this.#hasViewMatrix ? mat4.copy(mat4.create(), this.#viewTransform) : null\n });\n return true;\n }\n\n /**\n * Restores the last pushed view transform, re-deriving the inverse and eye\n * position (or resetting them to identity when nothing was cached), and\n * re-records a set-view-transform intent; returns false when the stack is\n * empty.\n */\n PopViewTransform()\n {\n if (!this.#viewTransformStack.length) return false;\n\n const saved = this.#viewTransformStack.pop();\n this.#view = saved.view;\n if (saved.transform)\n {\n this.#ApplyViewMatrix(saved.transform);\n }\n else\n {\n mat4.identity(this.#viewTransform);\n mat4.identity(this.#inverseViewTransform);\n vec3.set(this.#viewPosition, 0, 0, 0);\n this.#hasViewMatrix = false;\n }\n return true;\n }\n\n /** Depth of the view-transform save/restore stack. */\n GetStackSizeViewTransform()\n {\n return this.#viewTransformStack.length;\n }\n\n /**\n * Copies the active 4x4 projection matrix and records it as an intent.\n * Tr2RenderContext owns this matrix so later caller mutations cannot change\n * the state observed by frame consumers.\n */\n SetProjection(projection, fieldOfView = undefined)\n {\n if (!projection || projection.length !== 16)\n {\n throw new TypeError(\"Tr2RenderContext.SetProjection requires a 16-element matrix\");\n }\n if (!this.#projection) this.#projection = mat4.create();\n mat4.copy(this.#projection, projection);\n this.#fieldOfView = fieldOfView === undefined\n ? (projection[5] ? 2 * Math.atan(1 / projection[5]) : 0)\n : Number(fieldOfView);\n return true;\n }\n\n /**\n * Sets a single render state, as `TriStepSetRenderState` does\n * (`TriStepSetRenderState.cpp:10-14`). Both arguments are coerced to\n * unsigned integers.\n *\n * @param {number} state A `RenderState` value.\n * @param {number} value The value to set.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetRenderState(state, value)\n {\n return this.#requireAL(\"SetRenderState\").SetRenderState(Number(state) >>> 0, Number(value) >>> 0);\n }\n\n /**\n * Applies a whole render-state setup, with the state manager's overrides.\n *\n * Carbon's `DoApplyRenderStates` ends with\n * `m_renderContext.SetRenderStates( &kv[0], kv.size() / 2 )`\n * (`Tr2EffectStateManager.cpp:753`), where its context IS the backend. Ours\n * composes, so this forwards - and carries the interpreted setup rather than\n * a resolved pair list, because a registered setup is interpreted once at\n * registration here and the backend projects it.\n *\n * @param {object} setup A `Tr2RenderStateSetup`.\n * @param {object} [overrides] The state manager's render-state overrides.\n * @returns {boolean} Whether the backend accepted it.\n */\n SetRenderStates(setup, overrides = null)\n {\n return this.#requireAL(\"SetRenderStates\").SetRenderStates(setup, overrides);\n }\n\n /** Records the intent to apply the standard state block for a rendering mode. */\n ApplyStandardStates(renderingMode)\n {\n // The state manager owns this, and always did. Recording it instead sent\n // the call to a planner that classified it PIPELINE_STATE and then failed\n // on it - `requires a WebGPU pipeline-state translator` - so the intent was\n // not merely redundant, it was fatal if ever planned.\n return this.#esm.ApplyStandardStates(Number(renderingMode) >>> 0);\n }\n\n /**\n * Toggles wireframe rendering.\n *\n * THE STATE MANAGER OWNS THIS, as it owns the cull-mode and depth-test\n * overrides beside it. Carbon's own step goes straight there -\n * `renderContext.m_esm.SetWireframeRendering( m_enableWireframe )`\n * (`TriStepEnableWireframeMode.cpp:...`) - and never through the context at\n * all. This forwards for callers that already hold a context.\n *\n * @param {boolean} enabled Whether to draw wireframe.\n * @returns {boolean} Whether the override was applied.\n */\n SetWireframeRendering(enabled)\n {\n return this.#esm.SetWireframeRendering(!!enabled);\n }\n\n /**\n * The projection matrix last recorded on the context, or null before a pass\n * sets one.\n */\n GetProjection()\n {\n return this.#projection;\n }\n\n /**\n * The vertical field of view cached when the active projection was set.\n * This is Carbon's Tr2Renderer::GetFieldOfView state, cached on the context.\n */\n GetFieldOfView()\n {\n return this.#fieldOfView;\n }\n\n // Save/restore stack for the current projection (Carbon Push/PopProjection).\n\n /** Saves the current projection on its own save/restore stack. */\n PushProjection()\n {\n this.#projectionStack.push({\n projection: this.#projection ? mat4.clone(this.#projection) : null,\n fieldOfView: this.#fieldOfView\n });\n return true;\n }\n\n /**\n * Restores the last pushed projection and re-records a set-projection intent;\n * returns false when the stack is empty.\n */\n PopProjection()\n {\n if (!this.#projectionStack.length) return false;\n const saved = this.#projectionStack.pop();\n if (saved.projection)\n {\n if (!this.#projection) this.#projection = mat4.create();\n mat4.copy(this.#projection, saved.projection);\n }\n else\n {\n this.#projection = null;\n }\n this.#fieldOfView = saved.fieldOfView;\n return true;\n }\n\n /** Depth of the projection save/restore stack. */\n GetStackSizeProjection()\n {\n return this.#projectionStack.length;\n }\n\n /**\n * Appends a diagnostic record for the frame.\n */\n AddDiagnostic(diagnostic)\n {\n this.#diagnostics.push(diagnostic);\n }\n\n /** A copy of the diagnostics recorded since the last ClearDiagnostics. */\n GetDiagnostics()\n {\n return this.#diagnostics.slice();\n }\n\n /** Drops all recorded diagnostics. */\n ClearDiagnostics()\n {\n this.#diagnostics.length = 0;\n }\n\n /**\n * Releases the main-thread render context, as Carbon does\n * (`Tr2RenderContext.cpp:310-318`). The next reach for it builds a new one.\n *\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n static DestroyMainThreadRenderContext()\n {\n s_mainThreadRenderContext = null;\n }\n\n /**\n * The global \"objectId\" TriVariable Carbon registers at context\n * construction and stamps per batch during picking. Registered lazily\n * here so contexts that never pick pay nothing.\n */\n GetObjectIdVariable()\n {\n if (!this.#objectIdVariable)\n {\n this.#objectIdVariable = Tr2VariableStore.GlobalStore().RegisterVariable(\"objectId\", 0.0);\n }\n return this.#objectIdVariable;\n }\n\n #objectIdVariable = null;\n\n /**\n * True when any batch's shader implements the technique with at least one\n * pass - Carbon's cheap \"can this pass be skipped entirely\" pre-check.\n * Consecutive batches sharing a shader are tested once.\n */\n static TechniqueInBatch(batches, techniqueName)\n {\n let prevShader = null;\n for (const batch of batches)\n {\n if (!(batch instanceof Tr2RenderBatch))\n {\n throw new TypeError(\"Tr2RenderContext.TechniqueInBatch expects Tr2RenderBatch entries.\");\n }\n const shader = batch.shader;\n if (shader === null || shader === prevShader)\n {\n continue;\n }\n if (!(shader instanceof Tr2Shader))\n {\n throw new TypeError(\"Tr2RenderBatch.shader must be a Tr2Shader or null.\");\n }\n prevShader = shader;\n const technique = shader.GetTechniqueIndex(techniqueName);\n if (technique < 0)\n {\n continue;\n }\n if (shader.GetPassCount(technique) > 0)\n {\n return true;\n }\n }\n return false;\n }\n}\n\n\n// Source: trinity/trinity/Tr2RenderContext.cpp:300-329\n//\n// Carbon's file-scope `s_mainThreadRenderContext`, and the free function that\n// fills it on first reach. This is the ambient render context: the one a\n// caller with no context of its own gets, and the one every `Tr2Renderer`\n// static acts on.\n//\n// IT REPLACES AN INVENTED NAME. This was `Tr2RenderContext_GetMainThreadRenderContext()`, an\n// eagerly-constructed static field - the right mechanism under a name Carbon\n// does not use, which is exactly the failure agent-rules rule 3 describes. The\n// creation is lazy here because Carbon's is, and because a context built while\n// this module is still evaluating is a context built before anything could\n// have composed a backend onto it.\nlet s_mainThreadRenderContext = null;\n\n/**\n * The main-thread render context, created on first reach.\n *\n * Carbon guards this with a macro (`USE_MAIN_THREAD_RENDER_CONTEXT`) whose\n * whole purpose is to make the site visible, and its header says why: if you\n * are tempted to call this, first make sure no context is available higher up\n * the callstack, and pass that one down instead. The same applies here. The\n * legitimate callers are the `Tr2Renderer` frame statics and `TriDevice`,\n * because Carbon's are the same ones.\n *\n * @returns {Tr2RenderContext} The process-wide context, never null.\n */\nexport function Tr2RenderContext_GetMainThreadRenderContext()\n{\n if (!s_mainThreadRenderContext)\n {\n s_mainThreadRenderContext = new Tr2RenderContext();\n }\n return s_mainThreadRenderContext;\n}\n"],"names":["DIRECT_STEP_EXECUTOR","Object","freeze","CjsDirectTrinityStepExecutor","DEFAULT_TECHNIQUE","_Tr2RenderContext","_identity","Tr2RenderContext","CjsModel","e","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","impl","custom","reason","carbon","method","implemented","Tr2RenderContextALStub","Tr2EffectStateManager","SetRenderContext","mat4","create","vec3","SetStepExecutor","executor","CjsTrinityStepExecutor","TypeError","BeginStep","step","realTime","simTime","job","SetRenderContextAL","al","buffer","Destroy","fill","ReleaseRealizedObjects","GetRenderContextAL","ExecuteStep","EndStep","BeginBatch","owner","EndBatch","BeginScene","EndScene","GetTriPoolAllocator","TriPoolAllocator","RegisterCatalog","SetTriPoolAllocator","allocator","PushRenderTarget","slot","index","Number","PopRenderTarget","GetStackSizeRT","PushDepthStencil","PopDepthStencil","GetStackSizeDS","SetRenderTarget","renderTarget","slice","GetRecordingFrameNumber","GetRenderedFrameNumber","IsValid","GetRenderTargetSize","GetRenderTarget","SetDepthStencil","depthStencil","GetDepthStencil","Clear","options","SetReadOnlyDepth","enable","RenderPassHint","attachments","GetReversedDepthProjectionTransform","out","copy","GetCaps","Error","SetTopology","topology","GetConstantBuffer","isInteger","ConstantBufferSlot","CBUFFER_COUNT","CreateConstantBuffer","GetConstantBuffers","Array","from","length","unused","SetResourceSet","resourceSet","SetConstants","constantType","registerIndex","maxRegisterCount","SetStreamSource","stream","offset","stride","SetIndices","CreateBuffer","description","initialData","size","usage","undefined","CreateSamplerState","CreateResourceSet","program","implementationOnly","CreateTexture","desc","CreateVertexLayout","definition","CreateShader","stageType","bytecode","signature","shaderPath","CreateShaderProgram","shaders","SetShaderProgram","shaderProgram","GetBlitter","Tr2Blitter","DrawPrimitive","startVertex","primitiveCount","DrawIndexedPrimitive","numVertices","startIndex","minimumIndex","DrawPrimitiveUP","vertexStreamZeroData","vertexStreamZeroStride","DrawIndexedPrimitiveUP","indexData","SetVertexLayout","layout","DrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation","DrawInstanced","vertexCountPerInstance","startVertexLocation","#requireAL","verb","constructor","name","GetEffectStateManager","IsRenderTargetValid","ResolveRenderTarget","source","destination","CopyRenderTarget","intent","GenerateMipMaps","RenderBatches","batches","techniqueName","RenderBatchesInOrder","SubmitGeometry","batch","geometrySource","vertexStreams","RealizeBatchGeometry","ApplyVertexDeclaration","vertexDeclaration","ApplyStreamSource","indexBuffer","ApplyIndexBuffer","indexStride","overrideMaterial","shaderOf","GetShaderStateInterface","shader","materialOf","material","lastShader","currentObjectData","technique","passCount","shaderMask","drawn","GetBatches","renderingMode","RenderingMode","RM_ANY","ApplyStandardStates","found","GetTechniqueIndex","GetPassCount","GetShaderTypeMask","objectData","buffers","_unused","Tr2PerObjectData","setPerObjectDataToDevice","passIndex","ApplyAllStateForPass","ApplyMaterialDataForPass","RenderBatchesWithOverride","RenderBatchesForPicking","_batches","_techniqueName","DrawLineSet","_lineSet","ClearUav","value","clearWithFloat","RenderAtlas","_step","RenderLineGraphs","RenderDebug","_debugStep","RunComputeShader","effect","groupDimX","groupDimY","groupDimZ","RunComputeShaderIndirect","indirectionBuffer","offsetForArgs","SetUpscalingContextID","upscalingContextID","SetDebugRenderer","renderer","GetDebugRenderer","Present","SetViewport","viewport","SetFullScreenViewport","Failed","result","UpdateRenderTargetViewport","width","height","SetupViewport","GetViewport","SetView","view","camera","SetViewTransform","transform","#ApplyViewMatrix","matrix","invert","identity","set","GetView","GetViewTransform","GetInverseViewTransform","GetViewPosition","HasViewMatrix","PushViewTransform","push","hasViewMatrix","PopViewTransform","saved","pop","GetStackSizeViewTransform","SetProjection","projection","fieldOfView","Math","atan","SetRenderState","state","SetRenderStates","setup","overrides","SetWireframeRendering","enabled","GetProjection","GetFieldOfView","PushProjection","clone","PopProjection","GetStackSizeProjection","AddDiagnostic","diagnostic","GetDiagnostics","ClearDiagnostics","DestroyMainThreadRenderContext","s_mainThreadRenderContext","GetObjectIdVariable","Tr2VariableStore","GlobalStore","RegisterVariable","TechniqueInBatch","prevShader","Tr2RenderBatch","Tr2Shader","TextureFilter","TF_NONE","TF_POINT","TF_LINEAR","TF_ANISOTROPIC","TF_COMPARISON","TextureAddressMode","TA_WRAP","TA_MIRROR","TA_CLAMP","TA_BORDER","TA_MIRROR_ONCE","Tr2RenderContext_GetMainThreadRenderContext"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
- import { io, type, carbon, impl } from '#schema';
2
+ import { edit, type, carbon, impl } from '#schema';
3
3
  import { CjsModel } from '#model';
4
4
  import { ExFlag, Tr2GpuUsage, ConvertDepthStencilFormat, DepthStencilFormat } from '#consts/render-context';
5
5
  import { Tr2BitmapDimensions } from '../../../trinityal/Tr2BitmapDimensions.js';
@@ -18,7 +18,7 @@ new class extends _identity {
18
18
  } = _applyDecs2311(this, [type.define({
19
19
  className: "Tr2DepthStencil",
20
20
  family: "trinityCore"
21
- })], [[[io, io.persistOnly, type, type.string], 16, "name"], [[io, io.read, type, type.uint32], 16, "width"], [[io, io.read, type, type.uint32], 16, "height"], [[io, io.read, type, type.uint32], 16, "multiSampleType"], [[io, io.read, type, type.uint32], 16, "multiSampleQuality"], [[io, io.read, type, type.uint32], 16, "mipCount"], [[io, io.read, type, type.int32, void 0, type.enum("DepthStencilFormat")], 16, "format"], [[io, io.read, type, type.boolean], 16, "isValid"], [[io, io.read, type, type.boolean], 16, "isReadable"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon returns an HRESULT and reaches the main-thread render context through a global; this returns a boolean and takes the context, which is the same reason Tr2Blitter does.")], 18, "Create"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTexture"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon exposes the member directly through a conversion operator; JavaScript has none, so the raw surface is reached by name.")], 18, "GetDepthStencil"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon returns its event object for the caller to attach to; this takes the listener and returns the unsubscribe, matching Tr2TextureArray.")], 18, "OnTextureChange"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsValid"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsReadable"], [[carbon, carbon.method, impl, impl.implemented], 18, "Destroy"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWidth"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetHeight"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMsaaSamples"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMsaaQuality"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMipCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetFormat"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "HasALObject"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "sharedHandle"]], 0, void 0, CjsModel));
21
+ })], [[[edit, edit.persistOnly, type, type.string], 16, "name"], [[edit, edit.read, type, type.uint32], 16, "width"], [[edit, edit.read, type, type.uint32], 16, "height"], [[edit, edit.read, type, type.uint32], 16, "multiSampleType"], [[edit, edit.read, type, type.uint32], 16, "multiSampleQuality"], [[edit, edit.read, type, type.uint32], 16, "mipCount"], [[edit, edit.read, type, type.int32, void 0, type.enum("DepthStencilFormat")], 16, "format"], [[edit, edit.read, type, type.boolean], 16, "isValid"], [[edit, edit.read, type, type.boolean], 16, "isReadable"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon returns an HRESULT and reaches the main-thread render context through a global; this returns a boolean and takes the context, which is the same reason Tr2Blitter does.")], 18, "Create"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTexture"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon exposes the member directly through a conversion operator; JavaScript has none, so the raw surface is reached by name.")], 18, "GetDepthStencil"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon returns its event object for the caller to attach to; this takes the listener and returns the unsubscribe, matching Tr2TextureArray.")], 18, "OnTextureChange"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsValid"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsReadable"], [[carbon, carbon.method, impl, impl.implemented], 18, "Destroy"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWidth"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetHeight"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMsaaSamples"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMsaaQuality"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMipCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetFormat"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "HasALObject"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "sharedHandle"]], 0, void 0, CjsModel));
22
22
  }
23
23
  /** m_name (std::string) [PERSISTONLY] */
24
24
  name = (_initProto(this), _init_name(this, ""));