@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
@@ -0,0 +1,86 @@
1
+ import { CjsSchema } from '#schema';
2
+
3
+ // Source: imageio/include/Tr2ImageHandler.h (LoadParameters)
4
+ // Source: imageio/Tr2ImageHandler.cpp:156-191
5
+ //
6
+ // What a caller asks of an image read: which file it is (the extension picks
7
+ // the handler), how many top mips to skip, and how many mips at most to keep.
8
+ //
9
+ // ONE FIELD IS OURS: `requestedFormat`. Carbon never needs it - D3D accepts
10
+ // block-compressed data directly - but a browser may refuse a compressed
11
+ // format, even one it reports supporting, and merged texture arrays need every
12
+ // layer in one format. So a caller can ask for a specific `PixelFormat`, and
13
+ // the image format converts after its native read. null asks for the native
14
+ // format, which is Carbon's behaviour. See /docs/projects/hostbitmap-port.md.
15
+
16
+
17
+ /** `ImageIO::LoadParameters` - the parameters of one image read. */
18
+ class LoadParameters {
19
+ /** m_filename - used for picking the handler and for logging. */
20
+ filename = "";
21
+
22
+ /** m_mipLevelSkipCount - top mip levels to skip. */
23
+ mipLevelSkipCount = 0;
24
+
25
+ /** m_mipLevelMaxCount - the most mip levels to keep. */
26
+ mipLevelMaxCount = 0xffffffff;
27
+
28
+ /** Not Carbon: the `PixelFormat` the caller needs, or null for the native format. */
29
+ requestedFormat = null;
30
+
31
+ /**
32
+ * @param {string} filename File name; its extension picks the handler.
33
+ * @param {number} [mipLevelSkipCount=0] Top mip levels to skip.
34
+ * @param {number} [mipLevelMaxCount=0xffffffff] Most mip levels to keep.
35
+ * @param {number|null} [requestedFormat=null] Not Carbon: the `PixelFormat` wanted, or null.
36
+ */
37
+ constructor(filename, mipLevelSkipCount = 0, mipLevelMaxCount = 0xffffffff, requestedFormat = null) {
38
+ this.filename = filename;
39
+ this.mipLevelSkipCount = mipLevelSkipCount;
40
+ this.mipLevelMaxCount = mipLevelMaxCount;
41
+ this.requestedFormat = requestedFormat;
42
+ }
43
+
44
+ /**
45
+ * Which mips to skip and how many to keep (Tr2ImageHandler.cpp:165-191).
46
+ * Only images larger than 8x8 skip; a chain of three or fewer mips cannot be
47
+ * skipped below three; a mip count of 0 (driver-generated mips) skips none.
48
+ *
49
+ * adapted: Carbon writes both through references, reading `mipCount` in;
50
+ * JavaScript takes `mipCount` and returns both.
51
+ *
52
+ * @param {number} width Width of mip 0.
53
+ * @param {number} height Height of mip 0.
54
+ * @param {number} mipCount The source's mip count.
55
+ * @returns {{skipCount: number, mipCount: number}} The range.
56
+ */
57
+ GetMipLevelRange(width, height, mipCount) {
58
+ let skipCount = 0;
59
+ if (width > 8 && height > 8) {
60
+ if (mipCount > this.mipLevelSkipCount) {
61
+ skipCount = this.mipLevelSkipCount;
62
+ } else if (mipCount) {
63
+ // limit total mipmap count to three!
64
+ skipCount = mipCount >= 3 ? mipCount - 3 : 0;
65
+ }
66
+ }
67
+ mipCount -= skipCount;
68
+ if (mipCount > this.mipLevelMaxCount) {
69
+ skipCount += mipCount - this.mipLevelMaxCount;
70
+ mipCount = this.mipLevelMaxCount;
71
+ }
72
+ return {
73
+ skipCount,
74
+ mipCount
75
+ };
76
+ }
77
+ }
78
+
79
+ // A call, not a decorator: see BitmapDimensions.js.
80
+ CjsSchema.define(LoadParameters, {
81
+ className: "LoadParameters",
82
+ carbon: "LoadParameters"
83
+ });
84
+
85
+ export { LoadParameters };
86
+ //# sourceMappingURL=LoadParameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadParameters.js","sources":["../../../../src/global/imageio/LoadParameters.js"],"sourcesContent":["// Source: imageio/include/Tr2ImageHandler.h (LoadParameters)\n// Source: imageio/Tr2ImageHandler.cpp:156-191\n//\n// What a caller asks of an image read: which file it is (the extension picks\n// the handler), how many top mips to skip, and how many mips at most to keep.\n//\n// ONE FIELD IS OURS: `requestedFormat`. Carbon never needs it - D3D accepts\n// block-compressed data directly - but a browser may refuse a compressed\n// format, even one it reports supporting, and merged texture arrays need every\n// layer in one format. So a caller can ask for a specific `PixelFormat`, and\n// the image format converts after its native read. null asks for the native\n// format, which is Carbon's behaviour. See /docs/projects/hostbitmap-port.md.\n\nimport { CjsSchema } from \"#schema\";\n\n/** `ImageIO::LoadParameters` - the parameters of one image read. */\nexport class LoadParameters\n{\n\n /** m_filename - used for picking the handler and for logging. */\n filename = \"\";\n\n /** m_mipLevelSkipCount - top mip levels to skip. */\n mipLevelSkipCount = 0;\n\n /** m_mipLevelMaxCount - the most mip levels to keep. */\n mipLevelMaxCount = 0xffffffff;\n\n /** Not Carbon: the `PixelFormat` the caller needs, or null for the native format. */\n requestedFormat = null;\n\n /**\n * @param {string} filename File name; its extension picks the handler.\n * @param {number} [mipLevelSkipCount=0] Top mip levels to skip.\n * @param {number} [mipLevelMaxCount=0xffffffff] Most mip levels to keep.\n * @param {number|null} [requestedFormat=null] Not Carbon: the `PixelFormat` wanted, or null.\n */\n constructor(filename, mipLevelSkipCount = 0, mipLevelMaxCount = 0xffffffff, requestedFormat = null)\n {\n this.filename = filename;\n this.mipLevelSkipCount = mipLevelSkipCount;\n this.mipLevelMaxCount = mipLevelMaxCount;\n this.requestedFormat = requestedFormat;\n }\n\n /**\n * Which mips to skip and how many to keep (Tr2ImageHandler.cpp:165-191).\n * Only images larger than 8x8 skip; a chain of three or fewer mips cannot be\n * skipped below three; a mip count of 0 (driver-generated mips) skips none.\n *\n * adapted: Carbon writes both through references, reading `mipCount` in;\n * JavaScript takes `mipCount` and returns both.\n *\n * @param {number} width Width of mip 0.\n * @param {number} height Height of mip 0.\n * @param {number} mipCount The source's mip count.\n * @returns {{skipCount: number, mipCount: number}} The range.\n */\n GetMipLevelRange(width, height, mipCount)\n {\n let skipCount = 0;\n\n if (width > 8 && height > 8)\n {\n if (mipCount > this.mipLevelSkipCount)\n {\n skipCount = this.mipLevelSkipCount;\n }\n else if (mipCount)\n {\n // limit total mipmap count to three!\n skipCount = mipCount >= 3 ? mipCount - 3 : 0;\n }\n }\n\n mipCount -= skipCount;\n\n if (mipCount > this.mipLevelMaxCount)\n {\n skipCount += mipCount - this.mipLevelMaxCount;\n mipCount = this.mipLevelMaxCount;\n }\n\n return { skipCount, mipCount };\n }\n\n}\n\n\n// A call, not a decorator: see BitmapDimensions.js.\nCjsSchema.define(LoadParameters, { className: \"LoadParameters\", carbon: \"LoadParameters\" });\n"],"names":["LoadParameters","filename","mipLevelSkipCount","mipLevelMaxCount","requestedFormat","constructor","GetMipLevelRange","width","height","mipCount","skipCount","CjsSchema","define","className","carbon"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAIA;AACO,MAAMA,cAAc,CAC3B;AAEE;AACAC,EAAAA,QAAQ,GAAG,EAAE;;AAEb;AACAC,EAAAA,iBAAiB,GAAG,CAAC;;AAErB;AACAC,EAAAA,gBAAgB,GAAG,UAAU;;AAE7B;AACAC,EAAAA,eAAe,GAAG,IAAI;;AAEtB;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,WAAWA,CAACJ,QAAQ,EAAEC,iBAAiB,GAAG,CAAC,EAAEC,gBAAgB,GAAG,UAAU,EAAEC,eAAe,GAAG,IAAI,EAClG;IACE,IAAI,CAACH,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,iBAAiB,GAAGA,iBAAiB;IAC1C,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,eAAe,GAAGA,eAAe;AACxC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEE,EAAAA,gBAAgBA,CAACC,KAAK,EAAEC,MAAM,EAAEC,QAAQ,EACxC;IACE,IAAIC,SAAS,GAAG,CAAC;AAEjB,IAAA,IAAIH,KAAK,GAAG,CAAC,IAAIC,MAAM,GAAG,CAAC,EAC3B;AACE,MAAA,IAAIC,QAAQ,GAAG,IAAI,CAACP,iBAAiB,EACrC;QACEQ,SAAS,GAAG,IAAI,CAACR,iBAAiB;MACpC,CAAC,MACI,IAAIO,QAAQ,EACjB;AACE;QACAC,SAAS,GAAGD,QAAQ,IAAI,CAAC,GAAGA,QAAQ,GAAG,CAAC,GAAG,CAAC;AAC9C,MAAA;AACF,IAAA;AAEAA,IAAAA,QAAQ,IAAIC,SAAS;AAErB,IAAA,IAAID,QAAQ,GAAG,IAAI,CAACN,gBAAgB,EACpC;AACEO,MAAAA,SAAS,IAAID,QAAQ,GAAG,IAAI,CAACN,gBAAgB;MAC7CM,QAAQ,GAAG,IAAI,CAACN,gBAAgB;AAClC,IAAA;IAEA,OAAO;MAAEO,SAAS;AAAED,MAAAA;KAAU;AAChC,EAAA;AAEF;;AAGA;AACAE,SAAS,CAACC,MAAM,CAACZ,cAAc,EAAE;AAAEa,EAAAA,SAAS,EAAE,gBAAgB;AAAEC,EAAAA,MAAM,EAAE;AAAiB,CAAC,CAAC;;;;"}
@@ -0,0 +1,22 @@
1
+ import { CjsSchema } from '#schema';
2
+ import { Cutout } from './Cutout.js';
3
+
4
+ // Source: imageio/include/Tr2ImageHandler.h (Metadata, MetadataStrings)
5
+
6
+ /** `ImageIO::Metadata` - what an image file carries besides its pixels. */
7
+ class Metadata {
8
+ /** cutout - the PNG cutout rectangle; the whole image by default. */
9
+ cutout = new Cutout();
10
+
11
+ /** metadata - `MetadataStrings`: key/value pairs from the CCP-META trailer. */
12
+ metadata = [];
13
+ }
14
+
15
+ // A call, not a decorator: see BitmapDimensions.js.
16
+ CjsSchema.define(Metadata, {
17
+ className: "Metadata",
18
+ carbon: "Metadata"
19
+ });
20
+
21
+ export { Metadata };
22
+ //# sourceMappingURL=Metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metadata.js","sources":["../../../../src/global/imageio/Metadata.js"],"sourcesContent":["// Source: imageio/include/Tr2ImageHandler.h (Metadata, MetadataStrings)\nimport { CjsSchema } from \"#schema\";\nimport { Cutout } from \"./Cutout.js\";\n\n/** `ImageIO::Metadata` - what an image file carries besides its pixels. */\nexport class Metadata\n{\n /** cutout - the PNG cutout rectangle; the whole image by default. */\n cutout = new Cutout();\n\n /** metadata - `MetadataStrings`: key/value pairs from the CCP-META trailer. */\n metadata = [];\n}\n\n\n// A call, not a decorator: see BitmapDimensions.js.\nCjsSchema.define(Metadata, { className: \"Metadata\", carbon: \"Metadata\" });\n"],"names":["Metadata","cutout","Cutout","metadata","CjsSchema","define","className","carbon"],"mappings":";;;AAAA;;AAIA;AACO,MAAMA,QAAQ,CACrB;AACE;AACAC,EAAAA,MAAM,GAAG,IAAIC,MAAM,EAAE;;AAErB;AACAC,EAAAA,QAAQ,GAAG,EAAE;AACf;;AAGA;AACAC,SAAS,CAACC,MAAM,CAACL,QAAQ,EAAE;AAAEM,EAAAA,SAAS,EAAE,UAAU;AAAEC,EAAAA,MAAM,EAAE;AAAW,CAAC,CAAC;;;;"}
@@ -0,0 +1,8 @@
1
+ export { BitmapDimensions } from './BitmapDimensions.js';
2
+ export { ImageUtility } from './ImageUtility.js';
3
+ export { HostBitmap } from './HostBitmap.js';
4
+ export { ImageIOResult } from './ImageIOResult.js';
5
+ export { LoadParameters } from './LoadParameters.js';
6
+ export { Cutout } from './Cutout.js';
7
+ export { Metadata } from './Metadata.js';
8
+ //# 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":";;;;;;"}
@@ -51,6 +51,8 @@ export { IListNotify } from './blue/IListNotify.js';
51
51
  export { INotify, IsMatch } from './blue/INotify.js';
52
52
  export { CjsBluePaths } from './blue/CjsBluePaths.js';
53
53
  export { IBluePaths } from './blue/IBluePaths.js';
54
+ export { IBlueClasses } from './blue/IBlueClasses.js';
55
+ export { BlueClasses } from './blue/BlueClasses.js';
54
56
  export { blue } from './blue/blue.js';
55
57
  export { CjsBlueEnumRegistry, EnumRegistrationType } from './blue/enums/CjsBlueEnumRegistry.js';
56
58
  import * as index from './consts/index.js';
@@ -105,7 +107,6 @@ export { isResFileAddressFor, parseResFileAddress, resFileAddress } from './util
105
107
  export { AudioChannelLayout, AudioSampleFormat, normalizeAudioSampleFormat } from './consts/audio/audioFormats.js';
106
108
  export { BLUEERROR, BLUELISTEVENT } from './consts/blue.js';
107
109
  export { CJS_OPERATION_CANCELLED, CjsCancellationError } from './utils/errors/CjsCancellationError.js';
108
- export { CarbonPixelFormatToWebGpu, DxgiFormatToPixelFormat, GpuTextureFormat, PixelFormatToWebGpu, SrgbSiblingOf, dxgiToPixelFormat, toWebGpuTextureFormat } from './consts/webgpu/textureFormats.js';
109
110
  export { CjsError } from './utils/errors/CjsError.js';
110
111
  export { ColorSpace, normalizeColorSpace } from './consts/graphics/colorSpaces.js';
111
112
  export { D3dPrimitiveTopology } from './consts/d3d/primitiveTopology.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import * as glVec4 from 'gl-matrix/esm/vec4.js';
2
2
  import { num } from './num.js';
3
3
 
4
- // Source: math/include/Color.h + Color_inline.h (e:\carbonengine)
4
+ // Source: math/include/Color.h + Color_inline.h
5
5
  //
6
6
  // Carbon's Color - the ONE color type it has: four floats r, g, b, a. There
7
7
  // is no Color3 anywhere in Carbon's math; rgb data converts at the edges.
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sources":["../../../../src/global/math/color.js"],"sourcesContent":["// Source: math/include/Color.h + Color_inline.h (e:\\carbonengine)\n//\n// Carbon's Color - the ONE color type it has: four floats r, g, b, a. There\n// is no Color3 anywhere in Carbon's math; rgb data converts at the edges.\n// A color here IS a vec4-shaped array (Float32Array(4) by default), so vec4\n// functions interoperate freely - Carbon's operator Vector4 is an identity\n// in this representation and is not ported as a function.\n//\n// Everything in this namespace is componentwise, so none of the row-vector /\n// column-vector operand-order hazards of matrix work apply; bodies port from\n// the donor in source order.\nimport * as glVec4 from \"gl-matrix/esm/vec4.js\";\nimport { num } from \"./num.js\";\n\nconst f32 = Math.fround;\n\nexport const color = {};\n\n/**\n * Creates a color, zeroed INCLUDING alpha - Carbon's default constructor is\n * transparent black (Color_inline.h:6-12), not the opaque black that\n * `color.createLinear` gives.\n * @returns {color}\n */\ncolor.create = function()\n{\n return new Float32Array(4);\n};\n\n/**\n * Creates a color from components (Color_inline.h:33-40).\n * @param {Number} r\n * @param {Number} g\n * @param {Number} b\n * @param {Number} a\n * @returns {color}\n */\ncolor.fromValues = glVec4.fromValues;\n\n/**\n * Creates an opaque-black linear color (0, 0, 0, 1) - the schema default for\n * color-kind fields. Not a Carbon constructor (Carbon defaults transparent,\n * see `create`); this is the runtime's field-initializer helper, formerly\n * `vec4.createLinear`.\n * @returns {color}\n */\ncolor.createLinear = function()\n{\n const out = new Float32Array(4);\n out[3] = 1;\n return out;\n};\n\n/**\n * Copies a color.\n * @param {color} out\n * @param {color} a\n * @returns {color} out\n */\ncolor.copy = glVec4.copy;\n\n/**\n * Sets a color's components.\n * @param {color} out\n * @param {Number} r\n * @param {Number} g\n * @param {Number} b\n * @param {Number} a\n * @returns {color} out\n */\ncolor.set = glVec4.set;\n\n/**\n * Decodes a packed ARGB word - Carbon Color(uint32_t)\n * (Color_inline.h:15-22): a in bits 24-31, r in 16-23, g in 8-15, b in 0-7,\n * each byte scaled by 1/255.\n * @param {color} out\n * @param {Number} argb\n * @returns {color} out\n */\ncolor.fromARGB = function(out, argb)\n{\n const f = 1 / 255;\n out[0] = f * ((argb >>> 16) & 0xff);\n out[1] = f * ((argb >>> 8) & 0xff);\n out[2] = f * (argb & 0xff);\n out[3] = f * ((argb >>> 24) & 0xff);\n return out;\n};\n\n/**\n * Encodes to a packed ARGB word - Carbon operator uint32_t\n * (Color_inline.h:43-52): each channel clamped to [0,1] then scaled by 255\n * with +0.5 rounding.\n * @param {color} a\n * @returns {Number} The ARGB word, unsigned.\n */\ncolor.toARGB = function(a)\n{\n const byte = value => value >= 1 ? 0xff : value <= 0 ? 0x00 : (value * 255 + 0.5) | 0;\n return ((byte(a[3]) << 24) | (byte(a[0]) << 16) | (byte(a[1]) << 8) | byte(a[2])) >>> 0;\n};\n\n/**\n * Adds two colors, alpha included (Color_inline.h:110-113).\n * @param {color} out\n * @param {color} a\n * @param {color} b\n * @returns {color} out\n */\ncolor.add = glVec4.add;\n\n/**\n * Subtracts a color from another, alpha included (Color_inline.h:116-119).\n * @param {color} out\n * @param {color} a\n * @param {color} b\n * @returns {color} out\n */\ncolor.subtract = glVec4.subtract;\n\n/**\n * Scales a color by a scalar, alpha included (Color_inline.h:122-125).\n * @param {color} out\n * @param {color} a\n * @param {Number} s\n * @returns {color} out\n */\ncolor.scale = glVec4.scale;\n\n/**\n * Negates a color - Carbon's unary minus (Color_inline.h:104-107).\n * @param {color} out\n * @param {color} a\n * @returns {color} out\n */\ncolor.negate = glVec4.negate;\n\n/**\n * Whether two colors are bit-exactly equal - Carbon's operator== compares\n * exactly (Color_inline.h:133-136), so this is gl-matrix's exactEquals, not\n * its epsilon compare.\n * @param {color} a\n * @param {color} b\n * @returns {Boolean}\n */\ncolor.exactEquals = glVec4.exactEquals;\n\n/**\n * Lerps between two colors, alpha included - Carbon's free Lerp\n * (Color_inline.h:152-155): v1 + (v2 - v1) * s.\n * @param {color} out\n * @param {color} a\n * @param {color} b\n * @param {Number} s\n * @returns {color} out\n */\ncolor.lerp = glVec4.lerp;\n\n/**\n * Adjusts a color's saturation - Carbon's free Saturate\n * (Color_inline.h:158-169): lerp from perceived-intensity grey toward the\n * color by max(0, saturation), alpha untouched. A grey-to-color blend, NOT\n * the HLSL clamp; saturation 1 is a plain copy. The intensity weights are\n * Carbon's own eye-response constants and the arithmetic keeps float32\n * rounding.\n * @param {color} out\n * @param {color} a\n * @param {Number} saturation\n * @returns {color} out\n */\ncolor.saturate = function(out, a, saturation)\n{\n const s = f32(saturation);\n const r = a[0], g = a[1], b = a[2], alpha = a[3];\n\n if (s === 1)\n {\n out[0] = r; out[1] = g; out[2] = b; out[3] = alpha;\n return out;\n }\n\n const i = f32(f32(f32(r * f32(0.299)) + f32(g * f32(0.587))) + f32(b * f32(0.114)));\n const t = Math.max(0, s);\n out[0] = i + f32(f32(r - i) * t);\n out[1] = i + f32(f32(g - i) * t);\n out[2] = i + f32(f32(b - i) * t);\n out[3] = alpha;\n return out;\n};\n\n/**\n * Converts from linear color to rgba\n * @param {color} out\n * @param {color} linear\n * @param {boolean} [denormalizeAlpha]\n * @returns {color} out\n */\ncolor.toRGBA = function(out, linear, denormalizeAlpha)\n{\n out[0] = num.colorFromLinear(linear[0]);\n out[1] = num.colorFromLinear(linear[1]);\n out[2] = num.colorFromLinear(linear[2]);\n out[3] = denormalizeAlpha ? num.colorFromLinear(linear[3]) : linear[3];\n return out;\n};\n\n/**\n * Converts to linear color from rgba\n * @param {color} out\n * @param {color} rgba\n * @param {boolean} [denormalizedAlpha]\n * @returns {color} out\n */\ncolor.fromRGBA = function(out, rgba, denormalizedAlpha)\n{\n out[0] = num.linearFromColor(rgba[0]);\n out[1] = num.linearFromColor(rgba[1]);\n out[2] = num.linearFromColor(rgba[2]);\n out[3] = denormalizedAlpha ? num.linearFromColor(rgba[3]) : rgba[3];\n return out;\n};\n\n/**\n * Converts to linear color from rgb - the edge converter for 3-component\n * data; Carbon has no rgb color type, so rgb converts here and stays rgba.\n * @param {color} out\n * @param {vec3|Array} rgb\n * @param {Number} [linearAlpha=1]\n * @returns {color} out\n */\ncolor.fromRGB = function(out, rgb, linearAlpha = 1)\n{\n out[0] = num.linearFromColor(rgb[0]);\n out[1] = num.linearFromColor(rgb[1]);\n out[2] = num.linearFromColor(rgb[2]);\n out[3] = linearAlpha;\n return out;\n};\n\n/**\n * Gets hex value with alpha from linear color\n * @param {color} linear\n * @returns {String} hex value\n */\ncolor.toHexA = function(linear)\n{\n return \"#\" +\n num.hexFromLinear(linear[0]) +\n num.hexFromLinear(linear[1]) +\n num.hexFromLinear(linear[2]) +\n num.hexFromLinear(linear[3]);\n};\n\n/**\n * Gets hex value from linear color\n * @param {color} linear\n * @returns {String} hex value\n */\ncolor.toHex = function(linear)\n{\n return \"#\" +\n num.hexFromLinear(linear[0]) +\n num.hexFromLinear(linear[1]) +\n num.hexFromLinear(linear[2]);\n};\n\n/**\n * Gets linear color from hex or hex with alpha\n * @param {color} out\n * @param {String} hex\n * @param {Number} [defaultAlpha=1]\n * @returns {color} out\n */\ncolor.fromHex = function(out, hex, defaultAlpha = 1)\n{\n // Set empty color in case of error\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = defaultAlpha;\n\n if (typeof hex !== \"string\" || !/^#(?:[\\da-f]{3,4}|[\\da-f]{6}|[\\da-f]{8})$/i.test(hex))\n {\n throw new TypeError(\"Invalid hex\");\n }\n\n // Short rgb/rgba hex\n if (hex.length === 4 || hex.length === 5)\n {\n out[0] = (\"0x\" + hex[1] + hex[1]) / 255;\n out[1] = (\"0x\" + hex[2] + hex[2]) / 255;\n out[2] = (\"0x\" + hex[3] + hex[3]) / 255;\n if (hex.length === 5) out[3] = (\"0x\" + hex[4] + hex[4]) / 255;\n }\n // Full rgb/rgba hex\n else if (hex.length === 7 || hex.length === 9)\n {\n out[0] = (\"0x\" + hex[1] + hex[2]) / 255;\n out[1] = (\"0x\" + hex[3] + hex[4]) / 255;\n out[2] = (\"0x\" + hex[5] + hex[6]) / 255;\n if (hex.length === 9) out[3] = (\"0x\" + hex[7] + hex[8]) / 255;\n }\n return out;\n};\n\n/**\n * Converts srgb rgb channels to linear - writes ONLY [0..2], leaving alpha\n * untouched, so it works in place on a color or on bare rgb data.\n * @param {color|vec3} out\n * @param {color|vec3} srgb\n * @returns {color|vec3} out\n */\ncolor.linearFromSRGB = function(out, srgb)\n{\n out[0] = num.linearFromSRGB(srgb[0]);\n out[1] = num.linearFromSRGB(srgb[1]);\n out[2] = num.linearFromSRGB(srgb[2]);\n return out;\n};\n\n/**\n * Converts linear rgb channels to srgb - writes ONLY [0..2], leaving alpha\n * untouched.\n * @param {color|vec3} out\n * @param {color|vec3} linear\n * @returns {color|vec3} out\n */\ncolor.srgbFromLinear = function(out, linear)\n{\n out[0] = num.srgbFromLinear(linear[0]);\n out[1] = num.srgbFromLinear(linear[1]);\n out[2] = num.srgbFromLinear(linear[2]);\n return out;\n};\n\n/**\n * Converts rgb channels from linear to Carbon gamma 2.2 - writes ONLY\n * [0..2], leaving alpha untouched.\n * @param {color|vec3} out\n * @param {color|vec3} linear\n * @returns {color|vec3} out\n */\ncolor.linearToGamma = function(out, linear)\n{\n out[0] = num.linearToGamma(linear[0]);\n out[1] = num.linearToGamma(linear[1]);\n out[2] = num.linearToGamma(linear[2]);\n return out;\n};\n\n/**\n * Converts rgb channels from Carbon gamma 2.2 to linear - writes ONLY\n * [0..2], leaving alpha untouched.\n * @param {color|vec3} out\n * @param {color|vec3} gamma\n * @returns {color|vec3} out\n */\ncolor.gammaToLinear = function(out, gamma)\n{\n out[0] = num.gammaToLinear(gamma[0]);\n out[1] = num.gammaToLinear(gamma[1]);\n out[2] = num.gammaToLinear(gamma[2]);\n return out;\n};\n\n/**\n * Converts linear rgb channels to HSV - out is 3-component: hue in degrees\n * (rounded), saturation and value as rounded percentages. UI helper, not a\n * Carbon function.\n * @param {vec3} out\n * @param {color|vec3} linear\n * @returns {vec3} out\n */\ncolor.toHSV = function(out, linear)\n{\n const rabs = linear[0], gabs = linear[1], babs = linear[2];\n\n const v = Math.max(rabs, gabs, babs);\n const diff = v - Math.min(rabs, gabs, babs);\n const diffc = c => (v - c) / 6 / diff + 1 / 2;\n const percentRound = value => Math.round(value * 100) / 100;\n\n let h, s;\n if (diff === 0)\n {\n h = s = 0;\n }\n else\n {\n s = diff / v;\n const rr = diffc(rabs);\n const gg = diffc(gabs);\n const bb = diffc(babs);\n\n if (rabs === v) h = bb - gg;\n else if (gabs === v) h = (1 / 3) + rr - bb;\n else h = (2 / 3) + gg - rr;\n\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n }\n\n out[0] = Math.round(h * 360);\n out[1] = percentRound(s * 100);\n out[2] = percentRound(v * 100);\n return out;\n};\n\nexport const {\n create,\n createLinear,\n fromValues,\n copy,\n set,\n fromARGB,\n toARGB,\n add,\n subtract,\n scale,\n negate,\n exactEquals,\n lerp,\n saturate,\n toRGBA,\n fromRGBA,\n fromRGB,\n toHexA,\n toHex,\n fromHex,\n linearFromSRGB,\n srgbFromLinear,\n linearToGamma,\n gammaToLinear,\n toHSV\n} = color;\n"],"names":["f32","Math","fround","color","create","Float32Array","fromValues","glVec4","createLinear","out","copy","set","fromARGB","argb","f","toARGB","a","byte","value","add","subtract","scale","negate","exactEquals","lerp","saturate","saturation","s","r","g","b","alpha","i","t","max","toRGBA","linear","denormalizeAlpha","num","colorFromLinear","fromRGBA","rgba","denormalizedAlpha","linearFromColor","fromRGB","rgb","linearAlpha","toHexA","hexFromLinear","toHex","fromHex","hex","defaultAlpha","test","TypeError","length","linearFromSRGB","srgb","srgbFromLinear","linearToGamma","gammaToLinear","gamma","toHSV","rabs","gabs","babs","v","diff","min","diffc","c","percentRound","round","h","rr","gg","bb"],"mappings":"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"}
1
+ {"version":3,"file":"color.js","sources":["../../../../src/global/math/color.js"],"sourcesContent":["// Source: math/include/Color.h + Color_inline.h\n//\n// Carbon's Color - the ONE color type it has: four floats r, g, b, a. There\n// is no Color3 anywhere in Carbon's math; rgb data converts at the edges.\n// A color here IS a vec4-shaped array (Float32Array(4) by default), so vec4\n// functions interoperate freely - Carbon's operator Vector4 is an identity\n// in this representation and is not ported as a function.\n//\n// Everything in this namespace is componentwise, so none of the row-vector /\n// column-vector operand-order hazards of matrix work apply; bodies port from\n// the donor in source order.\nimport * as glVec4 from \"gl-matrix/esm/vec4.js\";\nimport { num } from \"./num.js\";\n\nconst f32 = Math.fround;\n\nexport const color = {};\n\n/**\n * Creates a color, zeroed INCLUDING alpha - Carbon's default constructor is\n * transparent black (Color_inline.h:6-12), not the opaque black that\n * `color.createLinear` gives.\n * @returns {color}\n */\ncolor.create = function()\n{\n return new Float32Array(4);\n};\n\n/**\n * Creates a color from components (Color_inline.h:33-40).\n * @param {Number} r\n * @param {Number} g\n * @param {Number} b\n * @param {Number} a\n * @returns {color}\n */\ncolor.fromValues = glVec4.fromValues;\n\n/**\n * Creates an opaque-black linear color (0, 0, 0, 1) - the schema default for\n * color-kind fields. Not a Carbon constructor (Carbon defaults transparent,\n * see `create`); this is the runtime's field-initializer helper, formerly\n * `vec4.createLinear`.\n * @returns {color}\n */\ncolor.createLinear = function()\n{\n const out = new Float32Array(4);\n out[3] = 1;\n return out;\n};\n\n/**\n * Copies a color.\n * @param {color} out\n * @param {color} a\n * @returns {color} out\n */\ncolor.copy = glVec4.copy;\n\n/**\n * Sets a color's components.\n * @param {color} out\n * @param {Number} r\n * @param {Number} g\n * @param {Number} b\n * @param {Number} a\n * @returns {color} out\n */\ncolor.set = glVec4.set;\n\n/**\n * Decodes a packed ARGB word - Carbon Color(uint32_t)\n * (Color_inline.h:15-22): a in bits 24-31, r in 16-23, g in 8-15, b in 0-7,\n * each byte scaled by 1/255.\n * @param {color} out\n * @param {Number} argb\n * @returns {color} out\n */\ncolor.fromARGB = function(out, argb)\n{\n const f = 1 / 255;\n out[0] = f * ((argb >>> 16) & 0xff);\n out[1] = f * ((argb >>> 8) & 0xff);\n out[2] = f * (argb & 0xff);\n out[3] = f * ((argb >>> 24) & 0xff);\n return out;\n};\n\n/**\n * Encodes to a packed ARGB word - Carbon operator uint32_t\n * (Color_inline.h:43-52): each channel clamped to [0,1] then scaled by 255\n * with +0.5 rounding.\n * @param {color} a\n * @returns {Number} The ARGB word, unsigned.\n */\ncolor.toARGB = function(a)\n{\n const byte = value => value >= 1 ? 0xff : value <= 0 ? 0x00 : (value * 255 + 0.5) | 0;\n return ((byte(a[3]) << 24) | (byte(a[0]) << 16) | (byte(a[1]) << 8) | byte(a[2])) >>> 0;\n};\n\n/**\n * Adds two colors, alpha included (Color_inline.h:110-113).\n * @param {color} out\n * @param {color} a\n * @param {color} b\n * @returns {color} out\n */\ncolor.add = glVec4.add;\n\n/**\n * Subtracts a color from another, alpha included (Color_inline.h:116-119).\n * @param {color} out\n * @param {color} a\n * @param {color} b\n * @returns {color} out\n */\ncolor.subtract = glVec4.subtract;\n\n/**\n * Scales a color by a scalar, alpha included (Color_inline.h:122-125).\n * @param {color} out\n * @param {color} a\n * @param {Number} s\n * @returns {color} out\n */\ncolor.scale = glVec4.scale;\n\n/**\n * Negates a color - Carbon's unary minus (Color_inline.h:104-107).\n * @param {color} out\n * @param {color} a\n * @returns {color} out\n */\ncolor.negate = glVec4.negate;\n\n/**\n * Whether two colors are bit-exactly equal - Carbon's operator== compares\n * exactly (Color_inline.h:133-136), so this is gl-matrix's exactEquals, not\n * its epsilon compare.\n * @param {color} a\n * @param {color} b\n * @returns {Boolean}\n */\ncolor.exactEquals = glVec4.exactEquals;\n\n/**\n * Lerps between two colors, alpha included - Carbon's free Lerp\n * (Color_inline.h:152-155): v1 + (v2 - v1) * s.\n * @param {color} out\n * @param {color} a\n * @param {color} b\n * @param {Number} s\n * @returns {color} out\n */\ncolor.lerp = glVec4.lerp;\n\n/**\n * Adjusts a color's saturation - Carbon's free Saturate\n * (Color_inline.h:158-169): lerp from perceived-intensity grey toward the\n * color by max(0, saturation), alpha untouched. A grey-to-color blend, NOT\n * the HLSL clamp; saturation 1 is a plain copy. The intensity weights are\n * Carbon's own eye-response constants and the arithmetic keeps float32\n * rounding.\n * @param {color} out\n * @param {color} a\n * @param {Number} saturation\n * @returns {color} out\n */\ncolor.saturate = function(out, a, saturation)\n{\n const s = f32(saturation);\n const r = a[0], g = a[1], b = a[2], alpha = a[3];\n\n if (s === 1)\n {\n out[0] = r; out[1] = g; out[2] = b; out[3] = alpha;\n return out;\n }\n\n const i = f32(f32(f32(r * f32(0.299)) + f32(g * f32(0.587))) + f32(b * f32(0.114)));\n const t = Math.max(0, s);\n out[0] = i + f32(f32(r - i) * t);\n out[1] = i + f32(f32(g - i) * t);\n out[2] = i + f32(f32(b - i) * t);\n out[3] = alpha;\n return out;\n};\n\n/**\n * Converts from linear color to rgba\n * @param {color} out\n * @param {color} linear\n * @param {boolean} [denormalizeAlpha]\n * @returns {color} out\n */\ncolor.toRGBA = function(out, linear, denormalizeAlpha)\n{\n out[0] = num.colorFromLinear(linear[0]);\n out[1] = num.colorFromLinear(linear[1]);\n out[2] = num.colorFromLinear(linear[2]);\n out[3] = denormalizeAlpha ? num.colorFromLinear(linear[3]) : linear[3];\n return out;\n};\n\n/**\n * Converts to linear color from rgba\n * @param {color} out\n * @param {color} rgba\n * @param {boolean} [denormalizedAlpha]\n * @returns {color} out\n */\ncolor.fromRGBA = function(out, rgba, denormalizedAlpha)\n{\n out[0] = num.linearFromColor(rgba[0]);\n out[1] = num.linearFromColor(rgba[1]);\n out[2] = num.linearFromColor(rgba[2]);\n out[3] = denormalizedAlpha ? num.linearFromColor(rgba[3]) : rgba[3];\n return out;\n};\n\n/**\n * Converts to linear color from rgb - the edge converter for 3-component\n * data; Carbon has no rgb color type, so rgb converts here and stays rgba.\n * @param {color} out\n * @param {vec3|Array} rgb\n * @param {Number} [linearAlpha=1]\n * @returns {color} out\n */\ncolor.fromRGB = function(out, rgb, linearAlpha = 1)\n{\n out[0] = num.linearFromColor(rgb[0]);\n out[1] = num.linearFromColor(rgb[1]);\n out[2] = num.linearFromColor(rgb[2]);\n out[3] = linearAlpha;\n return out;\n};\n\n/**\n * Gets hex value with alpha from linear color\n * @param {color} linear\n * @returns {String} hex value\n */\ncolor.toHexA = function(linear)\n{\n return \"#\" +\n num.hexFromLinear(linear[0]) +\n num.hexFromLinear(linear[1]) +\n num.hexFromLinear(linear[2]) +\n num.hexFromLinear(linear[3]);\n};\n\n/**\n * Gets hex value from linear color\n * @param {color} linear\n * @returns {String} hex value\n */\ncolor.toHex = function(linear)\n{\n return \"#\" +\n num.hexFromLinear(linear[0]) +\n num.hexFromLinear(linear[1]) +\n num.hexFromLinear(linear[2]);\n};\n\n/**\n * Gets linear color from hex or hex with alpha\n * @param {color} out\n * @param {String} hex\n * @param {Number} [defaultAlpha=1]\n * @returns {color} out\n */\ncolor.fromHex = function(out, hex, defaultAlpha = 1)\n{\n // Set empty color in case of error\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = defaultAlpha;\n\n if (typeof hex !== \"string\" || !/^#(?:[\\da-f]{3,4}|[\\da-f]{6}|[\\da-f]{8})$/i.test(hex))\n {\n throw new TypeError(\"Invalid hex\");\n }\n\n // Short rgb/rgba hex\n if (hex.length === 4 || hex.length === 5)\n {\n out[0] = (\"0x\" + hex[1] + hex[1]) / 255;\n out[1] = (\"0x\" + hex[2] + hex[2]) / 255;\n out[2] = (\"0x\" + hex[3] + hex[3]) / 255;\n if (hex.length === 5) out[3] = (\"0x\" + hex[4] + hex[4]) / 255;\n }\n // Full rgb/rgba hex\n else if (hex.length === 7 || hex.length === 9)\n {\n out[0] = (\"0x\" + hex[1] + hex[2]) / 255;\n out[1] = (\"0x\" + hex[3] + hex[4]) / 255;\n out[2] = (\"0x\" + hex[5] + hex[6]) / 255;\n if (hex.length === 9) out[3] = (\"0x\" + hex[7] + hex[8]) / 255;\n }\n return out;\n};\n\n/**\n * Converts srgb rgb channels to linear - writes ONLY [0..2], leaving alpha\n * untouched, so it works in place on a color or on bare rgb data.\n * @param {color|vec3} out\n * @param {color|vec3} srgb\n * @returns {color|vec3} out\n */\ncolor.linearFromSRGB = function(out, srgb)\n{\n out[0] = num.linearFromSRGB(srgb[0]);\n out[1] = num.linearFromSRGB(srgb[1]);\n out[2] = num.linearFromSRGB(srgb[2]);\n return out;\n};\n\n/**\n * Converts linear rgb channels to srgb - writes ONLY [0..2], leaving alpha\n * untouched.\n * @param {color|vec3} out\n * @param {color|vec3} linear\n * @returns {color|vec3} out\n */\ncolor.srgbFromLinear = function(out, linear)\n{\n out[0] = num.srgbFromLinear(linear[0]);\n out[1] = num.srgbFromLinear(linear[1]);\n out[2] = num.srgbFromLinear(linear[2]);\n return out;\n};\n\n/**\n * Converts rgb channels from linear to Carbon gamma 2.2 - writes ONLY\n * [0..2], leaving alpha untouched.\n * @param {color|vec3} out\n * @param {color|vec3} linear\n * @returns {color|vec3} out\n */\ncolor.linearToGamma = function(out, linear)\n{\n out[0] = num.linearToGamma(linear[0]);\n out[1] = num.linearToGamma(linear[1]);\n out[2] = num.linearToGamma(linear[2]);\n return out;\n};\n\n/**\n * Converts rgb channels from Carbon gamma 2.2 to linear - writes ONLY\n * [0..2], leaving alpha untouched.\n * @param {color|vec3} out\n * @param {color|vec3} gamma\n * @returns {color|vec3} out\n */\ncolor.gammaToLinear = function(out, gamma)\n{\n out[0] = num.gammaToLinear(gamma[0]);\n out[1] = num.gammaToLinear(gamma[1]);\n out[2] = num.gammaToLinear(gamma[2]);\n return out;\n};\n\n/**\n * Converts linear rgb channels to HSV - out is 3-component: hue in degrees\n * (rounded), saturation and value as rounded percentages. UI helper, not a\n * Carbon function.\n * @param {vec3} out\n * @param {color|vec3} linear\n * @returns {vec3} out\n */\ncolor.toHSV = function(out, linear)\n{\n const rabs = linear[0], gabs = linear[1], babs = linear[2];\n\n const v = Math.max(rabs, gabs, babs);\n const diff = v - Math.min(rabs, gabs, babs);\n const diffc = c => (v - c) / 6 / diff + 1 / 2;\n const percentRound = value => Math.round(value * 100) / 100;\n\n let h, s;\n if (diff === 0)\n {\n h = s = 0;\n }\n else\n {\n s = diff / v;\n const rr = diffc(rabs);\n const gg = diffc(gabs);\n const bb = diffc(babs);\n\n if (rabs === v) h = bb - gg;\n else if (gabs === v) h = (1 / 3) + rr - bb;\n else h = (2 / 3) + gg - rr;\n\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n }\n\n out[0] = Math.round(h * 360);\n out[1] = percentRound(s * 100);\n out[2] = percentRound(v * 100);\n return out;\n};\n\nexport const {\n create,\n createLinear,\n fromValues,\n copy,\n set,\n fromARGB,\n toARGB,\n add,\n subtract,\n scale,\n negate,\n exactEquals,\n lerp,\n saturate,\n toRGBA,\n fromRGBA,\n fromRGB,\n toHexA,\n toHex,\n fromHex,\n linearFromSRGB,\n srgbFromLinear,\n linearToGamma,\n gammaToLinear,\n toHSV\n} = color;\n"],"names":["f32","Math","fround","color","create","Float32Array","fromValues","glVec4","createLinear","out","copy","set","fromARGB","argb","f","toARGB","a","byte","value","add","subtract","scale","negate","exactEquals","lerp","saturate","saturation","s","r","g","b","alpha","i","t","max","toRGBA","linear","denormalizeAlpha","num","colorFromLinear","fromRGBA","rgba","denormalizedAlpha","linearFromColor","fromRGB","rgb","linearAlpha","toHexA","hexFromLinear","toHex","fromHex","hex","defaultAlpha","test","TypeError","length","linearFromSRGB","srgb","srgbFromLinear","linearToGamma","gammaToLinear","gamma","toHSV","rabs","gabs","babs","v","diff","min","diffc","c","percentRound","round","h","rr","gg","bb"],"mappings":"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"}
@@ -281,6 +281,14 @@ class CjsSchema {
281
281
  return this;
282
282
  }
283
283
 
284
+ /** Removes the constructor registered under a serialized class name. */
285
+ static DeleteConstructor(name) {
286
+ if (typeof name !== "string" || !name.trim()) return false;
287
+ const removed = CONSTRUCTOR_BY_NAME.delete(name.trim());
288
+ if (removed) SCHEMA_GENERATION += 1;
289
+ return removed;
290
+ }
291
+
284
292
  /** Returns the constructor registered for a serialized class name. */
285
293
  static GetConstructor(name) {
286
294
  if (typeof name !== "string" || !name.trim()) return null;