@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 +1 @@
1
- {"version":3,"file":"CjsWebgpuShaderAL.js","sources":["../../../../src/trinityal/webgpu/CjsWebgpuShaderAL.js"],"sourcesContent":["// Source: trinity/trinityal/include/Tr2ShaderAL.h\r\n// trinity/trinityal/stub/Tr2ShaderALStub.cpp\r\n// trinity/trinityal/include/Tr2ShaderProgramAL.h\r\n//\r\n// The device-backed half of Carbon's shader pair, and the second piece of the\r\n// immediate-draw route after `CjsWebgpuBufferAL`.\r\n//\r\n// WHY THESE EXIST. Carbon's draws all begin with `SetAllState`, which resolves a\r\n// pipeline from an incrementally described PSO (`Tr2RenderContextDx12.cpp:810`,\r\n// `:793-807`). The description's shader half is a `Tr2ShaderProgramAL` - a real\r\n// linked program, not a handle - so a backend that cannot produce one cannot\r\n// build a pipeline, and `SetStreamSource` + `DrawPrimitive` stay recording-only.\r\n// That is exactly where `Tr2Blitter` currently stops.\r\n//\r\n// BYTECODE HERE IS WGSL TEXT, NOT DXBC. Carbon hands its backends compiled\r\n// bytecode because its shaders are compiled offline for one API. Ours arrive as\r\n// translated WGSL from the effect container, so the \"bytecode\" a shader carries\r\n// is UTF-8 source. The AL contract does not care - it stores bytes and a\r\n// signature - and the divergence is here rather than in Trinity, which is where\r\n// Carbon puts every other API difference too.\r\n//\r\n// FIELDS ARE PUBLIC AND CARBON-NAMED, not private. Carbon's AL facade holds\r\n// exactly one private member - the `shared_ptr` to its impl - and the impl\r\n// class behind it carries public state, which is why Metal reads\r\n// `buffer.m_buffer->GetMetalBuffer()` and the stub swap chain declares\r\n// `m_backBuffer` public. We merge facade and impl into one class, so the merged\r\n// class carries the impl's fields.\r\n//\r\n// The whole layer is internal, so hiding inside it buys nothing - and it cost\r\n// something real: a program whose state was entirely private has no own\r\n// enumerable keys, canonicalised to an empty object, and would have collided\r\n// with every other program in the pipeline cache.\r\nimport { ALResult, Tr2ALMemoryType } from \"#trinityal\";\r\nimport { ShaderType } from \"#consts/render-context\";\r\nimport { readBackendBlock } from \"#resource/format\";\r\n\r\n\r\n/**\r\n * The entry point every stage in a Carbon WebGPU container has.\r\n *\r\n * The writer refuses any other name (`buildCarbonEffectContainer.js:45-50`), so\r\n * a module carries no entry-point record and this is the one value it can be.\r\n */\r\nexport const WEBGPU_ENTRY_POINT = \"main\";\r\n\r\n/**\r\n * WebGPU's `GPUShaderStage` bit for each stage name the backend block uses.\r\n *\r\n * Spelled out rather than read from `globalThis.GPUShaderStage` because a\r\n * headless test has no such global and the values are spec constants.\r\n */\r\nconst STAGE_VISIBILITY = Object.freeze({ vertex: 1, fragment: 2, compute: 4 });\r\n\r\n/** A monotonic program identity, for the pipeline cache. */\r\nlet nextProgramId = 1;\r\n\r\n\r\n/**\r\n * Carbon's ShaderType to the stage name WebGPU's pipeline descriptor wants.\r\n *\r\n * The stage is carried as Carbon's INTEGER ENUM everywhere, and becomes a\r\n * string only here, at the one boundary that genuinely demands one.\r\n *\r\n * It used to be a string throughout, which was an unforced divergence: an\r\n * integer enum is perfectly expressible in JavaScript, Carbon's\r\n * `Tr2RenderContextEnum::ShaderType` is ALREADY ported in `global/consts`\r\n * (`renderContext/pipeline.js`) from that same header, and `layers.json`\r\n * explicitly permits `trinityal` to import `global/consts`. Carrying strings\r\n * also silently broke the duplicate-stage check, which Carbon writes as\r\n * `1 << GetType()` - shifting by a string puts every stage on bit 0.\r\n */\r\nexport const WEBGPU_STAGE_NAME = Object.freeze({\r\n [ShaderType.VERTEX_SHADER]: \"vertex\",\r\n [ShaderType.PIXEL_SHADER]: \"fragment\",\r\n [ShaderType.COMPUTE_SHADER]: \"compute\"\r\n});\r\n\r\n\r\n/** Decodes a shader's bytecode as WGSL source. */\r\nfunction wgslFrom(bytecode)\r\n{\r\n if (typeof bytecode === \"string\") return bytecode;\r\n\r\n const bytes = bytecode instanceof Uint8Array\r\n ? bytecode\r\n : new Uint8Array(bytecode.buffer, bytecode.byteOffset, bytecode.byteLength);\r\n\r\n return new TextDecoder().decode(bytes);\r\n}\r\n\r\n\r\n/**\r\n * The bind-group declarations visible to one stage, decoded from the block on\r\n * its signature.\r\n *\r\n * @param {number} type A Carbon `ShaderType`.\r\n * @param {object|null} signature The stage's signature.\r\n * @returns {object[]|null} The stage's bindings; an empty list when the\r\n * signature carries no block; null when the block is not this backend's.\r\n */\r\nfunction StageBindings(type, signature)\r\n{\r\n const block = signature?.backendBlock;\r\n\r\n if (!block || !block.size || !block.bytes) return [];\r\n\r\n const stageName = WEBGPU_STAGE_NAME[type];\r\n let decoded;\r\n\r\n try\r\n {\r\n decoded = readBackendBlock(block.bytes, { source: \"Tr2ShaderSignatureAL.backendBlock\" });\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n\r\n const bindings = [];\r\n\r\n for (const group of decoded.bindGroups)\r\n {\r\n for (const binding of group.bindings)\r\n {\r\n if (!binding.visibility.includes(stageName)) continue;\r\n\r\n bindings.push({\r\n group: group.group,\r\n binding: binding.binding,\r\n identity: binding.identity,\r\n scopeIdentity: binding.scopeIdentity,\r\n resourceKind: binding.resourceKind,\r\n registerIndex: binding.registerIndex,\r\n registerSpace: binding.registerSpace,\r\n // Exactly one of these is present, already in GPUBindGroupLayoutEntry\r\n // form - the reader derives it from the WGSL type text.\r\n buffer: binding.buffer,\r\n texture: binding.texture,\r\n sampler: binding.sampler\r\n });\r\n }\r\n }\r\n\r\n return bindings;\r\n}\r\n\r\n\r\n/**\r\n * The layout half of a binding, the part two stages must agree on.\r\n *\r\n * @param {object} binding A stage binding.\r\n * @returns {string} A comparable key.\r\n */\r\nfunction LayoutKey(binding)\r\n{\r\n return JSON.stringify([\r\n binding.resourceKind,\r\n binding.registerSpace,\r\n binding.registerIndex,\r\n binding.buffer ?? null,\r\n binding.texture ?? null,\r\n binding.sampler ?? null\r\n ]);\r\n}\r\n\r\n\r\n/**\r\n * A `Tr2ShaderAL` holding a real `GPUShaderModule`.\r\n *\r\n * Carbon's stub COPIES the bytecode so a shader stays readable after whatever\r\n * produced it moved on. This keeps the source for the same reason: a pipeline\r\n * built later needs the entry point and the module, and a compilation error\r\n * needs the text to report against.\r\n */\r\nexport class CjsWebgpuShaderAL\r\n{\r\n /** m_type - a Carbon `ShaderType`; `INVALID_SHADER` until Create succeeds. */\r\n m_type = ShaderType.INVALID_SHADER;\r\n\r\n /** m_signature */\r\n m_signature = null;\r\n\r\n /** The WGSL this module was compiled from. */\r\n m_source = \"\";\r\n\r\n /** The compiled module, or null before Create. */\r\n m_module = null;\r\n\r\n m_webgpu = null;\r\n\r\n /**\r\n * This stage's bind-group declarations, from the pass's backend block.\r\n *\r\n * METAL'S `m_resourceMask`, IN THIS BACKEND'S VOCABULARY. Metal derives a\r\n * per-stage binding table from `signature.registers` at Create\r\n * (`Tr2ShaderALMetal.mm:37-217`) and the program merges the stages' tables\r\n * (`Tr2ShaderProgramALMetal.mm:67`). A WGSL pipeline needs `(group, binding,\r\n * layout)` rather than a register mask, and Carbon's registers cannot say\r\n * that - so the container's per-pass block does, and it arrives here on the\r\n * signature. Only the bindings visible to THIS stage are kept: a stage's\r\n * table describes its own bindings, which is what lets two passes share an\r\n * identical vertex stage.\r\n */\r\n m_bindings = [];\r\n\r\n /** Carbon's `m_signature.pipelineInputs`, the vertex inputs this stage reads. */\r\n m_inputs = [];\r\n\r\n /**\r\n * Compiles the shader.\r\n *\r\n * @param {number} type A Carbon `ShaderType` value.\r\n * @param {ArrayBufferView|string} bytecode WGSL source.\r\n * @param {object|null} signature The reflected signature.\r\n * @param {string} shaderPath A debug label.\r\n * @param {object} renderContext The WebGPU render context AL.\r\n * @returns {number} An `ALResult` value.\r\n */\r\n Create(type, bytecode, signature, shaderPath, renderContext)\r\n {\r\n this.Destroy();\r\n\r\n // Carbon's stub reports OUT_OF_MEMORY for empty bytecode rather than\r\n // INVALIDARG (`Tr2ShaderALStub.cpp`), and the odd choice is transcribed\r\n // rather than tidied: a caller testing for it would not recognise a\r\n // different code.\r\n if (!bytecode || (bytecode.byteLength === 0 && bytecode.length === 0)) return ALResult.E_OUTOFMEMORY;\r\n\r\n if (!renderContext || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\r\n\r\n const webgpu = renderContext.GetWebgpu();\r\n if (!webgpu) return ALResult.E_INVALIDCALL;\r\n\r\n // REFUSED BEFORE COMPILING, AS METAL REFUSES A SIGNATURE IT CANNOT HONOUR\r\n // (`Tr2ShaderALMetal.mm:24-27`). A block that is not this backend's - a\r\n // WebGL2 container routed here - would otherwise compile a module whose\r\n // bindings nothing can lay out, and fail later with a message about the\r\n // pipeline.\r\n const bindings = StageBindings(type, signature);\r\n if (bindings === null) return ALResult.E_INVALIDARG;\r\n\r\n this.m_source = wgslFrom(bytecode);\r\n this.m_module = webgpu.GetDevice().createShaderModule({\r\n label: shaderPath || \"Tr2ShaderAL\",\r\n code: this.m_source\r\n });\r\n this.m_webgpu = webgpu;\r\n this.m_type = type;\r\n this.m_signature = signature;\r\n this.m_bindings = bindings;\r\n this.m_inputs = Array.isArray(signature?.pipelineInputs) ? signature.pipelineInputs.slice() : [];\r\n\r\n return ALResult.S_OK;\r\n }\r\n\r\n /** This stage's bind-group declarations. @returns {object[]} */\r\n GetBindings()\r\n {\r\n return this.m_bindings;\r\n }\r\n\r\n /** The vertex inputs this stage reads. @returns {object[]} */\r\n GetInputs()\r\n {\r\n return this.m_inputs;\r\n }\r\n\r\n /**\r\n * Whether the shader compiled AND carries a stage.\r\n *\r\n * Carbon is `m_type != INVALID_SHADER && !m_bytecode.empty()`\r\n * (`Tr2ShaderALStub.cpp:48-51`) - both halves, on every backend. Testing the\r\n * module alone accepted a shader with no stage, which a program would then\r\n * link and resolve `GetModuleFor` against.\r\n */\r\n IsValid()\r\n {\r\n return this.m_module !== null && this.m_type !== ShaderType.INVALID_SHADER;\r\n }\r\n\r\n /** The stage this shader was created for. */\r\n GetType()\r\n {\r\n return this.m_type;\r\n }\r\n\r\n /** The WGSL this was compiled from, as bytes, matching the stub's contract. */\r\n GetBytecode()\r\n {\r\n return new TextEncoder().encode(this.m_source);\r\n }\r\n\r\n /** The reflected signature. */\r\n GetSignature()\r\n {\r\n return this.m_signature;\r\n }\r\n\r\n /** The `GPUShaderModule`, for a pipeline to reference. */\r\n GetModule()\r\n {\r\n return this.m_module;\r\n }\r\n\r\n /** Releases the module. */\r\n Destroy()\r\n {\r\n // A GPUShaderModule has no destroy(); it is released when nothing\r\n // references it. Dropping the reference is the whole of it.\r\n this.m_module = null;\r\n this.m_webgpu = null;\r\n this.m_type = ShaderType.INVALID_SHADER;\r\n this.m_signature = null;\r\n this.m_source = \"\";\r\n this.m_bindings = [];\r\n this.m_inputs = [];\r\n }\r\n\r\n /**\r\n * Claims a stage without bytecode, for a deliberately empty shader.\r\n *\r\n * The shader stays INVALID, which is the point: the pipeline must name the\r\n * stage, and nothing must try to reference a module for it.\r\n *\r\n * @param {number} type The pipeline stage.\r\n */\r\n SetNullShaderType(type)\r\n {\r\n this.m_type = type;\r\n }\r\n\r\n /**\r\n * Which memory class this shader occupies.\r\n *\r\n * @returns {number} A `Tr2ALMemoryType` value.\r\n */\r\n GetMemoryClass()\r\n {\r\n return Tr2ALMemoryType.AL_MEMORY_MANAGED;\r\n }\r\n\r\n /**\r\n * Fills in a device-resource description.\r\n *\r\n * @param {object} description The description to fill.\r\n * @returns {object} The description, filled.\r\n */\r\n Describe(description)\r\n {\r\n if (!description) return description;\r\n\r\n description.memoryClass = this.GetMemoryClass();\r\n\r\n return description;\r\n }\r\n\r\n /**\r\n * Names the shader for a debugger.\r\n *\r\n * `GPUShaderModule` carries a writable `label`, and it is what a WebGPU\r\n * compilation error quotes - so unlike the stub this keeps the name.\r\n *\r\n * @param {string} name The name to attach.\r\n * @returns {number} An `ALResult` value.\r\n */\r\n SetName(name)\r\n {\r\n if (this.m_module) this.m_module.label = String(name);\r\n\r\n return ALResult.S_OK;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * A `Tr2ShaderProgramAL` linking compiled stages.\r\n *\r\n * Carbon's program is what a PSO description names, and its stub records which\r\n * stages were supplied as a mask. WebGPU has no link step - a render pipeline\r\n * takes the vertex and fragment modules directly - so this holds the stages and\r\n * answers for them, which is the part the pipeline description needs.\r\n *\r\n * THE PIPELINE LAYOUT IS BUILT HERE, AT CREATE, FROM THE STAGES. That is\r\n * DX12's shape exactly: `Tr2ShaderProgramAL::Create` walks each stage's\r\n * signature and merges its registers into one root signature\r\n * (`dx12/Tr2ShaderProgramALDx12.cpp:220-252`), and Metal's merges each stage's\r\n * resource mask the same way (`Tr2ShaderProgramALMetal.mm:67`). WebGPU's root\r\n * signature is a `GPUPipelineLayout`, and its per-stage input is the binding\r\n * list each `CjsWebgpuShaderAL` decoded from the block on its signature.\r\n *\r\n * This is what lets a draw resolve a pipeline from BOUND STATE: a bound program\r\n * carries its own layout, so nothing downstream needs the effect package the\r\n * program was read from. Before this the program held modules and nothing else,\r\n * and the layout lived only in a package the abstraction layer had no route to.\r\n *\r\n * `GetRegisterMap` is still not here; it belongs to the resource-set lane, and\r\n * the parity baseline records it.\r\n */\r\nexport class CjsWebgpuShaderProgramAL\r\n{\r\n /** m_shaders, in the order given. */\r\n m_shaders = [];\r\n\r\n /**\r\n * A process-unique identity, which is what the pipeline cache keys on.\r\n *\r\n * Metal hashes the function POINTERS into its pipeline key\r\n * (`MetalWorkQueue.mm:1610-1611`); an id is the same thing in a language\r\n * without addresses. Zero until Create.\r\n */\r\n m_id = 0;\r\n\r\n /** The merged bindings, one entry per `(group, binding)` slot. */\r\n m_bindings = [];\r\n\r\n /** `GPUBindGroupLayout` per group, contiguous from group zero. */\r\n m_bindGroupLayouts = [];\r\n\r\n /** The `GPUPipelineLayout`, this backend's root signature; null until Create. */\r\n m_pipelineLayout = null;\r\n\r\n /** Metal's `m_iaInputs`: the vertex stage's pipeline inputs. */\r\n m_inputs = [];\r\n\r\n /**\r\n * Links the shaders into a program.\r\n *\r\n * @param {object[]} shaders The `CjsWebgpuShaderAL`s to link.\r\n * @param {object} renderContext The context to link against.\r\n * @returns {number} An `ALResult` value.\r\n */\r\n Create(shaders, renderContext)\r\n {\r\n this.Destroy();\r\n\r\n if (!renderContext || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\r\n if (!shaders || shaders.length === 0) return ALResult.E_INVALIDARG;\r\n\r\n // A program with an uncompiled stage would fail at pipeline creation with a\r\n // message about the pipeline, not the shader. Refuse where the cause is.\r\n //\r\n // Two shaders of the SAME stage are refused for the same reason, and every\r\n // Carbon backend does it: the stub and Metal by bitmask\r\n // (`Tr2ShaderProgramALStub.cpp:35-48`, `Tr2ShaderProgramALMetal.mm:40-53`),\r\n // DX11 per slot. Without it a duplicate linked silently and `GetModuleFor`\r\n // returned whichever `find` reached first - unpredictable, and invisible\r\n // until a pipeline drew with the wrong stage.\r\n let stages = 0;\r\n for (const shader of shaders)\r\n {\r\n if (!shader || !shader.IsValid()) return ALResult.E_INVALIDARG;\r\n\r\n const bit = 1 << shader.GetType();\r\n if ((stages & bit) !== 0) return ALResult.E_INVALIDARG;\r\n stages |= bit;\r\n }\r\n\r\n // MERGE BY SLOT, AS DX12 MERGES BY REGISTER. A binding two stages both\r\n // read appears in both stage lists; it becomes ONE layout entry visible to\r\n // both. Two stages claiming one slot with different layouts is a container\r\n // defect, refused here where the cause is rather than at pipeline creation.\r\n const merged = new Map();\r\n\r\n for (const shader of shaders)\r\n {\r\n const visibility = STAGE_VISIBILITY[WEBGPU_STAGE_NAME[shader.GetType()]] ?? 0;\r\n\r\n for (const binding of shader.GetBindings())\r\n {\r\n const slot = `${binding.group}:${binding.binding}`;\r\n const existing = merged.get(slot);\r\n\r\n if (existing)\r\n {\r\n if (existing.layoutKey !== LayoutKey(binding)) return ALResult.E_INVALIDARG;\r\n existing.visibility |= visibility;\r\n continue;\r\n }\r\n\r\n merged.set(slot, { ...binding, visibility, layoutKey: LayoutKey(binding) });\r\n }\r\n }\r\n\r\n const bindings = Array.from(merged.values())\r\n .sort((left, right) => left.group - right.group || left.binding - right.binding);\r\n const groupCount = bindings.length ? bindings[bindings.length - 1].group + 1 : 0;\r\n\r\n // THE DEVICE OBJECTS ARE MADE HERE, as DX12 serialises and creates its root\r\n // signature inside Create (`:262-289`). An absent group index gets an\r\n // empty layout: WebGPU pipeline layouts are positional.\r\n const webgpu = renderContext.GetWebgpu();\r\n if (!webgpu) return ALResult.E_INVALIDCALL;\r\n\r\n const device = webgpu.GetDevice();\r\n\r\n const bindGroupLayouts = [];\r\n\r\n for (let group = 0; group < groupCount; group += 1)\r\n {\r\n bindGroupLayouts.push(device.createBindGroupLayout({\r\n label: `Tr2ShaderProgramAL.group${group}`,\r\n entries: bindings\r\n .filter(binding => binding.group === group)\r\n .map(binding => ({\r\n binding: binding.binding,\r\n visibility: binding.visibility,\r\n // A UNIFORM SLOT IS DYNAMIC, by the backend's decision and not the\r\n // container's. Constant buffers are bound out of a per-frame arena\r\n // at (page, offset), as Metal's are (`MetalWorkQueue.mm:2656-2659`,\r\n // `setVertexBufferOffset:`), and WebGPU spells a per-draw offset as\r\n // a dynamic offset on the layout. The container's `hasDynamicOffset`\r\n // is not consulted: it describes nothing the AL does not decide.\r\n ...(binding.buffer\r\n ? { buffer: binding.buffer.type === \"uniform\" ? { ...binding.buffer, hasDynamicOffset: true } : binding.buffer }\r\n : {}),\r\n ...(binding.texture ? { texture: binding.texture } : {}),\r\n ...(binding.sampler ? { sampler: binding.sampler } : {})\r\n }))\r\n }));\r\n }\r\n\r\n this.m_pipelineLayout = device.createPipelineLayout({\r\n label: \"Tr2ShaderProgramAL.layout\",\r\n bindGroupLayouts\r\n });\r\n this.m_bindGroupLayouts = bindGroupLayouts;\r\n this.m_bindings = bindings;\r\n this.m_shaders = shaders.slice();\r\n this.m_inputs = shaders\r\n .find(shader => shader.GetType() === ShaderType.VERTEX_SHADER)\r\n ?.GetInputs() ?? [];\r\n this.m_id = nextProgramId;\r\n nextProgramId += 1;\r\n\r\n return ALResult.S_OK;\r\n }\r\n\r\n /** Whether the program linked. */\r\n IsValid()\r\n {\r\n return this.m_shaders.length > 0;\r\n }\r\n\r\n /**\r\n * The identity a pipeline cache keys this program under.\r\n *\r\n * @returns {string|null} A stable string, or null before Create.\r\n */\r\n GetIdentity()\r\n {\r\n return this.m_id ? `program:${this.m_id}` : null;\r\n }\r\n\r\n /** The merged bind-group declarations, sorted by group then binding. */\r\n GetBindings()\r\n {\r\n return this.m_bindings;\r\n }\r\n\r\n /** Metal's `GetInputs`: the vertex stage's pipeline inputs. */\r\n GetInputs()\r\n {\r\n return this.m_inputs;\r\n }\r\n\r\n /** One `GPUBindGroupLayout` per group, contiguous from zero. */\r\n GetBindGroupLayouts()\r\n {\r\n return this.m_bindGroupLayouts;\r\n }\r\n\r\n /** The `GPUPipelineLayout` a pipeline built from this program takes. */\r\n GetPipelineLayout()\r\n {\r\n return this.m_pipelineLayout;\r\n }\r\n\r\n /** The linked shaders, in the order they were given. */\r\n GetShaders()\r\n {\r\n return this.m_shaders;\r\n }\r\n\r\n /**\r\n * The module for one stage, or null when the program has no such stage.\r\n *\r\n * @param {*} type The stage to find.\r\n * @returns {GPUShaderModule|null} Its module.\r\n */\r\n GetModuleFor(type)\r\n {\r\n const shader = this.m_shaders.find(candidate => candidate.GetType() === type);\r\n\r\n return shader ? shader.GetModule() : null;\r\n }\r\n\r\n /** Releases the linked shaders and the layout built from them. */\r\n Destroy()\r\n {\r\n // Layout objects have no destroy(); dropping the references releases them.\r\n this.m_shaders = [];\r\n this.m_bindings = [];\r\n this.m_bindGroupLayouts = [];\r\n this.m_pipelineLayout = null;\r\n this.m_inputs = [];\r\n this.m_id = 0;\r\n }\r\n\r\n /**\r\n * Builds D3D12 indirect-command signatures.\r\n *\r\n * REFUSES, WHICH IS CARBON'S OWN NON-DX12 ANSWER rather than an omission.\r\n * The shared facade defines it for every other backend as `return E_FAIL`\r\n * (`src/Tr2ShaderProgramAL.cpp:34-42`), so the method is on the contract\r\n * everywhere and only its implementation is DX12's.\r\n *\r\n * It was recorded as an accepted divergence on the grounds that it is\r\n * \"DX12-only\". That was a misreading: leaving it out produces a TypeError at\r\n * the call site, which is the defect class this backend's surface work was\r\n * written to remove.\r\n *\r\n * @param {object} _bufferLayout A `Tr2IndirectBufferLayoutAL`.\r\n * @param {object} _renderContext The primary render context.\r\n * @returns {boolean} False.\r\n */\r\n CreateCommandSignatures(_bufferLayout, _renderContext)\r\n {\r\n return false;\r\n }\r\n\r\n /**\r\n * Which memory class this program occupies.\r\n *\r\n * @returns {number} A `Tr2ALMemoryType` value.\r\n */\r\n GetMemoryClass()\r\n {\r\n return Tr2ALMemoryType.AL_MEMORY_MANAGED;\r\n }\r\n\r\n /**\r\n * Fills in a device-resource description.\r\n *\r\n * @param {object} description The description to fill.\r\n * @returns {object} The description, filled.\r\n */\r\n Describe(description)\r\n {\r\n if (!description) return description;\r\n\r\n description.memoryClass = this.GetMemoryClass();\r\n\r\n return description;\r\n }\r\n\r\n /**\r\n * Names the program for a debugger, and every stage under it.\r\n *\r\n * WebGPU has no program object to label - there is no link step - so the name\r\n * reaches the modules, which is where it can actually appear in an error.\r\n *\r\n * @param {string} name The name to attach.\r\n * @returns {number} An `ALResult` value.\r\n */\r\n SetName(name)\r\n {\r\n for (const shader of this.m_shaders) shader.SetName(name);\r\n\r\n return ALResult.S_OK;\r\n }\r\n}\r\n"],"names":["WEBGPU_ENTRY_POINT","STAGE_VISIBILITY","Object","freeze","vertex","fragment","compute","nextProgramId","WEBGPU_STAGE_NAME","ShaderType","VERTEX_SHADER","PIXEL_SHADER","COMPUTE_SHADER","wgslFrom","bytecode","bytes","Uint8Array","buffer","byteOffset","byteLength","TextDecoder","decode","StageBindings","type","signature","block","backendBlock","size","stageName","decoded","readBackendBlock","source","bindings","group","bindGroups","binding","visibility","includes","push","identity","scopeIdentity","resourceKind","registerIndex","registerSpace","texture","sampler","LayoutKey","JSON","stringify","CjsWebgpuShaderAL","m_type","INVALID_SHADER","m_signature","m_source","m_module","m_webgpu","m_bindings","m_inputs","Create","shaderPath","renderContext","Destroy","length","ALResult","E_OUTOFMEMORY","IsValid","E_INVALIDCALL","webgpu","GetWebgpu","E_INVALIDARG","GetDevice","createShaderModule","label","code","Array","isArray","pipelineInputs","slice","S_OK","GetBindings","GetInputs","GetType","GetBytecode","TextEncoder","encode","GetSignature","GetModule","SetNullShaderType","GetMemoryClass","Tr2ALMemoryType","AL_MEMORY_MANAGED","Describe","description","memoryClass","SetName","name","String","CjsWebgpuShaderProgramAL","m_shaders","m_id","m_bindGroupLayouts","m_pipelineLayout","shaders","stages","shader","bit","merged","Map","slot","existing","get","layoutKey","set","from","values","sort","left","right","groupCount","device","bindGroupLayouts","createBindGroupLayout","entries","filter","map","hasDynamicOffset","createPipelineLayout","find","GetIdentity","GetBindGroupLayouts","GetPipelineLayout","GetShaders","GetModuleFor","candidate","CreateCommandSignatures","_bufferLayout","_renderContext"],"mappings":"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"}
1
+ {"version":3,"file":"CjsWebgpuShaderAL.js","sources":["../../../../src/trinityal/webgpu/CjsWebgpuShaderAL.js"],"sourcesContent":["// Source: trinity/trinityal/include/Tr2ShaderAL.h\n// trinity/trinityal/stub/Tr2ShaderALStub.cpp\n//\n// The device-backed half of Carbon's shader pair, and the second piece of the\n// immediate-draw route after `CjsWebgpuBufferAL`.\n//\n// WHY THESE EXIST. Carbon's draws all begin with `SetAllState`, which resolves a\n// pipeline from an incrementally described PSO (`Tr2RenderContextDx12.cpp:810`,\n// `:793-807`). The description's shader half is a `Tr2ShaderProgramAL` - a real\n// linked program, not a handle - so a backend that cannot produce one cannot\n// build a pipeline, and `SetStreamSource` + `DrawPrimitive` stay recording-only.\n// That is exactly where `Tr2Blitter` currently stops.\n//\n// BYTECODE HERE IS WGSL TEXT, NOT DXBC. Carbon hands its backends compiled\n// bytecode because its shaders are compiled offline for one API. Ours arrive as\n// translated WGSL from the effect container, so the \"bytecode\" a shader carries\n// is UTF-8 source. The AL contract does not care - it stores bytes and a\n// signature - and the divergence is here rather than in Trinity, which is where\n// Carbon puts every other API difference too.\n//\n// FIELDS ARE PUBLIC AND CARBON-NAMED, not private. Carbon's AL facade holds\n// exactly one private member - the `shared_ptr` to its impl - and the impl\n// class behind it carries public state, which is why Metal reads\n// `buffer.m_buffer->GetMetalBuffer()` and the stub swap chain declares\n// `m_backBuffer` public. We merge facade and impl into one class, so the merged\n// class carries the impl's fields.\n//\n// The whole layer is internal, so hiding inside it buys nothing - and it cost\n// something real: a program whose state was entirely private has no own\n// enumerable keys, canonicalised to an empty object, and would have collided\n// with every other program in the pipeline cache.\nimport { CjsSchema } from \"#schema\";\nimport { ALResult, Tr2ALMemoryType } from \"#trinityal\";\nimport { ShaderType } from \"#consts/render-context\";\nimport { readBackendBlock } from \"#resource/format\";\n\n/**\n * The entry point every stage in a Carbon WebGPU container has.\n *\n * The writer refuses any other name (`buildCarbonEffectContainer.js:45-50`), so\n * a module carries no entry-point record and this is the one value it can be.\n */\nexport const WEBGPU_ENTRY_POINT = \"main\";\n\n/**\n * Carbon's ShaderType to the stage name WebGPU's pipeline descriptor wants.\n *\n * The stage is carried as Carbon's INTEGER ENUM everywhere, and becomes a\n * string only here, at the one boundary that genuinely demands one.\n *\n * It used to be a string throughout, which was an unforced divergence: an\n * integer enum is perfectly expressible in JavaScript, Carbon's\n * `Tr2RenderContextEnum::ShaderType` is ALREADY ported in `global/consts`\n * (`renderContext/pipeline.js`) from that same header, and `layers.json`\n * explicitly permits `trinityal` to import `global/consts`. Carrying strings\n * also silently broke the duplicate-stage check, which Carbon writes as\n * `1 << GetType()` - shifting by a string puts every stage on bit 0.\n */\nexport const WEBGPU_STAGE_NAME = Object.freeze({\n [ShaderType.VERTEX_SHADER]: \"vertex\",\n [ShaderType.PIXEL_SHADER]: \"fragment\",\n [ShaderType.COMPUTE_SHADER]: \"compute\"\n});\n\n\n/** Decodes a shader's bytecode as WGSL source. */\nfunction wgslFrom(bytecode)\n{\n if (typeof bytecode === \"string\") return bytecode;\n\n const bytes = bytecode instanceof Uint8Array\n ? bytecode\n : new Uint8Array(bytecode.buffer, bytecode.byteOffset, bytecode.byteLength);\n\n return new TextDecoder().decode(bytes);\n}\n\n/**\n * The bind-group declarations visible to one stage, decoded from the block on\n * its signature.\n *\n * @param {number} type A Carbon `ShaderType`.\n * @param {object|null} signature The stage's signature.\n * @returns {object[]|null} The stage's bindings; an empty list when the\n * signature carries no block; null when the block is not this backend's.\n */\nfunction StageBindings(type, signature)\n{\n const block = signature?.backendBlock;\n\n if (!block || !block.size || !block.bytes) return [];\n\n const stageName = WEBGPU_STAGE_NAME[type];\n let decoded;\n\n try\n {\n decoded = readBackendBlock(block.bytes, { source: \"Tr2ShaderSignatureAL.backendBlock\" });\n }\n catch\n {\n return null;\n }\n\n const bindings = [];\n\n for (const group of decoded.bindGroups)\n {\n for (const binding of group.bindings)\n {\n if (!binding.visibility.includes(stageName)) continue;\n\n bindings.push({\n group: group.group,\n binding: binding.binding,\n identity: binding.identity,\n scopeIdentity: binding.scopeIdentity,\n resourceKind: binding.resourceKind,\n registerIndex: binding.registerIndex,\n registerSpace: binding.registerSpace,\n // Exactly one of these is present, already in GPUBindGroupLayoutEntry\n // form - the reader derives it from the WGSL type text.\n buffer: binding.buffer,\n texture: binding.texture,\n sampler: binding.sampler\n });\n }\n }\n\n return bindings;\n}\n\n/**\n * A `Tr2ShaderAL` holding a real `GPUShaderModule`.\n *\n * Carbon's stub COPIES the bytecode so a shader stays readable after whatever\n * produced it moved on. This keeps the source for the same reason: a pipeline\n * built later needs the entry point and the module, and a compilation error\n * needs the text to report against.\n */\nexport class CjsWebgpuShaderAL\n{\n /** m_type - a Carbon `ShaderType`; `INVALID_SHADER` until Create succeeds. */\n m_type = ShaderType.INVALID_SHADER;\n\n /** m_signature */\n m_signature = null;\n\n /** The WGSL this module was compiled from. */\n m_source = \"\";\n\n /** The compiled module, or null before Create. */\n m_module = null;\n\n m_webgpu = null;\n\n /**\n * This stage's bind-group declarations, from the pass's backend block.\n *\n * METAL'S `m_resourceMask`, IN THIS BACKEND'S VOCABULARY. Metal derives a\n * per-stage binding table from `signature.registers` at Create\n * (`Tr2ShaderALMetal.mm:37-217`) and the program merges the stages' tables\n * (`Tr2ShaderProgramALMetal.mm:67`). A WGSL pipeline needs `(group, binding,\n * layout)` rather than a register mask, and Carbon's registers cannot say\n * that - so the container's per-pass block does, and it arrives here on the\n * signature. Only the bindings visible to THIS stage are kept: a stage's\n * table describes its own bindings, which is what lets two passes share an\n * identical vertex stage.\n */\n m_bindings = [];\n\n /** Carbon's `m_signature.pipelineInputs`, the vertex inputs this stage reads. */\n m_inputs = [];\n\n /**\n * Compiles the shader.\n *\n * @param {number} type A Carbon `ShaderType` value.\n * @param {ArrayBufferView|string} bytecode WGSL source.\n * @param {object|null} signature The reflected signature.\n * @param {string} shaderPath A debug label.\n * @param {object} renderContext The WebGPU render context AL.\n * @returns {number} An `ALResult` value.\n */\n Create(type, bytecode, signature, shaderPath, renderContext)\n {\n this.Destroy();\n\n // Carbon's stub reports OUT_OF_MEMORY for empty bytecode rather than\n // INVALIDARG (`Tr2ShaderALStub.cpp`), and the odd choice is transcribed\n // rather than tidied: a caller testing for it would not recognise a\n // different code.\n if (!bytecode || (bytecode.byteLength === 0 && bytecode.length === 0)) return ALResult.E_OUTOFMEMORY;\n\n if (!renderContext || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\n\n const webgpu = renderContext.GetWebgpu();\n if (!webgpu) return ALResult.E_INVALIDCALL;\n\n // REFUSED BEFORE COMPILING, AS METAL REFUSES A SIGNATURE IT CANNOT HONOUR\n // (`Tr2ShaderALMetal.mm:24-27`). A block that is not this backend's - a\n // WebGL2 container routed here - would otherwise compile a module whose\n // bindings nothing can lay out, and fail later with a message about the\n // pipeline.\n const bindings = StageBindings(type, signature);\n if (bindings === null) return ALResult.E_INVALIDARG;\n\n this.m_source = wgslFrom(bytecode);\n this.m_module = webgpu.GetDevice().createShaderModule({\n label: shaderPath || \"Tr2ShaderAL\",\n code: this.m_source\n });\n this.m_webgpu = webgpu;\n this.m_type = type;\n this.m_signature = signature;\n this.m_bindings = bindings;\n this.m_inputs = Array.isArray(signature?.pipelineInputs) ? signature.pipelineInputs.slice() : [];\n\n return ALResult.S_OK;\n }\n\n /** This stage's bind-group declarations. @returns {object[]} */\n GetBindings()\n {\n return this.m_bindings;\n }\n\n /** The vertex inputs this stage reads. @returns {object[]} */\n GetInputs()\n {\n return this.m_inputs;\n }\n\n /**\n * Whether the shader compiled AND carries a stage.\n *\n * Carbon is `m_type != INVALID_SHADER && !m_bytecode.empty()`\n * (`Tr2ShaderALStub.cpp:48-51`) - both halves, on every backend. Testing the\n * module alone accepted a shader with no stage, which a program would then\n * link and resolve `GetModuleFor` against.\n */\n IsValid()\n {\n return this.m_module !== null && this.m_type !== ShaderType.INVALID_SHADER;\n }\n\n /** The stage this shader was created for. */\n GetType()\n {\n return this.m_type;\n }\n\n /** The WGSL this was compiled from, as bytes, matching the stub's contract. */\n GetBytecode()\n {\n return new TextEncoder().encode(this.m_source);\n }\n\n /** The reflected signature. */\n GetSignature()\n {\n return this.m_signature;\n }\n\n /** The `GPUShaderModule`, for a pipeline to reference. */\n GetModule()\n {\n return this.m_module;\n }\n\n /** Releases the module. */\n Destroy()\n {\n // A GPUShaderModule has no destroy(); it is released when nothing\n // references it. Dropping the reference is the whole of it.\n this.m_module = null;\n this.m_webgpu = null;\n this.m_type = ShaderType.INVALID_SHADER;\n this.m_signature = null;\n this.m_source = \"\";\n this.m_bindings = [];\n this.m_inputs = [];\n }\n\n /**\n * Claims a stage without bytecode, for a deliberately empty shader.\n *\n * The shader stays INVALID, which is the point: the pipeline must name the\n * stage, and nothing must try to reference a module for it.\n *\n * @param {number} type The pipeline stage.\n */\n SetNullShaderType(type)\n {\n this.m_type = type;\n }\n\n /**\n * Which memory class this shader occupies.\n *\n * @returns {number} A `Tr2ALMemoryType` value.\n */\n GetMemoryClass()\n {\n return Tr2ALMemoryType.AL_MEMORY_MANAGED;\n }\n\n /**\n * Fills in a device-resource description.\n *\n * @param {object} description The description to fill.\n * @returns {object} The description, filled.\n */\n Describe(description)\n {\n if (!description) return description;\n\n description.memoryClass = this.GetMemoryClass();\n\n return description;\n }\n\n /**\n * Names the shader for a debugger.\n *\n * `GPUShaderModule` carries a writable `label`, and it is what a WebGPU\n * compilation error quotes - so unlike the stub this keeps the name.\n *\n * @param {string} name The name to attach.\n * @returns {number} An `ALResult` value.\n */\n SetName(name)\n {\n if (this.m_module) this.m_module.label = String(name);\n\n return ALResult.S_OK;\n }\n}\n\n// DECLARED AS A CALL, NOT A DECORATOR, for the reason recorded in\n// Tr2BitmapDimensions.js: the layer is imported straight from source by its\n// tests and raw Node cannot parse decorator syntax.\n//\n// The donor is NAMED rather than left to be derived from this class's name.\n// Carbon calls every backend's class the same thing and carries the backend in\n// the FILE name, because only one backend compiles at a time; we ship them\n// together, so the backend moves onto the class name. That divergence is the\n// author's to declare, never a checker's to guess.\nCjsSchema.define(CjsWebgpuShaderAL, { className: \"CjsWebgpuShaderAL\", carbon: \"Tr2ShaderAL\" });\n"],"names":["WEBGPU_ENTRY_POINT","WEBGPU_STAGE_NAME","Object","freeze","ShaderType","VERTEX_SHADER","PIXEL_SHADER","COMPUTE_SHADER","wgslFrom","bytecode","bytes","Uint8Array","buffer","byteOffset","byteLength","TextDecoder","decode","StageBindings","type","signature","block","backendBlock","size","stageName","decoded","readBackendBlock","source","bindings","group","bindGroups","binding","visibility","includes","push","identity","scopeIdentity","resourceKind","registerIndex","registerSpace","texture","sampler","CjsWebgpuShaderAL","m_type","INVALID_SHADER","m_signature","m_source","m_module","m_webgpu","m_bindings","m_inputs","Create","shaderPath","renderContext","Destroy","length","ALResult","E_OUTOFMEMORY","IsValid","E_INVALIDCALL","webgpu","GetWebgpu","E_INVALIDARG","GetDevice","createShaderModule","label","code","Array","isArray","pipelineInputs","slice","S_OK","GetBindings","GetInputs","GetType","GetBytecode","TextEncoder","encode","GetSignature","GetModule","SetNullShaderType","GetMemoryClass","Tr2ALMemoryType","AL_MEMORY_MANAGED","Describe","description","memoryClass","SetName","name","String","CjsSchema","define","className","carbon"],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ import { CjsSchema } from '#schema';
2
+ import { Tr2RegisterMapAL, ALResult, Tr2ALMemoryType } from '#trinityal';
3
+ import { ShaderType } from '#consts/render-context';
4
+ import { WEBGPU_STAGE_NAME } from './CjsWebgpuShaderAL.js';
5
+
6
+ // Source: trinity/trinityal/include/Tr2ShaderProgramAL.h
7
+ //
8
+ // The linked-program half of Carbon's shader pair. The rationale shared with
9
+ // its partner - why these exist at all, why bytecode here is WGSL text rather
10
+ // than DXBC, and why fields are public and Carbon-named - is recorded in the
11
+ // head comment of CjsWebgpuShaderAL.js, which several other files already cite.
12
+
13
+ /**
14
+ * WebGPU's `GPUShaderStage` bit for each stage name the backend block uses.
15
+ *
16
+ * Spelled out rather than read from `globalThis.GPUShaderStage` because a
17
+ * headless test has no such global and the values are spec constants.
18
+ */
19
+ const STAGE_VISIBILITY = Object.freeze({
20
+ vertex: 1,
21
+ fragment: 2,
22
+ compute: 4
23
+ });
24
+
25
+ /** A monotonic program identity, for the pipeline cache. */
26
+ let nextProgramId = 1;
27
+
28
+ /**
29
+ * The layout half of a binding, the part two stages must agree on.
30
+ *
31
+ * @param {object} binding A stage binding.
32
+ * @returns {string} A comparable key.
33
+ */
34
+ function LayoutKey(binding) {
35
+ return JSON.stringify([binding.resourceKind, binding.registerSpace, binding.registerIndex, binding.buffer ?? null, binding.texture ?? null, binding.sampler ?? null]);
36
+ }
37
+
38
+ /**
39
+ * A `Tr2ShaderProgramAL` linking compiled stages.
40
+ *
41
+ * Carbon's program is what a PSO description names, and its stub records which
42
+ * stages were supplied as a mask. WebGPU has no link step - a render pipeline
43
+ * takes the vertex and fragment modules directly - so this holds the stages and
44
+ * answers for them, which is the part the pipeline description needs.
45
+ *
46
+ * THE PIPELINE LAYOUT IS BUILT HERE, AT CREATE, FROM THE STAGES. That is
47
+ * DX12's shape exactly: `Tr2ShaderProgramAL::Create` walks each stage's
48
+ * signature and merges its registers into one root signature
49
+ * (`dx12/Tr2ShaderProgramALDx12.cpp:220-252`), and Metal's merges each stage's
50
+ * resource mask the same way (`Tr2ShaderProgramALMetal.mm:67`). WebGPU's root
51
+ * signature is a `GPUPipelineLayout`, and its per-stage input is the binding
52
+ * list each `CjsWebgpuShaderAL` decoded from the block on its signature.
53
+ *
54
+ * This is what lets a draw resolve a pipeline from BOUND STATE: a bound program
55
+ * carries its own layout, so nothing downstream needs the effect package the
56
+ * program was read from. Before this the program held modules and nothing else,
57
+ * and the layout lived only in a package the abstraction layer had no route to.
58
+ *
59
+ * Register maps retain signature order before physical WebGPU bindings merge.
60
+ */
61
+ class CjsWebgpuShaderProgramAL {
62
+ /** m_shaders, in the order given. */
63
+ m_shaders = [];
64
+ m_registerMap = new Tr2RegisterMapAL();
65
+
66
+ /** Returns the dense register map built from the linked shader signatures. */
67
+ GetRegisterMap() {
68
+ return this.m_registerMap;
69
+ }
70
+
71
+ /**
72
+ * A process-unique identity, which is what the pipeline cache keys on.
73
+ *
74
+ * Metal hashes the function POINTERS into its pipeline key
75
+ * (`MetalWorkQueue.mm:1610-1611`); an id is the same thing in a language
76
+ * without addresses. Zero until Create.
77
+ */
78
+ m_id = 0;
79
+
80
+ /** The merged bindings, one entry per `(group, binding)` slot. */
81
+ m_bindings = [];
82
+
83
+ /** `GPUBindGroupLayout` per group, contiguous from group zero. */
84
+ m_bindGroupLayouts = [];
85
+
86
+ /** The `GPUPipelineLayout`, this backend's root signature; null until Create. */
87
+ m_pipelineLayout = null;
88
+
89
+ /** Metal's `m_iaInputs`: the vertex stage's pipeline inputs. */
90
+ m_inputs = [];
91
+
92
+ /**
93
+ * Links the shaders into a program.
94
+ *
95
+ * @param {object[]} shaders The `CjsWebgpuShaderAL`s to link.
96
+ * @param {object} renderContext The context to link against.
97
+ * @returns {number} An `ALResult` value.
98
+ */
99
+ Create(shaders, renderContext) {
100
+ this.Destroy();
101
+ if (!renderContext || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;
102
+ if (!shaders || shaders.length === 0) return ALResult.E_INVALIDARG;
103
+
104
+ // A program with an uncompiled stage would fail at pipeline creation with a
105
+ // message about the pipeline, not the shader. Refuse where the cause is.
106
+ //
107
+ // Two shaders of the SAME stage are refused for the same reason, and every
108
+ // Carbon backend does it: the stub and Metal by bitmask
109
+ // (`Tr2ShaderProgramALStub.cpp:35-48`, `Tr2ShaderProgramALMetal.mm:40-53`),
110
+ // DX11 per slot. Without it a duplicate linked silently and `GetModuleFor`
111
+ // returned whichever `find` reached first - unpredictable, and invisible
112
+ // until a pipeline drew with the wrong stage.
113
+ let stages = 0;
114
+ for (const shader of shaders) {
115
+ if (!shader || !shader.IsValid()) return ALResult.E_INVALIDARG;
116
+ const bit = 1 << shader.GetType();
117
+ if ((stages & bit) !== 0) return ALResult.E_INVALIDARG;
118
+ stages |= bit;
119
+ }
120
+
121
+ // MERGE BY SLOT, AS DX12 MERGES BY REGISTER. A binding two stages both
122
+ // read appears in both stage lists; it becomes ONE layout entry visible to
123
+ // both. Two stages claiming one slot with different layouts is a container
124
+ // defect, refused here where the cause is rather than at pipeline creation.
125
+ const merged = new Map();
126
+ for (const shader of shaders) {
127
+ const visibility = STAGE_VISIBILITY[WEBGPU_STAGE_NAME[shader.GetType()]] ?? 0;
128
+ for (const binding of shader.GetBindings()) {
129
+ const slot = `${binding.group}:${binding.binding}`;
130
+ const existing = merged.get(slot);
131
+ if (existing) {
132
+ if (existing.layoutKey !== LayoutKey(binding)) return ALResult.E_INVALIDARG;
133
+ existing.visibility |= visibility;
134
+ continue;
135
+ }
136
+ merged.set(slot, {
137
+ ...binding,
138
+ visibility,
139
+ layoutKey: LayoutKey(binding)
140
+ });
141
+ }
142
+ }
143
+ const bindings = Array.from(merged.values()).sort((left, right) => left.group - right.group || left.binding - right.binding);
144
+ const groupCount = bindings.length ? bindings[bindings.length - 1].group + 1 : 0;
145
+
146
+ // THE DEVICE OBJECTS ARE MADE HERE, as DX12 serialises and creates its root
147
+ // signature inside Create (`:262-289`). An absent group index gets an
148
+ // empty layout: WebGPU pipeline layouts are positional.
149
+ const webgpu = renderContext.GetWebgpu();
150
+ if (!webgpu) return ALResult.E_INVALIDCALL;
151
+ const device = webgpu.GetDevice();
152
+ const bindGroupLayouts = [];
153
+ for (let group = 0; group < groupCount; group += 1) {
154
+ bindGroupLayouts.push(device.createBindGroupLayout({
155
+ label: `Tr2ShaderProgramAL.group${group}`,
156
+ entries: bindings.filter(binding => binding.group === group).map(binding => ({
157
+ binding: binding.binding,
158
+ visibility: binding.visibility,
159
+ // A UNIFORM SLOT IS DYNAMIC, by the backend's decision and not the
160
+ // container's. Constant buffers are bound out of a per-frame arena
161
+ // at (page, offset), as Metal's are (`MetalWorkQueue.mm:2656-2659`,
162
+ // `setVertexBufferOffset:`), and WebGPU spells a per-draw offset as
163
+ // a dynamic offset on the layout. The container's `hasDynamicOffset`
164
+ // is not consulted: it describes nothing the AL does not decide.
165
+ ...(binding.buffer ? {
166
+ buffer: binding.buffer.type === "uniform" ? {
167
+ ...binding.buffer,
168
+ hasDynamicOffset: true
169
+ } : binding.buffer
170
+ } : {}),
171
+ ...(binding.texture ? {
172
+ texture: binding.texture
173
+ } : {}),
174
+ ...(binding.sampler ? {
175
+ sampler: binding.sampler
176
+ } : {})
177
+ }))
178
+ }));
179
+ }
180
+ this.m_pipelineLayout = device.createPipelineLayout({
181
+ label: "Tr2ShaderProgramAL.layout",
182
+ bindGroupLayouts
183
+ });
184
+ this.m_bindGroupLayouts = bindGroupLayouts;
185
+ this.m_bindings = bindings;
186
+ this.m_shaders = shaders.slice();
187
+ this.m_registerMap = new Tr2RegisterMapAL({
188
+ shaders
189
+ });
190
+ this.m_inputs = shaders.find(shader => shader.GetType() === ShaderType.VERTEX_SHADER)?.GetInputs() ?? [];
191
+ this.m_id = nextProgramId;
192
+ nextProgramId += 1;
193
+ return ALResult.S_OK;
194
+ }
195
+
196
+ /** Whether the program linked. */
197
+ IsValid() {
198
+ return this.m_shaders.length > 0;
199
+ }
200
+
201
+ /**
202
+ * The identity a pipeline cache keys this program under.
203
+ *
204
+ * @returns {string|null} A stable string, or null before Create.
205
+ */
206
+ GetIdentity() {
207
+ return this.m_id ? `program:${this.m_id}` : null;
208
+ }
209
+
210
+ /** The merged bind-group declarations, sorted by group then binding. */
211
+ GetBindings() {
212
+ return this.m_bindings;
213
+ }
214
+
215
+ /** Metal's `GetInputs`: the vertex stage's pipeline inputs. */
216
+ GetInputs() {
217
+ return this.m_inputs;
218
+ }
219
+
220
+ /** One `GPUBindGroupLayout` per group, contiguous from zero. */
221
+ GetBindGroupLayouts() {
222
+ return this.m_bindGroupLayouts;
223
+ }
224
+
225
+ /** The `GPUPipelineLayout` a pipeline built from this program takes. */
226
+ GetPipelineLayout() {
227
+ return this.m_pipelineLayout;
228
+ }
229
+
230
+ /** The linked shaders, in the order they were given. */
231
+ GetShaders() {
232
+ return this.m_shaders;
233
+ }
234
+
235
+ /**
236
+ * The module for one stage, or null when the program has no such stage.
237
+ *
238
+ * @param {*} type The stage to find.
239
+ * @returns {GPUShaderModule|null} Its module.
240
+ */
241
+ GetModuleFor(type) {
242
+ const shader = this.m_shaders.find(candidate => candidate.GetType() === type);
243
+ return shader ? shader.GetModule() : null;
244
+ }
245
+
246
+ /** Releases the linked shaders and the layout built from them. */
247
+ Destroy() {
248
+ // Layout objects have no destroy(); dropping the references releases them.
249
+ this.m_shaders = [];
250
+ this.m_registerMap = new Tr2RegisterMapAL();
251
+ this.m_bindings = [];
252
+ this.m_bindGroupLayouts = [];
253
+ this.m_pipelineLayout = null;
254
+ this.m_inputs = [];
255
+ this.m_id = 0;
256
+ }
257
+
258
+ /**
259
+ * Builds D3D12 indirect-command signatures.
260
+ *
261
+ * REFUSES, WHICH IS CARBON'S OWN NON-DX12 ANSWER rather than an omission.
262
+ * The shared facade defines it for every other backend as `return E_FAIL`
263
+ * (`src/Tr2ShaderProgramAL.cpp:34-42`), so the method is on the contract
264
+ * everywhere and only its implementation is DX12's.
265
+ *
266
+ * It was recorded as an accepted divergence on the grounds that it is
267
+ * "DX12-only". That was a misreading: leaving it out produces a TypeError at
268
+ * the call site, which is the defect class this backend's surface work was
269
+ * written to remove.
270
+ *
271
+ * @param {object} _bufferLayout A `Tr2IndirectBufferLayoutAL`.
272
+ * @param {object} _renderContext The primary render context.
273
+ * @returns {boolean} False.
274
+ */
275
+ CreateCommandSignatures(_bufferLayout, _renderContext) {
276
+ return false;
277
+ }
278
+
279
+ /**
280
+ * Which memory class this program occupies.
281
+ *
282
+ * @returns {number} A `Tr2ALMemoryType` value.
283
+ */
284
+ GetMemoryClass() {
285
+ return Tr2ALMemoryType.AL_MEMORY_MANAGED;
286
+ }
287
+
288
+ /**
289
+ * Fills in a device-resource description.
290
+ *
291
+ * @param {object} description The description to fill.
292
+ * @returns {object} The description, filled.
293
+ */
294
+ Describe(description) {
295
+ if (!description) return description;
296
+ description.memoryClass = this.GetMemoryClass();
297
+ return description;
298
+ }
299
+
300
+ /**
301
+ * Names the program for a debugger, and every stage under it.
302
+ *
303
+ * WebGPU has no program object to label - there is no link step - so the name
304
+ * reaches the modules, which is where it can actually appear in an error.
305
+ *
306
+ * @param {string} name The name to attach.
307
+ * @returns {number} An `ALResult` value.
308
+ */
309
+ SetName(name) {
310
+ for (const shader of this.m_shaders) shader.SetName(name);
311
+ return ALResult.S_OK;
312
+ }
313
+ }
314
+
315
+ // DECLARED AS A CALL, NOT A DECORATOR, for the reason recorded in
316
+ // Tr2BitmapDimensions.js: the layer is imported straight from source by its
317
+ // tests and raw Node cannot parse decorator syntax.
318
+ //
319
+ // The donor is NAMED rather than left to be derived from this class's name.
320
+ // Carbon calls every backend's class the same thing and carries the backend in
321
+ // the FILE name, because only one backend compiles at a time; we ship them
322
+ // together, so the backend moves onto the class name. That divergence is the
323
+ // author's to declare, never a checker's to guess.
324
+ CjsSchema.define(CjsWebgpuShaderProgramAL, {
325
+ className: "CjsWebgpuShaderProgramAL",
326
+ carbon: "Tr2ShaderProgramAL"
327
+ });
328
+
329
+ export { CjsWebgpuShaderProgramAL };
330
+ //# sourceMappingURL=CjsWebgpuShaderProgramAL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CjsWebgpuShaderProgramAL.js","sources":["../../../../src/trinityal/webgpu/CjsWebgpuShaderProgramAL.js"],"sourcesContent":["// Source: trinity/trinityal/include/Tr2ShaderProgramAL.h\n//\n// The linked-program half of Carbon's shader pair. The rationale shared with\n// its partner - why these exist at all, why bytecode here is WGSL text rather\n// than DXBC, and why fields are public and Carbon-named - is recorded in the\n// head comment of CjsWebgpuShaderAL.js, which several other files already cite.\nimport { CjsSchema } from \"#schema\";\nimport { ALResult, Tr2ALMemoryType, Tr2RegisterMapAL } from \"#trinityal\";\nimport { ShaderType } from \"#consts/render-context\";\nimport { WEBGPU_STAGE_NAME } from \"./CjsWebgpuShaderAL.js\";\n\n/**\n * WebGPU's `GPUShaderStage` bit for each stage name the backend block uses.\n *\n * Spelled out rather than read from `globalThis.GPUShaderStage` because a\n * headless test has no such global and the values are spec constants.\n */\nconst STAGE_VISIBILITY = Object.freeze({ vertex: 1, fragment: 2, compute: 4 });\n\n/** A monotonic program identity, for the pipeline cache. */\nlet nextProgramId = 1;\n\n/**\n * The layout half of a binding, the part two stages must agree on.\n *\n * @param {object} binding A stage binding.\n * @returns {string} A comparable key.\n */\nfunction LayoutKey(binding)\n{\n return JSON.stringify([\n binding.resourceKind,\n binding.registerSpace,\n binding.registerIndex,\n binding.buffer ?? null,\n binding.texture ?? null,\n binding.sampler ?? null\n ]);\n}\n\n/**\n * A `Tr2ShaderProgramAL` linking compiled stages.\n *\n * Carbon's program is what a PSO description names, and its stub records which\n * stages were supplied as a mask. WebGPU has no link step - a render pipeline\n * takes the vertex and fragment modules directly - so this holds the stages and\n * answers for them, which is the part the pipeline description needs.\n *\n * THE PIPELINE LAYOUT IS BUILT HERE, AT CREATE, FROM THE STAGES. That is\n * DX12's shape exactly: `Tr2ShaderProgramAL::Create` walks each stage's\n * signature and merges its registers into one root signature\n * (`dx12/Tr2ShaderProgramALDx12.cpp:220-252`), and Metal's merges each stage's\n * resource mask the same way (`Tr2ShaderProgramALMetal.mm:67`). WebGPU's root\n * signature is a `GPUPipelineLayout`, and its per-stage input is the binding\n * list each `CjsWebgpuShaderAL` decoded from the block on its signature.\n *\n * This is what lets a draw resolve a pipeline from BOUND STATE: a bound program\n * carries its own layout, so nothing downstream needs the effect package the\n * program was read from. Before this the program held modules and nothing else,\n * and the layout lived only in a package the abstraction layer had no route to.\n *\n * Register maps retain signature order before physical WebGPU bindings merge.\n */\nexport class CjsWebgpuShaderProgramAL\n{\n /** m_shaders, in the order given. */\n m_shaders = [];\n\n m_registerMap = new Tr2RegisterMapAL();\n\n /** Returns the dense register map built from the linked shader signatures. */\n GetRegisterMap()\n {\n return this.m_registerMap;\n }\n\n /**\n * A process-unique identity, which is what the pipeline cache keys on.\n *\n * Metal hashes the function POINTERS into its pipeline key\n * (`MetalWorkQueue.mm:1610-1611`); an id is the same thing in a language\n * without addresses. Zero until Create.\n */\n m_id = 0;\n\n /** The merged bindings, one entry per `(group, binding)` slot. */\n m_bindings = [];\n\n /** `GPUBindGroupLayout` per group, contiguous from group zero. */\n m_bindGroupLayouts = [];\n\n /** The `GPUPipelineLayout`, this backend's root signature; null until Create. */\n m_pipelineLayout = null;\n\n /** Metal's `m_iaInputs`: the vertex stage's pipeline inputs. */\n m_inputs = [];\n\n /**\n * Links the shaders into a program.\n *\n * @param {object[]} shaders The `CjsWebgpuShaderAL`s to link.\n * @param {object} renderContext The context to link against.\n * @returns {number} An `ALResult` value.\n */\n Create(shaders, renderContext)\n {\n this.Destroy();\n\n if (!renderContext || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\n if (!shaders || shaders.length === 0) return ALResult.E_INVALIDARG;\n\n // A program with an uncompiled stage would fail at pipeline creation with a\n // message about the pipeline, not the shader. Refuse where the cause is.\n //\n // Two shaders of the SAME stage are refused for the same reason, and every\n // Carbon backend does it: the stub and Metal by bitmask\n // (`Tr2ShaderProgramALStub.cpp:35-48`, `Tr2ShaderProgramALMetal.mm:40-53`),\n // DX11 per slot. Without it a duplicate linked silently and `GetModuleFor`\n // returned whichever `find` reached first - unpredictable, and invisible\n // until a pipeline drew with the wrong stage.\n let stages = 0;\n for (const shader of shaders)\n {\n if (!shader || !shader.IsValid()) return ALResult.E_INVALIDARG;\n\n const bit = 1 << shader.GetType();\n if ((stages & bit) !== 0) return ALResult.E_INVALIDARG;\n stages |= bit;\n }\n\n // MERGE BY SLOT, AS DX12 MERGES BY REGISTER. A binding two stages both\n // read appears in both stage lists; it becomes ONE layout entry visible to\n // both. Two stages claiming one slot with different layouts is a container\n // defect, refused here where the cause is rather than at pipeline creation.\n const merged = new Map();\n\n for (const shader of shaders)\n {\n const visibility = STAGE_VISIBILITY[WEBGPU_STAGE_NAME[shader.GetType()]] ?? 0;\n\n for (const binding of shader.GetBindings())\n {\n const slot = `${binding.group}:${binding.binding}`;\n const existing = merged.get(slot);\n\n if (existing)\n {\n if (existing.layoutKey !== LayoutKey(binding)) return ALResult.E_INVALIDARG;\n existing.visibility |= visibility;\n continue;\n }\n\n merged.set(slot, { ...binding, visibility, layoutKey: LayoutKey(binding) });\n }\n }\n\n const bindings = Array.from(merged.values())\n .sort((left, right) => left.group - right.group || left.binding - right.binding);\n const groupCount = bindings.length ? bindings[bindings.length - 1].group + 1 : 0;\n\n // THE DEVICE OBJECTS ARE MADE HERE, as DX12 serialises and creates its root\n // signature inside Create (`:262-289`). An absent group index gets an\n // empty layout: WebGPU pipeline layouts are positional.\n const webgpu = renderContext.GetWebgpu();\n if (!webgpu) return ALResult.E_INVALIDCALL;\n\n const device = webgpu.GetDevice();\n\n const bindGroupLayouts = [];\n\n for (let group = 0; group < groupCount; group += 1)\n {\n bindGroupLayouts.push(device.createBindGroupLayout({\n label: `Tr2ShaderProgramAL.group${group}`,\n entries: bindings\n .filter(binding => binding.group === group)\n .map(binding => ({\n binding: binding.binding,\n visibility: binding.visibility,\n // A UNIFORM SLOT IS DYNAMIC, by the backend's decision and not the\n // container's. Constant buffers are bound out of a per-frame arena\n // at (page, offset), as Metal's are (`MetalWorkQueue.mm:2656-2659`,\n // `setVertexBufferOffset:`), and WebGPU spells a per-draw offset as\n // a dynamic offset on the layout. The container's `hasDynamicOffset`\n // is not consulted: it describes nothing the AL does not decide.\n ...(binding.buffer\n ? { buffer: binding.buffer.type === \"uniform\" ? { ...binding.buffer, hasDynamicOffset: true } : binding.buffer }\n : {}),\n ...(binding.texture ? { texture: binding.texture } : {}),\n ...(binding.sampler ? { sampler: binding.sampler } : {})\n }))\n }));\n }\n\n this.m_pipelineLayout = device.createPipelineLayout({\n label: \"Tr2ShaderProgramAL.layout\",\n bindGroupLayouts\n });\n this.m_bindGroupLayouts = bindGroupLayouts;\n this.m_bindings = bindings;\n this.m_shaders = shaders.slice();\n this.m_registerMap = new Tr2RegisterMapAL({ shaders });\n this.m_inputs = shaders\n .find(shader => shader.GetType() === ShaderType.VERTEX_SHADER)\n ?.GetInputs() ?? [];\n this.m_id = nextProgramId;\n nextProgramId += 1;\n\n return ALResult.S_OK;\n }\n\n /** Whether the program linked. */\n IsValid()\n {\n return this.m_shaders.length > 0;\n }\n\n /**\n * The identity a pipeline cache keys this program under.\n *\n * @returns {string|null} A stable string, or null before Create.\n */\n GetIdentity()\n {\n return this.m_id ? `program:${this.m_id}` : null;\n }\n\n /** The merged bind-group declarations, sorted by group then binding. */\n GetBindings()\n {\n return this.m_bindings;\n }\n\n /** Metal's `GetInputs`: the vertex stage's pipeline inputs. */\n GetInputs()\n {\n return this.m_inputs;\n }\n\n /** One `GPUBindGroupLayout` per group, contiguous from zero. */\n GetBindGroupLayouts()\n {\n return this.m_bindGroupLayouts;\n }\n\n /** The `GPUPipelineLayout` a pipeline built from this program takes. */\n GetPipelineLayout()\n {\n return this.m_pipelineLayout;\n }\n\n /** The linked shaders, in the order they were given. */\n GetShaders()\n {\n return this.m_shaders;\n }\n\n /**\n * The module for one stage, or null when the program has no such stage.\n *\n * @param {*} type The stage to find.\n * @returns {GPUShaderModule|null} Its module.\n */\n GetModuleFor(type)\n {\n const shader = this.m_shaders.find(candidate => candidate.GetType() === type);\n\n return shader ? shader.GetModule() : null;\n }\n\n /** Releases the linked shaders and the layout built from them. */\n Destroy()\n {\n // Layout objects have no destroy(); dropping the references releases them.\n this.m_shaders = [];\n this.m_registerMap = new Tr2RegisterMapAL();\n this.m_bindings = [];\n this.m_bindGroupLayouts = [];\n this.m_pipelineLayout = null;\n this.m_inputs = [];\n this.m_id = 0;\n }\n\n /**\n * Builds D3D12 indirect-command signatures.\n *\n * REFUSES, WHICH IS CARBON'S OWN NON-DX12 ANSWER rather than an omission.\n * The shared facade defines it for every other backend as `return E_FAIL`\n * (`src/Tr2ShaderProgramAL.cpp:34-42`), so the method is on the contract\n * everywhere and only its implementation is DX12's.\n *\n * It was recorded as an accepted divergence on the grounds that it is\n * \"DX12-only\". That was a misreading: leaving it out produces a TypeError at\n * the call site, which is the defect class this backend's surface work was\n * written to remove.\n *\n * @param {object} _bufferLayout A `Tr2IndirectBufferLayoutAL`.\n * @param {object} _renderContext The primary render context.\n * @returns {boolean} False.\n */\n CreateCommandSignatures(_bufferLayout, _renderContext)\n {\n return false;\n }\n\n /**\n * Which memory class this program occupies.\n *\n * @returns {number} A `Tr2ALMemoryType` value.\n */\n GetMemoryClass()\n {\n return Tr2ALMemoryType.AL_MEMORY_MANAGED;\n }\n\n /**\n * Fills in a device-resource description.\n *\n * @param {object} description The description to fill.\n * @returns {object} The description, filled.\n */\n Describe(description)\n {\n if (!description) return description;\n\n description.memoryClass = this.GetMemoryClass();\n\n return description;\n }\n\n /**\n * Names the program for a debugger, and every stage under it.\n *\n * WebGPU has no program object to label - there is no link step - so the name\n * reaches the modules, which is where it can actually appear in an error.\n *\n * @param {string} name The name to attach.\n * @returns {number} An `ALResult` value.\n */\n SetName(name)\n {\n for (const shader of this.m_shaders) shader.SetName(name);\n\n return ALResult.S_OK;\n }\n}\n\n// DECLARED AS A CALL, NOT A DECORATOR, for the reason recorded in\n// Tr2BitmapDimensions.js: the layer is imported straight from source by its\n// tests and raw Node cannot parse decorator syntax.\n//\n// The donor is NAMED rather than left to be derived from this class's name.\n// Carbon calls every backend's class the same thing and carries the backend in\n// the FILE name, because only one backend compiles at a time; we ship them\n// together, so the backend moves onto the class name. That divergence is the\n// author's to declare, never a checker's to guess.\nCjsSchema.define(CjsWebgpuShaderProgramAL, { className: \"CjsWebgpuShaderProgramAL\", carbon: \"Tr2ShaderProgramAL\" });\n"],"names":["STAGE_VISIBILITY","Object","freeze","vertex","fragment","compute","nextProgramId","LayoutKey","binding","JSON","stringify","resourceKind","registerSpace","registerIndex","buffer","texture","sampler","CjsWebgpuShaderProgramAL","m_shaders","m_registerMap","Tr2RegisterMapAL","GetRegisterMap","m_id","m_bindings","m_bindGroupLayouts","m_pipelineLayout","m_inputs","Create","shaders","renderContext","Destroy","IsValid","ALResult","E_INVALIDCALL","length","E_INVALIDARG","stages","shader","bit","GetType","merged","Map","visibility","WEBGPU_STAGE_NAME","GetBindings","slot","group","existing","get","layoutKey","set","bindings","Array","from","values","sort","left","right","groupCount","webgpu","GetWebgpu","device","GetDevice","bindGroupLayouts","push","createBindGroupLayout","label","entries","filter","map","type","hasDynamicOffset","createPipelineLayout","slice","find","ShaderType","VERTEX_SHADER","GetInputs","S_OK","GetIdentity","GetBindGroupLayouts","GetPipelineLayout","GetShaders","GetModuleFor","candidate","GetModule","CreateCommandSignatures","_bufferLayout","_renderContext","GetMemoryClass","Tr2ALMemoryType","AL_MEMORY_MANAGED","Describe","description","memoryClass","SetName","name","CjsSchema","define","className","carbon"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { CjsSchema } from '#schema';
1
2
  import { Tr2MsaaDesc, ALResult, Tr2ALMemoryType } from '#trinityal';
2
3
  import { TextureType, Tr2GpuUsage, Tr2CpuUsage, HasFlag, PixelFormat } from '#consts/render-context';
3
4
  import { CarbonPixelFormatToWebGpu, SrgbSiblingOf } from '../../global/consts/webgpu/textureFormats.js';
@@ -415,5 +416,19 @@ class CjsWebgpuTextureAL {
415
416
  }
416
417
  }
417
418
 
419
+ // DECLARED AS A CALL, NOT A DECORATOR, for the reason recorded in
420
+ // Tr2BitmapDimensions.js: the layer is imported straight from source by its
421
+ // tests and raw Node cannot parse decorator syntax.
422
+ //
423
+ // The donor is NAMED rather than left to be derived from this class's name.
424
+ // Carbon calls every backend's class the same thing and carries the backend in
425
+ // the FILE name, because only one backend compiles at a time; we ship them
426
+ // together, so the backend moves onto the class name. That divergence is the
427
+ // author's to declare, never a checker's to guess.
428
+ CjsSchema.define(CjsWebgpuTextureAL, {
429
+ className: "CjsWebgpuTextureAL",
430
+ carbon: "Tr2TextureAL"
431
+ });
432
+
418
433
  export { CjsWebgpuTextureAL };
419
434
  //# sourceMappingURL=CjsWebgpuTextureAL.js.map