@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (929) hide show
  1. package/README.md +58 -125
  2. package/dist/audio/index.js +8 -1
  3. package/dist/audio/index.js.map +1 -1
  4. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
  5. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
  6. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
  7. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
  8. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
  9. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
  10. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
  11. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
  12. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
  13. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
  14. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
  15. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
  16. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
  17. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
  18. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
  19. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
  20. package/dist/audio/trinity/audio/AudManager.js +1 -1
  21. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  22. package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
  23. package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
  24. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
  25. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
  26. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
  27. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
  28. package/dist/audio/trinity/index.js +8 -1
  29. package/dist/audio/trinity/index.js.map +1 -1
  30. package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
  31. package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
  32. package/dist/character/CjsCharacterAppearanceManager.js +14 -0
  33. package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
  34. package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
  35. package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
  36. package/dist/character/CjsCharacterTexturePolicy.js +5 -0
  37. package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
  38. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
  39. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
  40. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
  41. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
  42. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
  43. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
  44. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
  45. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
  46. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
  47. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
  48. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
  49. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
  50. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
  51. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
  52. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
  53. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
  54. package/dist/global/blue/CjsScriptCallback.js +142 -0
  55. package/dist/global/blue/CjsScriptCallback.js.map +1 -0
  56. package/dist/global/blue/index.js +2 -0
  57. package/dist/global/blue/index.js.map +1 -0
  58. package/dist/global/consts/renderContext/formats.js +51 -1
  59. package/dist/global/consts/renderContext/formats.js.map +1 -1
  60. package/dist/global/consts/renderContext/index.js +2 -2
  61. package/dist/global/consts/renderContext/renderStates.js +16 -1
  62. package/dist/global/consts/renderContext/renderStates.js.map +1 -1
  63. package/dist/global/contracts/index.js +0 -1
  64. package/dist/global/contracts/index.js.map +1 -1
  65. package/dist/global/index.js +4 -3
  66. package/dist/global/index.js.map +1 -1
  67. package/dist/global/math/index.js +2 -0
  68. package/dist/global/math/index.js.map +1 -1
  69. package/dist/global/math/mesh.js +70 -16
  70. package/dist/global/math/mesh.js.map +1 -1
  71. package/dist/global/math/noise.js +47 -68
  72. package/dist/global/math/noise.js.map +1 -1
  73. package/dist/global/math/pool.js +18 -3
  74. package/dist/global/math/pool.js.map +1 -1
  75. package/dist/global/math/random.js +52 -0
  76. package/dist/global/math/random.js.map +1 -0
  77. package/dist/global/math/tri3.js +18 -4
  78. package/dist/global/math/tri3.js.map +1 -1
  79. package/dist/global/utils/bytes.js +22 -4
  80. package/dist/global/utils/bytes.js.map +1 -1
  81. package/dist/global/utils/checksum.js +80 -0
  82. package/dist/global/utils/checksum.js.map +1 -0
  83. package/dist/global/utils/errors/CjsCancellationError.js +36 -0
  84. package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
  85. package/dist/global/utils/errors/CjsError.js +21 -52
  86. package/dist/global/utils/errors/CjsError.js.map +1 -1
  87. package/dist/global/utils/errors/abort.js +1 -1
  88. package/dist/global/utils/errors/abort.js.map +1 -1
  89. package/dist/global/utils/errors/index.js +2 -1
  90. package/dist/global/utils/errors/index.js.map +1 -1
  91. package/dist/global/utils/index.js +4 -2
  92. package/dist/global/utils/index.js.map +1 -1
  93. package/dist/index.js +95 -35
  94. package/dist/index.js.map +1 -1
  95. package/dist/input/Tr2MainWindow.js +7 -9
  96. package/dist/input/Tr2MainWindow.js.map +1 -1
  97. package/dist/resource/CjsResMan.js +33 -39
  98. package/dist/resource/CjsResMan.js.map +1 -1
  99. package/dist/resource/CjsResource.js +19 -5
  100. package/dist/resource/CjsResource.js.map +1 -1
  101. package/dist/resource/audio/AudioGeometryResData.js +22 -27
  102. package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
  103. package/dist/resource/audio/CjsAudioRes.js +4 -5
  104. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  105. package/dist/resource/format/CjsBitReader.js +263 -0
  106. package/dist/resource/format/CjsBitReader.js.map +1 -0
  107. package/dist/resource/format/CjsByteReader.js +130 -125
  108. package/dist/resource/format/CjsByteReader.js.map +1 -1
  109. package/dist/resource/format/CjsFormat.js +11 -4
  110. package/dist/resource/format/CjsFormat.js.map +1 -1
  111. package/dist/resource/format/CjsFormatError.js +37 -1
  112. package/dist/resource/format/CjsFormatError.js.map +1 -1
  113. package/dist/resource/format/CjsResourceProbe.js +41 -37
  114. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  115. package/dist/resource/format/carbonRecordGuard.js +33 -0
  116. package/dist/resource/format/carbonRecordGuard.js.map +1 -0
  117. package/dist/resource/format/imageSignatures.js +202 -0
  118. package/dist/resource/format/imageSignatures.js.map +1 -0
  119. package/dist/resource/format/index.js +2 -1
  120. package/dist/resource/format/index.js.map +1 -1
  121. package/dist/resource/format/jsonPolicies.js +180 -0
  122. package/dist/resource/format/jsonPolicies.js.map +1 -0
  123. package/dist/resource/formats/black/core/helpers.js +18 -29
  124. package/dist/resource/formats/black/core/helpers.js.map +1 -1
  125. package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
  126. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  127. package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
  128. package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
  129. package/dist/resource/formats/bnk/core/busNodes.js +2 -1
  130. package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
  131. package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
  132. package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
  133. package/dist/resource/formats/bnk/core/eventAction.js +15 -93
  134. package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
  135. package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
  136. package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
  137. package/dist/resource/formats/bnk/core/helpers.js +2 -48
  138. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  139. package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
  140. package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
  141. package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
  142. package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
  143. package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
  144. package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
  145. package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
  146. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  147. package/dist/resource/formats/cmf/core/binary.js +54 -60
  148. package/dist/resource/formats/cmf/core/binary.js.map +1 -1
  149. package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
  150. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  151. package/dist/resource/formats/dds/core/bc6h.js +16 -18
  152. package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
  153. package/dist/resource/formats/dds/core/bc7.js +28 -24
  154. package/dist/resource/formats/dds/core/bc7.js.map +1 -1
  155. package/dist/resource/formats/dds/core/helpers.js +7 -133
  156. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  157. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
  158. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  159. package/dist/resource/formats/dxbc/core/helpers.js +4 -32
  160. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  161. package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
  162. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  163. package/dist/resource/formats/fbx/core/helpers.js +18 -12
  164. package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
  165. package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
  166. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  167. package/dist/resource/formats/flac/core/helpers.js +1 -62
  168. package/dist/resource/formats/flac/core/helpers.js.map +1 -1
  169. package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
  170. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  171. package/dist/resource/formats/gif/core/helpers.js +1 -63
  172. package/dist/resource/formats/gif/core/helpers.js.map +1 -1
  173. package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
  174. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  175. package/dist/resource/formats/gltf/core/helpers.js +3 -19
  176. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
  178. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  179. package/dist/resource/formats/gr2/core/container.js +1 -10
  180. package/dist/resource/formats/gr2/core/container.js.map +1 -1
  181. package/dist/resource/formats/gr2/core/helpers.js +24 -35
  182. package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
  183. package/dist/resource/formats/gr2/core/shared.js +193 -189
  184. package/dist/resource/formats/gr2/core/shared.js.map +1 -1
  185. package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
  186. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  187. package/dist/resource/formats/hlsl/core/helpers.js +1 -30
  188. package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
  189. package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
  190. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  191. package/dist/resource/formats/jpeg/core/helpers.js +7 -134
  192. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  193. package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
  194. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  195. package/dist/resource/formats/mp3/core/helpers.js +1 -64
  196. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  197. package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
  198. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  199. package/dist/resource/formats/mp4/core/helpers.js +1 -73
  200. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  201. package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
  202. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  203. package/dist/resource/formats/obj/core/helpers.js +93 -115
  204. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  205. package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
  206. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  207. package/dist/resource/formats/ogg/core/helpers.js +1 -15
  208. package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
  209. package/dist/resource/formats/ogg/core/vorbis.js +138 -144
  210. package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
  211. package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
  212. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  213. package/dist/resource/formats/png/CjsPngFormat.js +5 -3
  214. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  215. package/dist/resource/formats/png/core/helpers.js +13 -152
  216. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  217. package/dist/resource/formats/png/core/writer.js +3 -27
  218. package/dist/resource/formats/png/core/writer.js.map +1 -1
  219. package/dist/resource/formats/red/core/helpers.js +19 -29
  220. package/dist/resource/formats/red/core/helpers.js.map +1 -1
  221. package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
  222. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  223. package/dist/resource/formats/stl/core/helpers.js +44 -66
  224. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  225. package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
  226. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  227. package/dist/resource/formats/tga/core/helpers.js +7 -153
  228. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  229. package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
  230. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  231. package/dist/resource/formats/vta/core/helpers.js +1 -17
  232. package/dist/resource/formats/vta/core/helpers.js.map +1 -1
  233. package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
  234. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  235. package/dist/resource/formats/wav/core/helpers.js +1 -15
  236. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  237. package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
  238. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  239. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
  240. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  241. package/dist/resource/formats/webgl/core/helpers.js +39 -68
  242. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  243. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
  244. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  245. package/dist/resource/formats/webgpu/core/helpers.js +4 -30
  246. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  247. package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
  248. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  249. package/dist/resource/formats/webm/core/helpers.js +1 -73
  250. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  251. package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
  252. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  253. package/dist/resource/formats/webp/core/helpers.js +1 -62
  254. package/dist/resource/formats/webp/core/helpers.js.map +1 -1
  255. package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
  256. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  257. package/dist/resource/formats/wem/core/bitStream.js +83 -106
  258. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  259. package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
  260. package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
  261. package/dist/resource/formats/wem/core/helpers.js +1 -15
  262. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  263. package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
  264. package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
  265. package/dist/resource/geometry/MeshDecalData.js +23 -25
  266. package/dist/resource/geometry/MeshDecalData.js.map +1 -1
  267. package/dist/resource/geometry/MeshDecalLodData.js +14 -23
  268. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
  269. package/dist/resource/geometry/TriGeometryRes.js +299 -284
  270. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  271. package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
  272. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
  273. package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
  274. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
  275. package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
  276. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
  277. package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
  278. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
  279. package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
  280. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
  281. package/dist/resource/geometry/TriJointBinding.js +16 -24
  282. package/dist/resource/geometry/TriJointBinding.js.map +1 -1
  283. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
  284. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
  285. package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
  286. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
  287. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
  288. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
  289. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
  290. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  291. package/dist/resource/index.js +1 -1
  292. package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
  293. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  294. package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
  295. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  296. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
  297. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  298. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
  299. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  300. package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
  301. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  302. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
  303. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  304. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
  305. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  306. package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
  307. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  308. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
  309. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
  310. package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
  311. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
  312. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
  313. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  314. package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
  315. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  316. package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
  317. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  318. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
  319. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
  320. package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
  321. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  322. package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
  323. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  324. package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
  325. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
  327. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
  329. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
  331. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
  333. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
  335. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  336. package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
  337. package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
  338. package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
  339. package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
  340. package/dist/resource/worker/protocol.js +18 -1
  341. package/dist/resource/worker/protocol.js.map +1 -1
  342. package/dist/sof/EveSOF.js +2 -222
  343. package/dist/sof/EveSOF.js.map +1 -1
  344. package/dist/sof/SofDocumentBuilder.js +205 -0
  345. package/dist/sof/SofDocumentBuilder.js.map +1 -0
  346. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
  347. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
  348. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
  349. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
  350. package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
  351. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  352. package/dist/sof/faction/index.js +3 -1
  353. package/dist/sof/faction/index.js.map +1 -1
  354. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
  355. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
  356. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
  357. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
  358. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
  359. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
  360. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
  361. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
  362. package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
  363. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  364. package/dist/sof/generic/index.js +5 -1
  365. package/dist/sof/generic/index.js.map +1 -1
  366. package/dist/sof/index.js +23 -7
  367. package/dist/sof/index.js.map +1 -1
  368. package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
  369. package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
  370. package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
  371. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  372. package/dist/sof/pattern/index.js +2 -1
  373. package/dist/sof/pattern/index.js.map +1 -1
  374. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
  375. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
  376. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
  377. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
  378. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
  379. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
  380. package/dist/sof/shared/EveSOFDataArea.js +2 -13
  381. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  382. package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
  383. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  384. package/dist/sof/shared/EveSOFDataParameter.js +2 -146
  385. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  386. package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
  387. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
  388. package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
  389. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
  390. package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
  391. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
  392. package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
  393. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
  394. package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
  395. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
  396. package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
  397. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
  398. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
  399. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
  400. package/dist/sof/shared/index.js +13 -4
  401. package/dist/sof/shared/index.js.map +1 -1
  402. package/dist/sof/sofDocumentValues.js +33 -0
  403. package/dist/sof/sofDocumentValues.js.map +1 -0
  404. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
  405. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
  406. package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
  407. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
  408. package/dist/trinity/controllers/Tr2Controller.js +2 -1
  409. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  410. package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
  411. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  412. package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
  413. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  414. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
  415. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  416. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
  417. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
  418. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
  419. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
  420. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
  421. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
  422. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
  423. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
  424. package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
  425. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
  426. package/dist/trinity/controllers/index.js +5 -2
  427. package/dist/trinity/controllers/index.js.map +1 -1
  428. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
  429. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  430. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
  431. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  432. package/dist/trinity/core/ITr2Updateable.js +2 -1
  433. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  434. package/dist/trinity/core/Tr2Blitter.js +6 -3
  435. package/dist/trinity/core/Tr2Blitter.js.map +1 -1
  436. package/dist/trinity/core/Tr2Denoiser.js +256 -0
  437. package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
  438. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
  439. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
  440. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
  441. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
  442. package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
  443. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
  444. package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
  445. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
  446. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
  447. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
  448. package/dist/trinity/core/Tr2RenderUtils.js +20 -3
  449. package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
  450. package/dist/trinity/core/Tr2Renderer.js +146 -1
  451. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  452. package/dist/trinity/core/Tr2ShadowMap.js +135 -14
  453. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  454. package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
  455. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
  456. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
  457. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
  458. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
  459. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
  460. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
  461. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
  462. package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
  463. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
  464. package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
  465. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
  466. package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
  467. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
  468. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
  469. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
  470. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
  471. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
  472. package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
  473. package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
  474. package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
  475. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  476. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
  477. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
  478. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
  479. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
  480. package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
  481. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  482. package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
  483. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
  484. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
  485. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
  486. package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
  487. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
  488. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
  489. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
  490. package/dist/trinity/core/index.js +42 -15
  491. package/dist/trinity/core/index.js.map +1 -1
  492. package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
  493. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  494. package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
  495. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
  496. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
  497. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
  498. package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
  499. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
  500. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
  501. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
  502. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
  503. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  504. package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
  505. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  506. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
  507. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  508. package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
  509. package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
  510. package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
  511. package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
  512. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
  513. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
  514. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
  515. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
  516. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
  517. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
  518. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
  519. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
  520. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
  521. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
  522. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
  523. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
  524. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
  525. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
  526. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
  527. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
  528. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
  529. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
  530. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
  531. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
  532. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
  533. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
  534. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
  535. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
  536. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
  537. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
  538. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
  539. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
  540. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
  541. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
  542. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
  543. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
  544. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
  545. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
  546. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
  547. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
  548. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
  549. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
  550. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
  551. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
  552. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
  553. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
  554. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
  555. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
  556. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
  557. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
  558. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
  559. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
  560. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
  561. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
  562. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
  563. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
  564. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
  565. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
  566. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
  567. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
  568. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
  569. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
  570. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
  571. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
  572. package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
  573. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
  574. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
  575. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
  576. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
  577. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
  578. package/dist/trinity/core/variable/TriVariable.js +83 -83
  579. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  580. package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
  581. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
  582. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
  583. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
  584. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
  585. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  586. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
  587. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  588. package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
  589. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  590. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
  591. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  592. package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
  593. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  594. package/dist/trinity/eve/IEveTransform.js +2 -1
  595. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  596. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
  597. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  598. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
  599. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  600. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
  601. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
  602. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
  603. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  604. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
  605. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
  606. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
  607. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
  608. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
  609. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  610. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
  611. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  612. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
  613. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  614. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
  615. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  616. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
  617. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  618. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
  619. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  620. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
  621. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  622. package/dist/trinity/eve/camera/EveCamera.js +1 -1
  623. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  624. package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
  625. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  626. package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
  627. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  628. package/dist/trinity/eve/child/EveChildContainer.js +141 -141
  629. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  630. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
  631. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
  632. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
  633. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
  634. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
  635. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
  636. package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
  637. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
  638. package/dist/trinity/eve/child/EveChildMesh.js +218 -218
  639. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  640. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
  641. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
  642. package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
  643. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
  644. package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
  645. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  646. package/dist/trinity/eve/child/EveChildTransform.js +5 -0
  647. package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
  648. package/dist/trinity/eve/child/EveChildTurret.js +7 -0
  649. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  650. package/dist/trinity/eve/index.js +10 -4
  651. package/dist/trinity/eve/index.js.map +1 -1
  652. package/dist/trinity/eve/lights/Tr2Light.js +5 -0
  653. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  654. package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
  655. package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
  656. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
  657. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  658. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
  659. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  660. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
  661. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  662. package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
  663. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  664. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
  665. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  666. package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
  667. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  668. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
  669. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  670. package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
  671. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  672. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
  673. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  674. package/dist/trinity/generated/index.js +0 -1
  675. package/dist/trinity/generated/index.js.map +1 -1
  676. package/dist/trinity/generated/trinityCore/index.js +0 -1
  677. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  678. package/dist/trinity/index.js +59 -23
  679. package/dist/trinity/index.js.map +1 -1
  680. package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
  681. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
  682. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
  683. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
  684. package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
  685. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  686. package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
  687. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  688. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
  689. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  690. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
  691. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  692. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
  693. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  694. package/dist/trinity/particle/index.js +2 -1
  695. package/dist/trinity/particle/index.js.map +1 -1
  696. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
  697. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  698. package/dist/trinity/shader/Tr2Effect.js +131 -58
  699. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  700. package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
  701. package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
  702. package/dist/trinity/shader/Tr2Material.js +21 -4
  703. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  704. package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
  705. package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
  706. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
  707. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  708. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
  709. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
  710. package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
  711. package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
  712. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
  713. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
  714. package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
  715. package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
  716. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
  717. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
  718. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
  719. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
  720. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
  721. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
  722. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
  723. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
  724. package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
  725. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
  726. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
  727. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
  728. package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
  729. package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
  730. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
  731. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
  732. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
  733. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
  734. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
  735. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
  736. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
  737. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
  738. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
  739. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
  740. package/dist/trinityal/index.js +22 -9
  741. package/dist/trinityal/index.js.map +1 -1
  742. package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
  743. package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
  744. package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
  745. package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
  746. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
  747. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
  748. package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
  749. package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
  750. package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
  751. package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
  752. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
  753. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
  754. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
  755. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
  756. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
  757. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
  758. package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
  759. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
  760. package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
  761. package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
  762. package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
  763. package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
  764. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
  765. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
  766. package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
  767. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  768. package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
  769. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  770. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
  771. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
  772. package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
  773. package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
  774. package/dist/trinityal/stub/index.js +8 -4
  775. package/dist/trinityal/stub/index.js.map +1 -1
  776. package/dist/trinityal/vertexLayoutMatch.js +2 -2
  777. package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
  778. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
  779. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
  780. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
  781. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
  782. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
  783. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
  784. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
  785. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  786. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
  787. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  788. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
  789. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  790. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
  791. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
  792. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
  793. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  794. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
  795. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
  796. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
  797. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  798. package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
  799. package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
  800. package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
  801. package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
  802. package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
  803. package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
  804. package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
  805. package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
  806. package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
  807. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
  808. package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
  809. package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
  810. package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
  811. package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
  812. package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
  813. package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
  814. package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
  815. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
  816. package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
  817. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
  818. package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
  819. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
  820. package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
  821. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
  822. package/dist/trinityal/webgpu/internal.js +12 -11
  823. package/dist/trinityal/webgpu/internal.js.map +1 -1
  824. package/docs/audio/reference/classes/trinity.md +44 -34
  825. package/docs/character/architecture.md +276 -0
  826. package/docs/character/reference/character-appearance-plans.md +30 -66
  827. package/docs/character/reference/prepared-libraries.md +14 -30
  828. package/docs/global/reference/api.md +2 -1
  829. package/docs/global/reference/classes/README.md +53 -71
  830. package/docs/global/reference/classes/dropped.md +16 -0
  831. package/docs/resource/README.md +19 -15
  832. package/docs/resource/architecture.md +9 -2
  833. package/docs/resource/concepts/format-capabilities.md +124 -80
  834. package/docs/resource/concepts/shared-format-helpers.md +94 -0
  835. package/docs/resource/formats/README.md +230 -224
  836. package/docs/resource/formats/bitknit2.md +221 -0
  837. package/docs/resource/formats/carbon-effect-container.md +184 -269
  838. package/docs/resource/formats/gr2.md +6 -1
  839. package/docs/resource/formats/schemabound.md +28 -48
  840. package/docs/resource/formats/static.md +70 -97
  841. package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
  842. package/docs/resource/formats/webgl/decl-io.md +165 -256
  843. package/docs/resource/formats/webgl/memory-structured.md +64 -142
  844. package/docs/resource/formats/webgl/texture-sample.md +109 -138
  845. package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
  846. package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
  847. package/docs/resource/formats/webgpu/reference/api.md +64 -67
  848. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
  849. package/docs/resource/reference/classes/core.md +256 -236
  850. package/docs/resource/reference/classes/formats.md +1668 -1672
  851. package/docs/resource/reference/workers.md +4 -2
  852. package/docs/sof/reference/classes/core.md +1 -1
  853. package/docs/sof/reference/classes/faction.md +2 -2
  854. package/docs/sof/reference/classes/generic.md +4 -4
  855. package/docs/sof/reference/classes/pattern.md +1 -1
  856. package/docs/sof/reference/classes/shared.md +10 -10
  857. package/docs/trinity/architecture.md +55 -44
  858. package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
  859. package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
  860. package/docs/trinity/reference/classes/dropped.md +0 -189
  861. package/docs/trinity/reference/classes/eve-runtime.md +8 -8
  862. package/docs/trinity/reference/classes/generated.md +0 -10
  863. package/docs/trinity/reference/classes/particle.md +2 -2
  864. package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
  865. package/docs/trinity/reference/implementation-status.md +50 -75
  866. package/docs/trinity/reference/main-semantic-extraction.md +13 -17
  867. package/docs/trinityal/reference/classes/README.md +77 -27
  868. package/docs/trinityal/reference/classes/dropped.md +82 -0
  869. package/docs/trinityal/webgpu/README.md +3 -1
  870. package/docs/trinityal/webgpu/architecture.md +121 -228
  871. package/docs/trinityal/webgpu/reference/api.md +5 -5
  872. package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
  873. package/format-notices/gr2/NOTICE +18 -12
  874. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
  875. package/package.json +4 -1
  876. package/dist/audio/trinity/audio/AudActionLog.js +0 -173
  877. package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
  878. package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
  879. package/dist/global/contracts/CjsScriptCallback.js +0 -94
  880. package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
  881. package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
  882. package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
  883. package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
  884. package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
  885. package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
  886. package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
  887. package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
  888. package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
  889. package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
  890. package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
  891. package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
  892. package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
  893. package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
  894. package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
  895. package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
  896. package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
  897. package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
  898. package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
  899. package/dist/trinity/core/rawData/constantLayout.js +0 -175
  900. package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
  901. package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
  902. package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
  903. package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
  904. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
  905. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
  906. package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
  907. package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
  908. package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
  909. package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
  910. package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
  911. package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
  912. package/dist/trinityal/Tr2SamplerDescription.js +0 -72
  913. package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
  914. package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
  915. package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
  916. package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
  917. package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
  918. package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
  919. package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
  920. package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
  921. package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
  922. package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
  923. package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
  924. package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
  925. package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
  926. package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
  927. package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
  928. package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
  929. package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
@@ -1,12 +1,28 @@
1
- import { Tr2BitmapDimensions } from '../../trinityal/Tr2BitmapDimensions.js';
2
- import '../../trinityal/Tr2DrawUPHelper.js';
3
- import '../../global/consts/renderContext/formats.js';
4
- import '../../global/consts/renderContext/pipeline.js';
5
- import '../../trinityal/Tr2ResourceSetAL.js';
6
- import { Tr2BufferALStub } from '../../trinityal/stub/Tr2BufferALStub.js';
7
- import '../../trinityal/stub/Tr2RenderContextALStub.js';
8
- import '#consts/render-context';
9
- import { Tr2TextureALStub } from '../../trinityal/stub/Tr2TextureALStub.js';
1
+ import { Tr2BitmapDimensions } from '../../../trinityal/Tr2BitmapDimensions.js';
2
+ import '../../../global/consts/renderContext/formats.js';
3
+ import '../../../global/consts/renderContext/pipeline.js';
4
+ import '../../../trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js';
5
+ import '../../../trinityal/Tr2DrawUPHelper.js';
6
+ import '../../../trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js';
7
+ import '../../../trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js';
8
+ import '../../../trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js';
9
+ import '../../../trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js';
10
+ import '../../../trinityal/stub/Tr2BufferALStub.js';
11
+ import '../../../trinityal/stub/Tr2CapsALStub.js';
12
+ import '../../../trinityal/stub/Tr2ConstantBufferALStub.js';
13
+ import '../../../trinityal/stub/Tr2FenceALStub.js';
14
+ import '../../../trinityal/stub/Tr2OcclusionQueryALStub.js';
15
+ import '../../../trinityal/stub/Tr2GpuTimerALStub.js';
16
+ import '../../../trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js';
17
+ import '../../../trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js';
18
+ import '../../../trinityal/stub/Tr2SamplerStateALStub.js';
19
+ import '../../../trinityal/stub/Tr2ShaderALStub.js';
20
+ import '../../../trinityal/stub/Tr2ShaderProgramALStub.js';
21
+ import '../../../trinityal/stub/Tr2SwapChainALStub.js';
22
+ import '../../../trinityal/stub/Tr2TextureALStub.js';
23
+ import '../../../trinityal/stub/Tr2VertexLayoutALStub.js';
24
+ import '../../../trinityal/stub/Tr2VideoAdapterInfoStub.js';
25
+ import { GpuResourceHandle } from './GpuResourceHandle.js';
10
26
 
11
27
  // Source: trinity/trinity/Tr2GpuResourcePool.h
12
28
  // Source: trinity/trinity/Tr2GpuResourcePool.cpp
@@ -36,140 +52,14 @@ import { Tr2TextureALStub } from '../../trinityal/stub/Tr2TextureALStub.js';
36
52
  // walks outward. That is how a scene-local pool shares the global one's
37
53
  // resources without owning them.
38
54
 
55
+
56
+ /** Throws a resource-pool error with the supplied diagnostic. */
39
57
  function fail(message) {
40
58
  const error = new Error(`Tr2GpuResourcePool: ${message}`);
41
59
  error.code = "CJS_GPU_POOL_INVALID";
42
60
  throw error;
43
61
  }
44
62
 
45
- /**
46
- * A width and height, with Carbon's scaling and comparison.
47
- */
48
- class TextureSize2D {
49
- /** Width in pixels. */
50
- width = 0;
51
-
52
- /** Height in pixels. */
53
- height = 0;
54
-
55
- /**
56
- * @param {number|object} [widthOrDimensions] A width, or a `Tr2BitmapDimensions`.
57
- * @param {number} [height] The height, when a width was given.
58
- */
59
- constructor(widthOrDimensions = 0, height = 0) {
60
- if (widthOrDimensions && typeof widthOrDimensions === "object") {
61
- this.width = widthOrDimensions.GetWidth();
62
- this.height = widthOrDimensions.GetHeight();
63
- return;
64
- }
65
- this.width = widthOrDimensions;
66
- this.height = height;
67
- }
68
-
69
- /**
70
- * Whether two sizes match.
71
- *
72
- * @param {TextureSize2D} other The size to compare with.
73
- * @returns {boolean} True when they match.
74
- */
75
- Equals(other) {
76
- return !!other && this.width === other.width && this.height === other.height;
77
- }
78
-
79
- /**
80
- * This size scaled, never below one pixel in either direction.
81
- *
82
- * Carbon clamps to one (`h:TextureSize2D::operator*`), because a half-size
83
- * chain reaches zero before it reaches one and a zero-sized target is not a
84
- * target.
85
- *
86
- * @param {number} scale The factor.
87
- * @returns {TextureSize2D} The scaled size.
88
- */
89
- Scaled(scale) {
90
- return new TextureSize2D(Math.max(1, Math.trunc(this.width * scale)), Math.max(1, Math.trunc(this.height * scale)));
91
- }
92
- }
93
-
94
- /**
95
- * A borrowed pool resource.
96
- *
97
- * CARBON RELEASES ON DESTRUCTION AND JAVASCRIPT CANNOT. Its handle decrements a
98
- * lock count in its destructor, so a resource returns to the pool when the last
99
- * holder goes out of scope. There is no such moment here, so `Release` is
100
- * explicit and a handle that is never released pins its resource forever -
101
- * which is a leak, not a crash, and therefore worth being loud about. The pool
102
- * reports held resources so a caller can assert.
103
- *
104
- * THE VERB IS `Free`, AND THE POOL OWNS IT. Settled 2026-09-05 with
105
- * `cjs-carbon-verbs`, after two wrong turns worth recording:
106
- *
107
- * - `Destroy` is wrong. It means GONE NOW - the pure virtual on
108
- * `Tr2BaseDeviceResourceAL` (`trinityal/Tr2DeviceResourceAL.h:30`), used on
109
- * 35 Carbon classes. A pooled resource is not destroyed; it goes back and is
110
- * handed out again. `ClearUnusedResources` below is where `Destroy` is
111
- * right, and where it is used.
112
- * - `Release` is not engine vocabulary. Bare `Release` appears ONLY in
113
- * Carbon's mesh viewer and video player, as Vulkan idiom. Trinity uses only
114
- * the qualified forms - `ReleaseLater`, `ReleaseDeviceResources`.
115
- *
116
- * `Free` is shared engine vocabulary on six Carbon classes - `FreeList`,
117
- * `Tr2VirtualAllocator`, `Tr2SuballocatedBuffer` and three descriptor-heap
118
- * allocators - and EVERY ONE IS AN ALLOCATOR OR POOL. The direction is theirs
119
- * too: `Tr2VirtualAllocator::Free( allocation )` and
120
- * `Tr2SuballocatedBuffer::Free( allocation& )` put the verb on the allocator,
121
- * not on the thing lent. So `pool.Free(handle)`, not `handle.Release()`.
122
- *
123
- * Carbon's handle has no named method at all - the work is in
124
- * `~GpuResourceHandle`. That absence is C++ not needing a name, and reading it
125
- * as a prohibition is how this briefly became a coined `ReleaseToPool`.
126
- */
127
- class GpuResourceHandle {
128
- #record = null;
129
-
130
- /**
131
- * @param {object} [record] The pool record this handle locks.
132
- */
133
- constructor(record = null) {
134
- this.#record = record;
135
- if (record) record.lockCount += 1;
136
- }
137
-
138
- /**
139
- * The resource itself.
140
- *
141
- * @returns {object|null} The resource, or null once released.
142
- */
143
- Get() {
144
- return this.#record?.resource ?? null;
145
- }
146
-
147
- /** @returns {boolean} Whether this handle still holds a resource. */
148
- IsValid() {
149
- return this.#record !== null;
150
- }
151
-
152
- /** @returns {string} The resource's debug name. */
153
- GetName() {
154
- return this.#record?.name ?? "";
155
- }
156
-
157
- /**
158
- * Drops this handle's claim. Called by `Tr2GpuResourcePool.Free`.
159
- *
160
- * Freeing twice is a caller error rather than a silent no-op: it means the
161
- * lock count no longer describes who is holding what.
162
- *
163
- * @returns {boolean} Whether a claim was dropped.
164
- */
165
- Detach() {
166
- if (!this.#record) fail("a handle freed twice");
167
- this.#record.lockCount -= 1;
168
- this.#record = null;
169
- return true;
170
- }
171
- }
172
-
173
63
  /**
174
64
  * Pooled scratch textures and buffers.
175
65
  */
@@ -232,7 +122,9 @@ class Tr2GpuResourcePool {
232
122
  * not.
233
123
  *
234
124
  * @param {string} name A debug name.
235
- * @param {object} description `{ width, height, format, gpuUsage }`.
125
+ * @param {object} description A `Tr2BitmapDimensions` shape (`type`, `width`,
126
+ * `height`, `depth`, `mipCount`, `format`) plus `gpuUsage`, `cpuUsage`,
127
+ * `msaa` and `initialData`.
236
128
  * @returns {GpuResourceHandle} The borrowed texture.
237
129
  */
238
130
  GetTempTexture(name, description) {
@@ -243,7 +135,7 @@ class Tr2GpuResourcePool {
243
135
  * Borrows a persistent texture, initializing it the first time only.
244
136
  *
245
137
  * @param {string} name A debug name.
246
- * @param {object} description `{ width, height, format, gpuUsage }`.
138
+ * @param {object} description As `GetTempTexture`.
247
139
  * @param {Function} [initialize] Called once, with the new texture.
248
140
  * @returns {GpuResourceHandle} The texture.
249
141
  */
@@ -348,7 +240,6 @@ class Tr2GpuResourcePool {
348
240
  /** Splits the pool's flat description into the AL's two arguments. */
349
241
  #CreateTexture(description) {
350
242
  if (!this.#renderContext) fail("a pool creates against a render context; none is bound");
351
- const texture = new Tr2TextureALStub();
352
243
  const {
353
244
  gpuUsage,
354
245
  cpuUsage,
@@ -356,36 +247,57 @@ class Tr2GpuResourcePool {
356
247
  initialData,
357
248
  ...dimensions
358
249
  } = description;
359
- texture.Create(new Tr2BitmapDimensions(dimensions), {
250
+
251
+ // THE CONTEXT IS THE FACTORY. This used to be `new Tr2TextureALStub()`,
252
+ // which named the backend at authoring time: every texture the pool handed
253
+ // out was a stub no matter which backend was bound, so a WebGPU pass would
254
+ // have been handed textures that reach no device and drawn nothing, with
255
+ // no error anywhere. Tr2Blitter's head comment names this exact defect.
256
+ //
257
+ // The dimensions spread carries type, depth and mipCount, so an array or a
258
+ // 3D texture is expressible here and always was.
259
+ return this.#renderContext.CreateTexture(new Tr2BitmapDimensions(dimensions), {
360
260
  gpuUsage,
361
261
  cpuUsage,
362
262
  msaa,
363
263
  initialData
364
- }, this.#renderContext);
365
- return texture;
264
+ });
366
265
  }
266
+
267
+ /**
268
+ * Creates a stub buffer from the description against the pool's render
269
+ * context.
270
+ */
367
271
  #CreateBuffer(description) {
368
272
  if (!this.#renderContext) fail("a pool creates against a render context; none is bound");
369
- const buffer = new Tr2BufferALStub();
370
273
 
371
- // THREE arguments. The context went into `initialData` here, leaving
372
- // `renderContext` undefined, so the first line of Create that touched it
373
- // threw a TypeError - which is why neither buffer accessor had ever run.
374
- // The texture path two methods up passes all three correctly.
375
- buffer.Create(description, null, this.#renderContext);
376
- return buffer;
274
+ // Through the context for the same reason as the texture above. The
275
+ // previous form also passed the context as `initialData`, leaving
276
+ // renderContext undefined and throwing a TypeError on the first line of
277
+ // Create that touched it - which is why neither buffer accessor had ever
278
+ // run. Both faults go together.
279
+ return this.#renderContext.CreateBuffer(description, null);
377
280
  }
281
+
282
+ /**
283
+ * Borrows a matching free resource from this pool or its outer pool,
284
+ * allocating when necessary.
285
+ */
378
286
  #Borrow(list, name, description, create) {
379
287
  const free = this.#Find(list, name, description, true);
380
288
  if (free) return new GpuResourceHandle(free);
381
289
  if (this.#outer) return this.#outer.#Borrow(list === this.#tempTextures ? this.#outer.#tempTextures : this.#outer.#tempBuffers, name, description, create);
382
290
  return new GpuResourceHandle(this.#Add(list, name, description, create()));
383
291
  }
292
+
293
+ /** Finds a matching pool record and updates its last-access frame. */
384
294
  #Find(list, name, description, freeOnly) {
385
295
  const match = list.find(record => record.name === name && SameDescription(record.description, description) && (!freeOnly || record.lockCount === 0));
386
296
  if (match) match.lastAccessFrame = this.#frame;
387
297
  return match ?? null;
388
298
  }
299
+
300
+ /** Adds an unlocked resource record stamped with the current frame. */
389
301
  #Add(list, name, description, resource) {
390
302
  const record = {
391
303
  resource,
@@ -419,5 +331,5 @@ function GetGlobalGpuResourcePool() {
419
331
  return globalPool;
420
332
  }
421
333
 
422
- export { GetGlobalGpuResourcePool, GpuResourceHandle, TextureSize2D, Tr2GpuResourcePool };
334
+ export { GetGlobalGpuResourcePool, Tr2GpuResourcePool, fail };
423
335
  //# sourceMappingURL=Tr2GpuResourcePool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tr2GpuResourcePool.js","sources":["../../../../../src/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js"],"sourcesContent":["// Source: trinity/trinity/Tr2GpuResourcePool.h\n// Source: trinity/trinity/Tr2GpuResourcePool.cpp\n//\n// Where a render pass gets a scratch texture or buffer, and how one is kept\n// alive only as long as something holds it.\n//\n// THIS IS THE CLASS FOUR INVENTED ONES WERE STANDING IN FOR. Carbon's\n// `Tr2ShadowMap::PrepareShadowRendering( gpuResourcePool, renderContext )` and\n// the whole `EveSpaceScene` volumetrics family take a pool and do their own\n// work. Ours had the methods but bounced them to an engine-supplied executor,\n// because there was no pool to hand them. So an interface was invented per\n// subsystem rather than porting the one class they all needed.\n//\n// TWO LIFETIMES, and the distinction is the whole design. A TEMP resource is\n// recycled as soon as nothing holds it and it has not been touched for a few\n// frames; a PERSISTENT one is initialized once and kept. Asking for a temp\n// texture with the same shape twice in a frame therefore gets the same texture\n// only if the first handle has been released - which is what makes a pass able\n// to say \"give me a working surface\" without owning one.\n//\n// THE HANDLE IS THE LIFETIME. Carbon's `GpuResourceHandle` counts locks on copy\n// and release, and a record with a live lock is never recycled. JavaScript has\n// no destructor, so `Release()` is explicit here - see the note on the class.\n//\n// NESTING IS CARBON'S: a pool may have an OUTER pool, and a lookup that misses\n// walks outward. That is how a scene-local pool shares the global one's\n// resources without owning them.\n\nimport { Tr2BitmapDimensions } from \"../../../trinityal/index.js\";\nimport { GpuResourceHandle } from \"./GpuResourceHandle.js\";\n\n/** Throws a resource-pool error with the supplied diagnostic. */\nexport function fail(message)\n{\n const error = new Error(`Tr2GpuResourcePool: ${message}`);\n error.code = \"CJS_GPU_POOL_INVALID\";\n throw error;\n}\n\n/**\n * Pooled scratch textures and buffers.\n */\nexport class Tr2GpuResourcePool\n{\n /** m_outer - the pool a miss falls through to. */\n #outer = null;\n\n #tempTextures = [];\n\n #persistentTextures = [];\n\n #tempBuffers = [];\n\n #persistentBuffers = [];\n\n /** m_debugMode */\n #debugMode = false;\n\n /** The frame a lookup counts as \"now\". */\n #frame = 0;\n\n /**\n * The backend resources are created against.\n *\n * Carbon's pool is a `Tr2DeviceResource` and reaches its device that way.\n * This runtime has no process-wide device, so the context is handed in - the\n * same arrangement `Tr2EffectStateManager` uses.\n */\n #renderContext = null;\n\n /**\n * @param {Tr2GpuResourcePool} [outer] A pool to fall through to on a miss.\n */\n constructor(outer = null)\n {\n this.#outer = outer;\n }\n\n /**\n * Binds the backend resources are created against.\n *\n * @param {object} renderContext A render-context abstraction layer.\n * @returns {Tr2GpuResourcePool} This pool, for chaining.\n */\n SetRenderContext(renderContext)\n {\n this.#renderContext = renderContext;\n\n return this;\n }\n\n /**\n * Advances the pool's idea of the current frame.\n *\n * @param {number} frame The frame number.\n */\n SetFrame(frame)\n {\n this.#frame = frame;\n }\n\n /**\n * Borrows a scratch texture, creating one only if no free match exists.\n *\n * A FREE MATCH IS ONE NOBODY HOLDS. A record with a live lock is never handed\n * out again, which is what lets two passes ask for \"a 512 square\" and get\n * different surfaces when both are in flight, and the same one when they are\n * not.\n *\n * @param {string} name A debug name.\n * @param {object} description A `Tr2BitmapDimensions` shape (`type`, `width`,\n * `height`, `depth`, `mipCount`, `format`) plus `gpuUsage`, `cpuUsage`,\n * `msaa` and `initialData`.\n * @returns {GpuResourceHandle} The borrowed texture.\n */\n GetTempTexture(name, description)\n {\n return this.#Borrow(this.#tempTextures, name, description, () => this.#CreateTexture(description));\n }\n\n /**\n * Borrows a persistent texture, initializing it the first time only.\n *\n * @param {string} name A debug name.\n * @param {object} description As `GetTempTexture`.\n * @param {Function} [initialize] Called once, with the new texture.\n * @returns {GpuResourceHandle} The texture.\n */\n GetPersistentTexture(name, description, initialize = null)\n {\n const existing = this.#Find(this.#persistentTextures, name, description, false);\n\n if (existing) return new GpuResourceHandle(existing);\n\n const texture = this.#CreateTexture(description);\n\n if (initialize) initialize(texture);\n\n return new GpuResourceHandle(this.#Add(this.#persistentTextures, name, description, texture));\n }\n\n /**\n * Borrows a scratch buffer.\n *\n * @param {string} name A debug name.\n * @param {object} description A `Tr2BufferDescriptionAL`.\n * @returns {GpuResourceHandle} The borrowed buffer.\n */\n GetTempBuffer(name, description)\n {\n return this.#Borrow(this.#tempBuffers, name, description, () => this.#CreateBuffer(description));\n }\n\n /**\n * Borrows a persistent buffer, initializing it the first time only.\n *\n * @param {string} name A debug name.\n * @param {object} description A `Tr2BufferDescriptionAL`.\n * @param {Function} [initialize] Called once, with the new buffer.\n * @returns {GpuResourceHandle} The buffer.\n */\n GetPersistentBuffer(name, description, initialize = null)\n {\n const existing = this.#Find(this.#persistentBuffers, name, description, false);\n\n if (existing) return new GpuResourceHandle(existing);\n\n const buffer = this.#CreateBuffer(description);\n\n if (initialize) initialize(buffer);\n\n return new GpuResourceHandle(this.#Add(this.#persistentBuffers, name, description, buffer));\n }\n\n /**\n * Returns a borrowed resource, as Carbon's allocators do.\n *\n * @param {GpuResourceHandle} handle The handle to give back.\n * @returns {boolean} Whether a claim was dropped.\n */\n Free(handle)\n {\n if (!handle) fail(\"Free needs a handle\");\n\n return handle.Detach();\n }\n\n /**\n * Drops temp resources nobody holds and nobody has touched recently.\n *\n * @param {number} [frameThreshold] How many frames of disuse to allow.\n * @returns {number} How many resources were dropped.\n */\n ClearUnusedResources(frameThreshold = 3)\n {\n let dropped = 0;\n\n for (const list of [ this.#tempTextures, this.#tempBuffers ])\n {\n for (let index = list.length - 1; index >= 0; index -= 1)\n {\n const record = list[index];\n\n if (record.lockCount > 0) continue;\n if (this.#frame - record.lastAccessFrame < frameThreshold) continue;\n\n record.resource.Destroy();\n list.splice(index, 1);\n dropped += 1;\n }\n }\n\n return dropped;\n }\n\n /** @param {boolean} enable Whether to keep debug detail. */\n SetDebugMode(enable)\n {\n this.#debugMode = !!enable;\n }\n\n /** @returns {boolean} Whether debug mode is on. */\n GetDebugMode()\n {\n return this.#debugMode;\n }\n\n /**\n * Every temp texture the pool holds, for a caller that must assert.\n *\n * @returns {object[]} The textures.\n */\n DebugGetAllTempTextures()\n {\n return this.#tempTextures.map(record => record.resource);\n }\n\n /**\n * How many resources are currently held by a handle.\n *\n * Not Carbon's - JavaScript has no destructor to release on, so a caller\n * needs a way to prove it released what it borrowed.\n *\n * @returns {number} The count.\n */\n GetHeldCount()\n {\n return [ this.#tempTextures, this.#persistentTextures, this.#tempBuffers, this.#persistentBuffers ]\n .reduce((total, list) => total + list.filter(record => record.lockCount > 0).length, 0);\n }\n\n /** Splits the pool's flat description into the AL's two arguments. */\n #CreateTexture(description)\n {\n if (!this.#renderContext) fail(\"a pool creates against a render context; none is bound\");\n\n const { gpuUsage, cpuUsage, msaa, initialData, ...dimensions } = description;\n\n // THE CONTEXT IS THE FACTORY. This used to be `new Tr2TextureALStub()`,\n // which named the backend at authoring time: every texture the pool handed\n // out was a stub no matter which backend was bound, so a WebGPU pass would\n // have been handed textures that reach no device and drawn nothing, with\n // no error anywhere. Tr2Blitter's head comment names this exact defect.\n //\n // The dimensions spread carries type, depth and mipCount, so an array or a\n // 3D texture is expressible here and always was.\n return this.#renderContext.CreateTexture(\n new Tr2BitmapDimensions(dimensions),\n { gpuUsage, cpuUsage, msaa, initialData }\n );\n }\n\n /**\n * Creates a stub buffer from the description against the pool's render\n * context.\n */\n #CreateBuffer(description)\n {\n if (!this.#renderContext) fail(\"a pool creates against a render context; none is bound\");\n\n // Through the context for the same reason as the texture above. The\n // previous form also passed the context as `initialData`, leaving\n // renderContext undefined and throwing a TypeError on the first line of\n // Create that touched it - which is why neither buffer accessor had ever\n // run. Both faults go together.\n return this.#renderContext.CreateBuffer(description, null);\n }\n\n /**\n * Borrows a matching free resource from this pool or its outer pool,\n * allocating when necessary.\n */\n #Borrow(list, name, description, create)\n {\n const free = this.#Find(list, name, description, true);\n\n if (free) return new GpuResourceHandle(free);\n\n if (this.#outer) return this.#outer.#Borrow(list === this.#tempTextures\n ? this.#outer.#tempTextures\n : this.#outer.#tempBuffers, name, description, create);\n\n return new GpuResourceHandle(this.#Add(list, name, description, create()));\n }\n\n /** Finds a matching pool record and updates its last-access frame. */\n #Find(list, name, description, freeOnly)\n {\n const match = list.find(record =>\n record.name === name\n && SameDescription(record.description, description)\n && (!freeOnly || record.lockCount === 0));\n\n if (match) match.lastAccessFrame = this.#frame;\n\n return match ?? null;\n }\n\n /** Adds an unlocked resource record stamped with the current frame. */\n #Add(list, name, description, resource)\n {\n const record = { resource, name, description, lockCount: 0, lastAccessFrame: this.#frame };\n\n list.push(record);\n\n return record;\n }\n}\n\nfunction SameDescription(left, right)\n{\n if (left === right) return true;\n if (!left || !right) return false;\n\n const keys = new Set([ ...Object.keys(left), ...Object.keys(right) ]);\n\n for (const key of keys)\n {\n if (left[key] !== right[key]) return false;\n }\n\n return true;\n}\n\nlet globalPool = null;\n\n/**\n * Carbon's `GetGlobalGpuResourcePool`.\n *\n * @returns {Tr2GpuResourcePool} The process-wide pool.\n */\nexport function GetGlobalGpuResourcePool()\n{\n globalPool ??= new Tr2GpuResourcePool();\n\n return globalPool;\n}\n"],"names":["fail","message","error","Error","code","Tr2GpuResourcePool","constructor","outer","SetRenderContext","renderContext","SetFrame","frame","GetTempTexture","name","description","GetPersistentTexture","initialize","existing","GpuResourceHandle","texture","GetTempBuffer","GetPersistentBuffer","buffer","Free","handle","Detach","ClearUnusedResources","frameThreshold","dropped","list","index","length","record","lockCount","lastAccessFrame","resource","Destroy","splice","SetDebugMode","enable","GetDebugMode","DebugGetAllTempTextures","map","GetHeldCount","reduce","total","filter","#CreateTexture","gpuUsage","cpuUsage","msaa","initialData","dimensions","CreateTexture","Tr2BitmapDimensions","#CreateBuffer","CreateBuffer","#Borrow","create","free","#Find","freeOnly","match","find","SameDescription","#Add","push","left","right","keys","Set","Object","key","globalPool","GetGlobalGpuResourcePool"],"mappings":"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"}
@@ -1,38 +1,16 @@
1
- import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
+ import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { Tr2QuadRendererEffectRecord } from './Tr2QuadRendererEffectRecord.js';
2
3
  import { type, carbon, impl } from '#schema';
3
4
  import { CjsModel } from '#model';
4
- import { Tr2RenderBatch } from './batch/Tr2RenderBatch.js';
5
+ import { Tr2RenderBatch } from '../batch/TriRenderBatch/Tr2RenderBatch.js';
6
+ import '../batch/TriRenderBatch/DefaultKeyGenerator.js';
7
+ import '../batch/TriRenderBatch/EffectKeyGenerator.js';
8
+ import '../batch/TriRenderBatch/ITriRenderBatchAccumulator.js';
5
9
  import { TriBatchType } from '#consts/graphics';
10
+ import '#consts/render-context';
6
11
 
7
12
  let _initProto, _initClass, _init_vertexBufferOffset, _init_extra_vertexBufferOffset, _init_lastInstanceDataSize, _init_extra_lastInstanceDataSize, _init_bufferAlignment, _init_extra_bufferAlignment, _init_bufferSize, _init_extra_bufferSize;
8
13
 
9
- /** One registered quad effect (Carbon Tr2QuadRenderer::EffectRecord). */
10
- class Tr2QuadRendererEffectRecord {
11
- effect = null;
12
- batchType = 0;
13
-
14
- /** Size of one instance vertex in BYTES. */
15
- instanceSize = 0;
16
-
17
- /** Number of quads to render per instance. */
18
- quadCount = 0;
19
-
20
- /** Vertex definition (engine resolves the declaration handle from it). */
21
- definition = null;
22
-
23
- /** Byte offset of this record's instances in the merged buffer. */
24
- bufferOffset = 0;
25
-
26
- /** Number of instances merged this frame. */
27
- count = 0;
28
-
29
- /** Per-frame accumulation (Carbon's per-thread TLS collapses to one list). */
30
- pending = [];
31
-
32
- /** Bytes accumulated in pending. */
33
- addedSize = 0;
34
- }
35
-
36
14
  /** Collects quads from every registered effect into one merged instance buffer and emits them as batches. */
37
15
  let _Tr2QuadRenderer;
38
16
  new class extends _identity {
@@ -270,5 +248,5 @@ new class extends _identity {
270
248
  }
271
249
  }();
272
250
 
273
- export { _Tr2QuadRenderer as Tr2QuadRenderer, Tr2QuadRendererEffectRecord };
251
+ export { _Tr2QuadRenderer as Tr2QuadRenderer };
274
252
  //# sourceMappingURL=Tr2QuadRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tr2QuadRenderer.js","sources":["../../../../../src/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js"],"sourcesContent":["// Source: trinity/trinity/Tr2QuadRenderer.h\n// trinity/trinity/Tr2QuadRenderer.cpp\r\n// Hand-maintained from Carbon source, promoted out of generated intake.\r\n// CPU half implemented 2026-07-23 (batch-plan P5 scene-global quad collector).\r\n// The generator had flattened the internal EffectRecord/PerThreadData members\r\n// onto the class; corrected to Carbon's nested shape. GPU realization (quad\r\n// vertex/index buffers, ring instance buffer upload, vertex-declaration\r\n// handles) is engine-owned and reads the merged CPU state emitted here.\r\nimport { Tr2QuadRendererEffectRecord } from \"./Tr2QuadRendererEffectRecord.js\";\r\nimport { carbon, impl, type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { Tr2RenderBatch } from \"../batch/TriRenderBatch/index.js\";\r\nimport { TriBatchType } from \"#consts/graphics\";\r\n\r\n\r\n/** Collects quads from every registered effect into one merged instance buffer and emits them as batches. */\r\n@type.define({ className: \"Tr2QuadRenderer\", family: \"trinityCore\" })\r\nexport class Tr2QuadRenderer extends CjsModel\r\n{\r\n\r\n /** m_vertexBufferOffset (uint32_t) - ring offset; engine stamps the real one. */\r\n @type.uint32\r\n vertexBufferOffset = 0;\r\n\r\n /** m_lastInstanceDataSize (uint32_t) */\r\n @type.uint32\r\n lastInstanceDataSize = 0;\r\n\r\n /** m_bufferAlignment (uint32_t) - lcm of registered instance sizes. */\r\n @type.uint32\r\n bufferAlignment = 4;\r\n\r\n /** m_bufferSize - bytes accumulated this frame across all records. */\r\n @type.uint32\r\n bufferSize = 0;\r\n\r\n /** m_effects - EffectKey -> Tr2QuadRendererEffectRecord. */\r\n #effects = new Map();\r\n\r\n /** The merged terminal CPU instance bytes for the frame. */\r\n #mergedData = null;\r\n\r\n /** Largest quadCount among records with instances (RecreateQuadBuffers input). */\r\n #maxQuadCount = 0;\r\n\r\n /**\r\n * Registers a quad effect once per key (Carbon Tr2QuadRenderer.cpp:30-53).\r\n * instanceSize is in bytes; the buffer alignment grows to the lcm of all\r\n * registered instance sizes.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterEffect(key, batchType, instanceSize, quadCount, definition, effect)\r\n {\r\n if (this.#effects.has(key))\r\n {\r\n return;\r\n }\r\n const record = new Tr2QuadRendererEffectRecord();\r\n record.effect = effect ?? null;\r\n record.batchType = batchType;\r\n record.instanceSize = instanceSize >>> 0;\r\n record.quadCount = quadCount >>> 0;\r\n record.definition = definition ?? null;\r\n this.#effects.set(key, record);\r\n this.bufferAlignment = Tr2QuadRenderer.#Lcm(this.bufferAlignment, record.instanceSize || 1);\r\n }\r\n\r\n /**\r\n * Drops a registered effect and the quads accumulated for it.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UnregisterEffect(key)\r\n {\r\n this.#effects.delete(key);\r\n }\r\n\r\n /**\r\n * Accumulates instance data for a registered effect (Carbon cpp:60-79).\r\n * Accepts terminal byte views or legacy float32-compatible number arrays\r\n * covering count * instanceSize bytes; unknown keys are ignored like Carbon.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Single-threaded JS collapses the per-thread TLS buffers to one pending list while preserving Carbon's raw memcpy byte boundary.\")\r\n AddQuads(effectKey, sprites, count = 1)\r\n {\r\n const record = this.#effects.get(effectKey);\r\n if (!record)\r\n {\r\n return;\r\n }\r\n\r\n const size = count * record.instanceSize;\r\n if (!size)\r\n {\r\n return;\r\n }\r\n\r\n const bytes = Tr2QuadRenderer.#CopyInstanceBytes(sprites, size);\r\n record.pending.push(bytes);\r\n record.addedSize += size;\r\n this.bufferSize += size;\r\n }\r\n\r\n /**\r\n * Concatenates every record's pending instances into one aligned CPU\r\n * buffer, stamping per-record bufferOffset/count (Carbon cpp:81-115).\r\n * Returns the largest quadCount among live records.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n MergeBuffers()\r\n {\r\n let padded = this.bufferSize;\r\n for (const record of this.#effects.values())\r\n {\r\n padded += record.instanceSize;\r\n }\r\n const merged = new Uint8Array(padded);\r\n let offset = 0;\r\n let quadCount = 0;\r\n for (const record of this.#effects.values())\r\n {\r\n offset = Tr2QuadRenderer.#Align(offset, record.instanceSize || 1);\r\n record.bufferOffset = offset;\r\n for (const chunk of record.pending)\r\n {\r\n merged.set(chunk, offset);\r\n offset += chunk.byteLength;\r\n }\r\n record.pending.length = 0;\r\n record.addedSize = 0;\r\n record.count = record.instanceSize ? (offset - record.bufferOffset) / record.instanceSize : 0;\r\n if (record.count)\r\n {\r\n quadCount = Math.max(quadCount, record.quadCount);\r\n }\r\n }\r\n this.#mergedData = merged;\r\n this.#maxQuadCount = quadCount;\r\n return quadCount;\r\n }\r\n\r\n /**\r\n * Frame-start CPU work (Carbon cpp:160-166): merge the accumulated\r\n * instances. Buffer upload and quad-buffer creation are engine-owned;\r\n * the engine reads GetMergedData()/GetMaxQuadCount() and stamps\r\n * vertexBufferOffset with the ring allocation.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"UpdateInstanceBuffer/RecreateQuadBuffers/PrepareResources are GPU realization; the merged CPU state is exposed for the engine.\")\r\n BeginRendering(_renderContext = null)\r\n {\r\n const quadCount = this.MergeBuffers();\r\n this.lastInstanceDataSize = this.bufferSize;\r\n return quadCount;\r\n }\r\n\r\n /** Frame-end reset (Carbon cpp:55-58). */\r\n @carbon.method\r\n @impl.implemented\r\n DoneRendering(_renderContext = null)\r\n {\r\n this.bufferSize = 0;\r\n }\r\n\r\n /**\r\n * Emits one instanced batch per live record of the requested type\r\n * (Carbon cpp:188-207). The quad vertex/index buffers are shared engine\r\n * resources, carried as descriptors on the batch; startInstanceLocation\r\n * derives from the ring offset + record offset exactly like Carbon.\r\n * Returns whether any batch was committed (JS convention).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Quad and ring buffers become deferred descriptors the engine realizes; Carbon binds live AL buffers here.\")\r\n GetBatches(batchType, accumulator)\r\n {\r\n let committed = false;\r\n for (const record of this.#effects.values())\r\n {\r\n if (!record.count || record.batchType !== batchType)\r\n {\r\n continue;\r\n }\r\n const batch = accumulator.Allocate(Tr2RenderBatch);\r\n batch.SetMaterial(record.effect);\r\n batch.SetGeometry(record.definition, Tr2QuadRenderer.QuadVertexSource, 4, Tr2QuadRenderer.QuadIndexSource, 2);\r\n batch.SetStreamSource(1, {\r\n quadInstanceData: this.#mergedData,\r\n byteOffset: record.bufferOffset,\r\n instanceSize: record.instanceSize\r\n }, record.instanceSize);\r\n batch.SetDrawIndexedInstanced(\r\n 6 * record.quadCount,\r\n record.count,\r\n 0,\r\n 0,\r\n record.instanceSize ? (this.vertexBufferOffset + record.bufferOffset) / record.instanceSize : 0\r\n );\r\n committed = accumulator.Commit(batch) || committed;\r\n }\r\n return committed;\r\n }\r\n\r\n /**\r\n * The per-instance byte size an engine allocates for a registered effect.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetInstanceDataSize()\r\n {\r\n return this.lastInstanceDataSize;\r\n }\r\n\r\n /** The frame's merged CPU instance buffer for the engine uploader. */\r\n GetMergedData()\r\n {\r\n return this.#mergedData;\r\n }\r\n\r\n /** The largest quadCount among live records (quad IB sizing). */\r\n GetMaxQuadCount()\r\n {\r\n return this.#maxQuadCount;\r\n }\r\n\r\n /** The registered effect records (engine declaration resolution). */\r\n GetEffectRecords()\r\n {\r\n return this.#effects;\r\n }\r\n\r\n /** Carbon Tr2QuadRenderer::Instance - the scene-global singleton. */\r\n static Instance()\r\n {\r\n if (!Tr2QuadRenderer.#instance)\r\n {\r\n Tr2QuadRenderer.#instance = new Tr2QuadRenderer();\r\n }\r\n return Tr2QuadRenderer.#instance;\r\n }\r\n\r\n /**\r\n * Rounds an offset up to the next multiple of an alignment.\r\n */\r\n static #Align(offset, alignment)\r\n {\r\n return Math.ceil(offset / alignment) * alignment;\r\n }\r\n\r\n /**\r\n * The lowest common multiple of two sizes, used to align a shared instance stride.\r\n */\r\n static #Lcm(a, b)\r\n {\r\n const gcd = (x, y) => (y ? gcd(y, x % y) : x);\r\n return (a * b) / gcd(a, b);\r\n }\r\n\r\n /** Copies one AddQuads input as the exact bytes Carbon memcpy would receive. */\r\n static #CopyInstanceBytes(source, size)\r\n {\r\n let bytes;\r\n\r\n if (ArrayBuffer.isView(source))\r\n {\r\n bytes = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\r\n }\r\n else if (source instanceof ArrayBuffer)\r\n {\r\n bytes = new Uint8Array(source);\r\n }\r\n else if (Array.isArray(source))\r\n {\r\n const floats = Float32Array.from(source);\r\n bytes = new Uint8Array(floats.buffer, floats.byteOffset, floats.byteLength);\r\n }\r\n else\r\n {\r\n throw new TypeError(\"Tr2QuadRenderer.AddQuads requires terminal bytes or float32-compatible numeric data.\");\r\n }\r\n\r\n if (bytes.byteLength < size)\r\n {\r\n throw new RangeError(`Tr2QuadRenderer.AddQuads expected ${size} bytes, received ${bytes.byteLength}.`);\r\n }\r\n\r\n return bytes.slice(0, size);\r\n }\r\n\r\n static #instance = null;\r\n\r\n /** Deferred descriptor for the engine-owned shared quad vertex buffer. */\r\n static QuadVertexSource = Object.freeze({ quadRendererBuffer: \"quad-vertices\" });\r\n\r\n /** Deferred descriptor for the engine-owned shared quad index buffer. */\r\n static QuadIndexSource = Object.freeze({ quadRendererBuffer: \"quad-indices\" });\r\n\r\n static TriBatchType = TriBatchType;\r\n\r\n}\r\n"],"names":["_Tr2QuadRenderer","_identity","Tr2QuadRenderer","CjsModel","e","_init_vertexBufferOffset","_init_extra_vertexBufferOffset","_init_lastInstanceDataSize","_init_extra_lastInstanceDataSize","_init_bufferAlignment","_init_extra_bufferAlignment","_init_bufferSize","_init_extra_bufferSize","_initProto","c","_initClass","_applyDecs","type","define","className","family","uint32","carbon","method","impl","implemented","adapted","reason","vertexBufferOffset","lastInstanceDataSize","bufferAlignment","bufferSize","Map","RegisterEffect","key","batchType","instanceSize","quadCount","definition","effect","has","record","Tr2QuadRendererEffectRecord","set","UnregisterEffect","delete","AddQuads","effectKey","sprites","count","get","size","bytes","pending","push","addedSize","MergeBuffers","padded","values","merged","Uint8Array","offset","bufferOffset","chunk","byteLength","length","Math","max","BeginRendering","_renderContext","DoneRendering","GetBatches","accumulator","committed","batch","Allocate","Tr2RenderBatch","SetMaterial","SetGeometry","QuadVertexSource","QuadIndexSource","SetStreamSource","quadInstanceData","byteOffset","SetDrawIndexedInstanced","Commit","GetInstanceDataSize","GetMergedData","GetMaxQuadCount","GetEffectRecords","Instance","#Align","alignment","ceil","#Lcm","a","b","gcd","x","y","#CopyInstanceBytes","source","ArrayBuffer","isView","buffer","Array","isArray","floats","Float32Array","from","TypeError","RangeError","slice","Object","freeze","quadRendererBuffer","TriBatchType","constructor"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ // Source: trinity/trinity/Tr2QuadRenderer.h
2
+ // trinity/trinity/Tr2QuadRenderer.cpp
3
+ // Hand-maintained from Carbon source, promoted out of generated intake.
4
+ // CPU half implemented 2026-07-23 (batch-plan P5 scene-global quad collector).
5
+ // The generator had flattened the internal EffectRecord/PerThreadData members
6
+ // onto the class; corrected to Carbon's nested shape. GPU realization (quad
7
+ // vertex/index buffers, ring instance buffer upload, vertex-declaration
8
+ // handles) is engine-owned and reads the merged CPU state emitted here.
9
+
10
+ /** One registered quad effect (Carbon Tr2QuadRenderer::EffectRecord). */
11
+ class Tr2QuadRendererEffectRecord {
12
+ effect = null;
13
+ batchType = 0;
14
+
15
+ /** Size of one instance vertex in BYTES. */
16
+ instanceSize = 0;
17
+
18
+ /** Number of quads to render per instance. */
19
+ quadCount = 0;
20
+
21
+ /** Vertex definition (engine resolves the declaration handle from it). */
22
+ definition = null;
23
+
24
+ /** Byte offset of this record's instances in the merged buffer. */
25
+ bufferOffset = 0;
26
+
27
+ /** Number of instances merged this frame. */
28
+ count = 0;
29
+
30
+ /** Per-frame accumulation (Carbon's per-thread TLS collapses to one list). */
31
+ pending = [];
32
+
33
+ /** Bytes accumulated in pending. */
34
+ addedSize = 0;
35
+ }
36
+
37
+ export { Tr2QuadRendererEffectRecord };
38
+ //# sourceMappingURL=Tr2QuadRendererEffectRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tr2QuadRendererEffectRecord.js","sources":["../../../../../src/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js"],"sourcesContent":["// Source: trinity/trinity/Tr2QuadRenderer.h\r\n// trinity/trinity/Tr2QuadRenderer.cpp\r\n// Hand-maintained from Carbon source, promoted out of generated intake.\r\n// CPU half implemented 2026-07-23 (batch-plan P5 scene-global quad collector).\r\n// The generator had flattened the internal EffectRecord/PerThreadData members\r\n// onto the class; corrected to Carbon's nested shape. GPU realization (quad\r\n// vertex/index buffers, ring instance buffer upload, vertex-declaration\r\n// handles) is engine-owned and reads the merged CPU state emitted here.\r\n\r\n\r\n/** One registered quad effect (Carbon Tr2QuadRenderer::EffectRecord). */\r\nexport class Tr2QuadRendererEffectRecord\r\n{\r\n\r\n effect = null;\r\n\r\n batchType = 0;\r\n\r\n /** Size of one instance vertex in BYTES. */\r\n instanceSize = 0;\r\n\r\n /** Number of quads to render per instance. */\r\n quadCount = 0;\r\n\r\n /** Vertex definition (engine resolves the declaration handle from it). */\r\n definition = null;\r\n\r\n /** Byte offset of this record's instances in the merged buffer. */\r\n bufferOffset = 0;\r\n\r\n /** Number of instances merged this frame. */\r\n count = 0;\r\n\r\n /** Per-frame accumulation (Carbon's per-thread TLS collapses to one list). */\r\n pending = [];\r\n\r\n /** Bytes accumulated in pending. */\r\n addedSize = 0;\r\n\r\n}\r\n"],"names":["Tr2QuadRendererEffectRecord","effect","batchType","instanceSize","quadCount","definition","bufferOffset","count","pending","addedSize"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACO,MAAMA,2BAA2B,CACxC;AAEEC,EAAAA,MAAM,GAAG,IAAI;AAEbC,EAAAA,SAAS,GAAG,CAAC;;AAEb;AACAC,EAAAA,YAAY,GAAG,CAAC;;AAEhB;AACAC,EAAAA,SAAS,GAAG,CAAC;;AAEb;AACAC,EAAAA,UAAU,GAAG,IAAI;;AAEjB;AACAC,EAAAA,YAAY,GAAG,CAAC;;AAEhB;AACAC,EAAAA,KAAK,GAAG,CAAC;;AAET;AACAC,EAAAA,OAAO,GAAG,EAAE;;AAEZ;AACAC,EAAAA,SAAS,GAAG,CAAC;AAEf;;;;"}
@@ -3,12 +3,29 @@ import { mat4 } from '#math/mat4';
3
3
  import { vec3 } from '#math/vec3';
4
4
  import { Failed } from '../../trinityal/ALResult.js';
5
5
  import '../../trinityal/Tr2BitmapDimensions.js';
6
- import '../../trinityal/Tr2DrawUPHelper.js';
7
6
  import '../../global/consts/renderContext/formats.js';
8
7
  import '../../global/consts/renderContext/pipeline.js';
9
- import '../../trinityal/Tr2ResourceSetAL.js';
8
+ import '../../trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js';
9
+ import '../../trinityal/Tr2DrawUPHelper.js';
10
+ import '../../trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js';
11
+ import '../../trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js';
12
+ import '../../trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js';
13
+ import '../../trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js';
14
+ import '../../trinityal/stub/Tr2BufferALStub.js';
15
+ import '../../trinityal/stub/Tr2CapsALStub.js';
10
16
  import { Tr2ConstantUsageAL } from '../../trinityal/stub/Tr2ConstantBufferALStub.js';
11
- import '../../trinityal/stub/Tr2RenderContextALStub.js';
17
+ import '../../trinityal/stub/Tr2FenceALStub.js';
18
+ import '../../trinityal/stub/Tr2OcclusionQueryALStub.js';
19
+ import '../../trinityal/stub/Tr2GpuTimerALStub.js';
20
+ import '../../trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js';
21
+ import '../../trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js';
22
+ import '../../trinityal/stub/Tr2SamplerStateALStub.js';
23
+ import '../../trinityal/stub/Tr2ShaderALStub.js';
24
+ import '../../trinityal/stub/Tr2ShaderProgramALStub.js';
25
+ import '../../trinityal/stub/Tr2SwapChainALStub.js';
26
+ import '../../trinityal/stub/Tr2TextureALStub.js';
27
+ import '../../trinityal/stub/Tr2VertexLayoutALStub.js';
28
+ import '../../trinityal/stub/Tr2VideoAdapterInfoStub.js';
12
29
 
13
30
  // Source: trinity/trinity/Tr2RenderUtils.h
14
31
  // Source: trinity/trinity/Tr2RenderUtils.cpp
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2RenderUtils.js","sources":["../../../../src/trinity/core/Tr2RenderUtils.js"],"sourcesContent":["// Source: trinity/trinity/Tr2RenderUtils.h\n// Source: trinity/trinity/Tr2RenderUtils.cpp\n//\n// Freestanding helpers that need no private state. Carbon's own header explains\n// why the file exists: \"Most of this was TriDevice/Tr2Renderer but works just\n// fine with the public interfaces. So put those guys here to lighten up those\n// classes.\"\n//\n// THESE ARE TRINITY, NOT THE ABSTRACTION LAYER, and that is the whole reason\n// they were missing. `FillAndSetConstants` is the last hop of Carbon's\n// per-object upload - `Tr2PerObjectDataStandard::SetPerObjectDataToDevice`\n// calls it twice and does nothing else - and it lives in a Trinity header. It\n// went unported because \"the engine does device work\" was read as the\n// `trinityal/webgpu` package rather than the abstraction layer, so the upload was\n// reimplemented engine-side and this file never got written. See\n// /docs/research/graphics-path-review-2026-09-05.md.\n//\n// `SetupScreenQuad` and `SetupScreenQuadInCameraSpace` are here too. They feed\n// `Tr2Blitter`'s fullscreen-quad path, which is the single gate in front of\n// every remaining render step: TriStepRenderTexture, TriStepRenderAtlas and\n// `TriStepRenderEffect` all bottom out in `Tr2Renderer::DrawTexture` ->\n// `Tr2Blitter::Draw`.\nimport { ShaderType } from \"#consts/render-context\";\nimport { mat4 } from \"#math/mat4\";\nimport { vec3 } from \"#math/vec3\";\nimport { Tr2ConstantUsageAL } from \"../../trinityal/index.js\";\nimport { Failed } from \"../../trinityal/ALResult.js\";\n\n\n/**\n * Binds one constant buffer to every shader stage a mask names.\n *\n * Carbon `SetConstants` (`Tr2RenderUtils.cpp:126-137`). The loop clears each\n * bit as it goes and stops as soon as the mask is empty, so a single-stage\n * bind costs one iteration rather than six.\n *\n * @param {object} buffer A `Tr2ConstantBufferAL`.\n * @param {number} constantTypeMask A bit per `ShaderType`.\n * @param {number} registerIndex The constant-buffer register.\n * @param {object} renderContext The context to bind against.\n * @returns {number} How many stages were bound.\n */\nexport function SetConstants(buffer, constantTypeMask, registerIndex, renderContext)\n{\n let mask = constantTypeMask >>> 0;\n let bound = 0;\n\n for (let stage = ShaderType.SHADER_TYPE_FIRST; stage !== ShaderType.SHADER_TYPE_COUNT && mask; stage += 1)\n {\n if (!(mask & (1 << stage))) continue;\n\n renderContext.SetConstants(buffer, stage, registerIndex);\n mask &= ~(1 << stage);\n bound += 1;\n }\n\n return bound;\n}\n\n\n/**\n * Creates or grows a constant buffer, copies data into it, and binds it.\n *\n * Carbon `FillAndSetConstants` (`Tr2RenderUtils.cpp:100-124`), the repeating\n * pattern its own comment describes: create if needed, lock, copy, unlock, set.\n *\n * A ZERO MASK RETURNS SUCCESS AND BINDS NOTHING. That is Carbon's first line\n * and it is not a guard against bad input - it is how a payload declared for\n * stages a technique does not use gets skipped, per batch, without the caller\n * testing anything.\n *\n * THE COPY IS CLAMPED TO THE BUFFER, not to the data. Carbon writes\n * `min( dataSize, buffer.GetSize() )`, so a payload larger than the buffer\n * fills it and the tail is dropped rather than overrunning.\n *\n * @param {object} buffer A `Tr2ConstantBufferAL`, created here if it has to be.\n * @param {ArrayBufferView} data The bytes to upload.\n * @param {number} dataSize How many bytes of `data` to upload.\n * @param {number} constantTypeMask A bit per `ShaderType`.\n * @param {number} registerIndex The constant-buffer register.\n * @param {object} renderContext The context to upload and bind against.\n * @returns {boolean} Whether the data was uploaded and bound.\n */\nexport function FillAndSetConstants(buffer, data, dataSize, constantTypeMask, registerIndex, renderContext)\n{\n if (!(constantTypeMask >>> 0)) return true;\n\n if (!buffer.IsValid() || dataSize > buffer.GetSize())\n {\n if (Failed(buffer.Create(dataSize, Tr2ConstantUsageAL.REUSABLE, null, renderContext))) return false;\n }\n\n const { result, data: mapped } = buffer.Lock(renderContext);\n\n if (Failed(result) || !mapped) return false;\n\n const bytes = data instanceof Uint8Array\n ? data\n : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\n mapped.set(bytes.subarray(0, Math.min(dataSize, buffer.GetSize())));\n\n buffer.Unlock(renderContext);\n\n SetConstants(buffer, constantTypeMask, registerIndex, renderContext);\n\n return true;\n}\n\n\n// Carbon `Tr2ScreenVertex` (Tr2RenderUtils.h:13-17): a clip-space position and\n// one texture coordinate. Four of them make the blitter's triangle strip.\nexport const SCREEN_VERTEX_FLOATS = 6;\nexport const SCREEN_VERTEX_BYTES = SCREEN_VERTEX_FLOATS * 4;\nexport const SCREEN_QUAD_FLOATS = SCREEN_VERTEX_FLOATS * 4;\n\n\n/** Writes one Tr2ScreenVertex into a flat float array at vertex index `at`. */\nfunction writeScreenVertex(quad, at, x, y, z, w, u, v)\n{\n const base = at * SCREEN_VERTEX_FLOATS;\n quad[base] = x;\n quad[base + 1] = y;\n quad[base + 2] = z;\n quad[base + 3] = w;\n quad[base + 4] = u;\n quad[base + 5] = v;\n}\n\n\n/**\n * Carbon's interior-edge flip (`Tr2RenderUtils.cpp:24-33` and `67-76`).\n *\n * The quad is emitted as a triangle strip, so which diagonal splits it decides\n * the winding of both triangles. Carbon swaps the two interior vertices when\n * the cull mode is NOT inverted, which is the ordinary case - so the common\n * path is the swapped one, not the literal 0/1/2/3 order the comments read as.\n *\n * @param {object} renderContext The context whose ESM holds the cull override.\n * @returns {Array<number>} The two interior vertex indices, in emission order.\n */\nfunction interiorEdges(renderContext)\n{\n const esm = renderContext.GetEffectStateManager();\n\n return esm.IsCullModeInverted() ? [ 1, 2 ] : [ 2, 1 ];\n}\n\n\n/**\n * Fills a four-vertex screen quad in clip space.\n *\n * Carbon `SetupScreenQuad` (`Tr2RenderUtils.cpp:11-50`). Vertex coordinates\n * arrive in [0,1] with y down, which is why y is negated on the way to clip\n * space; texture coordinates pass through untouched.\n *\n * ADAPTED: Carbon reaches for the main-thread render context through\n * `USE_MAIN_THREAD_RENDER_CONTEXT()` purely to read the cull mode, and its own\n * comment on that line asks for the context to be passed in instead\n * (`cpp:27`). We pass it in.\n *\n * @param {Float32Array} quad Destination, at least SCREEN_QUAD_FLOATS long.\n * @param {object} renderContext The context to read the cull mode from.\n * @param {Array<number>} tlTexCoord Top-left texture coordinate.\n * @param {Array<number>} brTexCoord Bottom-right texture coordinate.\n * @param {Array<number>} [tlVertexCoord] Top-left placement, [0,1], y down.\n * @param {Array<number>} [brVertexCoord] Bottom-right placement, [0,1], y down.\n * @returns {Float32Array} The quad that was written.\n */\nexport function SetupScreenQuad(quad, renderContext, tlTexCoord, brTexCoord, tlVertexCoord = [ 0, 0 ], brVertexCoord = [ 1, 1 ])\n{\n const tlX = tlVertexCoord[0] * 2 - 1;\n const tlY = -(tlVertexCoord[1] * 2 - 1);\n const brX = brVertexCoord[0] * 2 - 1;\n const brY = -(brVertexCoord[1] * 2 - 1);\n const z = 1;\n const w = 1;\n\n const [ edge1, edge2 ] = interiorEdges(renderContext);\n\n writeScreenVertex(quad, 0, tlX, tlY, z, w, tlTexCoord[0], tlTexCoord[1]);\n writeScreenVertex(quad, edge1, brX, tlY, z, w, brTexCoord[0], tlTexCoord[1]);\n writeScreenVertex(quad, edge2, tlX, brY, z, w, tlTexCoord[0], brTexCoord[1]);\n writeScreenVertex(quad, 3, brX, brY, z, w, brTexCoord[0], brTexCoord[1]);\n\n return quad;\n}\n\n\n/**\n * Fills a four-vertex screen quad in VIEW space, by unprojecting the clip-space\n * corners through the inverse of the raw projection.\n *\n * Carbon `SetupScreenQuadInCameraSpace` (`Tr2RenderUtils.cpp:52-95`). The\n * vertex shader is expected to push z into w, so the corners carry the\n * unprojected depth rather than a constant.\n *\n * ADAPTED, same reason as SetupScreenQuad: Carbon takes the projection from the\n * `Tr2Renderer` global and the cull mode from the main-thread context; both\n * come from the passed context here.\n *\n * @param {Float32Array} quad Destination, at least SCREEN_QUAD_FLOATS long.\n * @param {object} renderContext The context holding projection and cull mode.\n * @returns {Float32Array|null} The quad, or null with no projection set.\n */\nexport function SetupScreenQuadInCameraSpace(quad, renderContext)\n{\n const projection = renderContext.GetProjection();\n if (!projection) return null;\n\n const proj2view = mat4.invert(mat4.create(), projection);\n if (!proj2view) return null;\n\n const tl = vec3.transformMat4(vec3.create(), [ -1, 1, 1 ], proj2view);\n const br = vec3.transformMat4(vec3.create(), [ 1, -1, 1 ], proj2view);\n\n const [ edge1, edge2 ] = interiorEdges(renderContext);\n\n writeScreenVertex(quad, 0, tl[0], tl[1], tl[2], 1, 0, 0);\n writeScreenVertex(quad, edge1, br[0], tl[1], tl[2], 1, 1, 0);\n writeScreenVertex(quad, edge2, tl[0], br[1], tl[2], 1, 0, 1);\n // tl[2] on all four, including this one (cpp:97). The unprojected corners\n // share a depth, so br's own z is deliberately unused.\n writeScreenVertex(quad, 3, br[0], br[1], tl[2], 1, 1, 1);\n\n return quad;\n}\n\n\n/**\n * Corrects texture coordinates when the device viewport differs from the\n * authored one.\n *\n * Carbon `AdjustTextureCoordsToViewport` (`Tr2Renderer.cpp:267-290`), a\n * file-scope free function there and a free function here for the same reason:\n * it needs nothing but the two viewports.\n *\n * WHY IT EXISTS. The authored viewport is what the scene asked for; the device\n * viewport is that clipped to the render target. When they differ - a\n * sub-rectangle render, a target smaller than the request - a blit sampling\n * [0,1] would read the whole source rather than the part actually covered. The\n * correction shifts and scales the coordinates by the difference.\n *\n * ONLY THE `DrawTexture` FAMILY APPLIES THIS. Carbon's `DrawScreenQuad` calls\n * the blitter with unadjusted coordinates (`Tr2Renderer.cpp:1014-1020`), so\n * folding the correction into `Tr2Blitter` itself would silently change every\n * screen-quad draw.\n *\n * @param {object} renderContext The context whose ESM holds both viewports.\n * @param {Array<number>} tlTexCoord Top-left texture coordinate.\n * @param {Array<number>} brTexCoord Bottom-right texture coordinate.\n * @returns {{tlTexCoord: Array<number>, brTexCoord: Array<number>}} Corrected\n * coordinates; the inputs are not modified, unlike Carbon's in-out reference\n * parameters.\n */\nexport function AdjustTextureCoordsToViewport(renderContext, tlTexCoord, brTexCoord)\n{\n const esm = renderContext.GetEffectStateManager();\n const viewport = esm.GetViewport();\n const deviceViewport = esm.GetDeviceViewport();\n\n // Carbon dereferences both unconditionally. Before either is set there is no\n // correction to make, and guessing one would move a blit that was correct.\n if (!viewport || !deviceViewport) return { tlTexCoord, brTexCoord };\n\n const deltaX = Math.trunc(deviceViewport.x) - viewport.x;\n const deltaY = Math.trunc(deviceViewport.y) - viewport.y;\n\n const xOffset = deltaX / viewport.width;\n const yOffset = deltaY / viewport.height;\n\n return {\n tlTexCoord: [\n tlTexCoord[0] + xOffset * brTexCoord[0],\n tlTexCoord[1] + yOffset * brTexCoord[1]\n ],\n brTexCoord: [\n brTexCoord[0] * ((deviceViewport.width + deltaX) / viewport.width),\n brTexCoord[1] * ((deviceViewport.height + deltaY) / viewport.height)\n ]\n };\n}\n"],"names":["SetConstants","buffer","constantTypeMask","registerIndex","renderContext","mask","bound","stage","ShaderType","SHADER_TYPE_FIRST","SHADER_TYPE_COUNT","FillAndSetConstants","data","dataSize","IsValid","GetSize","Failed","Create","Tr2ConstantUsageAL","REUSABLE","result","mapped","Lock","bytes","Uint8Array","byteOffset","byteLength","set","subarray","Math","min","Unlock","SCREEN_VERTEX_FLOATS","SCREEN_VERTEX_BYTES","SCREEN_QUAD_FLOATS","writeScreenVertex","quad","at","x","y","z","w","u","v","base","interiorEdges","esm","GetEffectStateManager","IsCullModeInverted","SetupScreenQuad","tlTexCoord","brTexCoord","tlVertexCoord","brVertexCoord","tlX","tlY","brX","brY","edge1","edge2","SetupScreenQuadInCameraSpace","projection","GetProjection","proj2view","mat4","invert","create","tl","vec3","transformMat4","br","AdjustTextureCoordsToViewport","viewport","GetViewport","deviceViewport","GetDeviceViewport","deltaX","trunc","deltaY","xOffset","width","yOffset","height"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2RenderUtils.js","sources":["../../../../src/trinity/core/Tr2RenderUtils.js"],"sourcesContent":["// Source: trinity/trinity/Tr2RenderUtils.h\n// Source: trinity/trinity/Tr2RenderUtils.cpp\n//\n// Freestanding helpers that need no private state. Carbon's own header explains\n// why the file exists: \"Most of this was TriDevice/Tr2Renderer but works just\n// fine with the public interfaces. So put those guys here to lighten up those\n// classes.\"\n//\n// THESE ARE TRINITY, NOT THE ABSTRACTION LAYER, and that is the whole reason\n// they were missing. `FillAndSetConstants` is the last hop of Carbon's\n// per-object upload - `Tr2PerObjectDataStandard::SetPerObjectDataToDevice`\n// calls it twice and does nothing else - and it lives in a Trinity header. It\n// went unported because \"the engine does device work\" was read as the\n// `trinityal/webgpu` package rather than the abstraction layer, so the upload was\n// reimplemented engine-side and this file never got written. See\n// /docs/research/graphics-path-review-2026-09-05.md.\n//\n// `SetupScreenQuad` and `SetupScreenQuadInCameraSpace` are here too. They feed\n// `Tr2Blitter`'s fullscreen-quad path, which is the single gate in front of\n// every remaining render step: TriStepRenderTexture, TriStepRenderAtlas and\n// `TriStepRenderEffect` all bottom out in `Tr2Renderer::DrawTexture` ->\n// `Tr2Blitter::Draw`.\nimport { ShaderType } from \"#consts/render-context\";\nimport { mat4 } from \"#math/mat4\";\nimport { vec3 } from \"#math/vec3\";\nimport { Tr2ConstantUsageAL } from \"../../trinityal/index.js\";\nimport { Failed } from \"../../trinityal/ALResult.js\";\n\n\n/**\n * Binds one constant buffer to every shader stage a mask names.\n *\n * Carbon `SetConstants` (`Tr2RenderUtils.cpp:126-137`). The loop clears each\n * bit as it goes and stops as soon as the mask is empty, so a single-stage\n * bind costs one iteration rather than six.\n *\n * @param {object} buffer A `Tr2ConstantBufferAL`.\n * @param {number} constantTypeMask A bit per `ShaderType`.\n * @param {number} registerIndex The constant-buffer register.\n * @param {object} renderContext The context to bind against.\n * @returns {number} How many stages were bound.\n */\nexport function SetConstants(buffer, constantTypeMask, registerIndex, renderContext)\n{\n let mask = constantTypeMask >>> 0;\n let bound = 0;\n\n for (let stage = ShaderType.SHADER_TYPE_FIRST; stage !== ShaderType.SHADER_TYPE_COUNT && mask; stage += 1)\n {\n if (!(mask & (1 << stage))) continue;\n\n renderContext.SetConstants(buffer, stage, registerIndex);\n mask &= ~(1 << stage);\n bound += 1;\n }\n\n return bound;\n}\n\n\n/**\n * Creates or grows a constant buffer, copies data into it, and binds it.\n *\n * Carbon `FillAndSetConstants` (`Tr2RenderUtils.cpp:100-124`), the repeating\n * pattern its own comment describes: create if needed, lock, copy, unlock, set.\n *\n * A ZERO MASK RETURNS SUCCESS AND BINDS NOTHING. That is Carbon's first line\n * and it is not a guard against bad input - it is how a payload declared for\n * stages a technique does not use gets skipped, per batch, without the caller\n * testing anything.\n *\n * THE COPY IS CLAMPED TO THE BUFFER, not to the data. Carbon writes\n * `min( dataSize, buffer.GetSize() )`, so a payload larger than the buffer\n * fills it and the tail is dropped rather than overrunning.\n *\n * @param {object} buffer A `Tr2ConstantBufferAL`, created here if it has to be.\n * @param {ArrayBufferView} data The bytes to upload.\n * @param {number} dataSize How many bytes of `data` to upload.\n * @param {number} constantTypeMask A bit per `ShaderType`.\n * @param {number} registerIndex The constant-buffer register.\n * @param {object} renderContext The context to upload and bind against.\n * @returns {boolean} Whether the data was uploaded and bound.\n */\nexport function FillAndSetConstants(buffer, data, dataSize, constantTypeMask, registerIndex, renderContext)\n{\n if (!(constantTypeMask >>> 0)) return true;\n\n if (!buffer.IsValid() || dataSize > buffer.GetSize())\n {\n if (Failed(buffer.Create(dataSize, Tr2ConstantUsageAL.REUSABLE, null, renderContext))) return false;\n }\n\n const { result, data: mapped } = buffer.Lock(renderContext);\n\n if (Failed(result) || !mapped) return false;\n\n const bytes = data instanceof Uint8Array\n ? data\n : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\n mapped.set(bytes.subarray(0, Math.min(dataSize, buffer.GetSize())));\n\n buffer.Unlock(renderContext);\n\n SetConstants(buffer, constantTypeMask, registerIndex, renderContext);\n\n return true;\n}\n\n\n// Carbon `Tr2ScreenVertex` (Tr2RenderUtils.h:13-17): a clip-space position and\n// one texture coordinate. Four of them make the blitter's triangle strip.\nexport const SCREEN_VERTEX_FLOATS = 6;\nexport const SCREEN_VERTEX_BYTES = SCREEN_VERTEX_FLOATS * 4;\nexport const SCREEN_QUAD_FLOATS = SCREEN_VERTEX_FLOATS * 4;\n\n\n/** Writes one Tr2ScreenVertex into a flat float array at vertex index `at`. */\nfunction writeScreenVertex(quad, at, x, y, z, w, u, v)\n{\n const base = at * SCREEN_VERTEX_FLOATS;\n quad[base] = x;\n quad[base + 1] = y;\n quad[base + 2] = z;\n quad[base + 3] = w;\n quad[base + 4] = u;\n quad[base + 5] = v;\n}\n\n\n/**\n * Carbon's interior-edge flip (`Tr2RenderUtils.cpp:24-33` and `67-76`).\n *\n * The quad is emitted as a triangle strip, so which diagonal splits it decides\n * the winding of both triangles. Carbon swaps the two interior vertices when\n * the cull mode is NOT inverted, which is the ordinary case - so the common\n * path is the swapped one, not the literal 0/1/2/3 order the comments read as.\n *\n * @param {object} renderContext The context whose ESM holds the cull override.\n * @returns {Array<number>} The two interior vertex indices, in emission order.\n */\nfunction interiorEdges(renderContext)\n{\n const esm = renderContext.GetEffectStateManager();\n\n return esm.IsCullModeInverted() ? [ 1, 2 ] : [ 2, 1 ];\n}\n\n\n/**\n * Fills a four-vertex screen quad in clip space.\n *\n * Carbon `SetupScreenQuad` (`Tr2RenderUtils.cpp:11-50`). Vertex coordinates\n * arrive in [0,1] with y down, which is why y is negated on the way to clip\n * space; texture coordinates pass through untouched.\n *\n * ADAPTED: Carbon reaches for the main-thread render context through\n * `USE_MAIN_THREAD_RENDER_CONTEXT()` purely to read the cull mode, and its own\n * comment on that line asks for the context to be passed in instead\n * (`cpp:27`). We pass it in.\n *\n * @param {Float32Array} quad Destination, at least SCREEN_QUAD_FLOATS long.\n * @param {object} renderContext The context to read the cull mode from.\n * @param {Array<number>} tlTexCoord Top-left texture coordinate.\n * @param {Array<number>} brTexCoord Bottom-right texture coordinate.\n * @param {Array<number>} [tlVertexCoord] Top-left placement, [0,1], y down.\n * @param {Array<number>} [brVertexCoord] Bottom-right placement, [0,1], y down.\n * @returns {Float32Array} The quad that was written.\n */\nexport function SetupScreenQuad(quad, renderContext, tlTexCoord, brTexCoord, tlVertexCoord = [ 0, 0 ], brVertexCoord = [ 1, 1 ])\n{\n const tlX = tlVertexCoord[0] * 2 - 1;\n const tlY = -(tlVertexCoord[1] * 2 - 1);\n const brX = brVertexCoord[0] * 2 - 1;\n const brY = -(brVertexCoord[1] * 2 - 1);\n const z = 1;\n const w = 1;\n\n const [ edge1, edge2 ] = interiorEdges(renderContext);\n\n writeScreenVertex(quad, 0, tlX, tlY, z, w, tlTexCoord[0], tlTexCoord[1]);\n writeScreenVertex(quad, edge1, brX, tlY, z, w, brTexCoord[0], tlTexCoord[1]);\n writeScreenVertex(quad, edge2, tlX, brY, z, w, tlTexCoord[0], brTexCoord[1]);\n writeScreenVertex(quad, 3, brX, brY, z, w, brTexCoord[0], brTexCoord[1]);\n\n return quad;\n}\n\n\n/**\n * Fills a four-vertex screen quad in VIEW space, by unprojecting the clip-space\n * corners through the inverse of the raw projection.\n *\n * Carbon `SetupScreenQuadInCameraSpace` (`Tr2RenderUtils.cpp:52-95`). The\n * vertex shader is expected to push z into w, so the corners carry the\n * unprojected depth rather than a constant.\n *\n * ADAPTED, same reason as SetupScreenQuad: Carbon takes the projection from the\n * `Tr2Renderer` global and the cull mode from the main-thread context; both\n * come from the passed context here.\n *\n * @param {Float32Array} quad Destination, at least SCREEN_QUAD_FLOATS long.\n * @param {object} renderContext The context holding projection and cull mode.\n * @returns {Float32Array|null} The quad, or null with no projection set.\n */\nexport function SetupScreenQuadInCameraSpace(quad, renderContext)\n{\n const projection = renderContext.GetProjection();\n if (!projection) return null;\n\n const proj2view = mat4.invert(mat4.create(), projection);\n if (!proj2view) return null;\n\n const tl = vec3.transformMat4(vec3.create(), [ -1, 1, 1 ], proj2view);\n const br = vec3.transformMat4(vec3.create(), [ 1, -1, 1 ], proj2view);\n\n const [ edge1, edge2 ] = interiorEdges(renderContext);\n\n writeScreenVertex(quad, 0, tl[0], tl[1], tl[2], 1, 0, 0);\n writeScreenVertex(quad, edge1, br[0], tl[1], tl[2], 1, 1, 0);\n writeScreenVertex(quad, edge2, tl[0], br[1], tl[2], 1, 0, 1);\n // tl[2] on all four, including this one (cpp:97). The unprojected corners\n // share a depth, so br's own z is deliberately unused.\n writeScreenVertex(quad, 3, br[0], br[1], tl[2], 1, 1, 1);\n\n return quad;\n}\n\n\n/**\n * Corrects texture coordinates when the device viewport differs from the\n * authored one.\n *\n * Carbon `AdjustTextureCoordsToViewport` (`Tr2Renderer.cpp:267-290`), a\n * file-scope free function there and a free function here for the same reason:\n * it needs nothing but the two viewports.\n *\n * WHY IT EXISTS. The authored viewport is what the scene asked for; the device\n * viewport is that clipped to the render target. When they differ - a\n * sub-rectangle render, a target smaller than the request - a blit sampling\n * [0,1] would read the whole source rather than the part actually covered. The\n * correction shifts and scales the coordinates by the difference.\n *\n * ONLY THE `DrawTexture` FAMILY APPLIES THIS. Carbon's `DrawScreenQuad` calls\n * the blitter with unadjusted coordinates (`Tr2Renderer.cpp:1014-1020`), so\n * folding the correction into `Tr2Blitter` itself would silently change every\n * screen-quad draw.\n *\n * @param {object} renderContext The context whose ESM holds both viewports.\n * @param {Array<number>} tlTexCoord Top-left texture coordinate.\n * @param {Array<number>} brTexCoord Bottom-right texture coordinate.\n * @returns {{tlTexCoord: Array<number>, brTexCoord: Array<number>}} Corrected\n * coordinates; the inputs are not modified, unlike Carbon's in-out reference\n * parameters.\n */\nexport function AdjustTextureCoordsToViewport(renderContext, tlTexCoord, brTexCoord)\n{\n const esm = renderContext.GetEffectStateManager();\n const viewport = esm.GetViewport();\n const deviceViewport = esm.GetDeviceViewport();\n\n // Carbon dereferences both unconditionally. Before either is set there is no\n // correction to make, and guessing one would move a blit that was correct.\n if (!viewport || !deviceViewport) return { tlTexCoord, brTexCoord };\n\n const deltaX = Math.trunc(deviceViewport.x) - viewport.x;\n const deltaY = Math.trunc(deviceViewport.y) - viewport.y;\n\n const xOffset = deltaX / viewport.width;\n const yOffset = deltaY / viewport.height;\n\n return {\n tlTexCoord: [\n tlTexCoord[0] + xOffset * brTexCoord[0],\n tlTexCoord[1] + yOffset * brTexCoord[1]\n ],\n brTexCoord: [\n brTexCoord[0] * ((deviceViewport.width + deltaX) / viewport.width),\n brTexCoord[1] * ((deviceViewport.height + deltaY) / viewport.height)\n ]\n };\n}\n"],"names":["SetConstants","buffer","constantTypeMask","registerIndex","renderContext","mask","bound","stage","ShaderType","SHADER_TYPE_FIRST","SHADER_TYPE_COUNT","FillAndSetConstants","data","dataSize","IsValid","GetSize","Failed","Create","Tr2ConstantUsageAL","REUSABLE","result","mapped","Lock","bytes","Uint8Array","byteOffset","byteLength","set","subarray","Math","min","Unlock","SCREEN_VERTEX_FLOATS","SCREEN_VERTEX_BYTES","SCREEN_QUAD_FLOATS","writeScreenVertex","quad","at","x","y","z","w","u","v","base","interiorEdges","esm","GetEffectStateManager","IsCullModeInverted","SetupScreenQuad","tlTexCoord","brTexCoord","tlVertexCoord","brVertexCoord","tlX","tlY","brX","brY","edge1","edge2","SetupScreenQuadInCameraSpace","projection","GetProjection","proj2view","mat4","invert","create","tl","vec3","transformMat4","br","AdjustTextureCoordsToViewport","viewport","GetViewport","deviceViewport","GetDeviceViewport","deltaX","trunc","deltaY","xOffset","width","yOffset","height"],"mappings":"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"}