@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
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2TextureALStub.js","sources":["../../../../src/trinityal/stub/Tr2TextureALStub.js"],"sourcesContent":["// Source: trinity/trinityal/stub/Tr2TextureALStub.cpp\r\n// Source: trinity/trinityal/stub/Tr2TextureALStub.h\r\n// Source: trinity/trinityal/include/Tr2TextureAL.h\r\n//\r\n// The GPU-free texture, ported from the one Carbon already ships.\r\n//\r\n// WHY THIS IS WORTH TRANSCRIBING RATHER THAN SUMMARISING. Carbon's stub texture\r\n// refuses thirteen distinct combinations of description, GPU usage and CPU\r\n// usage before it will call itself created - multisampled with unordered\r\n// access, a cube with anything but six faces, a depth stencil with mips, a\r\n// volume texture the CPU can touch, and so on. Each of those is a rule a real\r\n// backend enforces too, and each one is a bug we would otherwise find on a GPU\r\n// months later, in a form that looks like a driver problem rather than like a\r\n// texture we should never have asked for.\r\n//\r\n// So the validation IS the port. The allocation behind it is real as well: a\r\n// map returns a genuine buffer of the right pitch, so a caller reading pixels\r\n// back headless reads the shape it would read on a device.\r\n//\r\n// THREE LANGUAGE DIFFERENCES.\r\n//\r\n// - Carbon has six `Create` overloads over one implementation; this takes the\r\n// implementation's arguments, with the optional ones in a description object.\r\n// - Carbon's map functions return the result and hand back the pointer and the\r\n// pitch through reference arguments. JavaScript has no reference arguments,\r\n// so they return `{ result, data, pitch }`.\r\n// - Carbon's impl-level `Destroy` only resets the fields, because the registry\r\n// entry goes when the C++ destructor runs. Ours must also unregister, so the\r\n// reset lives in a private helper that `Create` calls and `Destroy` calls the\r\n// base as well. See the head comment on `Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js`.\r\n//\r\n// TWO FAITHFUL EMPTINESSES, worth knowing before relying on them: Carbon's stub\r\n// implements `Describe` as a no-op and returns null from `GetName`, so a stub\r\n// texture contributes nothing to a device inventory. That is transcribed, not\r\n// overlooked - a backend that reports real names is a real backend.\r\n\r\nimport { CjsSchema } from \"#schema\";\r\nimport { Tr2ALMemoryType, Tr2DeviceResourceAL } from \"../Tr2DeviceResourceAL/index.js\";\r\nimport { ALResult } from \"../ALResult.js\";\r\nimport { Tr2BitmapDimensions } from \"../Tr2BitmapDimensions.js\";\r\nimport { Crop, Tr2MsaaDesc, Tr2TextureSubresource } from \"../Tr2HalHelperStructures/index.js\";\r\nimport {\r\n IsCompressedFormat,\r\n HasBufferFlags,\r\n HasFlag,\r\n IsWritable,\r\n TextureType,\r\n Tr2CpuUsage,\r\n Tr2GpuUsage\r\n} from \"../../global/consts/renderContext/index.js\";\r\n\r\n\r\n/** Carbon's \"no descriptor heap index\", returned by both heap accessors. */\r\nconst NO_HEAP_INDEX = 0xffffffff;\r\n\r\n\r\n/**\r\n * A texture that validates like a real one and holds its pixels on the CPU.\r\n */\r\nexport class Tr2TextureALStub extends Tr2DeviceResourceAL\r\n{\r\n /** m_desc */\r\n _desc = new Tr2BitmapDimensions();\r\n\r\n /** m_msaa */\r\n _msaa = new Tr2MsaaDesc();\r\n\r\n /** m_gpuUsage */\r\n _gpuUsage = Tr2GpuUsage.NONE;\r\n\r\n /** m_cpuUsage */\r\n _cpuUsage = Tr2CpuUsage.NONE;\r\n\r\n /** m_data - allocated on first map, released on unmap unless kept \"often\". */\r\n _data = null;\r\n\r\n /**\r\n * Creates the texture.\r\n *\r\n * Every refusal below is Carbon's, in Carbon's order\r\n * (`Tr2TextureALStub.cpp:18-95`).\r\n *\r\n * @param {Tr2BitmapDimensions} desc The texture description.\r\n * @param {object} options Creation options.\r\n * @param {number} [options.gpuUsage] A `Tr2GpuUsage` bit set.\r\n * @param {number} [options.cpuUsage] A `Tr2CpuUsage` bit set.\r\n * @param {Tr2MsaaDesc} [options.msaa] Multisample description.\r\n * @param {object[]} [options.initialData] Initial subresource data, if any.\r\n * @param {object} renderContext The context to create against.\r\n * @returns {number} An `ALResult` value.\r\n */\r\n Create(desc, options, renderContext)\r\n {\r\n this._Reset();\r\n\r\n const {\r\n gpuUsage = Tr2GpuUsage.NONE,\r\n cpuUsage = Tr2CpuUsage.NONE,\r\n msaa = new Tr2MsaaDesc(),\r\n initialData = null\r\n } = options;\r\n\r\n // A texture is not a buffer. Asking for one with vertex or index usage is\r\n // a mixed-up call, not a capability question.\r\n if (HasBufferFlags(gpuUsage)) return ALResult.E_INVALIDARG;\r\n\r\n if (!renderContext.IsValid()) return ALResult.E_FAIL;\r\n\r\n if (msaa.samples > 1)\r\n {\r\n // Multisampled resources cannot be written by a compute shader, cannot\r\n // be reached by the CPU, and only exist as 2D.\r\n if (HasFlag(gpuUsage, Tr2GpuUsage.UNORDERED_ACCESS)) return ALResult.E_INVALIDARG;\r\n\r\n if (cpuUsage !== Tr2CpuUsage.NONE) return ALResult.E_INVALIDARG;\r\n\r\n if (desc.GetType() !== TextureType.TEX_TYPE_2D) return ALResult.E_INVALIDARG;\r\n }\r\n\r\n if (desc.GetType() !== TextureType.TEX_TYPE_2D)\r\n {\r\n // A cube is exactly six faces; nothing else that is not 2D is an array.\r\n if (desc.GetType() === TextureType.TEX_TYPE_CUBE)\r\n {\r\n if (desc.GetArraySize() !== 6) return ALResult.E_INVALIDARG;\r\n }\r\n else if (desc.GetArraySize() > 1)\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n }\r\n\r\n if (desc.GetType() !== TextureType.TEX_TYPE_2D && HasFlag(gpuUsage, Tr2GpuUsage.DEPTH_STENCIL))\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n\r\n if (msaa.samples > 1 && desc.GetTrueMipCount() > 1) return ALResult.E_INVALIDARG;\r\n\r\n if (HasFlag(gpuUsage, Tr2GpuUsage.RENDER_TARGET) && HasFlag(cpuUsage, Tr2CpuUsage.WRITE))\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n\r\n if (HasFlag(gpuUsage, Tr2GpuUsage.DEPTH_STENCIL) && cpuUsage !== Tr2CpuUsage.NONE)\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n\r\n if (HasFlag(gpuUsage, Tr2GpuUsage.DEPTH_STENCIL) && desc.GetTrueMipCount() > 1)\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n\r\n if (desc.GetType() === TextureType.TEX_TYPE_3D && cpuUsage !== Tr2CpuUsage.NONE)\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n\r\n // THE LAST ONE IS THE USEFUL ONE. A texture nothing can ever write - not\r\n // the GPU, not the CPU - and that arrives with no pixels is a texture that\r\n // will sample black forever. Carbon refuses it at creation rather than\r\n // letting it draw nothing.\r\n if (!IsWritable(gpuUsage) && !HasFlag(cpuUsage, Tr2CpuUsage.WRITE) && !initialData)\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n\r\n this._desc = desc;\r\n this._gpuUsage = gpuUsage;\r\n this._cpuUsage = cpuUsage;\r\n this._msaa = msaa;\r\n\r\n return ALResult.S_OK;\r\n }\r\n\r\n /**\r\n * Adopts a texture shared by another device.\r\n *\r\n * Carbon's stub refuses: sharing needs a real device on both sides.\r\n *\r\n * @returns {number} An `ALResult` value.\r\n */\r\n OpenShared()\r\n {\r\n return ALResult.E_FAIL;\r\n }\r\n\r\n /** Carbon's impl `Destroy`: clears the description without unregistering. */\r\n _Reset()\r\n {\r\n this._desc = new Tr2BitmapDimensions();\r\n this._msaa = new Tr2MsaaDesc();\r\n this._gpuUsage = Tr2GpuUsage.NONE;\r\n this._cpuUsage = Tr2CpuUsage.NONE;\r\n this._data = null;\r\n }\r\n\r\n /** Releases the texture and leaves the device-resource registry. */\r\n Destroy()\r\n {\r\n this._Reset();\r\n super.Destroy();\r\n }\r\n\r\n /**\r\n * Whether the texture holds anything.\r\n *\r\n * Carbon's test is the width, because a created texture always has one.\r\n *\r\n * @returns {boolean} True when created.\r\n */\r\n IsValid()\r\n {\r\n return this._desc.GetWidth() !== 0;\r\n }\r\n\r\n /**\r\n * Which memory class this texture occupies.\r\n *\r\n * @returns {number} A `Tr2ALMemoryType` value.\r\n */\r\n GetMemoryClass()\r\n {\r\n return Tr2ALMemoryType.AL_MEMORY_MANAGED;\r\n }\r\n\r\n /**\r\n * The texture description.\r\n *\r\n * @returns {Tr2BitmapDimensions} The description.\r\n */\r\n GetDesc()\r\n {\r\n return this._desc;\r\n }\r\n\r\n /**\r\n * The multisample description.\r\n *\r\n * @returns {Tr2MsaaDesc} The description.\r\n */\r\n GetMsaaDesc()\r\n {\r\n return this._msaa;\r\n }\r\n\r\n /**\r\n * The GPU usage this texture was created with.\r\n *\r\n * @returns {number} A `Tr2GpuUsage` bit set.\r\n */\r\n GetGpuUsage()\r\n {\r\n return this._gpuUsage;\r\n }\r\n\r\n /**\r\n * The CPU usage this texture was created with.\r\n *\r\n * @returns {number} A `Tr2CpuUsage` bit set.\r\n */\r\n GetCpuUsage()\r\n {\r\n return this._cpuUsage;\r\n }\r\n\r\n /**\r\n * Width of mip zero.\r\n *\r\n * @returns {number} Width in pixels.\r\n */\r\n GetWidth()\r\n {\r\n return this._desc.GetWidth();\r\n }\r\n\r\n /**\r\n * Height of mip zero.\r\n *\r\n * @returns {number} Height in pixels.\r\n */\r\n GetHeight()\r\n {\r\n return this._desc.GetHeight();\r\n }\r\n\r\n /**\r\n * Volume depth.\r\n *\r\n * @returns {number} Depth in slices.\r\n */\r\n GetDepth()\r\n {\r\n return this._desc.GetDepth();\r\n }\r\n\r\n /**\r\n * The declared mip count.\r\n *\r\n * @returns {number} Mip levels as declared.\r\n */\r\n GetMipCount()\r\n {\r\n return this._desc.GetMipCount();\r\n }\r\n\r\n /**\r\n * The mip count in effect.\r\n *\r\n * @returns {number} Mip levels.\r\n */\r\n GetTrueMipCount()\r\n {\r\n return this._desc.GetTrueMipCount();\r\n }\r\n\r\n /**\r\n * The pixel format.\r\n *\r\n * @returns {number} A `PixelFormat` value.\r\n */\r\n GetFormat()\r\n {\r\n return this._desc.GetFormat();\r\n }\r\n\r\n /**\r\n * The texture type.\r\n *\r\n * @returns {number} A `TextureType` value.\r\n */\r\n GetType()\r\n {\r\n return this._desc.GetType();\r\n }\r\n\r\n /**\r\n * Slices in the array.\r\n *\r\n * @returns {number} Array size.\r\n */\r\n GetArraySize()\r\n {\r\n return this._desc.GetArraySize();\r\n }\r\n\r\n /**\r\n * Bytes in one mip.\r\n *\r\n * @param {number} mip Mip level.\r\n * @returns {number} Size in bytes.\r\n */\r\n GetMipSize(mip)\r\n {\r\n return this._desc.GetMipSize(mip);\r\n }\r\n\r\n /**\r\n * Allocates and returns the storage for one subresource, for reading.\r\n *\r\n * The CPU-read check comes FIRST, before validity, because a texture that\r\n * was never created for reading is a caller mistake rather than a state\r\n * problem - which is why it answers `E_INVALIDCALL` and not `E_FAIL`.\r\n *\r\n * @param {Tr2TextureSubresource} region The subresource to map.\r\n * @param {boolean} synchronize Whether to wait for outstanding GPU work.\r\n * @param {object} renderContext The context to map against.\r\n * @returns {{result: number, data: Uint8Array|null, pitch: number}} The mapping.\r\n */\r\n MapForReading(region, synchronize, renderContext)\r\n {\r\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.READ)) return { result: ALResult.E_INVALIDCALL, data: null, pitch: 0 };\r\n\r\n if (!this.IsValid() || !renderContext.IsValid()) return { result: ALResult.E_FAIL, data: null, pitch: 0 };\r\n\r\n if (!region.IsValidForBitmap(this._desc)) return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\r\n\r\n if (!region.IsSingleSubresource()) return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\r\n\r\n return this._Allocate(region);\r\n }\r\n\r\n /** Releases a read mapping, keeping the buffer only for an \"often\" usage. */\r\n UnmapForReading()\r\n {\r\n this._ReleaseUnlessKept();\r\n }\r\n\r\n /**\r\n * Allocates and returns the storage for one subresource, for writing.\r\n *\r\n * @param {Tr2TextureSubresource} region The subresource to map.\r\n * @param {object} renderContext The context to map against.\r\n * @returns {{result: number, data: Uint8Array|null, pitch: number}} The mapping.\r\n */\r\n MapForWriting(region, renderContext)\r\n {\r\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE)) return { result: ALResult.E_INVALIDCALL, data: null, pitch: 0 };\r\n\r\n if (!this.IsValid() || !renderContext.IsValid()) return { result: ALResult.E_FAIL, data: null, pitch: 0 };\r\n\r\n if (!region.IsValidForBitmap(this._desc)) return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\r\n\r\n if (!region.IsSingleSubresource()) return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\r\n\r\n // A partial write into a block format would land mid-block, so Carbon\r\n // refuses a box on a compressed texture rather than rounding it.\r\n if (region.HasBox() && IsCompressedFormat(this._desc.GetFormat()))\r\n {\r\n return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\r\n }\r\n\r\n return this._Allocate(region);\r\n }\r\n\r\n /** Releases a write mapping, keeping the buffer only for an \"often\" usage. */\r\n UnmapForWriting()\r\n {\r\n this._ReleaseUnlessKept();\r\n }\r\n\r\n /** Sizes the CPU buffer to one mip of the region and hands it back. */\r\n _Allocate(region)\r\n {\r\n const pitch = this._desc.GetMipPitch(region.m_startMipLevel);\r\n const size = pitch * this._desc.GetMipHeight(region.m_startMipLevel);\r\n\r\n if (this._data === null || this._data.length !== size) this._data = new Uint8Array(size);\r\n\r\n // Carbon fails an allocation that came back empty; here that means a mip\r\n // whose pitch or height is zero, which is a region past the chain.\r\n if (this._data.length === 0) return { result: ALResult.E_FAIL, data: null, pitch: 0 };\r\n\r\n return { result: ALResult.S_OK, data: this._data, pitch };\r\n }\r\n\r\n /** Carbon keeps the buffer only when the usage says mapping is frequent. */\r\n _ReleaseUnlessKept()\r\n {\r\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.READ_OFTEN) && !HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE_OFTEN))\r\n {\r\n this._data = null;\r\n }\r\n }\r\n\r\n /**\r\n * Writes pixels into one subresource.\r\n *\r\n * A texture mapped often is written through a map, not through this, so\r\n * Carbon refuses `WRITE_OFTEN` here outright.\r\n *\r\n * @param {Tr2TextureSubresource} region The subresource to write.\r\n * @param {ArrayBufferView} source The pixels.\r\n * @param {number} pitch Bytes per row in the source.\r\n * @param {number} slicePitch Bytes per slice in the source.\r\n * @param {object} renderContext The context to write against.\r\n * @returns {number} An `ALResult` value.\r\n */\r\n UpdateSubresource(region, source, pitch, slicePitch, renderContext)\r\n {\r\n if (HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE_OFTEN)) return ALResult.E_INVALIDCALL;\r\n\r\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE) && !IsWritable(this._gpuUsage)) return ALResult.E_INVALIDCALL;\r\n\r\n if (!this.IsValid() || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\r\n\r\n if (!region.IsValidForBitmap(this._desc)) return ALResult.E_INVALIDARG;\r\n\r\n if (!region.IsSingleSubresource()) return ALResult.E_INVALIDARG;\r\n\r\n return ALResult.S_OK;\r\n }\r\n\r\n /**\r\n * Copies a region from another texture.\r\n *\r\n * A whole-to-whole copy short-circuits; anything else must survive `Crop`,\r\n * which is where a mismatched face count or an empty overlap is caught.\r\n *\r\n * @param {Tr2TextureSubresource} destSubresource The region to write.\r\n * @param {Tr2TextureALStub} source The texture to read.\r\n * @param {Tr2TextureSubresource} sourceSubresource The region to read.\r\n * @param {object} renderContext The context to copy against.\r\n * @returns {number} An `ALResult` value.\r\n */\r\n CopySubresourceRegion(destSubresource, source, sourceSubresource, renderContext)\r\n {\r\n if (!this.IsValid() || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\r\n\r\n if (!source.IsValid()) return ALResult.E_INVALIDARG;\r\n\r\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE) && !IsWritable(this._gpuUsage)) return ALResult.E_INVALIDCALL;\r\n\r\n if (destSubresource.IsSubresourceFull(this._desc) && sourceSubresource.IsSubresourceFull(source.GetDesc()))\r\n {\r\n return ALResult.S_OK;\r\n }\r\n\r\n // Crop mutates, so both regions are copied first - Carbon takes them by\r\n // value here and a caller's region must survive the call unchanged.\r\n const src = CopyRegion(sourceSubresource);\r\n const dst = CopyRegion(destSubresource);\r\n\r\n if (!Crop(src, source.GetDesc(), dst, this._desc)) return ALResult.E_FAIL;\r\n\r\n return ALResult.S_OK;\r\n }\r\n\r\n /**\r\n * Regenerates the mip chain.\r\n *\r\n * Only a texture that is both a render target and a shader resource can be\r\n * generated into, because that is how the hardware does it.\r\n *\r\n * @returns {number} An `ALResult` value.\r\n */\r\n GenerateMipMaps()\r\n {\r\n if (!HasFlag(this._gpuUsage, Tr2GpuUsage.RENDER_TARGET) || !HasFlag(this._gpuUsage, Tr2GpuUsage.SHADER_RESOURCE))\r\n {\r\n return ALResult.E_INVALIDCALL;\r\n }\r\n\r\n return ALResult.S_OK;\r\n }\r\n\r\n /**\r\n * Resolves a multisampled texture into a single-sampled one.\r\n *\r\n * With one sample there is nothing to resolve, so Carbon falls back to a\r\n * plain copy - and inherits that copy's validation with it.\r\n *\r\n * @param {Tr2TextureALStub} destination The texture to resolve into.\r\n * @param {object} renderContext The context to resolve against.\r\n * @returns {number} An `ALResult` value.\r\n */\r\n Resolve(destination, renderContext)\r\n {\r\n if (this._msaa.samples <= 1)\r\n {\r\n return destination.CopySubresourceRegion(\r\n new Tr2TextureSubresource(),\r\n this,\r\n new Tr2TextureSubresource(),\r\n renderContext\r\n );\r\n }\r\n\r\n if (!this.IsValid() || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\r\n\r\n if (!destination.IsValid()) return ALResult.E_INVALIDARG;\r\n\r\n if (!HasFlag(destination.GetCpuUsage(), Tr2CpuUsage.WRITE) && !IsWritable(destination.GetGpuUsage()))\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n\r\n if (this._desc.GetWidth() !== destination.GetWidth() || this._desc.GetHeight() !== destination.GetHeight())\r\n {\r\n return ALResult.E_INVALIDARG;\r\n }\r\n\r\n if (this._desc.GetFormat() !== destination.GetFormat()) return ALResult.E_INVALIDARG;\r\n\r\n if (destination.GetMsaaDesc().samples > 1) return ALResult.E_INVALIDARG;\r\n\r\n return ALResult.S_OK;\r\n }\r\n\r\n /**\r\n * The handle another device could open this texture by.\r\n *\r\n * @returns {number} Always zero; the stub shares nothing.\r\n */\r\n GetSharedHandle()\r\n {\r\n return 0;\r\n }\r\n\r\n /**\r\n * Where the shader-resource view sits in the descriptor heap.\r\n *\r\n * @returns {number} Carbon's \"no index\".\r\n */\r\n GetSrvIndexInHeap()\r\n {\r\n return NO_HEAP_INDEX;\r\n }\r\n\r\n /**\r\n * Where the unordered-access view sits in the descriptor heap.\r\n *\r\n * @returns {number} Carbon's \"no index\".\r\n */\r\n GetUavIndexInHeap()\r\n {\r\n return NO_HEAP_INDEX;\r\n }\r\n\r\n /**\r\n * Names the texture for a debugger.\r\n *\r\n * @param {string} _name The name Carbon would attach; the stub discards it.\r\n * @returns {number} An `ALResult` value; the stub keeps no name.\r\n */\r\n SetName(_name)\r\n {\r\n return ALResult.S_OK;\r\n }\r\n\r\n /**\r\n * The debug name.\r\n *\r\n * @returns {null} Always null, as Carbon's stub returns.\r\n */\r\n GetName()\r\n {\r\n return null;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Copies a subresource region, so a call that crops does not alter its caller.\r\n *\r\n * @param {Tr2TextureSubresource} region The region to copy.\r\n * @returns {Tr2TextureSubresource} An independent copy.\r\n */\r\nexport function CopyRegion(region)\r\n{\r\n const copy = new Tr2TextureSubresource();\r\n\r\n copy.m_startFace = region.m_startFace;\r\n copy.m_endFace = region.m_endFace;\r\n copy.m_startMipLevel = region.m_startMipLevel;\r\n copy.m_endMipLevel = region.m_endMipLevel;\r\n copy.m_box.left = region.m_box.left;\r\n copy.m_box.top = region.m_box.top;\r\n copy.m_box.front = region.m_box.front;\r\n copy.m_box.right = region.m_box.right;\r\n copy.m_box.bottom = region.m_box.bottom;\r\n copy.m_box.back = region.m_box.back;\r\n\r\n return copy;\r\n}\r\n\r\n// DECLARED AS A CALL, NOT A DECORATOR, for the reason recorded in\r\n// Tr2BitmapDimensions.js: the layer is imported straight from source by its\r\n// tests and raw Node cannot parse decorator syntax.\r\n//\r\n// The donor is NAMED rather than left to be derived from this class's name.\r\n// Carbon calls every backend's class the same thing and carries the backend in\r\n// the FILE name, because only one backend compiles at a time; we ship them\r\n// together, so the backend moves onto the class name. That divergence is the\r\n// author's to declare, never a checker's to guess.\r\nCjsSchema.define(Tr2TextureALStub, { className: \"Tr2TextureALStub\", carbon: \"Tr2TextureAL\" });\r\n"],"names":["NO_HEAP_INDEX","Tr2TextureALStub","Tr2DeviceResourceAL","_desc","Tr2BitmapDimensions","_msaa","Tr2MsaaDesc","_gpuUsage","Tr2GpuUsage","NONE","_cpuUsage","Tr2CpuUsage","_data","Create","desc","options","renderContext","_Reset","gpuUsage","cpuUsage","msaa","initialData","HasBufferFlags","ALResult","E_INVALIDARG","IsValid","E_FAIL","samples","HasFlag","UNORDERED_ACCESS","GetType","TextureType","TEX_TYPE_2D","TEX_TYPE_CUBE","GetArraySize","DEPTH_STENCIL","GetTrueMipCount","RENDER_TARGET","WRITE","TEX_TYPE_3D","IsWritable","S_OK","OpenShared","Destroy","GetWidth","GetMemoryClass","Tr2ALMemoryType","AL_MEMORY_MANAGED","GetDesc","GetMsaaDesc","GetGpuUsage","GetCpuUsage","GetHeight","GetDepth","GetMipCount","GetFormat","GetMipSize","mip","MapForReading","region","synchronize","READ","result","E_INVALIDCALL","data","pitch","IsValidForBitmap","IsSingleSubresource","_Allocate","UnmapForReading","_ReleaseUnlessKept","MapForWriting","HasBox","IsCompressedFormat","UnmapForWriting","GetMipPitch","m_startMipLevel","size","GetMipHeight","length","Uint8Array","READ_OFTEN","WRITE_OFTEN","UpdateSubresource","source","slicePitch","CopySubresourceRegion","destSubresource","sourceSubresource","IsSubresourceFull","src","CopyRegion","dst","Crop","GenerateMipMaps","SHADER_RESOURCE","Resolve","destination","Tr2TextureSubresource","GetSharedHandle","GetSrvIndexInHeap","GetUavIndexInHeap","SetName","_name","GetName","copy","m_startFace","m_endFace","m_endMipLevel","m_box","left","top","front","right","bottom","back","CjsSchema","define","className","carbon"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2TextureALStub.js","sources":["../../../../src/trinityal/stub/Tr2TextureALStub.js"],"sourcesContent":["// Source: trinity/trinityal/stub/Tr2TextureALStub.cpp\n// Source: trinity/trinityal/stub/Tr2TextureALStub.h\n// Source: trinity/trinityal/include/Tr2TextureAL.h\n//\n// The GPU-free texture, ported from the one Carbon already ships.\n//\n// WHY THIS IS WORTH TRANSCRIBING RATHER THAN SUMMARISING. Carbon's stub texture\n// refuses thirteen distinct combinations of description, GPU usage and CPU\n// usage before it will call itself created - multisampled with unordered\n// access, a cube with anything but six faces, a depth stencil with mips, a\n// volume texture the CPU can touch, and so on. Each of those is a rule a real\n// backend enforces too, and each one is a bug we would otherwise find on a GPU\n// months later, in a form that looks like a driver problem rather than like a\n// texture we should never have asked for.\n//\n// So the validation IS the port. The allocation behind it is real as well: a\n// map returns a genuine buffer of the right pitch, so a caller reading pixels\n// back headless reads the shape it would read on a device.\n//\n// THREE LANGUAGE DIFFERENCES.\n//\n// - Carbon has six `Create` overloads over one implementation; this takes the\n// implementation's arguments, with the optional ones in a description object.\n// - Carbon's map functions return the result and hand back the pointer and the\n// pitch through reference arguments. JavaScript has no reference arguments,\n// so they return `{ result, data, pitch }`.\n// - Carbon's impl-level `Destroy` only resets the fields, because the registry\n// entry goes when the C++ destructor runs. Ours must also unregister, so the\n// reset lives in a private helper that `Create` calls and `Destroy` calls the\n// base as well. See the head comment on `Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js`.\n//\n// TWO FAITHFUL EMPTINESSES, worth knowing before relying on them: Carbon's stub\n// implements `Describe` as a no-op and returns null from `GetName`, so a stub\n// texture contributes nothing to a device inventory. That is transcribed, not\n// overlooked - a backend that reports real names is a real backend.\n\nimport { CjsSchema } from \"#schema\";\nimport { Tr2ALMemoryType, Tr2DeviceResourceAL } from \"../Tr2DeviceResourceAL/index.js\";\nimport { ALResult } from \"../ALResult.js\";\nimport { BitmapDimensions as Tr2BitmapDimensions } from \"#imageio\";\nimport { Crop, Tr2MsaaDesc, Tr2TextureSubresource } from \"../Tr2HalHelperStructures/index.js\";\nimport {\n IsCompressedFormat,\n HasBufferFlags,\n HasFlag,\n IsWritable,\n TextureType,\n Tr2CpuUsage,\n Tr2GpuUsage\n} from \"../../global/consts/renderContext/index.js\";\n\n\n/** Carbon's \"no descriptor heap index\", returned by both heap accessors. */\nconst NO_HEAP_INDEX = 0xffffffff;\n\n\n/**\n * A texture that validates like a real one and holds its pixels on the CPU.\n */\nexport class Tr2TextureALStub extends Tr2DeviceResourceAL\n{\n /** m_desc */\n _desc = new Tr2BitmapDimensions();\n\n /** m_msaa */\n _msaa = new Tr2MsaaDesc();\n\n /** m_gpuUsage */\n _gpuUsage = Tr2GpuUsage.NONE;\n\n /** m_cpuUsage */\n _cpuUsage = Tr2CpuUsage.NONE;\n\n /** m_data - allocated on first map, released on unmap unless kept \"often\". */\n _data = null;\n\n /**\n * Creates the texture.\n *\n * Every refusal below is Carbon's, in Carbon's order\n * (`Tr2TextureALStub.cpp:18-95`).\n *\n * @param {Tr2BitmapDimensions} desc The texture description.\n * @param {object} options Creation options.\n * @param {number} [options.gpuUsage] A `Tr2GpuUsage` bit set.\n * @param {number} [options.cpuUsage] A `Tr2CpuUsage` bit set.\n * @param {Tr2MsaaDesc} [options.msaa] Multisample description.\n * @param {object[]} [options.initialData] Initial subresource data, if any.\n * @param {object} renderContext The context to create against.\n * @returns {number} An `ALResult` value.\n */\n Create(desc, options, renderContext)\n {\n this._Reset();\n\n const {\n gpuUsage = Tr2GpuUsage.NONE,\n cpuUsage = Tr2CpuUsage.NONE,\n msaa = new Tr2MsaaDesc(),\n initialData = null\n } = options;\n\n // A texture is not a buffer. Asking for one with vertex or index usage is\n // a mixed-up call, not a capability question.\n if (HasBufferFlags(gpuUsage)) return ALResult.E_INVALIDARG;\n\n if (!renderContext.IsValid()) return ALResult.E_FAIL;\n\n if (msaa.samples > 1)\n {\n // Multisampled resources cannot be written by a compute shader, cannot\n // be reached by the CPU, and only exist as 2D.\n if (HasFlag(gpuUsage, Tr2GpuUsage.UNORDERED_ACCESS)) return ALResult.E_INVALIDARG;\n\n if (cpuUsage !== Tr2CpuUsage.NONE) return ALResult.E_INVALIDARG;\n\n if (desc.GetType() !== TextureType.TEX_TYPE_2D) return ALResult.E_INVALIDARG;\n }\n\n if (desc.GetType() !== TextureType.TEX_TYPE_2D)\n {\n // A cube is exactly six faces; nothing else that is not 2D is an array.\n if (desc.GetType() === TextureType.TEX_TYPE_CUBE)\n {\n if (desc.GetArraySize() !== 6) return ALResult.E_INVALIDARG;\n }\n else if (desc.GetArraySize() > 1)\n {\n return ALResult.E_INVALIDARG;\n }\n }\n\n if (desc.GetType() !== TextureType.TEX_TYPE_2D && HasFlag(gpuUsage, Tr2GpuUsage.DEPTH_STENCIL))\n {\n return ALResult.E_INVALIDARG;\n }\n\n if (msaa.samples > 1 && desc.GetTrueMipCount() > 1) return ALResult.E_INVALIDARG;\n\n if (HasFlag(gpuUsage, Tr2GpuUsage.RENDER_TARGET) && HasFlag(cpuUsage, Tr2CpuUsage.WRITE))\n {\n return ALResult.E_INVALIDARG;\n }\n\n if (HasFlag(gpuUsage, Tr2GpuUsage.DEPTH_STENCIL) && cpuUsage !== Tr2CpuUsage.NONE)\n {\n return ALResult.E_INVALIDARG;\n }\n\n if (HasFlag(gpuUsage, Tr2GpuUsage.DEPTH_STENCIL) && desc.GetTrueMipCount() > 1)\n {\n return ALResult.E_INVALIDARG;\n }\n\n if (desc.GetType() === TextureType.TEX_TYPE_3D && cpuUsage !== Tr2CpuUsage.NONE)\n {\n return ALResult.E_INVALIDARG;\n }\n\n // THE LAST ONE IS THE USEFUL ONE. A texture nothing can ever write - not\n // the GPU, not the CPU - and that arrives with no pixels is a texture that\n // will sample black forever. Carbon refuses it at creation rather than\n // letting it draw nothing.\n if (!IsWritable(gpuUsage) && !HasFlag(cpuUsage, Tr2CpuUsage.WRITE) && !initialData)\n {\n return ALResult.E_INVALIDARG;\n }\n\n this._desc = desc;\n this._gpuUsage = gpuUsage;\n this._cpuUsage = cpuUsage;\n this._msaa = msaa;\n\n return ALResult.S_OK;\n }\n\n /**\n * Adopts a texture shared by another device.\n *\n * Carbon's stub refuses: sharing needs a real device on both sides.\n *\n * @returns {number} An `ALResult` value.\n */\n OpenShared()\n {\n return ALResult.E_FAIL;\n }\n\n /** Carbon's impl `Destroy`: clears the description without unregistering. */\n _Reset()\n {\n this._desc = new Tr2BitmapDimensions();\n this._msaa = new Tr2MsaaDesc();\n this._gpuUsage = Tr2GpuUsage.NONE;\n this._cpuUsage = Tr2CpuUsage.NONE;\n this._data = null;\n }\n\n /** Releases the texture and leaves the device-resource registry. */\n Destroy()\n {\n this._Reset();\n super.Destroy();\n }\n\n /**\n * Whether the texture holds anything.\n *\n * Carbon's test is the width, because a created texture always has one.\n *\n * @returns {boolean} True when created.\n */\n IsValid()\n {\n return this._desc.GetWidth() !== 0;\n }\n\n /**\n * Which memory class this texture occupies.\n *\n * @returns {number} A `Tr2ALMemoryType` value.\n */\n GetMemoryClass()\n {\n return Tr2ALMemoryType.AL_MEMORY_MANAGED;\n }\n\n /**\n * The texture description.\n *\n * @returns {Tr2BitmapDimensions} The description.\n */\n GetDesc()\n {\n return this._desc;\n }\n\n /**\n * The multisample description.\n *\n * @returns {Tr2MsaaDesc} The description.\n */\n GetMsaaDesc()\n {\n return this._msaa;\n }\n\n /**\n * The GPU usage this texture was created with.\n *\n * @returns {number} A `Tr2GpuUsage` bit set.\n */\n GetGpuUsage()\n {\n return this._gpuUsage;\n }\n\n /**\n * The CPU usage this texture was created with.\n *\n * @returns {number} A `Tr2CpuUsage` bit set.\n */\n GetCpuUsage()\n {\n return this._cpuUsage;\n }\n\n /**\n * Width of mip zero.\n *\n * @returns {number} Width in pixels.\n */\n GetWidth()\n {\n return this._desc.GetWidth();\n }\n\n /**\n * Height of mip zero.\n *\n * @returns {number} Height in pixels.\n */\n GetHeight()\n {\n return this._desc.GetHeight();\n }\n\n /**\n * Volume depth.\n *\n * @returns {number} Depth in slices.\n */\n GetDepth()\n {\n return this._desc.GetDepth();\n }\n\n /**\n * The declared mip count.\n *\n * @returns {number} Mip levels as declared.\n */\n GetMipCount()\n {\n return this._desc.GetMipCount();\n }\n\n /**\n * The mip count in effect.\n *\n * @returns {number} Mip levels.\n */\n GetTrueMipCount()\n {\n return this._desc.GetTrueMipCount();\n }\n\n /**\n * The pixel format.\n *\n * @returns {number} A `PixelFormat` value.\n */\n GetFormat()\n {\n return this._desc.GetFormat();\n }\n\n /**\n * The texture type.\n *\n * @returns {number} A `TextureType` value.\n */\n GetType()\n {\n return this._desc.GetType();\n }\n\n /**\n * Slices in the array.\n *\n * @returns {number} Array size.\n */\n GetArraySize()\n {\n return this._desc.GetArraySize();\n }\n\n /**\n * Bytes in one mip.\n *\n * @param {number} mip Mip level.\n * @returns {number} Size in bytes.\n */\n GetMipSize(mip)\n {\n return this._desc.GetMipSize(mip);\n }\n\n /**\n * Allocates and returns the storage for one subresource, for reading.\n *\n * The CPU-read check comes FIRST, before validity, because a texture that\n * was never created for reading is a caller mistake rather than a state\n * problem - which is why it answers `E_INVALIDCALL` and not `E_FAIL`.\n *\n * @param {Tr2TextureSubresource} region The subresource to map.\n * @param {boolean} synchronize Whether to wait for outstanding GPU work.\n * @param {object} renderContext The context to map against.\n * @returns {{result: number, data: Uint8Array|null, pitch: number}} The mapping.\n */\n MapForReading(region, synchronize, renderContext)\n {\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.READ)) return { result: ALResult.E_INVALIDCALL, data: null, pitch: 0 };\n\n if (!this.IsValid() || !renderContext.IsValid()) return { result: ALResult.E_FAIL, data: null, pitch: 0 };\n\n if (!region.IsValidForBitmap(this._desc)) return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\n\n if (!region.IsSingleSubresource()) return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\n\n return this._Allocate(region);\n }\n\n /** Releases a read mapping, keeping the buffer only for an \"often\" usage. */\n UnmapForReading()\n {\n this._ReleaseUnlessKept();\n }\n\n /**\n * Allocates and returns the storage for one subresource, for writing.\n *\n * @param {Tr2TextureSubresource} region The subresource to map.\n * @param {object} renderContext The context to map against.\n * @returns {{result: number, data: Uint8Array|null, pitch: number}} The mapping.\n */\n MapForWriting(region, renderContext)\n {\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE)) return { result: ALResult.E_INVALIDCALL, data: null, pitch: 0 };\n\n if (!this.IsValid() || !renderContext.IsValid()) return { result: ALResult.E_FAIL, data: null, pitch: 0 };\n\n if (!region.IsValidForBitmap(this._desc)) return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\n\n if (!region.IsSingleSubresource()) return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\n\n // A partial write into a block format would land mid-block, so Carbon\n // refuses a box on a compressed texture rather than rounding it.\n if (region.HasBox() && IsCompressedFormat(this._desc.GetFormat()))\n {\n return { result: ALResult.E_INVALIDARG, data: null, pitch: 0 };\n }\n\n return this._Allocate(region);\n }\n\n /** Releases a write mapping, keeping the buffer only for an \"often\" usage. */\n UnmapForWriting()\n {\n this._ReleaseUnlessKept();\n }\n\n /** Sizes the CPU buffer to one mip of the region and hands it back. */\n _Allocate(region)\n {\n const pitch = this._desc.GetMipPitch(region.m_startMipLevel);\n const size = pitch * this._desc.GetMipHeight(region.m_startMipLevel);\n\n if (this._data === null || this._data.length !== size) this._data = new Uint8Array(size);\n\n // Carbon fails an allocation that came back empty; here that means a mip\n // whose pitch or height is zero, which is a region past the chain.\n if (this._data.length === 0) return { result: ALResult.E_FAIL, data: null, pitch: 0 };\n\n return { result: ALResult.S_OK, data: this._data, pitch };\n }\n\n /** Carbon keeps the buffer only when the usage says mapping is frequent. */\n _ReleaseUnlessKept()\n {\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.READ_OFTEN) && !HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE_OFTEN))\n {\n this._data = null;\n }\n }\n\n /**\n * Writes pixels into one subresource.\n *\n * A texture mapped often is written through a map, not through this, so\n * Carbon refuses `WRITE_OFTEN` here outright.\n *\n * @param {Tr2TextureSubresource} region The subresource to write.\n * @param {ArrayBufferView} source The pixels.\n * @param {number} pitch Bytes per row in the source.\n * @param {number} slicePitch Bytes per slice in the source.\n * @param {object} renderContext The context to write against.\n * @returns {number} An `ALResult` value.\n */\n UpdateSubresource(region, source, pitch, slicePitch, renderContext)\n {\n if (HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE_OFTEN)) return ALResult.E_INVALIDCALL;\n\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE) && !IsWritable(this._gpuUsage)) return ALResult.E_INVALIDCALL;\n\n if (!this.IsValid() || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\n\n if (!region.IsValidForBitmap(this._desc)) return ALResult.E_INVALIDARG;\n\n if (!region.IsSingleSubresource()) return ALResult.E_INVALIDARG;\n\n return ALResult.S_OK;\n }\n\n /**\n * Copies a region from another texture.\n *\n * A whole-to-whole copy short-circuits; anything else must survive `Crop`,\n * which is where a mismatched face count or an empty overlap is caught.\n *\n * @param {Tr2TextureSubresource} destSubresource The region to write.\n * @param {Tr2TextureALStub} source The texture to read.\n * @param {Tr2TextureSubresource} sourceSubresource The region to read.\n * @param {object} renderContext The context to copy against.\n * @returns {number} An `ALResult` value.\n */\n CopySubresourceRegion(destSubresource, source, sourceSubresource, renderContext)\n {\n if (!this.IsValid() || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\n\n if (!source.IsValid()) return ALResult.E_INVALIDARG;\n\n if (!HasFlag(this._cpuUsage, Tr2CpuUsage.WRITE) && !IsWritable(this._gpuUsage)) return ALResult.E_INVALIDCALL;\n\n if (destSubresource.IsSubresourceFull(this._desc) && sourceSubresource.IsSubresourceFull(source.GetDesc()))\n {\n return ALResult.S_OK;\n }\n\n // Crop mutates, so both regions are copied first - Carbon takes them by\n // value here and a caller's region must survive the call unchanged.\n const src = CopyRegion(sourceSubresource);\n const dst = CopyRegion(destSubresource);\n\n if (!Crop(src, source.GetDesc(), dst, this._desc)) return ALResult.E_FAIL;\n\n return ALResult.S_OK;\n }\n\n /**\n * Regenerates the mip chain.\n *\n * Only a texture that is both a render target and a shader resource can be\n * generated into, because that is how the hardware does it.\n *\n * @returns {number} An `ALResult` value.\n */\n GenerateMipMaps()\n {\n if (!HasFlag(this._gpuUsage, Tr2GpuUsage.RENDER_TARGET) || !HasFlag(this._gpuUsage, Tr2GpuUsage.SHADER_RESOURCE))\n {\n return ALResult.E_INVALIDCALL;\n }\n\n return ALResult.S_OK;\n }\n\n /**\n * Resolves a multisampled texture into a single-sampled one.\n *\n * With one sample there is nothing to resolve, so Carbon falls back to a\n * plain copy - and inherits that copy's validation with it.\n *\n * @param {Tr2TextureALStub} destination The texture to resolve into.\n * @param {object} renderContext The context to resolve against.\n * @returns {number} An `ALResult` value.\n */\n Resolve(destination, renderContext)\n {\n if (this._msaa.samples <= 1)\n {\n return destination.CopySubresourceRegion(\n new Tr2TextureSubresource(),\n this,\n new Tr2TextureSubresource(),\n renderContext\n );\n }\n\n if (!this.IsValid() || !renderContext.IsValid()) return ALResult.E_INVALIDCALL;\n\n if (!destination.IsValid()) return ALResult.E_INVALIDARG;\n\n if (!HasFlag(destination.GetCpuUsage(), Tr2CpuUsage.WRITE) && !IsWritable(destination.GetGpuUsage()))\n {\n return ALResult.E_INVALIDARG;\n }\n\n if (this._desc.GetWidth() !== destination.GetWidth() || this._desc.GetHeight() !== destination.GetHeight())\n {\n return ALResult.E_INVALIDARG;\n }\n\n if (this._desc.GetFormat() !== destination.GetFormat()) return ALResult.E_INVALIDARG;\n\n if (destination.GetMsaaDesc().samples > 1) return ALResult.E_INVALIDARG;\n\n return ALResult.S_OK;\n }\n\n /**\n * The handle another device could open this texture by.\n *\n * @returns {number} Always zero; the stub shares nothing.\n */\n GetSharedHandle()\n {\n return 0;\n }\n\n /**\n * Where the shader-resource view sits in the descriptor heap.\n *\n * @returns {number} Carbon's \"no index\".\n */\n GetSrvIndexInHeap()\n {\n return NO_HEAP_INDEX;\n }\n\n /**\n * Where the unordered-access view sits in the descriptor heap.\n *\n * @returns {number} Carbon's \"no index\".\n */\n GetUavIndexInHeap()\n {\n return NO_HEAP_INDEX;\n }\n\n /**\n * Names the texture for a debugger.\n *\n * @param {string} _name The name Carbon would attach; the stub discards it.\n * @returns {number} An `ALResult` value; the stub keeps no name.\n */\n SetName(_name)\n {\n return ALResult.S_OK;\n }\n\n /**\n * The debug name.\n *\n * @returns {null} Always null, as Carbon's stub returns.\n */\n GetName()\n {\n return null;\n }\n}\n\n\n/**\n * Copies a subresource region, so a call that crops does not alter its caller.\n *\n * @param {Tr2TextureSubresource} region The region to copy.\n * @returns {Tr2TextureSubresource} An independent copy.\n */\nexport function CopyRegion(region)\n{\n const copy = new Tr2TextureSubresource();\n\n copy.m_startFace = region.m_startFace;\n copy.m_endFace = region.m_endFace;\n copy.m_startMipLevel = region.m_startMipLevel;\n copy.m_endMipLevel = region.m_endMipLevel;\n copy.m_box.left = region.m_box.left;\n copy.m_box.top = region.m_box.top;\n copy.m_box.front = region.m_box.front;\n copy.m_box.right = region.m_box.right;\n copy.m_box.bottom = region.m_box.bottom;\n copy.m_box.back = region.m_box.back;\n\n return copy;\n}\n\n// DECLARED AS A CALL, NOT A DECORATOR, for the reason recorded in\n// Tr2BitmapDimensions.js: the layer is imported straight from source by its\n// tests and raw Node cannot parse decorator syntax.\n//\n// The donor is NAMED rather than left to be derived from this class's name.\n// Carbon calls every backend's class the same thing and carries the backend in\n// the FILE name, because only one backend compiles at a time; we ship them\n// together, so the backend moves onto the class name. That divergence is the\n// author's to declare, never a checker's to guess.\nCjsSchema.define(Tr2TextureALStub, { className: \"Tr2TextureALStub\", carbon: \"Tr2TextureAL\" });\n"],"names":["NO_HEAP_INDEX","Tr2TextureALStub","Tr2DeviceResourceAL","_desc","Tr2BitmapDimensions","_msaa","Tr2MsaaDesc","_gpuUsage","Tr2GpuUsage","NONE","_cpuUsage","Tr2CpuUsage","_data","Create","desc","options","renderContext","_Reset","gpuUsage","cpuUsage","msaa","initialData","HasBufferFlags","ALResult","E_INVALIDARG","IsValid","E_FAIL","samples","HasFlag","UNORDERED_ACCESS","GetType","TextureType","TEX_TYPE_2D","TEX_TYPE_CUBE","GetArraySize","DEPTH_STENCIL","GetTrueMipCount","RENDER_TARGET","WRITE","TEX_TYPE_3D","IsWritable","S_OK","OpenShared","Destroy","GetWidth","GetMemoryClass","Tr2ALMemoryType","AL_MEMORY_MANAGED","GetDesc","GetMsaaDesc","GetGpuUsage","GetCpuUsage","GetHeight","GetDepth","GetMipCount","GetFormat","GetMipSize","mip","MapForReading","region","synchronize","READ","result","E_INVALIDCALL","data","pitch","IsValidForBitmap","IsSingleSubresource","_Allocate","UnmapForReading","_ReleaseUnlessKept","MapForWriting","HasBox","IsCompressedFormat","UnmapForWriting","GetMipPitch","m_startMipLevel","size","GetMipHeight","length","Uint8Array","READ_OFTEN","WRITE_OFTEN","UpdateSubresource","source","slicePitch","CopySubresourceRegion","destSubresource","sourceSubresource","IsSubresourceFull","src","CopyRegion","dst","Crop","GenerateMipMaps","SHADER_RESOURCE","Resolve","destination","Tr2TextureSubresource","GetSharedHandle","GetSrvIndexInHeap","GetUavIndexInHeap","SetName","_name","GetName","copy","m_startFace","m_endFace","m_endMipLevel","m_box","left","top","front","right","bottom","back","CjsSchema","define","className","carbon"],"mappings":"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"}