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

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 (384) hide show
  1. package/dist/global/blue/BlueClasses.js +200 -0
  2. package/dist/global/blue/BlueClasses.js.map +1 -0
  3. package/dist/global/blue/IBlueClasses.js +79 -0
  4. package/dist/global/blue/IBlueClasses.js.map +1 -0
  5. package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
  6. package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
  7. package/dist/global/blue/blue.js +8 -2
  8. package/dist/global/blue/blue.js.map +1 -1
  9. package/dist/global/blue/index.js +2 -0
  10. package/dist/global/blue/index.js.map +1 -1
  11. package/dist/global/consts/index.js +0 -1
  12. package/dist/global/consts/index.js.map +1 -1
  13. package/dist/global/consts/renderContext/formats.js +26 -25
  14. package/dist/global/consts/renderContext/formats.js.map +1 -1
  15. package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
  16. package/dist/global/imageio/BitmapDimensions.js.map +1 -0
  17. package/dist/global/imageio/Cutout.js +28 -0
  18. package/dist/global/imageio/Cutout.js.map +1 -0
  19. package/dist/global/imageio/HostBitmap.js +1106 -0
  20. package/dist/global/imageio/HostBitmap.js.map +1 -0
  21. package/dist/global/imageio/ImageIOResult.js +99 -0
  22. package/dist/global/imageio/ImageIOResult.js.map +1 -0
  23. package/dist/global/imageio/ImageUtility.js +205 -0
  24. package/dist/global/imageio/ImageUtility.js.map +1 -0
  25. package/dist/global/imageio/LoadParameters.js +86 -0
  26. package/dist/global/imageio/LoadParameters.js.map +1 -0
  27. package/dist/global/imageio/Metadata.js +22 -0
  28. package/dist/global/imageio/Metadata.js.map +1 -0
  29. package/dist/global/imageio/index.js +8 -0
  30. package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
  31. package/dist/global/index.js +2 -1
  32. package/dist/global/index.js.map +1 -1
  33. package/dist/global/math/color.js +1 -1
  34. package/dist/global/math/color.js.map +1 -1
  35. package/dist/global/schema/CjsSchema.js +8 -0
  36. package/dist/global/schema/CjsSchema.js.map +1 -1
  37. package/dist/index.js +12 -4
  38. package/dist/index.js.map +1 -1
  39. package/dist/resource/CjsResMan.js +47 -7
  40. package/dist/resource/CjsResMan.js.map +1 -1
  41. package/dist/resource/Tr2LightProfileRes.js +37 -0
  42. package/dist/resource/Tr2LightProfileRes.js.map +1 -1
  43. package/dist/resource/format/CjsByteWriter.js +46 -46
  44. package/dist/resource/format/CjsByteWriter.js.map +1 -1
  45. package/dist/resource/format/CjsFormat.js +7 -8
  46. package/dist/resource/format/CjsFormat.js.map +1 -1
  47. package/dist/resource/format/CjsFormatStore.js +8 -8
  48. package/dist/resource/format/CjsFormatStore.js.map +1 -1
  49. package/dist/resource/format/CjsGeometryFormat.js +114 -0
  50. package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
  51. package/dist/resource/format/CjsImageFormat.js +282 -0
  52. package/dist/resource/format/CjsImageFormat.js.map +1 -0
  53. package/dist/resource/format/CjsResourceProbe.js +12 -48
  54. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  55. package/dist/resource/format/CjsStringTable.js +37 -37
  56. package/dist/resource/format/CjsStringTable.js.map +1 -1
  57. package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
  58. package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
  59. package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
  60. package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
  61. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
  62. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
  63. package/dist/resource/format/index.js +3 -1
  64. package/dist/resource/format/index.js.map +1 -1
  65. package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
  66. package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
  67. package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
  68. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  69. package/dist/resource/formats/bnk/core/helpers.js +1 -3
  70. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  71. package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
  72. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  73. package/dist/resource/formats/cmf/core/constants.js +1 -2
  74. package/dist/resource/formats/cmf/core/constants.js.map +1 -1
  75. package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
  76. package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
  77. package/dist/resource/formats/cmf/core/helpers.js +13 -13
  78. package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
  79. package/dist/resource/formats/cmf/core/writer.js +24 -24
  80. package/dist/resource/formats/cmf/core/writer.js.map +1 -1
  81. package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
  82. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  83. package/dist/resource/formats/dds/core/helpers.js +125 -40
  84. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  85. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
  86. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  87. package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
  88. package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
  89. package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
  90. package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
  91. package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
  92. package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
  93. package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
  94. package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
  95. package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
  96. package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
  97. package/dist/resource/formats/dxbc/core/decoder.js +2 -2
  98. package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
  99. package/dist/resource/formats/dxbc/core/helpers.js +3 -3
  100. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  101. package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
  102. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  103. package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
  104. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  105. package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
  106. package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
  107. package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
  108. package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
  109. package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
  110. package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
  111. package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
  112. package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
  113. package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
  114. package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
  115. package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
  116. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  117. package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
  118. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  119. package/dist/resource/formats/gltf/core/helpers.js +3 -12
  120. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  121. package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
  122. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  123. package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
  124. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  125. package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
  126. package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
  127. package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
  128. package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
  129. package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
  130. package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
  131. package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
  132. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  133. package/dist/resource/formats/jpeg/core/helpers.js +3 -5
  134. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  135. package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
  136. package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
  137. package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
  138. package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
  139. package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
  140. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  141. package/dist/resource/formats/mp3/core/helpers.js +3 -5
  142. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  143. package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
  144. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  145. package/dist/resource/formats/mp4/core/helpers.js +3 -5
  146. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  147. package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
  148. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  149. package/dist/resource/formats/obj/core/helpers.js +5 -113
  150. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  151. package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
  152. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  153. package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
  154. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  155. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
  156. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
  157. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
  158. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
  159. package/dist/resource/formats/png/CjsPngFormat.js +40 -15
  160. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  161. package/dist/resource/formats/png/core/helpers.js +4 -6
  162. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  163. package/dist/resource/formats/red/CjsRedFormat.js +22 -28
  164. package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
  165. package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
  166. package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
  167. package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
  168. package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
  169. package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
  170. package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
  171. package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
  172. package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
  173. package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
  174. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  175. package/dist/resource/formats/stl/core/helpers.js +5 -19
  176. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
  178. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  179. package/dist/resource/formats/tga/core/helpers.js +3 -5
  180. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  181. package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
  182. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  183. package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
  184. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  185. package/dist/resource/formats/wav/core/helpers.js +3 -5
  186. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  187. package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
  188. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  189. package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
  190. package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
  191. package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
  192. package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
  193. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
  194. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  195. package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
  196. package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
  197. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
  198. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  199. package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
  200. package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
  201. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  202. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
  203. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  204. package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
  205. package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
  206. package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
  207. package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
  208. package/dist/resource/formats/webgpu/core/helpers.js +1 -1
  209. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  210. package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
  211. package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
  212. package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
  213. package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
  214. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
  215. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
  216. package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
  217. package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
  218. package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
  219. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  220. package/dist/resource/formats/webm/core/helpers.js +3 -5
  221. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  222. package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
  223. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  224. package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
  225. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  226. package/dist/resource/formats/wem/core/bitStream.js +35 -35
  227. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  228. package/dist/resource/formats/wem/core/helpers.js +1 -3
  229. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  230. package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
  231. package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
  232. package/dist/resource/imageio/ImageIO.js +142 -0
  233. package/dist/resource/imageio/ImageIO.js.map +1 -0
  234. package/dist/resource/imageio/index.js +17 -0
  235. package/dist/resource/imageio/index.js.map +1 -0
  236. package/dist/resource/index.js +7 -0
  237. package/dist/resource/index.js.map +1 -1
  238. package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
  239. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  240. package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
  241. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  242. package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
  243. package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
  244. package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
  245. package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
  246. package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
  247. package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
  248. package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
  249. package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
  250. package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
  251. package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
  252. package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
  253. package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
  254. package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
  255. package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
  256. package/dist/resource/texture/Tr2ImageRes.js +100 -68
  257. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  258. package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
  259. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  260. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
  261. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  262. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
  263. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  264. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
  265. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  266. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
  267. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  268. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
  269. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  270. package/dist/resource/texture/TriTextureRes.js +151 -29
  271. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  272. package/dist/resource/texture/index.js +7 -0
  273. package/dist/resource/texture/index.js.map +1 -1
  274. package/dist/resource/texture/registerTextureResources.js +83 -0
  275. package/dist/resource/texture/registerTextureResources.js.map +1 -0
  276. package/dist/resource/texture/solidColorTexture.js +10 -19
  277. package/dist/resource/texture/solidColorTexture.js.map +1 -1
  278. package/dist/sof/EveSOF.js +39 -7
  279. package/dist/sof/EveSOF.js.map +1 -1
  280. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
  281. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
  282. package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
  283. package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
  284. package/dist/trinity/core/Tr2RenderUtils.js +1 -1
  285. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
  286. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
  287. package/dist/trinity/core/Tr2TextureReference.js +114 -0
  288. package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
  289. package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
  290. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  291. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
  292. package/dist/trinity/core/index.js +1 -0
  293. package/dist/trinity/core/index.js.map +1 -1
  294. package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
  295. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  296. package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
  297. package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
  298. package/dist/trinity/core/procedural/gradientTexture.js +10 -13
  299. package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
  300. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
  301. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  302. package/dist/trinity/eve/EveImpactOverlay.js +102 -50
  303. package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
  304. package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
  305. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  306. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
  307. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  308. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
  309. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
  310. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
  311. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
  312. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
  313. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
  314. package/dist/trinity/eve/child/EveChildMesh.js +242 -234
  315. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  316. package/dist/trinity/eve/child/EveChildTurret.js +57 -16
  317. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  318. package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
  319. package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
  320. package/dist/trinity/eve/index.js +2 -2
  321. package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
  322. package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
  323. package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
  324. package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
  325. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
  326. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
  327. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
  328. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  329. package/dist/trinity/generated/index.js +0 -1
  330. package/dist/trinity/generated/index.js.map +1 -1
  331. package/dist/trinity/generated/trinityCore/index.js +0 -1
  332. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  333. package/dist/trinity/index.js +3 -3
  334. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
  335. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  336. package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
  337. package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
  338. package/dist/trinity/shader/Tr2Material.js +1 -1
  339. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
  340. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
  341. package/dist/trinityal/index.js +1 -1
  342. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
  343. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
  344. package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
  345. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  346. package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
  347. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  348. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
  349. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  350. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
  351. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  352. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
  353. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  354. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
  355. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
  356. package/dist/trinityal/webgpu/internal.js +1 -0
  357. package/dist/trinityal/webgpu/internal.js.map +1 -1
  358. package/docs/global/reference/classes/README.md +90 -0
  359. package/docs/resource/concepts/format-capabilities.md +3 -3
  360. package/docs/resource/formats/README.md +1 -1
  361. package/docs/resource/reference/classes/core.md +31 -1
  362. package/docs/resource/reference/classes/formats.md +7 -7
  363. package/docs/resource/reference/classes/resources.md +76 -16
  364. package/docs/trinity/reference/classes/generated.md +0 -10
  365. package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
  366. package/docs/trinityal/reference/classes/README.md +0 -10
  367. package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
  368. package/package.json +4 -3
  369. package/dist/global/consts/webgpu/index.js +0 -2
  370. package/dist/global/consts/webgpu/textureFormats.js +0 -180
  371. package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
  372. package/dist/resource/formats/dxbc/core/container.js.map +0 -1
  373. package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
  374. package/dist/resource/formats/dxbc/core/program.js.map +0 -1
  375. package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
  376. package/dist/resource/formats/stl/core/targets.js.map +0 -1
  377. package/dist/resource/formats/webgl/core/errors.js.map +0 -1
  378. package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
  379. package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
  380. package/dist/resource/texture/texturePipelineBehavior.js +0 -332
  381. package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
  382. package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
  383. package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
  384. package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
@@ -46,7 +46,6 @@ export { Tr2ReflectionProbe } from './trinityCore/Tr2ReflectionProbe.js';
46
46
  export { Tr2SSSSS } from './trinityCore/Tr2SSSSS.js';
47
47
  export { Tr2TextureAtlas } from './trinityCore/Tr2TextureAtlas.js';
48
48
  export { Tr2TextureAtlasMan } from './trinityCore/Tr2TextureAtlasMan.js';
49
- export { Tr2TextureReference } from './trinityCore/Tr2TextureReference.js';
50
49
  export { Tr2TransientTextureReference } from './trinityCore/Tr2TransientTextureReference.js';
51
50
  export { RenderBatchSortType, SSAOQuality, ShadowQuality, TR2SHADERMODEL, Tr2DxtCompressionFormat, Tr2DxtCompressionSquishQuality, Tr2RenderReason, Tr2StandardIlluminant, Tr2TransformModifier, Tr2VolumerticQuality, TriFrustumTestResult, TriVariableContentType } from './trinityCore/enums.js';
52
51
  export { INPUTTYPE, UIALIGN, UIANCHOR, UIBOX, UICONTROLTYPE, UICURSOR, UID, UIFONTSIZE, UIFONTSTYLE, UIHITAREA, UIINITPOS, UIMESSAGE, UISTATE, UITRAVERSE } from './ui/enums.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -10,7 +10,6 @@ export { Tr2ReflectionProbe } from './Tr2ReflectionProbe.js';
10
10
  export { Tr2SSSSS } from './Tr2SSSSS.js';
11
11
  export { Tr2TextureAtlas } from './Tr2TextureAtlas.js';
12
12
  export { Tr2TextureAtlasMan } from './Tr2TextureAtlasMan.js';
13
- export { Tr2TextureReference } from './Tr2TextureReference.js';
14
13
  export { Tr2TransientTextureReference } from './Tr2TransientTextureReference.js';
15
14
  export { RenderBatchSortType, SSAOQuality, ShadowQuality, TR2SHADERMODEL, Tr2DxtCompressionFormat, Tr2DxtCompressionSquishQuality, Tr2RenderReason, Tr2StandardIlluminant, Tr2TransformModifier, Tr2VolumerticQuality, TriFrustumTestResult, TriVariableContentType } from './enums.js';
16
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -354,13 +354,13 @@ export { EveSpriteSetItem } from './eve/attachment/sprite/EveSpriteSetItem.js';
354
354
  export { EveTurretAiming } from './eve/attachment/turrets/EveTurretAiming.js';
355
355
  export { EveTurretFiringFX } from './eve/attachment/turrets/EveTurretFiringFX.js';
356
356
  export { EveTurretSet } from './eve/attachment/turrets/EveTurretSet.js';
357
- export { EveTurretTarget } from './eve/attachment/turrets/EveTurretTarget.js';
357
+ export { EVE_TURRET_RANDOM_DELAY_MAX, EveTurretTarget } from './eve/attachment/turrets/EveTurretTarget.js';
358
358
  export { EveLocator2 } from './eve/locator/EveLocator2.js';
359
359
  export { EveGetLocatorPose, EveLocatorSets } from './eve/locator/EveLocatorSets.js';
360
360
  export { Locator } from './eve/locator/Locator.js';
361
361
  export { LocatorData } from './eve/locator/LocatorData.js';
362
362
  export { EveMeshOverlayEffect } from './eve/overlays/EveMeshOverlayEffect.js';
363
- export { EveDamageOverlay } from './eve/overlays/EveDamageOverlay.js';
363
+ export { EveDamageOverlay, IMPACT_ARMOR_SIZE_FACTOR, IMPACT_ARMOR_SIZE_MAX } from './eve/overlays/EveDamageOverlay.js';
364
364
  export { EveParticleDirectForce } from './eve/particles/force/EveParticleDirectForce.js';
365
365
  export { EveParticleDragForce } from './eve/particles/force/EveParticleDragForce.js';
366
366
  export { EveParticleSpring } from './eve/particles/force/EveParticleSpring.js';
@@ -655,6 +655,7 @@ export { Tr2VolumetricsRenderer } from './core/volumetrics/Tr2VolumetricsRendere
655
655
  export { Tr2StreamingBitmapSaver } from './core/Tr2StreamingBitmapSaver.js';
656
656
  export { Tr2TextureArrayElement } from './core/Tr2TextureArray/Tr2TextureArrayElement.js';
657
657
  export { Tr2TextureArray } from './core/Tr2TextureArray/Tr2TextureArray.js';
658
+ export { Tr2TextureReference } from './core/Tr2TextureReference.js';
658
659
  export { Tr2PresentParameters } from './ui/Tr2PresentParameters.js';
659
660
  export { Tr2ProjectBoundingBoxBracket } from './ui/Tr2ProjectBoundingBoxBracket.js';
660
661
  export { EveCloudEditableVolume } from './generated/eve/child/EveCloudEditableVolume.js';
@@ -703,7 +704,6 @@ export { Tr2ReflectionProbe } from './generated/trinityCore/Tr2ReflectionProbe.j
703
704
  export { Tr2SSSSS } from './generated/trinityCore/Tr2SSSSS.js';
704
705
  export { Tr2TextureAtlas } from './generated/trinityCore/Tr2TextureAtlas.js';
705
706
  export { Tr2TextureAtlasMan } from './generated/trinityCore/Tr2TextureAtlasMan.js';
706
- export { Tr2TextureReference } from './generated/trinityCore/Tr2TextureReference.js';
707
707
  export { Tr2TransientTextureReference } from './generated/trinityCore/Tr2TransientTextureReference.js';
708
708
  export { RenderBatchSortType, SSAOQuality, ShadowQuality, TR2SHADERMODEL, Tr2DxtCompressionFormat, Tr2DxtCompressionSquishQuality, Tr2RenderReason, Tr2StandardIlluminant, Tr2TransformModifier, Tr2VolumerticQuality, TriFrustumTestResult, TriVariableContentType } from './generated/trinityCore/enums.js';
709
709
  export { INPUTTYPE, UIALIGN, UIANCHOR, UIBOX, UICONTROLTYPE, UICURSOR, UID, UIFONTSIZE, UIFONTSTYLE, UIHITAREA, UIINITPOS, UIMESSAGE, UISTATE, UITRAVERSE } from './generated/ui/enums.js';
@@ -23,7 +23,7 @@ new class extends _identity {
23
23
  } = _applyDecs2311(this, [type.define({
24
24
  className: "Tr2GpuSharedEmitter",
25
25
  family: "particle"
26
- }), carbon.inherit(ITr2GenericEmitter)], [[[edit, edit.persist, type, type.string], 16, "name"], [[edit, edit.persist, type, type.boolean], 16, "continuousEmitter"], [[edit, edit.persist, type, type.float32], 16, "rate"], [[edit, edit.persist, type, type.float32], 16, "emissionDensity"], [[edit, edit.persist, type, type.float32], 16, "maxEmissionDensity"], [[edit, edit.persist, type, type.float32], 16, "maxDisplacement"], [[edit, edit.persist, type, type.vec3], 16, "position"], [[edit, edit.persist, type, type.vec3], 16, "direction"], [[edit, edit.persist, type, type.float32], 16, "angle"], [[edit, edit.persist, type, type.float32], 16, "innerAngle"], [[edit, edit.persist, type, type.float32], 16, "radius"], [[edit, edit.persist, type, type.float32], 16, "inheritVelocity"], [[edit, edit.persist, type, type.float32], 16, "minSpeed"], [[edit, edit.persist, type, type.float32], 16, "maxSpeed"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "minLifeTime"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "maxLifeTime"], [[edit, edit.notify, edit, edit.persist, type, type.vec3], 16, "sizes"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "sizeVariance"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color0"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color1"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color2"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color3"], [[edit, edit.notify, edit, edit.persist, type, type.uint32], 16, "textureIndex"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "colorMidpoint"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "velocityStretchRotation"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "drag"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "turbulenceAmplitude"], [[edit, edit.notify, edit, edit.persist, type, type.uint32], 16, "turbulenceFrequency"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "gravity"], [[carbon, carbon.method, impl, impl.adapted], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "OnModified"], [[carbon, carbon.method, impl, impl.adapted], 18, "Enable"], [[carbon, carbon.method, impl, impl.adapted], 18, "IsEnabled"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetDirection"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetPosition"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Projects Carbon's setup structs onto the schema-backed editor fields; renderer-only spawn history and transformed parameters remain adapter-owned.")], 18, "Setup"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetRevision"], [[impl, impl.noop], 18, "SetThreadSafeFlag"]], 0, void 0, CjsModel));
26
+ }), carbon.inherit(ITr2GenericEmitter)], [[[edit, edit.persist, type, type.string], 16, "name"], [[edit, edit.persist, type, type.boolean], 16, "continuousEmitter"], [[edit, edit.persist, type, type.float32], 16, "rate"], [[edit, edit.persist, type, type.float32], 16, "emissionDensity"], [[edit, edit.persist, type, type.float32], 16, "maxEmissionDensity"], [[edit, edit.persist, type, type.float32], 16, "maxDisplacement"], [[edit, edit.persist, type, type.vec3], 16, "position"], [[edit, edit.persist, type, type.vec3], 16, "direction"], [[edit, edit.persist, type, type.float32], 16, "angle"], [[edit, edit.persist, type, type.float32], 16, "innerAngle"], [[edit, edit.persist, type, type.float32], 16, "radius"], [[edit, edit.persist, type, type.float32], 16, "inheritVelocity"], [[edit, edit.persist, type, type.float32], 16, "minSpeed"], [[edit, edit.persist, type, type.float32], 16, "maxSpeed"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "minLifeTime"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "maxLifeTime"], [[edit, edit.notify, edit, edit.persist, type, type.vec3], 16, "sizes"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "sizeVariance"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color0"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color1"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color2"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color3"], [[edit, edit.notify, edit, edit.persist, type, type.uint32], 16, "textureIndex"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "colorMidpoint"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "velocityStretchRotation"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "drag"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "turbulenceAmplitude"], [[edit, edit.notify, edit, edit.persist, type, type.uint32], 16, "turbulenceFrequency"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "gravity"], [[carbon, carbon.method, impl, impl.adapted], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "OnModified"], [[carbon, carbon.method, impl, impl.adapted], 18, "Enable"], [[carbon, carbon.method, impl, impl.adapted], 18, "IsEnabled"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetDirection"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetPosition"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "SpawnOnce"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Projects Carbon's setup structs onto the schema-backed editor fields; renderer-only spawn history and transformed parameters remain adapter-owned.")], 18, "Setup"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetRevision"], [[impl, impl.noop], 18, "SetThreadSafeFlag"]], 0, void 0, CjsModel));
27
27
  }
28
28
  name = (_initProto(this), _init_name(this, ""));
29
29
  continuousEmitter = (_init_extra_name(this), _init_continuousEmitter(this, true));
@@ -100,6 +100,15 @@ new class extends _identity {
100
100
  vec3.copy(this.position, value || _Tr2GpuSharedEmitter.#zero3);
101
101
  }
102
102
 
103
+ /**
104
+ * Emits one scaled burst into the GPU particle system (Carbon
105
+ * Tr2GpuSharedEmitter.cpp:236-276). Requires Tr2GpuParticleSystem.Emit and
106
+ * the parameter hash/ID registry, neither of which is ported.
107
+ */
108
+ SpawnOnce(_arguments, _velocity, _scale = 1, _rateModifier = 1) {
109
+ throw new Error("Tr2GpuSharedEmitter.SpawnOnce is not implemented in CarbonEngineJS.");
110
+ }
111
+
103
112
  /**
104
113
  * Projects Carbon's emitter and particle-parameter structs onto the schema-backed fields in one batched, event-free update followed by a single UpdateValues.
105
114
  * @param {object} emitterData emission shape and speed range; missing members fall back to the current values
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2GpuSharedEmitter.js","sources":["../../../../../src/trinity/particle/emitter/Tr2GpuSharedEmitter.js"],"sourcesContent":["// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter.h\n// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter.cpp\n// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter_Blue.cpp\n// Source: trinity/trinity/Particle/Tr2GpuParticleSystem.h\nimport { color } from \"#math/color\";\nimport { vec3 } from \"#math/vec3\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { ITr2GenericEmitter } from \"../ITr2GenericEmitter/index.js\";\n\n\n/**\n * Authored parameters of a GPU particle emitter: emission cone and rate,\n * particle lifetime and speed range, size and colour ramp, and the drag,\n * turbulence and gravity terms the simulation applies.\n */\n@type.define({ className: \"Tr2GpuSharedEmitter\", family: \"particle\" })\n@carbon.inherit(ITr2GenericEmitter)\nexport class Tr2GpuSharedEmitter extends CjsModel\n{\n @edit.persist\n @type.string\n name = \"\";\n\n @edit.persist\n @type.boolean\n continuousEmitter = true;\n\n @edit.persist\n @type.float32\n rate = 0;\n\n @edit.persist\n @type.float32\n emissionDensity = 0;\n\n @edit.persist\n @type.float32\n maxEmissionDensity = 10000;\n\n @edit.persist\n @type.float32\n maxDisplacement = 1000;\n\n @edit.persist\n @type.vec3\n position = vec3.create();\n\n @edit.persist\n @type.vec3\n direction = vec3.fromValues(0, 1, 0);\n\n @edit.persist\n @type.float32\n angle = 0;\n\n @edit.persist\n @type.float32\n innerAngle = 0;\n\n @edit.persist\n @type.float32\n radius = 0;\n\n @edit.persist\n @type.float32\n inheritVelocity = 1;\n\n @edit.persist\n @type.float32\n minSpeed = 0;\n\n @edit.persist\n @type.float32\n maxSpeed = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n minLifeTime = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n maxLifeTime = 0;\n\n @edit.notify\n @edit.persist\n @type.vec3\n sizes = vec3.create();\n\n @edit.notify\n @edit.persist\n @type.float32\n sizeVariance = 0;\n\n @edit.notify\n @edit.persist\n @type.color\n color0 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color1 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color2 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color3 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.uint32\n textureIndex = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n colorMidpoint = 0.5;\n\n @edit.notify\n @edit.persist\n @type.float32\n velocityStretchRotation = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n drag = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n turbulenceAmplitude = 0;\n\n @edit.notify\n @edit.persist\n @type.uint32\n turbulenceFrequency = 1;\n\n @edit.notify\n @edit.persist\n @type.float32\n gravity = 0;\n\n #enabled = true;\n\n #previousTime = -1;\n\n #revision = 0;\n\n /**\n * Bumps the revision so a renderer holding this emitter rebuilds from it;\n * there are no GPU resources to create here.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n this.#revision++;\n return true;\n }\n\n /**\n * Bumps the revision so a renderer holding this emitter picks up the changed\n * parameters.\n */\n @carbon.method\n @impl.adapted\n OnModified()\n {\n this.#revision++;\n return true;\n }\n\n /**\n * Turns emission on or off; disabling also clears the spawn-time cursor so\n * re-enabling restarts timing instead of catching up on the idle interval.\n */\n @carbon.method\n @impl.adapted\n Enable(value)\n {\n this.#enabled = !!value;\n if (!this.#enabled) this.#previousTime = -1;\n }\n\n /** Reports whether this emitter is currently emitting. */\n @carbon.method\n @impl.adapted\n IsEnabled()\n {\n return this.#enabled;\n }\n\n /** Sets the emission cone axis in place, treating a missing value as zero. */\n @carbon.method\n @impl.adapted\n SetDirection(value)\n {\n vec3.copy(this.direction, value || Tr2GpuSharedEmitter.#zero3);\n }\n\n /** Sets the emitter origin in place, treating a missing value as zero. */\n @carbon.method\n @impl.adapted\n SetPosition(value)\n {\n vec3.copy(this.position, value || Tr2GpuSharedEmitter.#zero3);\n }\n\n /**\n * Projects Carbon's emitter and particle-parameter structs onto the schema-backed fields in one batched, event-free update followed by a single UpdateValues.\n * @param {object} emitterData emission shape and speed range; missing members fall back to the current values\n * @param {object} paramsData per-particle parameters; colors may be supplied either as a colors array or as color0..color3\n * attractorStrength is only forwarded on subclasses that declare it.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Projects Carbon's setup structs onto the schema-backed editor fields; renderer-only spawn history and transformed parameters remain adapter-owned.\")\n Setup(rate, emitterData, paramsData)\n {\n const emitter = emitterData || {};\n const parameters = paramsData || {};\n const colors = parameters.colors || [];\n const values = {\n rate,\n radius: emitter.radius,\n angle: emitter.angle,\n innerAngle: emitter.innerAngle,\n minSpeed: emitter.minSpeed,\n maxSpeed: emitter.maxSpeed,\n minLifeTime: parameters.minLifeTime,\n maxLifeTime: parameters.maxLifeTime,\n textureIndex: parameters.textureIndex,\n colorMidpoint: parameters.colorMidpoint ?? 0.5,\n color0: colors[0] ?? parameters.color0,\n color1: colors[1] ?? parameters.color1,\n color2: colors[2] ?? parameters.color2,\n color3: colors[3] ?? parameters.color3,\n sizes: parameters.sizes,\n sizeVariance: parameters.sizeVariance,\n drag: parameters.drag,\n turbulenceAmplitude: parameters.turbulenceAmplitude,\n turbulenceFrequency: parameters.turbulenceFrequency ?? 1,\n gravity: parameters.gravity,\n velocityStretchRotation: parameters.velocityStretchRotation\n };\n if (\"attractorStrength\" in this)\n {\n values.attractorStrength = parameters.attractorStrength;\n }\n\n this.SetValues(values, { source: this, skipEvents: true, skipUpdate: true });\n this.UpdateValues({ source: this, skipEvents: true });\n }\n\n /**\n * Returns the counter bumped by Initialize and OnModified, which a renderer\n * compares against its own copy to detect parameter changes.\n */\n @carbon.method\n @impl.adapted\n GetRevision()\n {\n return this.#revision;\n }\n\n /** Carbon's GPU emitter thread-safety hook is intentionally empty. */\n @impl.noop\n SetThreadSafeFlag()\n {\n }\n\n static #zero3 = vec3.create();\n}\n"],"names":["_Tr2GpuSharedEmitter","_identity","Tr2GpuSharedEmitter","CjsModel","e","_init_name","_init_extra_name","_init_continuousEmitter","_init_extra_continuousEmitter","_init_rate","_init_extra_rate","_init_emissionDensity","_init_extra_emissionDensity","_init_maxEmissionDensity","_init_extra_maxEmissionDensity","_init_maxDisplacement","_init_extra_maxDisplacement","_init_position","_init_extra_position","_init_direction","_init_extra_direction","_init_angle","_init_extra_angle","_init_innerAngle","_init_extra_innerAngle","_init_radius","_init_extra_radius","_init_inheritVelocity","_init_extra_inheritVelocity","_init_minSpeed","_init_extra_minSpeed","_init_maxSpeed","_init_extra_maxSpeed","_init_minLifeTime","_init_extra_minLifeTime","_init_maxLifeTime","_init_extra_maxLifeTime","_init_sizes","_init_extra_sizes","_init_sizeVariance","_init_extra_sizeVariance","_init_color","_init_extra_color","_init_color2","_init_extra_color2","_init_color3","_init_extra_color3","_init_color4","_init_extra_color4","_init_textureIndex","_init_extra_textureIndex","_init_colorMidpoint","_init_extra_colorMidpoint","_init_velocityStretchRotation","_init_extra_velocityStretchRotation","_init_drag","_init_extra_drag","_init_turbulenceAmplitude","_init_extra_turbulenceAmplitude","_init_turbulenceFrequency","_init_extra_turbulenceFrequency","_init_gravity","_init_extra_gravity","_initProto","c","_initClass","_applyDecs","type","define","className","family","carbon","inherit","ITr2GenericEmitter","edit","persist","string","boolean","float32","vec3","notify","color","uint32","method","impl","adapted","reason","noop","name","continuousEmitter","rate","emissionDensity","maxEmissionDensity","maxDisplacement","position","create","direction","fromValues","angle","innerAngle","radius","inheritVelocity","minSpeed","maxSpeed","minLifeTime","maxLifeTime","sizes","sizeVariance","color0","createLinear","color1","color2","color3","textureIndex","colorMidpoint","velocityStretchRotation","drag","turbulenceAmplitude","turbulenceFrequency","gravity","Initialize","OnModified","Enable","value","IsEnabled","SetDirection","copy","SetPosition","Setup","emitterData","paramsData","emitter","parameters","colors","values","attractorStrength","SetValues","source","skipEvents","skipUpdate","UpdateValues","GetRevision","SetThreadSafeFlag","constructor"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2GpuSharedEmitter.js","sources":["../../../../../src/trinity/particle/emitter/Tr2GpuSharedEmitter.js"],"sourcesContent":["// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter.h\n// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter.cpp\n// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter_Blue.cpp\n// Source: trinity/trinity/Particle/Tr2GpuParticleSystem.h\nimport { color } from \"#math/color\";\nimport { vec3 } from \"#math/vec3\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { ITr2GenericEmitter } from \"../ITr2GenericEmitter/index.js\";\n\n\n/**\n * Authored parameters of a GPU particle emitter: emission cone and rate,\n * particle lifetime and speed range, size and colour ramp, and the drag,\n * turbulence and gravity terms the simulation applies.\n */\n@type.define({ className: \"Tr2GpuSharedEmitter\", family: \"particle\" })\n@carbon.inherit(ITr2GenericEmitter)\nexport class Tr2GpuSharedEmitter extends CjsModel\n{\n @edit.persist\n @type.string\n name = \"\";\n\n @edit.persist\n @type.boolean\n continuousEmitter = true;\n\n @edit.persist\n @type.float32\n rate = 0;\n\n @edit.persist\n @type.float32\n emissionDensity = 0;\n\n @edit.persist\n @type.float32\n maxEmissionDensity = 10000;\n\n @edit.persist\n @type.float32\n maxDisplacement = 1000;\n\n @edit.persist\n @type.vec3\n position = vec3.create();\n\n @edit.persist\n @type.vec3\n direction = vec3.fromValues(0, 1, 0);\n\n @edit.persist\n @type.float32\n angle = 0;\n\n @edit.persist\n @type.float32\n innerAngle = 0;\n\n @edit.persist\n @type.float32\n radius = 0;\n\n @edit.persist\n @type.float32\n inheritVelocity = 1;\n\n @edit.persist\n @type.float32\n minSpeed = 0;\n\n @edit.persist\n @type.float32\n maxSpeed = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n minLifeTime = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n maxLifeTime = 0;\n\n @edit.notify\n @edit.persist\n @type.vec3\n sizes = vec3.create();\n\n @edit.notify\n @edit.persist\n @type.float32\n sizeVariance = 0;\n\n @edit.notify\n @edit.persist\n @type.color\n color0 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color1 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color2 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color3 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.uint32\n textureIndex = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n colorMidpoint = 0.5;\n\n @edit.notify\n @edit.persist\n @type.float32\n velocityStretchRotation = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n drag = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n turbulenceAmplitude = 0;\n\n @edit.notify\n @edit.persist\n @type.uint32\n turbulenceFrequency = 1;\n\n @edit.notify\n @edit.persist\n @type.float32\n gravity = 0;\n\n #enabled = true;\n\n #previousTime = -1;\n\n #revision = 0;\n\n /**\n * Bumps the revision so a renderer holding this emitter rebuilds from it;\n * there are no GPU resources to create here.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n this.#revision++;\n return true;\n }\n\n /**\n * Bumps the revision so a renderer holding this emitter picks up the changed\n * parameters.\n */\n @carbon.method\n @impl.adapted\n OnModified()\n {\n this.#revision++;\n return true;\n }\n\n /**\n * Turns emission on or off; disabling also clears the spawn-time cursor so\n * re-enabling restarts timing instead of catching up on the idle interval.\n */\n @carbon.method\n @impl.adapted\n Enable(value)\n {\n this.#enabled = !!value;\n if (!this.#enabled) this.#previousTime = -1;\n }\n\n /** Reports whether this emitter is currently emitting. */\n @carbon.method\n @impl.adapted\n IsEnabled()\n {\n return this.#enabled;\n }\n\n /** Sets the emission cone axis in place, treating a missing value as zero. */\n @carbon.method\n @impl.adapted\n SetDirection(value)\n {\n vec3.copy(this.direction, value || Tr2GpuSharedEmitter.#zero3);\n }\n\n /** Sets the emitter origin in place, treating a missing value as zero. */\n @carbon.method\n @impl.adapted\n SetPosition(value)\n {\n vec3.copy(this.position, value || Tr2GpuSharedEmitter.#zero3);\n }\n\n /**\n * Emits one scaled burst into the GPU particle system (Carbon\n * Tr2GpuSharedEmitter.cpp:236-276). Requires Tr2GpuParticleSystem.Emit and\n * the parameter hash/ID registry, neither of which is ported.\n */\n @carbon.method\n @impl.notImplemented\n SpawnOnce(_arguments, _velocity, _scale = 1, _rateModifier = 1)\n {\n throw new Error(\"Tr2GpuSharedEmitter.SpawnOnce is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Projects Carbon's emitter and particle-parameter structs onto the schema-backed fields in one batched, event-free update followed by a single UpdateValues.\n * @param {object} emitterData emission shape and speed range; missing members fall back to the current values\n * @param {object} paramsData per-particle parameters; colors may be supplied either as a colors array or as color0..color3\n * attractorStrength is only forwarded on subclasses that declare it.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Projects Carbon's setup structs onto the schema-backed editor fields; renderer-only spawn history and transformed parameters remain adapter-owned.\")\n Setup(rate, emitterData, paramsData)\n {\n const emitter = emitterData || {};\n const parameters = paramsData || {};\n const colors = parameters.colors || [];\n const values = {\n rate,\n radius: emitter.radius,\n angle: emitter.angle,\n innerAngle: emitter.innerAngle,\n minSpeed: emitter.minSpeed,\n maxSpeed: emitter.maxSpeed,\n minLifeTime: parameters.minLifeTime,\n maxLifeTime: parameters.maxLifeTime,\n textureIndex: parameters.textureIndex,\n colorMidpoint: parameters.colorMidpoint ?? 0.5,\n color0: colors[0] ?? parameters.color0,\n color1: colors[1] ?? parameters.color1,\n color2: colors[2] ?? parameters.color2,\n color3: colors[3] ?? parameters.color3,\n sizes: parameters.sizes,\n sizeVariance: parameters.sizeVariance,\n drag: parameters.drag,\n turbulenceAmplitude: parameters.turbulenceAmplitude,\n turbulenceFrequency: parameters.turbulenceFrequency ?? 1,\n gravity: parameters.gravity,\n velocityStretchRotation: parameters.velocityStretchRotation\n };\n if (\"attractorStrength\" in this)\n {\n values.attractorStrength = parameters.attractorStrength;\n }\n\n this.SetValues(values, { source: this, skipEvents: true, skipUpdate: true });\n this.UpdateValues({ source: this, skipEvents: true });\n }\n\n /**\n * Returns the counter bumped by Initialize and OnModified, which a renderer\n * compares against its own copy to detect parameter changes.\n */\n @carbon.method\n @impl.adapted\n GetRevision()\n {\n return this.#revision;\n }\n\n /** Carbon's GPU emitter thread-safety hook is intentionally empty. */\n @impl.noop\n SetThreadSafeFlag()\n {\n }\n\n static #zero3 = vec3.create();\n}\n"],"names":["_Tr2GpuSharedEmitter","_identity","Tr2GpuSharedEmitter","CjsModel","e","_init_name","_init_extra_name","_init_continuousEmitter","_init_extra_continuousEmitter","_init_rate","_init_extra_rate","_init_emissionDensity","_init_extra_emissionDensity","_init_maxEmissionDensity","_init_extra_maxEmissionDensity","_init_maxDisplacement","_init_extra_maxDisplacement","_init_position","_init_extra_position","_init_direction","_init_extra_direction","_init_angle","_init_extra_angle","_init_innerAngle","_init_extra_innerAngle","_init_radius","_init_extra_radius","_init_inheritVelocity","_init_extra_inheritVelocity","_init_minSpeed","_init_extra_minSpeed","_init_maxSpeed","_init_extra_maxSpeed","_init_minLifeTime","_init_extra_minLifeTime","_init_maxLifeTime","_init_extra_maxLifeTime","_init_sizes","_init_extra_sizes","_init_sizeVariance","_init_extra_sizeVariance","_init_color","_init_extra_color","_init_color2","_init_extra_color2","_init_color3","_init_extra_color3","_init_color4","_init_extra_color4","_init_textureIndex","_init_extra_textureIndex","_init_colorMidpoint","_init_extra_colorMidpoint","_init_velocityStretchRotation","_init_extra_velocityStretchRotation","_init_drag","_init_extra_drag","_init_turbulenceAmplitude","_init_extra_turbulenceAmplitude","_init_turbulenceFrequency","_init_extra_turbulenceFrequency","_init_gravity","_init_extra_gravity","_initProto","c","_initClass","_applyDecs","type","define","className","family","carbon","inherit","ITr2GenericEmitter","edit","persist","string","boolean","float32","vec3","notify","color","uint32","method","impl","adapted","notImplemented","reason","noop","name","continuousEmitter","rate","emissionDensity","maxEmissionDensity","maxDisplacement","position","create","direction","fromValues","angle","innerAngle","radius","inheritVelocity","minSpeed","maxSpeed","minLifeTime","maxLifeTime","sizes","sizeVariance","color0","createLinear","color1","color2","color3","textureIndex","colorMidpoint","velocityStretchRotation","drag","turbulenceAmplitude","turbulenceFrequency","gravity","Initialize","OnModified","Enable","value","IsEnabled","SetDirection","copy","SetPosition","SpawnOnce","_arguments","_velocity","_scale","_rateModifier","Error","Setup","emitterData","paramsData","emitter","parameters","colors","values","attractorStrength","SetValues","source","skipEvents","skipUpdate","UpdateValues","GetRevision","SetThreadSafeFlag","constructor"],"mappings":"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"}
@@ -1,10 +1,21 @@
1
1
  import { applyDecs2311 as _applyDecs2311 } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
- import { edit, type, carbon, impl } from '#schema';
2
+ import { edit, type, impl, carbon } from '#schema';
3
3
  import { CjsModel } from '#model';
4
+ import { PixelFormat, Tr2GpuUsage, Tr2CpuUsage } from '#consts/render-context';
5
+ import { BitmapDimensions } from '#imageio';
6
+ import { Succeeded } from '../../trinityal/ALResult.js';
7
+ import { Tr2TextureSubresource } from '../../trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js';
8
+ import { Tr2SubresourceData } from '../../trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js';
9
+ import { Tr2RenderContext_GetMainThreadRenderContext } from '../core/context/Tr2RenderContext.js';
10
+ import { TriDevice as _TriDevice } from '../core/device/TriDevice.js';
11
+ import { Tr2TextureReference as _Tr2TextureReference } from '../core/Tr2TextureReference.js';
12
+ import { Tr2VariableStore as _Tr2VariableStore } from '../core/variable/Tr2VariableStore.js';
4
13
 
5
14
  let _initProto, _initClass, _init_textureWidth, _init_extra_textureWidth, _init_textureHeight, _init_extra_textureHeight, _init_blockDataNextIdx, _init_extra_blockDataNextIdx, _init_maxBlockCount, _init_extra_maxBlockCount, _init_maxPixelCount, _init_extra_maxPixelCount, _init_name, _init_extra_name;
15
+ const IMPACT_SHIELD_DATA_MAP = "ImpactShieldDataMap";
16
+ const VEC4_BYTES = 16;
6
17
 
7
- /** Packs shader-readable data blocks into a shared texture; allocating that texture is not ported yet. */
18
+ /** Packs shader-readable data blocks into the shared impact data texture. */
8
19
  let _Tr2DataTextureManage;
9
20
  class Tr2DataTextureManager extends CjsModel {
10
21
  static {
@@ -14,7 +25,7 @@ class Tr2DataTextureManager extends CjsModel {
14
25
  } = _applyDecs2311(this, [type.define({
15
26
  className: "Tr2DataTextureManager",
16
27
  family: "shader"
17
- })], [[[edit, edit.read, type, type.uint32], 16, "textureWidth"], [[edit, edit.read, type, type.uint32], 16, "textureHeight"], [[edit, edit.read, type, type.int32], 16, "blockDataNextIdx"], [[edit, edit.read, type, type.uint32], 16, "maxBlockCount"], [[edit, edit.read, type, type.uint32], 16, "maxPixelCount"], [[edit, edit.persist, type, type.string], 16, "name"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "RequestBlockData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTextureOffset"], [[carbon, carbon.method, impl, impl.adapted], 18, "Update"], [[carbon, carbon.method, impl, impl.noop], 18, "SetVariables"]], 0, void 0, CjsModel));
28
+ })], [[[edit, edit.read, type, type.uint32], 16, "textureWidth"], [[edit, edit.read, type, type.uint32], 16, "textureHeight"], [[edit, edit.read, type, type.int32], 16, "blockDataNextIdx"], [[edit, edit.read, type, type.uint32], 16, "maxBlockCount"], [[edit, edit.read, type, type.uint32], 16, "maxPixelCount"], [[edit, edit.persist, type, type.string], 16, "name"], [[impl, impl.custom, void 0, impl.reason("JavaScript has no destructor, so the owner releases explicitly, as Tr2GpuResourcePool handles do.")], 18, "Release"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon skips creation during a device reset via Tr2Renderer::IsResourceCreationAllowed, which has no JS counterpart; a context with no device refuses Create instead.")], 18, "PrepareResources"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon creates in place on the by-value Tr2TextureAL; JS textures come from the render-context factory and are installed on the reference, which broadcasts.")], 18, "OnPrepareResources"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon resets the by-value texture to an empty Tr2TextureAL; JS destroys the texture and installs null.")], 18, "ReleaseResources"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetVariables"], [[carbon, carbon.method, impl, impl.implemented], 18, "Update"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon reads flat Vector4 arrays; the JS owners keep columns of vec4s, which are copied here into Carbon's flat header-then-data[x*H + y] order.")], 18, "RequestBlockData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTextureOffset"]], 0, void 0, CjsModel));
18
29
  }
19
30
  /** m_textureWidth (uint32_t) [READ] */
20
31
  textureWidth = (_initProto(this), _init_textureWidth(this, 256));
@@ -33,96 +44,171 @@ class Tr2DataTextureManager extends CjsModel {
33
44
 
34
45
  /** m_name (BlueSharedString) [READWRITE, PERSIST] */
35
46
  name = (_init_extra_maxPixelCount(this), _init_name(this, ""));
36
- #blocks = (_init_extra_name(this), new Map());
37
- #priorities = new Map();
38
- #offsets = new Map();
39
- #packedBlocks = [];
40
47
 
41
- /** Initializes the CPU data-texture block manager. */
48
+ /** m_blockData: id -> flat Float32Array, header vec4s then data[x*H + y] vec4s. */
49
+ _blockData = (_init_extra_name(this), new Map());
50
+
51
+ /** m_blockPriority, a std::multimap: [priority, id] pairs in insertion order. */
52
+ _blockPriority = [];
53
+
54
+ /** m_dataTexture */
55
+ _dataTexture = new _Tr2TextureReference();
56
+
57
+ /** m_dataTextureOffsets: id -> pixel offset. */
58
+ _dataTextureOffsets = new Map();
59
+
60
+ /**
61
+ * Registers the data texture as ImpactShieldDataMap and prepares it, as
62
+ * Carbon's constructor does (Tr2DataTextureManager.cpp:8-20); the
63
+ * Tr2DeviceResource base registers with the device first
64
+ * (Tr2DeviceResource.cpp:10-13), so a scene built before the device gets
65
+ * its texture when the device prepares its resources.
66
+ */
67
+ constructor() {
68
+ super();
69
+ _TriDevice.RegisterResource(this);
70
+ _Tr2VariableStore.GlobalStore().RegisterVariable(IMPACT_SHIELD_DATA_MAP, this._dataTexture);
71
+ this.PrepareResources();
72
+ }
73
+
74
+ /**
75
+ * Unregisters the variable and the device resource and drops the texture:
76
+ * the destructor (cpp:22-25) plus the base's unregistration
77
+ * (Tr2DeviceResource.cpp:15-18).
78
+ */
79
+ Release() {
80
+ _Tr2VariableStore.GlobalStore().UnregisterVariable(IMPACT_SHIELD_DATA_MAP);
81
+ _TriDevice.UnregisterResource(this);
82
+ this.ReleaseResources();
83
+ }
84
+
85
+ /** Nothing to do after loading (Carbon cpp:31-34). */
42
86
  Initialize() {
43
87
  return true;
44
88
  }
45
89
 
46
90
  /**
47
- * Queues one data-texture block for the next Update. Rows are copied so an
48
- * owner can keep mutating its live impact data after submission.
91
+ * Prepares the device half (Carbon Tr2DeviceResource::PrepareResources,
92
+ * Tr2DeviceResource.cpp:21-33).
49
93
  */
50
- RequestBlockData(header, blockLength, data, priority) {
51
- const normalizedPriority = Number(priority);
52
- if (normalizedPriority <= 0) return -1;
53
- const id = this.blockDataNextIdx++;
54
- const length = Number(blockLength) >>> 0;
55
- this.#blocks.set(id, {
56
- header: cloneRows(header, this.textureHeight),
57
- blockLength: length,
58
- data: cloneRows(data, length)
94
+ PrepareResources() {
95
+ return this.OnPrepareResources();
96
+ }
97
+
98
+ /**
99
+ * Creates the zero-filled RGBA32F data texture and announces it, whether or
100
+ * not creation succeeded (Carbon cpp:62-77).
101
+ */
102
+ OnPrepareResources() {
103
+ const renderContext = Tr2RenderContext_GetMainThreadRenderContext();
104
+ const width = this.textureWidth;
105
+ const height = this.textureHeight;
106
+ const zeros = new Float32Array(width * height * 4);
107
+ const previous = this._dataTexture.GetTexture();
108
+ if (previous) previous.Destroy();
109
+ const texture = renderContext.CreateTexture(BitmapDimensions.texture2D(width, height, 1, PixelFormat.PIXEL_FORMAT_R32G32B32A32_FLOAT), {
110
+ gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,
111
+ cpuUsage: Tr2CpuUsage.READ | Tr2CpuUsage.WRITE,
112
+ initialData: [new Tr2SubresourceData(new Uint8Array(zeros.buffer), width * VEC4_BYTES, width * height * VEC4_BYTES)]
59
113
  });
114
+ this._dataTexture.SetTexture(texture);
115
+ return texture !== null;
116
+ }
60
117
 
61
- // Carbon's std::map<float, id> gives one block ownership of a duplicate
62
- // priority. Preserve that exact replacement rule.
63
- this.#priorities.set(normalizedPriority, id);
64
- return id;
118
+ /** Drops the data texture and announces it (Carbon cpp:40-45). */
119
+ ReleaseResources(_storage) {
120
+ const previous = this._dataTexture.GetTexture();
121
+ if (previous) previous.Destroy();
122
+ this._dataTexture.SetTexture(null);
65
123
  }
66
124
 
67
- /** Returns the last packed pixel offset for a submitted block, or -1. */
68
- GetTextureOffset(blockID) {
69
- return this.#offsets.get(Number(blockID) | 0) ?? -1;
125
+ /** Republishes the data texture as ImpactShieldDataMap (Carbon cpp:84-87). */
126
+ SetVariables() {
127
+ _Tr2VariableStore.GlobalStore().RegisterVariable(IMPACT_SHIELD_DATA_MAP, this._dataTexture);
70
128
  }
71
129
 
72
130
  /**
73
- * Packs queued blocks by descending priority. GetPackedBlocks returns the CPU
74
- * rows; uploading them into a texture is not ported yet.
131
+ * Writes every queued block into the texture by descending priority and
132
+ * records each block's pixel offset (Carbon cpp:93-164). With nothing
133
+ * queued the previous offsets survive, as in Carbon; offsets are recorded
134
+ * only when the texture maps.
75
135
  */
76
136
  Update(_updateContext) {
77
- this.#offsets.clear();
78
- this.#packedBlocks.length = 0;
137
+ const renderContext = Tr2RenderContext_GetMainThreadRenderContext();
138
+ this.maxPixelCount = 0;
139
+ this.maxBlockCount = 0;
140
+ if (this._blockData.size === 0) return;
79
141
  let pixelOffset = 0;
80
- const priorities = Array.from(this.#priorities.entries()).sort((left, right) => right[0] - left[0]);
81
- for (const [priority, id] of priorities) {
82
- const block = this.#blocks.get(id);
83
- if (!block) continue;
84
- if (pixelOffset + block.blockLength + 1 >= this.textureWidth) break;
85
- this.#offsets.set(id, pixelOffset);
86
- this.#packedBlocks.push({
87
- id,
88
- priority,
89
- offset: pixelOffset,
90
- ...block
91
- });
92
- pixelOffset += block.blockLength + 1;
142
+ this._dataTextureOffsets.clear();
143
+ const texture = this._dataTexture.GetTexture();
144
+ const mapped = texture ? texture.MapForWriting(Tr2TextureSubresource.ForMipLevel(0), renderContext) : null;
145
+ if (mapped && Succeeded(mapped.result)) {
146
+ const floats = new Float32Array(mapped.data.buffer, mapped.data.byteOffset, mapped.data.byteLength >> 2);
147
+ const rowFloats = mapped.pitch >> 2;
148
+ const height = this.textureHeight;
149
+
150
+ // multimap rbegin->rend: highest priority first, equal priorities in
151
+ // reverse insertion order.
152
+ const ordered = this._blockPriority.slice().sort((left, right) => left[0] - right[0]).reverse();
153
+ for (const [, blockID] of ordered) {
154
+ const block = this._blockData.get(blockID);
155
+ if (!block) continue;
156
+ if (pixelOffset + block.blockLength + 1 >= this.textureWidth) break;
157
+ this._dataTextureOffsets.set(blockID, pixelOffset);
158
+ for (let y = 0; y < height; y++) {
159
+ floats.set(block.values.subarray(y * 4, y * 4 + 4), y * rowFloats + pixelOffset * 4);
160
+ }
161
+ const dataStart = height * 4;
162
+ for (let y = 0; y < height; y++) {
163
+ for (let x = 0; x < block.blockLength; x++) {
164
+ const source = dataStart + (x * height + y) * 4;
165
+ floats.set(block.values.subarray(source, source + 4), y * rowFloats + (pixelOffset + 1 + x) * 4);
166
+ }
167
+ }
168
+ pixelOffset += block.blockLength + 1;
169
+ }
170
+ texture.UnmapForWriting(renderContext);
93
171
  }
94
172
  this.maxPixelCount = pixelOffset;
95
- this.maxBlockCount = this.#blocks.size;
96
- this.#blocks.clear();
97
- this.#priorities.clear();
98
- return this.#packedBlocks;
99
- }
100
-
101
- /** Borrowed packed CPU descriptor list, pending the texture upload port. */
102
- GetPackedBlocks() {
103
- return this.#packedBlocks;
173
+ this.maxBlockCount = this._blockData.size;
174
+ this._blockData.clear();
175
+ this._blockPriority.length = 0;
104
176
  }
105
177
 
106
178
  /**
107
- * Carbon republishes the texture through the global variable store. There is
108
- * no texture object here to publish because creating it is not ported yet, so
109
- * this stays a no-op until it is.
179
+ * Queues a copy of one block for the next Update and returns its id, or -1
180
+ * for a non-positive priority (Carbon cpp:175-203).
181
+ * @param {Float32Array[]} header - textureHeight vec4s, one per texture row
182
+ * @param {Number} blockLength - data columns, not counting the header
183
+ * @param {Float32Array[][]} data - blockLength columns of textureHeight vec4s
184
+ * @param {Number} priority - higher packs first
110
185
  */
111
- SetVariables() {}
186
+ RequestBlockData(header, blockLength, data, priority) {
187
+ if (priority <= 0) return -1;
188
+ const height = this.textureHeight;
189
+ const length = Number(blockLength) >>> 0;
190
+ const values = new Float32Array((1 + length) * height * 4);
191
+ for (let y = 0; y < height; y++) values.set(header[y], y * 4);
192
+ for (let x = 0; x < length; x++) {
193
+ for (let y = 0; y < height; y++) values.set(data[x][y], (height + x * height + y) * 4);
194
+ }
195
+ const blockID = this.blockDataNextIdx++;
196
+ this._blockData.set(blockID, {
197
+ blockLength: length,
198
+ values
199
+ });
200
+ this._blockPriority.push([Number(priority), blockID]);
201
+ return blockID;
202
+ }
203
+
204
+ /** Returns a block's pixel offset from the last packing Update, or -1 (Carbon cpp:211-220). */
205
+ GetTextureOffset(blockID) {
206
+ return this._dataTextureOffsets.get(Number(blockID) | 0) ?? -1;
207
+ }
112
208
  static {
113
209
  _initClass();
114
210
  }
115
211
  }
116
- function cloneRows(rows, count) {
117
- const source = Array.from(rows ?? []);
118
- return Array.from({
119
- length: count
120
- }, (_value, index) => {
121
- const row = source[index];
122
- if (Array.isArray(row)) return row.map(value => ArrayBuffer.isView(value) ? new Float32Array(value) : value);
123
- return ArrayBuffer.isView(row) ? new Float32Array(row) : row;
124
- });
125
- }
126
212
 
127
213
  export { _Tr2DataTextureManage as Tr2DataTextureManager };
128
214
  //# sourceMappingURL=Tr2DataTextureManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2DataTextureManager.js","sources":["../../../../src/trinity/shader/Tr2DataTextureManager.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Utils/Tr2DataTextureManager.h:10-60\n// Hand-maintained from Carbon source.\r\n//\r\n// THE DEVICE HALF IS NOT PORTED YET. Carbon derives this from\r\n// Tr2DeviceResource and implements both halves on the class itself.\r\n//\r\n// PUBLIC, and portable - this is the part that belongs here:\r\n//\r\n// RequestBlockData(header, blockLength, data, priority) -> block id\r\n// GetTextureOffset(blockID) -> offset\r\n// SetVariables() publishes those offsets as shader variables\r\n// Update(updateContext)\r\n//\r\n// PRIVATE, and device-only - this is the part that is missing:\r\n//\r\n// OnPrepareResources() creates the backing texture\r\n// ReleaseResources(s) releases it\r\n//\r\n// So the shape is CjsBatchManager's: a neutral CPU registry that packs blocks,\r\n// hands back ids and offsets, and publishes them, with the texture creation\r\n// and upload currently injected - a gap, not a boundary. 75 donor Trinity\r\n// classes implement OnPrepareResources themselves, EveStarfield\r\n// (Eve/EveStarfield.cpp:110-172) among them.\r\n//\r\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\n\r\n/** Packs shader-readable data blocks into a shared texture; allocating that texture is not ported yet. */\r\n@type.define({ className: \"Tr2DataTextureManager\", family: \"shader\" })\r\nexport class Tr2DataTextureManager extends CjsModel\n{\n\r\n /** m_textureWidth (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n textureWidth = 256;\r\n\r\n /** m_textureHeight (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n textureHeight = 4;\r\n\r\n /** m_blockDataNextIdx (int32_t) [READ] */\r\n @edit.read\r\n @type.int32\r\n blockDataNextIdx = 1;\r\n\r\n /** m_maxBlockCount (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n maxBlockCount = 0;\r\n\r\n /** m_maxPixelCount (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n maxPixelCount = 0;\r\n\r\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.string\n name = \"\";\n\n #blocks = new Map();\n\n #priorities = new Map();\n\n #offsets = new Map();\n\n #packedBlocks = [];\n\n /** Initializes the CPU data-texture block manager. */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n return true;\n }\n\n /**\n * Queues one data-texture block for the next Update. Rows are copied so an\n * owner can keep mutating its live impact data after submission.\n */\n @carbon.method\n @impl.adapted\n RequestBlockData(header, blockLength, data, priority)\n {\n const normalizedPriority = Number(priority);\n if (normalizedPriority <= 0) return -1;\n\n const id = this.blockDataNextIdx++;\n const length = Number(blockLength) >>> 0;\n this.#blocks.set(id, {\n header: cloneRows(header, this.textureHeight),\n blockLength: length,\n data: cloneRows(data, length)\n });\n\n // Carbon's std::map<float, id> gives one block ownership of a duplicate\n // priority. Preserve that exact replacement rule.\n this.#priorities.set(normalizedPriority, id);\n return id;\n }\n\n /** Returns the last packed pixel offset for a submitted block, or -1. */\n @carbon.method\n @impl.implemented\n GetTextureOffset(blockID)\n {\n return this.#offsets.get(Number(blockID) | 0) ?? -1;\n }\n\n /**\n * Packs queued blocks by descending priority. GetPackedBlocks returns the CPU\n * rows; uploading them into a texture is not ported yet.\n */\n @carbon.method\n @impl.adapted\n Update(_updateContext)\n {\n this.#offsets.clear();\n this.#packedBlocks.length = 0;\n\n let pixelOffset = 0;\n const priorities = Array.from(this.#priorities.entries())\n .sort((left, right) => right[0] - left[0]);\n\n for (const [ priority, id ] of priorities)\n {\n const block = this.#blocks.get(id);\n if (!block) continue;\n if (pixelOffset + block.blockLength + 1 >= this.textureWidth) break;\n\n this.#offsets.set(id, pixelOffset);\n this.#packedBlocks.push({ id, priority, offset: pixelOffset, ...block });\n pixelOffset += block.blockLength + 1;\n }\n\n this.maxPixelCount = pixelOffset;\n this.maxBlockCount = this.#blocks.size;\n this.#blocks.clear();\n this.#priorities.clear();\n return this.#packedBlocks;\n }\n\n /** Borrowed packed CPU descriptor list, pending the texture upload port. */\n GetPackedBlocks()\n {\n return this.#packedBlocks;\n }\n\n /**\n * Carbon republishes the texture through the global variable store. There is\n * no texture object here to publish because creating it is not ported yet, so\n * this stays a no-op until it is.\n */\n @carbon.method\n @impl.noop\n SetVariables()\n {\n }\n\n}\n\n\nfunction cloneRows(rows, count)\n{\n const source = Array.from(rows ?? []);\n return Array.from({ length: count }, (_value, index) =>\n {\n const row = source[index];\n if (Array.isArray(row)) return row.map(value => ArrayBuffer.isView(value) ? new Float32Array(value) : value);\n return ArrayBuffer.isView(row) ? new Float32Array(row) : row;\n });\n}\n"],"names":["_Tr2DataTextureManage","Tr2DataTextureManager","CjsModel","e","_init_textureWidth","_init_extra_textureWidth","_init_textureHeight","_init_extra_textureHeight","_init_blockDataNextIdx","_init_extra_blockDataNextIdx","_init_maxBlockCount","_init_extra_maxBlockCount","_init_maxPixelCount","_init_extra_maxPixelCount","_init_name","_init_extra_name","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","read","uint32","int32","persist","string","carbon","method","impl","implemented","adapted","noop","textureWidth","textureHeight","blockDataNextIdx","maxBlockCount","maxPixelCount","name","Map","Initialize","RequestBlockData","header","blockLength","data","priority","normalizedPriority","Number","id","length","set","cloneRows","GetTextureOffset","blockID","get","Update","_updateContext","clear","pixelOffset","priorities","Array","from","entries","sort","left","right","block","push","offset","size","GetPackedBlocks","SetVariables","rows","count","source","_value","index","row","isArray","map","value","ArrayBuffer","isView","Float32Array"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2DataTextureManager.js","sources":["../../../../src/trinity/shader/Tr2DataTextureManager.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Utils/Tr2DataTextureManager.h\n// Source: trinity/trinity/Shader/Utils/Tr2DataTextureManager.cpp\n// Source: trinity/trinity/Shader/Utils/Tr2DataTextureManager_Blue.cpp\n// Hand-maintained from Carbon source.\n//\n// Packs per-object impact blocks into one 256x4 RGBA32F texture, published as\n// the global \"ImpactShieldDataMap\". Each block is a header column followed by\n// blockLength data columns; an owner reads its block through the pixel offset\n// GetTextureOffset returns after the scene's Update.\n//\n// Carbon derives this from Tr2DeviceResource, whose constructor registers it\n// with TriDevice and whose PrepareResources gates OnPrepareResources. There is\n// no JS base, so both halves are on the class, and JavaScript has no\n// destructor, so Release() stands in for ~Tr2DataTextureManager.\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { PixelFormat, Tr2CpuUsage, Tr2GpuUsage } from \"#consts/render-context\";\nimport { BitmapDimensions as Tr2BitmapDimensions } from \"#imageio\";\nimport { Succeeded } from \"../../trinityal/ALResult.js\";\nimport { Tr2TextureSubresource } from \"../../trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js\";\nimport { Tr2SubresourceData } from \"../../trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js\";\nimport { Tr2RenderContext_GetMainThreadRenderContext } from \"../core/context/Tr2RenderContext.js\";\nimport { TriDevice } from \"../core/device/TriDevice.js\";\nimport { Tr2TextureReference } from \"../core/Tr2TextureReference.js\";\nimport { Tr2VariableStore } from \"../core/variable/Tr2VariableStore.js\";\n\nconst IMPACT_SHIELD_DATA_MAP = \"ImpactShieldDataMap\";\nconst VEC4_BYTES = 16;\n\n/** Packs shader-readable data blocks into the shared impact data texture. */\n@type.define({ className: \"Tr2DataTextureManager\", family: \"shader\" })\nexport class Tr2DataTextureManager extends CjsModel\n{\n\n /** m_textureWidth (uint32_t) [READ] */\n @edit.read\n @type.uint32\n textureWidth = 256;\n\n /** m_textureHeight (uint32_t) [READ] */\n @edit.read\n @type.uint32\n textureHeight = 4;\n\n /** m_blockDataNextIdx (int32_t) [READ] */\n @edit.read\n @type.int32\n blockDataNextIdx = 1;\n\n /** m_maxBlockCount (uint32_t) [READ] */\n @edit.read\n @type.uint32\n maxBlockCount = 0;\n\n /** m_maxPixelCount (uint32_t) [READ] */\n @edit.read\n @type.uint32\n maxPixelCount = 0;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @edit.persist\n @type.string\n name = \"\";\n\n /** m_blockData: id -> flat Float32Array, header vec4s then data[x*H + y] vec4s. */\n _blockData = new Map();\n\n /** m_blockPriority, a std::multimap: [priority, id] pairs in insertion order. */\n _blockPriority = [];\n\n /** m_dataTexture */\n _dataTexture = new Tr2TextureReference();\n\n /** m_dataTextureOffsets: id -> pixel offset. */\n _dataTextureOffsets = new Map();\n\n /**\n * Registers the data texture as ImpactShieldDataMap and prepares it, as\n * Carbon's constructor does (Tr2DataTextureManager.cpp:8-20); the\n * Tr2DeviceResource base registers with the device first\n * (Tr2DeviceResource.cpp:10-13), so a scene built before the device gets\n * its texture when the device prepares its resources.\n */\n constructor()\n {\n super();\n TriDevice.RegisterResource(this);\n Tr2VariableStore.GlobalStore().RegisterVariable(IMPACT_SHIELD_DATA_MAP, this._dataTexture);\n this.PrepareResources();\n }\n\n /**\n * Unregisters the variable and the device resource and drops the texture:\n * the destructor (cpp:22-25) plus the base's unregistration\n * (Tr2DeviceResource.cpp:15-18).\n */\n @impl.custom\n @impl.reason(\"JavaScript has no destructor, so the owner releases explicitly, as Tr2GpuResourcePool handles do.\")\n Release()\n {\n Tr2VariableStore.GlobalStore().UnregisterVariable(IMPACT_SHIELD_DATA_MAP);\n TriDevice.UnregisterResource(this);\n this.ReleaseResources();\n }\n\n /** Nothing to do after loading (Carbon cpp:31-34). */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n return true;\n }\n\n /**\n * Prepares the device half (Carbon Tr2DeviceResource::PrepareResources,\n * Tr2DeviceResource.cpp:21-33).\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon skips creation during a device reset via Tr2Renderer::IsResourceCreationAllowed, which has no JS counterpart; a context with no device refuses Create instead.\")\n PrepareResources()\n {\n return this.OnPrepareResources();\n }\n\n /**\n * Creates the zero-filled RGBA32F data texture and announces it, whether or\n * not creation succeeded (Carbon cpp:62-77).\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon creates in place on the by-value Tr2TextureAL; JS textures come from the render-context factory and are installed on the reference, which broadcasts.\")\n OnPrepareResources()\n {\n const renderContext = Tr2RenderContext_GetMainThreadRenderContext();\n const width = this.textureWidth;\n const height = this.textureHeight;\n const zeros = new Float32Array(width * height * 4);\n const previous = this._dataTexture.GetTexture();\n if (previous) previous.Destroy();\n const texture = renderContext.CreateTexture(\n Tr2BitmapDimensions.texture2D(width, height, 1, PixelFormat.PIXEL_FORMAT_R32G32B32A32_FLOAT),\n {\n gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,\n cpuUsage: Tr2CpuUsage.READ | Tr2CpuUsage.WRITE,\n initialData: [ new Tr2SubresourceData(new Uint8Array(zeros.buffer), width * VEC4_BYTES, width * height * VEC4_BYTES) ]\n }\n );\n this._dataTexture.SetTexture(texture);\n return texture !== null;\n }\n\n /** Drops the data texture and announces it (Carbon cpp:40-45). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon resets the by-value texture to an empty Tr2TextureAL; JS destroys the texture and installs null.\")\n ReleaseResources(_storage)\n {\n const previous = this._dataTexture.GetTexture();\n if (previous) previous.Destroy();\n this._dataTexture.SetTexture(null);\n }\n\n /** Republishes the data texture as ImpactShieldDataMap (Carbon cpp:84-87). */\n @carbon.method\n @impl.implemented\n SetVariables()\n {\n Tr2VariableStore.GlobalStore().RegisterVariable(IMPACT_SHIELD_DATA_MAP, this._dataTexture);\n }\n\n /**\n * Writes every queued block into the texture by descending priority and\n * records each block's pixel offset (Carbon cpp:93-164). With nothing\n * queued the previous offsets survive, as in Carbon; offsets are recorded\n * only when the texture maps.\n */\n @carbon.method\n @impl.implemented\n Update(_updateContext)\n {\n const renderContext = Tr2RenderContext_GetMainThreadRenderContext();\n\n this.maxPixelCount = 0;\n this.maxBlockCount = 0;\n if (this._blockData.size === 0) return;\n\n let pixelOffset = 0;\n this._dataTextureOffsets.clear();\n const texture = this._dataTexture.GetTexture();\n const mapped = texture ? texture.MapForWriting(Tr2TextureSubresource.ForMipLevel(0), renderContext) : null;\n if (mapped && Succeeded(mapped.result))\n {\n const floats = new Float32Array(mapped.data.buffer, mapped.data.byteOffset, mapped.data.byteLength >> 2);\n const rowFloats = mapped.pitch >> 2;\n const height = this.textureHeight;\n\n // multimap rbegin->rend: highest priority first, equal priorities in\n // reverse insertion order.\n const ordered = this._blockPriority.slice().sort((left, right) => left[0] - right[0]).reverse();\n for (const [ , blockID ] of ordered)\n {\n const block = this._blockData.get(blockID);\n if (!block) continue;\n if (pixelOffset + block.blockLength + 1 >= this.textureWidth) break;\n\n this._dataTextureOffsets.set(blockID, pixelOffset);\n for (let y = 0; y < height; y++)\n {\n floats.set(block.values.subarray(y * 4, y * 4 + 4), y * rowFloats + pixelOffset * 4);\n }\n const dataStart = height * 4;\n for (let y = 0; y < height; y++)\n {\n for (let x = 0; x < block.blockLength; x++)\n {\n const source = dataStart + (x * height + y) * 4;\n floats.set(block.values.subarray(source, source + 4), y * rowFloats + (pixelOffset + 1 + x) * 4);\n }\n }\n pixelOffset += block.blockLength + 1;\n }\n texture.UnmapForWriting(renderContext);\n }\n\n this.maxPixelCount = pixelOffset;\n this.maxBlockCount = this._blockData.size;\n this._blockData.clear();\n this._blockPriority.length = 0;\n }\n\n /**\n * Queues a copy of one block for the next Update and returns its id, or -1\n * for a non-positive priority (Carbon cpp:175-203).\n * @param {Float32Array[]} header - textureHeight vec4s, one per texture row\n * @param {Number} blockLength - data columns, not counting the header\n * @param {Float32Array[][]} data - blockLength columns of textureHeight vec4s\n * @param {Number} priority - higher packs first\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads flat Vector4 arrays; the JS owners keep columns of vec4s, which are copied here into Carbon's flat header-then-data[x*H + y] order.\")\n RequestBlockData(header, blockLength, data, priority)\n {\n if (priority <= 0) return -1;\n\n const height = this.textureHeight;\n const length = Number(blockLength) >>> 0;\n const values = new Float32Array((1 + length) * height * 4);\n for (let y = 0; y < height; y++) values.set(header[y], y * 4);\n for (let x = 0; x < length; x++)\n {\n for (let y = 0; y < height; y++) values.set(data[x][y], (height + x * height + y) * 4);\n }\n\n const blockID = this.blockDataNextIdx++;\n this._blockData.set(blockID, { blockLength: length, values });\n this._blockPriority.push([ Number(priority), blockID ]);\n return blockID;\n }\n\n /** Returns a block's pixel offset from the last packing Update, or -1 (Carbon cpp:211-220). */\n @carbon.method\n @impl.implemented\n GetTextureOffset(blockID)\n {\n return this._dataTextureOffsets.get(Number(blockID) | 0) ?? -1;\n }\n\n}\n"],"names":["IMPACT_SHIELD_DATA_MAP","VEC4_BYTES","_Tr2DataTextureManage","Tr2DataTextureManager","CjsModel","e","_init_textureWidth","_init_extra_textureWidth","_init_textureHeight","_init_extra_textureHeight","_init_blockDataNextIdx","_init_extra_blockDataNextIdx","_init_maxBlockCount","_init_extra_maxBlockCount","_init_maxPixelCount","_init_extra_maxPixelCount","_init_name","_init_extra_name","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","read","uint32","int32","persist","string","impl","custom","reason","carbon","method","implemented","adapted","textureWidth","textureHeight","blockDataNextIdx","maxBlockCount","maxPixelCount","name","_blockData","Map","_blockPriority","_dataTexture","Tr2TextureReference","_dataTextureOffsets","constructor","TriDevice","RegisterResource","Tr2VariableStore","GlobalStore","RegisterVariable","PrepareResources","Release","UnregisterVariable","UnregisterResource","ReleaseResources","Initialize","OnPrepareResources","renderContext","Tr2RenderContext_GetMainThreadRenderContext","width","height","zeros","Float32Array","previous","GetTexture","Destroy","texture","CreateTexture","Tr2BitmapDimensions","texture2D","PixelFormat","PIXEL_FORMAT_R32G32B32A32_FLOAT","gpuUsage","Tr2GpuUsage","SHADER_RESOURCE","cpuUsage","Tr2CpuUsage","READ","WRITE","initialData","Tr2SubresourceData","Uint8Array","buffer","SetTexture","_storage","SetVariables","Update","_updateContext","size","pixelOffset","clear","mapped","MapForWriting","Tr2TextureSubresource","ForMipLevel","Succeeded","result","floats","data","byteOffset","byteLength","rowFloats","pitch","ordered","slice","sort","left","right","reverse","blockID","block","get","blockLength","set","y","values","subarray","dataStart","x","source","UnmapForWriting","length","RequestBlockData","header","priority","Number","push","GetTextureOffset"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { Tr2Shader } from '#resource/shader';
5
5
  import { ShaderType, CompareFunc } from '#consts/render-context';
6
6
  import { hashFnv1Floats, FNV1_INITIAL } from '../../global/utils/hash.js';
7
7
  import { Failed } from '../../trinityal/ALResult.js';
8
- import '../../trinityal/Tr2BitmapDimensions.js';
8
+ import '#imageio';
9
9
  import '../../global/consts/renderContext/formats.js';
10
10
  import '../../global/consts/renderContext/pipeline.js';
11
11
  import '../../trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js';
@@ -167,7 +167,7 @@ class Tr2TextureSubresource {
167
167
  /**
168
168
  * Clamps the range to a texture, filling in a box if there was none.
169
169
  *
170
- * @param {import("./Tr2BitmapDimensions.js").Tr2BitmapDimensions} texture The texture to clamp against.
170
+ * @param {import("#imageio").BitmapDimensions} texture The texture to clamp against.
171
171
  */
172
172
  ClampToTexture(texture) {
173
173
  const arraySize = Math.max(texture.GetArraySize(), 1);
@@ -204,7 +204,7 @@ class Tr2TextureSubresource {
204
204
  /**
205
205
  * Whether the range covers the entire texture.
206
206
  *
207
- * @param {import("./Tr2BitmapDimensions.js").Tr2BitmapDimensions} texture The texture to check against.
207
+ * @param {import("#imageio").BitmapDimensions} texture The texture to check against.
208
208
  * @returns {boolean} True when nothing is left out.
209
209
  */
210
210
  IsSubresourceFull(texture) {
@@ -224,7 +224,7 @@ class Tr2TextureSubresource {
224
224
  /**
225
225
  * Whether the range fits inside a texture.
226
226
  *
227
- * @param {import("./Tr2BitmapDimensions.js").Tr2BitmapDimensions} bitmap The texture to check against.
227
+ * @param {import("#imageio").BitmapDimensions} bitmap The texture to check against.
228
228
  * @returns {boolean} True when it fits.
229
229
  */
230
230
  IsValidForBitmap(bitmap) {
@@ -271,9 +271,9 @@ class Tr2TextureSubresource {
271
271
  * pass catches a box the shrink pushed back out of range.
272
272
  *
273
273
  * @param {Tr2TextureSubresource} sourceSR Source region; mutated in place.
274
- * @param {import("./Tr2BitmapDimensions.js").Tr2BitmapDimensions} sourceBD Source texture.
274
+ * @param {import("#imageio").BitmapDimensions} sourceBD Source texture.
275
275
  * @param {Tr2TextureSubresource} destSR Destination region; mutated in place.
276
- * @param {import("./Tr2BitmapDimensions.js").Tr2BitmapDimensions} destBD Destination texture.
276
+ * @param {import("#imageio").BitmapDimensions} destBD Destination texture.
277
277
  * @returns {boolean} True when a copy would make sense.
278
278
  */
279
279
  function Crop(sourceSR, sourceBD, destSR, destBD) {