@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":"Tr2VolumetricsRenderer.js","sources":["../../../../../src/trinity/core/volumetrics/Tr2VolumetricsRenderer.js"],"sourcesContent":["// Source: trinity/trinity/Tr2VolumetricsRenderer.h\n// Source: trinity/trinity/Tr2VolumetricsRenderer.cpp\n// Source: trinity/trinity/Tr2VolumetricsRenderer_Blue.cpp\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { Tr2VolumerticQuality } from \"../../generated/trinityCore/enums.js\";\nimport { Tr2TextureReference } from \"../../generated/trinityCore/Tr2TextureReference.js\";\nimport { AccumulatePriorityAttribute } from \"../PriorityBlend.js\";\nimport { Tr2VariableStore } from \"../variable/Tr2VariableStore.js\";\n\n\nconst FROXEL_FOG_COMPONENT = \"FroxelFogSettings\";\nconst FROXEL_NOISE_DEPTH = 64;\nconst FOG_COLOR_SCRATCH = vec3.create();\n\n\n/**\n * Owns portable froxel-fog blending and terminal per-frame constant writes.\n * Physical fog/volumetric textures, passes and environment-map realization\n * remain explicit engine obligations.\n */\n@type.define({ className: \"Tr2VolumetricsRenderer\", family: \"trinityCore\" })\nexport class Tr2VolumetricsRenderer extends CjsModel\n{\n @edit.readwrite\n @type.int32\n @type.enum(\"Tr2VolumerticQuality\")\n quality = Tr2VolumerticQuality.High;\n\n @edit.read\n @type.objectRef(\"Tr2TextureReference\")\n mieEnvironmentMap = new Tr2TextureReference();\n\n @edit.readwrite\n @type.boolean\n blur = true;\n\n @edit.readwrite\n @type.boolean\n logBlending = true;\n\n @edit.readwrite\n @type.float32\n gameBackClip = 1e6;\n\n @edit.read\n @type.float32\n backgroundVisibility = 0;\n\n @edit.read\n @type.float32\n thickness = 0;\n\n @edit.read\n @type.float32\n environmentDirectionality = 0;\n\n @edit.read\n @type.float32\n lightDirectionality = 0;\n\n @edit.read\n @type.float32\n godRayNoiseAnimationSpeed = 0;\n\n @edit.read\n @type.vec3\n fogNoiseMovementSpeed = vec3.create();\n\n @edit.read\n @type.color\n fogColor = vec4.create();\n\n @edit.read\n @type.float32\n godRayNoiseFrequency = 0;\n\n @edit.read\n @type.float32\n fogNoiseFrequency = 0;\n\n @edit.read\n @type.float32\n godRayNoiseIntensity = 0;\n\n @edit.read\n @type.float32\n fogNoiseIntensity = 0;\n\n @edit.readwrite\n @type.float64\n logBlendingSmoothness = 4;\n\n @edit.read\n @type.float32\n environmentIntensity = 0;\n\n @edit.readwrite\n @type.boolean\n castShadows = false;\n\n @edit.readwrite\n @type.boolean\n receiveShadows = false;\n\n @edit.readwrite\n @type.float32\n scaleFactor = 0.7;\n\n #godRayNoiseAnimation = 0;\n\n #fogNoiseMovement = new Float64Array(3);\n\n #planets = [ vec4.fromValues(0, 0, 0, -1), vec4.fromValues(0, 0, 0, -1) ];\n\n #sunAngle = 0;\n\n /** Creates Carbon's logical Mie reference and reserves its texture globals. */\n constructor()\n {\n super();\n const store = Tr2VariableStore.GlobalStore();\n store.RegisterVariable(\"EveSceneFogVolumeMap\");\n store.RegisterVariable(\"VolumetricDepthMap\");\n store.RegisterVariable(\"EveSceneMieEnvironmentMap\");\n store.RegisterVariable(\"EveSceneFroxelFogMap\");\n }\n\n /** Updates all fog attributes from the scene's nominal component registry. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The Eve component registry is supplied directly; Carbon's realized 64-deep noise texture becomes its fixed animation-depth constant while physical noise storage is not ported yet.\")\n UpdateFogSettings(registry, updateContext)\n {\n const settings = Array.from(registry.GetComponents(FROXEL_FOG_COMPONENT), component =>\n component.GetFroxelFogSettings());\n\n const smoothness = this.logBlendingSmoothness;\n for (const value of settings)\n {\n value.logThickness.value = Math.log1p(Number(value.thickness.value) * smoothness);\n value.logThickness.enabled = value.thickness.enabled;\n }\n settings.sort((a, b) => b.priority - a.priority);\n\n this.thickness = AccumulatePriorityAttribute(settings, value => value.thickness);\n this.lightDirectionality = AccumulatePriorityAttribute(settings, value => value.lightDirectionality);\n this.environmentIntensity = AccumulatePriorityAttribute(settings, value => value.environmentIntensity);\n this.environmentDirectionality = AccumulatePriorityAttribute(settings, value => value.environmentDirectionality);\n AccumulatePriorityAttribute(settings, value => value.fogColor, this.fogColor);\n this.backgroundVisibility = AccumulatePriorityAttribute(settings, value => value.backgroundVisibility);\n this.godRayNoiseIntensity = AccumulatePriorityAttribute(settings, value => value.godRayNoiseIntensity);\n this.godRayNoiseFrequency = AccumulatePriorityAttribute(settings, value => value.godRayNoiseFrequency);\n this.godRayNoiseAnimationSpeed = AccumulatePriorityAttribute(settings, value => value.godRayNoiseAnimationSpeed);\n this.fogNoiseIntensity = AccumulatePriorityAttribute(settings, value => value.fogNoiseIntensity);\n this.fogNoiseFrequency = AccumulatePriorityAttribute(settings, value => value.fogNoiseFrequency);\n AccumulatePriorityAttribute(settings, value => value.fogNoiseMovementSpeed, this.fogNoiseMovementSpeed);\n\n if (this.logBlending)\n {\n const logThickness = AccumulatePriorityAttribute(settings, value => value.logThickness);\n this.thickness = Math.expm1(logThickness) / smoothness;\n }\n\n const delta = updateContext.GetDeltaT();\n this.#godRayNoiseAnimation += this.godRayNoiseAnimationSpeed * (delta / FROXEL_NOISE_DEPTH);\n this.#godRayNoiseAnimation -= Math.floor(this.#godRayNoiseAnimation);\n for (let lane = 0; lane < 3; lane++)\n {\n this.#fogNoiseMovement[lane] += this.fogNoiseMovementSpeed[lane] * delta;\n }\n }\n\n /** Reports whether the blended fog thickness is strictly positive. */\n @carbon.method\n @impl.implemented\n HasFog()\n {\n return this.thickness > 0;\n }\n\n /** Writes the inline FroxelPerFrameData fields into canonical RawData. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon writes an inline constant struct; Trinity writes the same terminal scalar/vector bytes through the canonical RawData layout.\")\n PopulatePerFrameData(out)\n {\n FOG_COLOR_SCRATCH[0] = this.fogColor[0];\n FOG_COLOR_SCRATCH[1] = this.fogColor[1];\n FOG_COLOR_SCRATCH[2] = this.fogColor[2];\n out.Set(\"FroxelFogColor\", FOG_COLOR_SCRATCH);\n out.Set(\"FroxelBackgroundVisibility\", Math.min(Math.max(this.backgroundVisibility, 0), 1));\n out.Set(\"FroxelBaseDensity\", this.thickness / this.gameBackClip);\n out.Set(\"FroxelMaxDistance\", this.gameBackClip);\n out.Set(\"FroxelMaxDistanceVisibility\", Math.exp(-this.thickness));\n out.Set(\"FroxelEnvironmentIntensity\", this.environmentIntensity);\n out.Set(\"FroxelEnvironmentG\", -Math.min(Math.max(this.environmentDirectionality, 0.001), 0.999));\n out.SetIndex(\"FroxelPlanets\", 0, this.#planets[0]);\n out.SetIndex(\"FroxelPlanets\", 1, this.#planets[1]);\n return out;\n }\n\n /** Applies Carbon's four quality presets. */\n @carbon.method\n @impl.implemented\n SetQuality(quality)\n {\n this.quality = quality;\n switch (quality)\n {\n case Tr2VolumerticQuality.Ultra:\n this.scaleFactor = 1;\n this.castShadows = true;\n this.receiveShadows = true;\n break;\n case Tr2VolumerticQuality.High:\n this.scaleFactor = 0.7;\n this.castShadows = true;\n this.receiveShadows = false;\n break;\n case Tr2VolumerticQuality.Medium:\n this.scaleFactor = 0.5;\n this.castShadows = false;\n this.receiveShadows = false;\n break;\n default:\n this.scaleFactor = 0.3;\n this.castShadows = false;\n this.receiveShadows = false;\n break;\n }\n }\n\n /** Copies the two planet spheres used by the fog shader. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon asserts a two-sphere span and memcpy-copies it; JavaScript throws RangeError and copies the two vec4 records.\")\n SetPlanets(planets)\n {\n if (!planets || planets.length !== 2)\n {\n throw new RangeError(\"Tr2VolumetricsRenderer.SetPlanets requires exactly two spheres.\");\n }\n vec4.copy(this.#planets[0], planets[0]);\n vec4.copy(this.#planets[1], planets[1]);\n }\n\n /** Stores the sun angle consumed by later fog constant production. */\n @carbon.method\n @impl.implemented\n SetSunAngle(angle)\n {\n this.#sunAngle = angle;\n }\n\n /** Returns the wrapped 0..1 god-ray noise phase and the upload is not ported yet. */\n @impl.custom\n @impl.reason(\"Engines need Carbon's private CPU-produced phase without owning or recomputing its update policy.\")\n GetGodRayNoiseAnimation()\n {\n return this.#godRayNoiseAnimation;\n }\n\n /** Copies Carbon's accumulated double-precision fog-noise movement. */\n @impl.custom\n @impl.reason(\"Engines consume the CPU-produced movement but do not advance it independently.\")\n GetFogNoiseMovement(out)\n {\n out[0] = this.#fogNoiseMovement[0];\n out[1] = this.#fogNoiseMovement[1];\n out[2] = this.#fogNoiseMovement[2];\n return out;\n }\n\n /** Returns the scene-produced sun angle used by fog realization. */\n @impl.custom\n @impl.reason(\"Carbon stores this as private renderer state; the split needs an explicit read boundary.\")\n GetSunAngle()\n {\n return this.#sunAngle;\n }\n\n /** Copies one of the two scene-selected planet spheres. */\n @impl.custom\n @impl.reason(\"Carbon's physical fog pass reads private planet state; the engine executor receives it through this checked copy boundary.\")\n GetPlanet(index, out)\n {\n if (index !== 0 && index !== 1)\n {\n throw new RangeError(\"Tr2VolumetricsRenderer.GetPlanet index must be 0 or 1.\");\n }\n return vec4.copy(out, this.#planets[index]);\n }\n\n /**\n * Renders the froxel volume for every volumetric component in the registry.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's froxel compute and raymarch passes (Tr2VolumetricsRenderer.cpp:152-493) have no JS counterpart.\")\n RenderVolumetrics()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderVolumetrics: the froxel passes are unported.\");\n }\n\n /**\n * The neutral volumetric texture, used when nothing volumetric is in view.\n *\n * UNPORTED, AND THE BLOCKER IS THE POOL'S DESCRIPTION. Carbon borrows a 1x1\n * black texture seeded with `Tr2SubresourceData` and described by a\n * `Tr2BitmapDimensions` carrying a texture TYPE and a slice count - a 2D array\n * of four slices here, a 3D texture for fog. Our pool takes only\n * `{ width, height, format, gpuUsage }`, which can express neither, and its\n * `initialize` callback has no way to supply initial subresource bytes.\n *\n * Carbon's signature is restored (static, taking the pool) so the shape is\n * right when the pool grows a full description.\n *\n * @param {object} _gpuResourcePool The pool to borrow from.\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Tr2GpuResourcePool's description carries no texture type or slice count, and no initial subresource data, so a 2D array of four slices cannot be asked for.\")\n static GetEmptyVolumetricTexture(_gpuResourcePool)\n {\n throw new Error(\n \"Tr2VolumetricsRenderer.GetEmptyVolumetricTexture: needs a pool description \"\n + \"carrying texture type, slice count and initial data.\"\n );\n }\n\n /**\n * Renders the fog volume.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's fog passes (Tr2VolumetricsRenderer.cpp:494-554) have no JS counterpart.\")\n RenderFog()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderFog: the fog passes are unported.\");\n }\n\n /**\n * Renders the fog volume into a reflection map.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's reflection-map fog pass (Tr2VolumetricsRenderer.cpp:519-554) has no JS counterpart.\")\n RenderFogIntoReflectionMap()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderFogIntoReflectionMap: the fog passes are unported.\");\n }\n\n /**\n * The neutral froxel-fog texture, used when there is no fog.\n *\n * UNPORTED, AND THE BLOCKER IS THE POOL'S DESCRIPTION. Carbon borrows a 1x1\n * black texture seeded with `Tr2SubresourceData` and described by a\n * `Tr2BitmapDimensions` carrying a texture TYPE and a slice count - a 2D array\n * of four slices here, a 3D texture for fog. Our pool takes only\n * `{ width, height, format, gpuUsage }`, which can express neither, and its\n * `initialize` callback has no way to supply initial subresource bytes.\n *\n * Carbon's signature is restored (static, taking the pool) so the shape is\n * right when the pool grows a full description.\n *\n * @param {object} _gpuResourcePool The pool to borrow from.\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Tr2GpuResourcePool's description carries no texture type or initial subresource data, so a 3D texture cannot be asked for.\")\n static GetEmptyFogTexture(_gpuResourcePool)\n {\n throw new Error(\n \"Tr2VolumetricsRenderer.GetEmptyFogTexture: needs a pool description \"\n + \"carrying texture type and initial data.\"\n );\n }\n\n /**\n * Rebuilds the Mie environment map.\n *\n * UNPORTED. Carbon's 86-line body renders each cube face through the fog\n * effect (`Tr2VolumetricsRenderer.cpp`), which needs the same unported pass\n * machinery as the fog methods above.\n *\n * @returns {void} Never returns; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Needs the fog pass machinery, which is unported.\")\n UpdateFogEnvironmentMap()\n {\n throw new Error(\"Tr2VolumetricsRenderer.UpdateFogEnvironmentMap: the fog passes are unported.\");\n }\n\n /**\n * Publishes the Mie environment map under the name effects sample it by.\n *\n * Carbon takes no arguments here and registers on the global store\n * (`Tr2VolumetricsRenderer.cpp`, one line). The port had grown a\n * `renderContext` parameter that existed only to reach an executor.\n */\n @carbon.method\n @impl.implemented\n UpdateVariableStore()\n {\n Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSceneMieEnvironmentMap\", this.mieEnvironmentMap);\n }\n\n /**\n * Renders volumetric shadows for the registry's components.\n *\n * UNPORTED. Carbon's 31-line body walks the volumetric components and issues a\n * shadow pass per one, which needs the same unported pass machinery.\n *\n * @returns {void} Never returns; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Needs the volumetric pass machinery, which is unported.\")\n RenderShadows()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderShadows: the volumetric passes are unported.\");\n }\n\n static Tr2VolumerticQuality = Tr2VolumerticQuality;\n}\n"],"names":["FROXEL_FOG_COMPONENT","FROXEL_NOISE_DEPTH","FOG_COLOR_SCRATCH","vec3","create","_Tr2VolumetricsRender","_identity","Tr2VolumetricsRenderer","CjsModel","e","_init_quality","_init_extra_quality","_init_mieEnvironmentMap","_init_extra_mieEnvironmentMap","_init_blur","_init_extra_blur","_init_logBlending","_init_extra_logBlending","_init_gameBackClip","_init_extra_gameBackClip","_init_backgroundVisibility","_init_extra_backgroundVisibility","_init_thickness","_init_extra_thickness","_init_environmentDirectionality","_init_extra_environmentDirectionality","_init_lightDirectionality","_init_extra_lightDirectionality","_init_godRayNoiseAnimationSpeed","_init_extra_godRayNoiseAnimationSpeed","_init_fogNoiseMovementSpeed","_init_extra_fogNoiseMovementSpeed","_init_fogColor","_init_extra_fogColor","_init_godRayNoiseFrequency","_init_extra_godRayNoiseFrequency","_init_fogNoiseFrequency","_init_extra_fogNoiseFrequency","_init_godRayNoiseIntensity","_init_extra_godRayNoiseIntensity","_init_fogNoiseIntensity","_init_extra_fogNoiseIntensity","_init_logBlendingSmoothness","_init_extra_logBlendingSmoothness","_init_environmentIntensity","_init_extra_environmentIntensity","_init_castShadows","_init_extra_castShadows","_init_receiveShadows","_init_extra_receiveShadows","_init_scaleFactor","_init_extra_scaleFactor","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","edit","readwrite","int32","enum","read","objectRef","boolean","float32","color","float64","carbon","method","impl","adapted","reason","implemented","custom","notImplemented","quality","Tr2VolumerticQuality","High","mieEnvironmentMap","Tr2TextureReference","blur","logBlending","gameBackClip","backgroundVisibility","thickness","environmentDirectionality","lightDirectionality","godRayNoiseAnimationSpeed","fogNoiseMovementSpeed","fogColor","vec4","godRayNoiseFrequency","fogNoiseFrequency","godRayNoiseIntensity","fogNoiseIntensity","logBlendingSmoothness","environmentIntensity","castShadows","receiveShadows","scaleFactor","Float64Array","fromValues","constructor","store","Tr2VariableStore","GlobalStore","RegisterVariable","UpdateFogSettings","registry","updateContext","settings","Array","from","GetComponents","component","GetFroxelFogSettings","smoothness","value","logThickness","Math","log1p","Number","enabled","sort","a","b","priority","AccumulatePriorityAttribute","expm1","delta","GetDeltaT","floor","lane","HasFog","PopulatePerFrameData","out","Set","min","max","exp","SetIndex","SetQuality","Ultra","Medium","SetPlanets","planets","length","RangeError","copy","SetSunAngle","angle","GetGodRayNoiseAnimation","GetFogNoiseMovement","GetSunAngle","GetPlanet","index","RenderVolumetrics","Error","GetEmptyVolumetricTexture","_gpuResourcePool","RenderFog","RenderFogIntoReflectionMap","GetEmptyFogTexture","UpdateFogEnvironmentMap","UpdateVariableStore","RenderShadows"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2VolumetricsRenderer.js","sources":["../../../../../src/trinity/core/volumetrics/Tr2VolumetricsRenderer.js"],"sourcesContent":["// Source: trinity/trinity/Tr2VolumetricsRenderer.h\n// Source: trinity/trinity/Tr2VolumetricsRenderer.cpp\n// Source: trinity/trinity/Tr2VolumetricsRenderer_Blue.cpp\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { Tr2VolumerticQuality } from \"../../generated/trinityCore/enums.js\";\nimport { Tr2TextureReference } from \"../Tr2TextureReference.js\";\nimport { AccumulatePriorityAttribute } from \"../PriorityBlend.js\";\nimport { Tr2VariableStore } from \"../variable/Tr2VariableStore.js\";\n\n\nconst FROXEL_FOG_COMPONENT = \"FroxelFogSettings\";\nconst FROXEL_NOISE_DEPTH = 64;\nconst FOG_COLOR_SCRATCH = vec3.create();\n\n\n/**\n * Owns portable froxel-fog blending and terminal per-frame constant writes.\n * Physical fog/volumetric textures, passes and environment-map realization\n * remain explicit engine obligations.\n */\n@type.define({ className: \"Tr2VolumetricsRenderer\", family: \"trinityCore\" })\nexport class Tr2VolumetricsRenderer extends CjsModel\n{\n @edit.readwrite\n @type.int32\n @type.enum(\"Tr2VolumerticQuality\")\n quality = Tr2VolumerticQuality.High;\n\n @edit.read\n @type.objectRef(\"Tr2TextureReference\")\n mieEnvironmentMap = new Tr2TextureReference();\n\n @edit.readwrite\n @type.boolean\n blur = true;\n\n @edit.readwrite\n @type.boolean\n logBlending = true;\n\n @edit.readwrite\n @type.float32\n gameBackClip = 1e6;\n\n @edit.read\n @type.float32\n backgroundVisibility = 0;\n\n @edit.read\n @type.float32\n thickness = 0;\n\n @edit.read\n @type.float32\n environmentDirectionality = 0;\n\n @edit.read\n @type.float32\n lightDirectionality = 0;\n\n @edit.read\n @type.float32\n godRayNoiseAnimationSpeed = 0;\n\n @edit.read\n @type.vec3\n fogNoiseMovementSpeed = vec3.create();\n\n @edit.read\n @type.color\n fogColor = vec4.create();\n\n @edit.read\n @type.float32\n godRayNoiseFrequency = 0;\n\n @edit.read\n @type.float32\n fogNoiseFrequency = 0;\n\n @edit.read\n @type.float32\n godRayNoiseIntensity = 0;\n\n @edit.read\n @type.float32\n fogNoiseIntensity = 0;\n\n @edit.readwrite\n @type.float64\n logBlendingSmoothness = 4;\n\n @edit.read\n @type.float32\n environmentIntensity = 0;\n\n @edit.readwrite\n @type.boolean\n castShadows = false;\n\n @edit.readwrite\n @type.boolean\n receiveShadows = false;\n\n @edit.readwrite\n @type.float32\n scaleFactor = 0.7;\n\n #godRayNoiseAnimation = 0;\n\n #fogNoiseMovement = new Float64Array(3);\n\n #planets = [ vec4.fromValues(0, 0, 0, -1), vec4.fromValues(0, 0, 0, -1) ];\n\n #sunAngle = 0;\n\n /** Creates Carbon's logical Mie reference and reserves its texture globals. */\n constructor()\n {\n super();\n const store = Tr2VariableStore.GlobalStore();\n store.RegisterVariable(\"EveSceneFogVolumeMap\");\n store.RegisterVariable(\"VolumetricDepthMap\");\n store.RegisterVariable(\"EveSceneMieEnvironmentMap\");\n store.RegisterVariable(\"EveSceneFroxelFogMap\");\n }\n\n /** Updates all fog attributes from the scene's nominal component registry. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The Eve component registry is supplied directly; Carbon's realized 64-deep noise texture becomes its fixed animation-depth constant while physical noise storage is not ported yet.\")\n UpdateFogSettings(registry, updateContext)\n {\n const settings = Array.from(registry.GetComponents(FROXEL_FOG_COMPONENT), component =>\n component.GetFroxelFogSettings());\n\n const smoothness = this.logBlendingSmoothness;\n for (const value of settings)\n {\n value.logThickness.value = Math.log1p(Number(value.thickness.value) * smoothness);\n value.logThickness.enabled = value.thickness.enabled;\n }\n settings.sort((a, b) => b.priority - a.priority);\n\n this.thickness = AccumulatePriorityAttribute(settings, value => value.thickness);\n this.lightDirectionality = AccumulatePriorityAttribute(settings, value => value.lightDirectionality);\n this.environmentIntensity = AccumulatePriorityAttribute(settings, value => value.environmentIntensity);\n this.environmentDirectionality = AccumulatePriorityAttribute(settings, value => value.environmentDirectionality);\n AccumulatePriorityAttribute(settings, value => value.fogColor, this.fogColor);\n this.backgroundVisibility = AccumulatePriorityAttribute(settings, value => value.backgroundVisibility);\n this.godRayNoiseIntensity = AccumulatePriorityAttribute(settings, value => value.godRayNoiseIntensity);\n this.godRayNoiseFrequency = AccumulatePriorityAttribute(settings, value => value.godRayNoiseFrequency);\n this.godRayNoiseAnimationSpeed = AccumulatePriorityAttribute(settings, value => value.godRayNoiseAnimationSpeed);\n this.fogNoiseIntensity = AccumulatePriorityAttribute(settings, value => value.fogNoiseIntensity);\n this.fogNoiseFrequency = AccumulatePriorityAttribute(settings, value => value.fogNoiseFrequency);\n AccumulatePriorityAttribute(settings, value => value.fogNoiseMovementSpeed, this.fogNoiseMovementSpeed);\n\n if (this.logBlending)\n {\n const logThickness = AccumulatePriorityAttribute(settings, value => value.logThickness);\n this.thickness = Math.expm1(logThickness) / smoothness;\n }\n\n const delta = updateContext.GetDeltaT();\n this.#godRayNoiseAnimation += this.godRayNoiseAnimationSpeed * (delta / FROXEL_NOISE_DEPTH);\n this.#godRayNoiseAnimation -= Math.floor(this.#godRayNoiseAnimation);\n for (let lane = 0; lane < 3; lane++)\n {\n this.#fogNoiseMovement[lane] += this.fogNoiseMovementSpeed[lane] * delta;\n }\n }\n\n /** Reports whether the blended fog thickness is strictly positive. */\n @carbon.method\n @impl.implemented\n HasFog()\n {\n return this.thickness > 0;\n }\n\n /** Writes the inline FroxelPerFrameData fields into canonical RawData. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon writes an inline constant struct; Trinity writes the same terminal scalar/vector bytes through the canonical RawData layout.\")\n PopulatePerFrameData(out)\n {\n FOG_COLOR_SCRATCH[0] = this.fogColor[0];\n FOG_COLOR_SCRATCH[1] = this.fogColor[1];\n FOG_COLOR_SCRATCH[2] = this.fogColor[2];\n out.Set(\"FroxelFogColor\", FOG_COLOR_SCRATCH);\n out.Set(\"FroxelBackgroundVisibility\", Math.min(Math.max(this.backgroundVisibility, 0), 1));\n out.Set(\"FroxelBaseDensity\", this.thickness / this.gameBackClip);\n out.Set(\"FroxelMaxDistance\", this.gameBackClip);\n out.Set(\"FroxelMaxDistanceVisibility\", Math.exp(-this.thickness));\n out.Set(\"FroxelEnvironmentIntensity\", this.environmentIntensity);\n out.Set(\"FroxelEnvironmentG\", -Math.min(Math.max(this.environmentDirectionality, 0.001), 0.999));\n out.SetIndex(\"FroxelPlanets\", 0, this.#planets[0]);\n out.SetIndex(\"FroxelPlanets\", 1, this.#planets[1]);\n return out;\n }\n\n /** Applies Carbon's four quality presets. */\n @carbon.method\n @impl.implemented\n SetQuality(quality)\n {\n this.quality = quality;\n switch (quality)\n {\n case Tr2VolumerticQuality.Ultra:\n this.scaleFactor = 1;\n this.castShadows = true;\n this.receiveShadows = true;\n break;\n case Tr2VolumerticQuality.High:\n this.scaleFactor = 0.7;\n this.castShadows = true;\n this.receiveShadows = false;\n break;\n case Tr2VolumerticQuality.Medium:\n this.scaleFactor = 0.5;\n this.castShadows = false;\n this.receiveShadows = false;\n break;\n default:\n this.scaleFactor = 0.3;\n this.castShadows = false;\n this.receiveShadows = false;\n break;\n }\n }\n\n /** Copies the two planet spheres used by the fog shader. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon asserts a two-sphere span and memcpy-copies it; JavaScript throws RangeError and copies the two vec4 records.\")\n SetPlanets(planets)\n {\n if (!planets || planets.length !== 2)\n {\n throw new RangeError(\"Tr2VolumetricsRenderer.SetPlanets requires exactly two spheres.\");\n }\n vec4.copy(this.#planets[0], planets[0]);\n vec4.copy(this.#planets[1], planets[1]);\n }\n\n /** Stores the sun angle consumed by later fog constant production. */\n @carbon.method\n @impl.implemented\n SetSunAngle(angle)\n {\n this.#sunAngle = angle;\n }\n\n /** Returns the wrapped 0..1 god-ray noise phase and the upload is not ported yet. */\n @impl.custom\n @impl.reason(\"Engines need Carbon's private CPU-produced phase without owning or recomputing its update policy.\")\n GetGodRayNoiseAnimation()\n {\n return this.#godRayNoiseAnimation;\n }\n\n /** Copies Carbon's accumulated double-precision fog-noise movement. */\n @impl.custom\n @impl.reason(\"Engines consume the CPU-produced movement but do not advance it independently.\")\n GetFogNoiseMovement(out)\n {\n out[0] = this.#fogNoiseMovement[0];\n out[1] = this.#fogNoiseMovement[1];\n out[2] = this.#fogNoiseMovement[2];\n return out;\n }\n\n /** Returns the scene-produced sun angle used by fog realization. */\n @impl.custom\n @impl.reason(\"Carbon stores this as private renderer state; the split needs an explicit read boundary.\")\n GetSunAngle()\n {\n return this.#sunAngle;\n }\n\n /** Copies one of the two scene-selected planet spheres. */\n @impl.custom\n @impl.reason(\"Carbon's physical fog pass reads private planet state; the engine executor receives it through this checked copy boundary.\")\n GetPlanet(index, out)\n {\n if (index !== 0 && index !== 1)\n {\n throw new RangeError(\"Tr2VolumetricsRenderer.GetPlanet index must be 0 or 1.\");\n }\n return vec4.copy(out, this.#planets[index]);\n }\n\n /**\n * Renders the froxel volume for every volumetric component in the registry.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's froxel compute and raymarch passes (Tr2VolumetricsRenderer.cpp:152-493) have no JS counterpart.\")\n RenderVolumetrics()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderVolumetrics: the froxel passes are unported.\");\n }\n\n /**\n * The neutral volumetric texture, used when nothing volumetric is in view.\n *\n * UNPORTED, AND THE BLOCKER IS THE POOL'S DESCRIPTION. Carbon borrows a 1x1\n * black texture seeded with `Tr2SubresourceData` and described by a\n * `Tr2BitmapDimensions` carrying a texture TYPE and a slice count - a 2D array\n * of four slices here, a 3D texture for fog. Our pool takes only\n * `{ width, height, format, gpuUsage }`, which can express neither, and its\n * `initialize` callback has no way to supply initial subresource bytes.\n *\n * Carbon's signature is restored (static, taking the pool) so the shape is\n * right when the pool grows a full description.\n *\n * @param {object} _gpuResourcePool The pool to borrow from.\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Tr2GpuResourcePool's description carries no texture type or slice count, and no initial subresource data, so a 2D array of four slices cannot be asked for.\")\n static GetEmptyVolumetricTexture(_gpuResourcePool)\n {\n throw new Error(\n \"Tr2VolumetricsRenderer.GetEmptyVolumetricTexture: needs a pool description \"\n + \"carrying texture type, slice count and initial data.\"\n );\n }\n\n /**\n * Renders the fog volume.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's fog passes (Tr2VolumetricsRenderer.cpp:494-554) have no JS counterpart.\")\n RenderFog()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderFog: the fog passes are unported.\");\n }\n\n /**\n * Renders the fog volume into a reflection map.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's reflection-map fog pass (Tr2VolumetricsRenderer.cpp:519-554) has no JS counterpart.\")\n RenderFogIntoReflectionMap()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderFogIntoReflectionMap: the fog passes are unported.\");\n }\n\n /**\n * The neutral froxel-fog texture, used when there is no fog.\n *\n * UNPORTED, AND THE BLOCKER IS THE POOL'S DESCRIPTION. Carbon borrows a 1x1\n * black texture seeded with `Tr2SubresourceData` and described by a\n * `Tr2BitmapDimensions` carrying a texture TYPE and a slice count - a 2D array\n * of four slices here, a 3D texture for fog. Our pool takes only\n * `{ width, height, format, gpuUsage }`, which can express neither, and its\n * `initialize` callback has no way to supply initial subresource bytes.\n *\n * Carbon's signature is restored (static, taking the pool) so the shape is\n * right when the pool grows a full description.\n *\n * @param {object} _gpuResourcePool The pool to borrow from.\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Tr2GpuResourcePool's description carries no texture type or initial subresource data, so a 3D texture cannot be asked for.\")\n static GetEmptyFogTexture(_gpuResourcePool)\n {\n throw new Error(\n \"Tr2VolumetricsRenderer.GetEmptyFogTexture: needs a pool description \"\n + \"carrying texture type and initial data.\"\n );\n }\n\n /**\n * Rebuilds the Mie environment map.\n *\n * UNPORTED. Carbon's 86-line body renders each cube face through the fog\n * effect (`Tr2VolumetricsRenderer.cpp`), which needs the same unported pass\n * machinery as the fog methods above.\n *\n * @returns {void} Never returns; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Needs the fog pass machinery, which is unported.\")\n UpdateFogEnvironmentMap()\n {\n throw new Error(\"Tr2VolumetricsRenderer.UpdateFogEnvironmentMap: the fog passes are unported.\");\n }\n\n /**\n * Publishes the Mie environment map under the name effects sample it by.\n *\n * Carbon takes no arguments here and registers on the global store\n * (`Tr2VolumetricsRenderer.cpp`, one line). The port had grown a\n * `renderContext` parameter that existed only to reach an executor.\n */\n @carbon.method\n @impl.implemented\n UpdateVariableStore()\n {\n Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSceneMieEnvironmentMap\", this.mieEnvironmentMap);\n }\n\n /**\n * Renders volumetric shadows for the registry's components.\n *\n * UNPORTED. Carbon's 31-line body walks the volumetric components and issues a\n * shadow pass per one, which needs the same unported pass machinery.\n *\n * @returns {void} Never returns; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Needs the volumetric pass machinery, which is unported.\")\n RenderShadows()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderShadows: the volumetric passes are unported.\");\n }\n\n static Tr2VolumerticQuality = Tr2VolumerticQuality;\n}\n"],"names":["FROXEL_FOG_COMPONENT","FROXEL_NOISE_DEPTH","FOG_COLOR_SCRATCH","vec3","create","_Tr2VolumetricsRender","_identity","Tr2VolumetricsRenderer","CjsModel","e","_init_quality","_init_extra_quality","_init_mieEnvironmentMap","_init_extra_mieEnvironmentMap","_init_blur","_init_extra_blur","_init_logBlending","_init_extra_logBlending","_init_gameBackClip","_init_extra_gameBackClip","_init_backgroundVisibility","_init_extra_backgroundVisibility","_init_thickness","_init_extra_thickness","_init_environmentDirectionality","_init_extra_environmentDirectionality","_init_lightDirectionality","_init_extra_lightDirectionality","_init_godRayNoiseAnimationSpeed","_init_extra_godRayNoiseAnimationSpeed","_init_fogNoiseMovementSpeed","_init_extra_fogNoiseMovementSpeed","_init_fogColor","_init_extra_fogColor","_init_godRayNoiseFrequency","_init_extra_godRayNoiseFrequency","_init_fogNoiseFrequency","_init_extra_fogNoiseFrequency","_init_godRayNoiseIntensity","_init_extra_godRayNoiseIntensity","_init_fogNoiseIntensity","_init_extra_fogNoiseIntensity","_init_logBlendingSmoothness","_init_extra_logBlendingSmoothness","_init_environmentIntensity","_init_extra_environmentIntensity","_init_castShadows","_init_extra_castShadows","_init_receiveShadows","_init_extra_receiveShadows","_init_scaleFactor","_init_extra_scaleFactor","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","edit","readwrite","int32","enum","read","objectRef","boolean","float32","color","float64","carbon","method","impl","adapted","reason","implemented","custom","notImplemented","quality","Tr2VolumerticQuality","High","mieEnvironmentMap","Tr2TextureReference","blur","logBlending","gameBackClip","backgroundVisibility","thickness","environmentDirectionality","lightDirectionality","godRayNoiseAnimationSpeed","fogNoiseMovementSpeed","fogColor","vec4","godRayNoiseFrequency","fogNoiseFrequency","godRayNoiseIntensity","fogNoiseIntensity","logBlendingSmoothness","environmentIntensity","castShadows","receiveShadows","scaleFactor","Float64Array","fromValues","constructor","store","Tr2VariableStore","GlobalStore","RegisterVariable","UpdateFogSettings","registry","updateContext","settings","Array","from","GetComponents","component","GetFroxelFogSettings","smoothness","value","logThickness","Math","log1p","Number","enabled","sort","a","b","priority","AccumulatePriorityAttribute","expm1","delta","GetDeltaT","floor","lane","HasFog","PopulatePerFrameData","out","Set","min","max","exp","SetIndex","SetQuality","Ultra","Medium","SetPlanets","planets","length","RangeError","copy","SetSunAngle","angle","GetGodRayNoiseAnimation","GetFogNoiseMovement","GetSunAngle","GetPlanet","index","RenderVolumetrics","Error","GetEmptyVolumetricTexture","_gpuResourcePool","RenderFog","RenderFogIntoReflectionMap","GetEmptyFogTexture","UpdateFogEnvironmentMap","UpdateVariableStore","RenderShadows"],"mappings":"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"}
@@ -7,17 +7,20 @@ import { edit, type, carbon, impl } from '#schema';
7
7
  import { Tr2ScalarFader as _Tr2ScalarFader } from '../curves/curve/Tr2ScalarFader.js';
8
8
  import { ImpactConfiguration } from '../generated/include/enums.js';
9
9
  import { Tr2Lod } from '#consts/trinity';
10
- import { EveDamageOverlay as _EveDamageOverlay } from './overlays/EveDamageOverlay.js';
10
+ import { EveDamageOverlay as _EveDamageOverlay, IMPACT_ARMOR_SIZE_MAX, IMPACT_ARMOR_SIZE_FACTOR } from './overlays/EveDamageOverlay.js';
11
+ import { ITr2GenericEmitterUpdateArguments as _ITr2GenericEmitterUp } from '../particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js';
12
+ import '../particle/ITr2GenericEmitter/ITr2GenericEmitter.js';
11
13
 
12
14
  let _initProto, _initClass, _init_name, _init_extra_name, _init_seed, _init_extra_seed, _init_display, _init_extra_display, _init_damageOverlay, _init_extra_damageOverlay, _init_configuration, _init_extra_configuration, _init_impactDataNextIdx, _init_extra_impactDataNextIdx, _init_armorImpactGoalCount, _init_extra_armorImpactGoalCount, _init_armorImpactParentSize, _init_extra_armorImpactParentSize, _init_shieldImpactColorFade, _init_extra_shieldImpactColorFade, _init_shieldImpactParentSize, _init_extra_shieldImpactParentSize, _init_shieldIsEllipsoid, _init_extra_shieldIsEllipsoid, _init_debugForceSpawnDebris, _init_extra_debugForceSpawnDebris, _init_renderPriority, _init_extra_renderPriority, _init_mesh, _init_extra_mesh, _init_dataTextureBlockID, _init_extra_dataTextureBlockID, _init_maxShieldImpacts, _init_extra_maxShieldImpacts, _init_overallShieldImpact, _init_extra_overallShieldImpact, _init_shieldHardening, _init_extra_shieldHardening, _init_shieldBoosting, _init_extra_shieldBoosting, _init_armorDamageShader, _init_extra_armorDamageShader, _init_armorImpactEmitter, _init_extra_armorImpactEmitter, _init_armorRepairing, _init_extra_armorRepairing, _init_armorHardening, _init_extra_armorHardening, _init_hullRepairing, _init_extra_hullRepairing, _init_hullDamageFlickerCurve, _init_extra_hullDamageFlickerCurve, _init_hullDamageFactor, _init_extra_hullDamageFactor, _init_hullImpactEmitter, _init_extra_hullImpactEmitter;
13
15
  const IMPACT_SHIELD_SIZE_MAX = 2000;
14
16
  const IMPACT_SHIELD_SIZE_MIN = 70;
15
17
  const IMPACT_SHIELD_FADEOUT = 1.5;
18
+ const IMPACT_ARMOR_PARTICLE_LOD_FACTOR = 400;
16
19
 
17
- /**
18
- * The damage presentation for one ship: shield, armour and hull impact
19
- * resources, the faders driving hardening and repair effects, and the
20
- * data-texture bookkeeping that feeds them.
20
+ /**
21
+ * The damage presentation for one ship: shield, armour and hull impact
22
+ * resources, the faders driving hardening and repair effects, and the
23
+ * data-texture bookkeeping that feeds them.
21
24
  */
22
25
  let _EveImpactOverlay;
23
26
  new class extends _identity {
@@ -29,7 +32,7 @@ new class extends _identity {
29
32
  } = _applyDecs2311(this, [type.define({
30
33
  className: "EveImpactOverlay",
31
34
  family: "eve/overlays/impact"
32
- })], [[[edit, edit.persist, type, type.string], 16, "name"], [[edit, edit.read, type, type.uint32], 16, "seed"], [[edit, edit.readwrite, type, type.boolean], 16, "display"], [[edit, edit.read, void 0, type.objectRef("EveDamageOverlay")], 16, "damageOverlay"], [[edit, edit.read, type, type.int32, void 0, type.enum("ImpactConfiguration")], 16, "configuration"], [[edit, edit.read, type, type.int32], 16, "impactDataNextIdx"], [[edit, edit.read, type, type.uint64], 16, "armorImpactGoalCount"], [[edit, edit.read, type, type.float32], 16, "armorImpactParentSize"], [[edit, edit.readwrite, type, type.float32], 16, "shieldImpactColorFade"], [[edit, edit.read, type, type.float32], 16, "shieldImpactParentSize"], [[edit, edit.readwrite, type, type.boolean], 16, "shieldIsEllipsoid"], [[edit, edit.readwrite, type, type.boolean], 16, "debugForceSpawnDebris"], [[edit, edit.read, type, type.float32], 16, "renderPriority"], [[edit, edit.persist, void 0, type.objectRef("Tr2MeshBase")], 16, "mesh"], [[edit, edit.read, type, type.int32], 16, "dataTextureBlockID"], [[edit, edit.read, type, type.uint32], 16, "maxShieldImpacts"], [[edit, edit.readwrite, type, type.float32], 16, "overallShieldImpact"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "shieldHardening"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "shieldBoosting"], [[edit, edit.persist, void 0, type.objectRef("Tr2Effect")], 16, "armorDamageShader"], [[edit, edit.persist, void 0, type.objectRef("Tr2GpuUniqueEmitter")], 16, "armorImpactEmitter"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "armorRepairing"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "armorHardening"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "hullRepairing"], [[edit, edit.persist, void 0, type.objectRef("TriPerlinCurve")], 16, "hullDamageFlickerCurve"], [[edit, edit.readwrite, type, type.float32], 16, "hullDamageFactor"], [[edit, edit.persist, void 0, type.objectRef("Tr2GpuUniqueEmitter")], 16, "hullImpactEmitter"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "Set"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetSeed"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetArmorImpactLifeTime"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetLastDamageState"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDataTextureOffset"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetImpactConfiguration"], [[carbon, carbon.method, impl, impl.adapted], 18, "HasShieldEllipsoid"], [[carbon, carbon.method, impl, impl.adapted], 18, "ToggleEffect"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDamageOverlay"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDamageState"], [[carbon, carbon.method, impl, impl.implemented], 18, "Clear"], [[carbon, carbon.method, impl, impl.adapted], 18, "CreateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetActivationStrength"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetBatches"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetArmorDamageShader"]], 0, void 0, CjsModel));
35
+ })], [[[edit, edit.persist, type, type.string], 16, "name"], [[edit, edit.read, type, type.uint32], 16, "seed"], [[edit, edit.readwrite, type, type.boolean], 16, "display"], [[edit, edit.read, void 0, type.objectRef("EveDamageOverlay")], 16, "damageOverlay"], [[edit, edit.read, type, type.int32, void 0, type.enum("ImpactConfiguration")], 16, "configuration"], [[edit, edit.read, type, type.int32], 16, "impactDataNextIdx"], [[edit, edit.read, type, type.uint64], 16, "armorImpactGoalCount"], [[edit, edit.read, type, type.float32], 16, "armorImpactParentSize"], [[edit, edit.readwrite, type, type.float32], 16, "shieldImpactColorFade"], [[edit, edit.read, type, type.float32], 16, "shieldImpactParentSize"], [[edit, edit.readwrite, type, type.boolean], 16, "shieldIsEllipsoid"], [[edit, edit.readwrite, type, type.boolean], 16, "debugForceSpawnDebris"], [[edit, edit.read, type, type.float32], 16, "renderPriority"], [[edit, edit.persist, void 0, type.objectRef("Tr2MeshBase")], 16, "mesh"], [[edit, edit.read, type, type.int32], 16, "dataTextureBlockID"], [[edit, edit.read, type, type.uint32], 16, "maxShieldImpacts"], [[edit, edit.readwrite, type, type.float32], 16, "overallShieldImpact"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "shieldHardening"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "shieldBoosting"], [[edit, edit.persist, void 0, type.objectRef("Tr2Effect")], 16, "armorDamageShader"], [[edit, edit.persist, void 0, type.objectRef("Tr2GpuUniqueEmitter")], 16, "armorImpactEmitter"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "armorRepairing"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "armorHardening"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "hullRepairing"], [[edit, edit.persist, void 0, type.objectRef("TriPerlinCurve")], 16, "hullDamageFlickerCurve"], [[edit, edit.readwrite, type, type.float32], 16, "hullDamageFactor"], [[edit, edit.persist, void 0, type.objectRef("Tr2GpuUniqueEmitter")], 16, "hullImpactEmitter"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "Set"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetSeed"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetArmorImpactLifeTime"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetLastDamageState"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDataTextureOffset"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetImpactConfiguration"], [[carbon, carbon.method, impl, impl.adapted], 18, "HasShieldEllipsoid"], [[carbon, carbon.method, impl, impl.adapted], 18, "ToggleEffect"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDamageOverlay"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDamageState"], [[carbon, carbon.method, impl, impl.implemented], 18, "Clear"], [[carbon, carbon.method, impl, impl.adapted], 18, "CreateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetActivationStrength"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "SpawnImpactDebris"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetBatches"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetArmorDamageShader"]], 0, void 0, CjsModel));
33
36
  }
34
37
  name = (_initProto(this), _init_name(this, ""));
35
38
  seed = (_init_extra_name(this), _init_seed(this, 0));
@@ -73,10 +76,10 @@ new class extends _identity {
73
76
  return true;
74
77
  }
75
78
 
76
- /**
77
- * Assigns the overlay's authored resources in one call - the hull flicker
78
- * curve, the armour and hull impact emitters, the armour damage shader and the
79
- * shield impact mesh - together with the shield shape flag.
79
+ /**
80
+ * Assigns the overlay's authored resources in one call - the hull flicker
81
+ * curve, the armour and hull impact emitters, the armour damage shader and the
82
+ * shield impact mesh - together with the shield shape flag.
80
83
  */
81
84
  Set(hullDamageFlickerCurve, armorDamageEmitter, hullImpactEmitter, armorDamageShader, shieldImpactMesh, shieldIsEllipsoid) {
82
85
  this.shieldIsEllipsoid = !!shieldIsEllipsoid;
@@ -89,9 +92,9 @@ new class extends _identity {
89
92
  return true;
90
93
  }
91
94
 
92
- /**
93
- * Sets the per-ship random seed that varies impact placement between otherwise
94
- * identical hulls.
95
+ /**
96
+ * Sets the per-ship random seed that varies impact placement between otherwise
97
+ * identical hulls.
95
98
  */
96
99
  SetSeed(seed) {
97
100
  this.seed = Number(seed) >>> 0;
@@ -99,10 +102,10 @@ new class extends _identity {
99
102
  return true;
100
103
  }
101
104
 
102
- /**
103
- * Records how many damage locators the owning object exposes; derived from the
104
- * owner at lifecycle time, so it is deliberately kept out of the values
105
- * interchange.
105
+ /**
106
+ * Records how many damage locators the owning object exposes; derived from the
107
+ * owner at lifecycle time, so it is deliberately kept out of the values
108
+ * interchange.
106
109
  */
107
110
  SetDamageLocatorCount(count) {
108
111
  this.#damageLocatorCount = Number(count) >>> 0;
@@ -110,9 +113,9 @@ new class extends _identity {
110
113
  return true;
111
114
  }
112
115
 
113
- /**
114
- * Number of damage locators the owning object exposes, as last recorded by
115
- * SetDamageLocatorCount.
116
+ /**
117
+ * Number of damage locators the owning object exposes, as last recorded by
118
+ * SetDamageLocatorCount.
116
119
  */
117
120
  GetDamageLocatorCount() {
118
121
  return this.#damageLocatorCount;
@@ -123,18 +126,18 @@ new class extends _identity {
123
126
  return this.damageOverlay.GetArmorImpactLifeTime();
124
127
  }
125
128
 
126
- /**
127
- * Copies the last recorded shield, armour and hull damage state.
128
- * @param {Array} out - caller-owned vec3; a fresh vector is allocated when omitted
129
- * @returns {Array} out
129
+ /**
130
+ * Copies the last recorded shield, armour and hull damage state.
131
+ * @param {Array} out - caller-owned vec3; a fresh vector is allocated when omitted
132
+ * @returns {Array} out
130
133
  */
131
134
  GetLastDamageState(out = vec3.create()) {
132
135
  return this.damageOverlay.GetLastDamageState(out);
133
136
  }
134
137
 
135
- /**
136
- * Row offset of this overlay's block in the shared impact data texture, or -1
137
- * while it has no block.
138
+ /**
139
+ * Row offset of this overlay's block in the shared impact data texture, or -1
140
+ * while it has no block.
138
141
  */
139
142
  GetDataTextureOffset() {
140
143
  return this.damageOverlay.GetDataTextureOffset();
@@ -145,18 +148,18 @@ new class extends _identity {
145
148
  return this.damageOverlay.GetImpactConfiguration();
146
149
  }
147
150
 
148
- /**
149
- * Whether the shield is presented as a generated ellipsoid rather than the
150
- * authored shield impact mesh.
151
+ /**
152
+ * Whether the shield is presented as a generated ellipsoid rather than the
153
+ * authored shield impact mesh.
151
154
  */
152
155
  HasShieldEllipsoid() {
153
156
  return this.shieldIsEllipsoid;
154
157
  }
155
158
 
156
- /**
157
- * Starts a fade on the named shield, armour or hull effect; the fade runs over a quarter of the requested duration.
158
- * @param {String} name - one of shieldboost, shieldhardening, armorhardening, armorrepair, hullrepair
159
- * @returns {Boolean} false when the name matches no fader
159
+ /**
160
+ * Starts a fade on the named shield, armour or hull effect; the fade runs over a quarter of the requested duration.
161
+ * @param {String} name - one of shieldboost, shieldhardening, armorhardening, armorrepair, hullrepair
162
+ * @returns {Boolean} false when the name matches no fader
160
163
  */
161
164
  ToggleEffect(name, on, duration) {
162
165
  if (name === "shieldboost" || name === "shieldhardening") {
@@ -305,12 +308,12 @@ new class extends _identity {
305
308
  return -1;
306
309
  }
307
310
 
308
- /**
309
- * Carbon CreateShieldImpact (EveImpactOverlay.cpp:596-673, private):
310
- * reuse a close-enough existing impact at the same locator (dot > 0.95),
311
- * else - at the cap - reuse the closest impact anywhere, else intersect
312
- * the shield ellipsoid and allocate a new record. Extracted from
313
- * CreateImpact so the surface matches Carbon's; behaviour unchanged.
311
+ /**
312
+ * Carbon CreateShieldImpact (EveImpactOverlay.cpp:596-673, private):
313
+ * reuse a close-enough existing impact at the same locator (dot > 0.95),
314
+ * else - at the cap - reuse the closest impact anywhere, else intersect
315
+ * the shield ellipsoid and allocate a new record. Extracted from
316
+ * CreateImpact so the surface matches Carbon's; behaviour unchanged.
314
317
  */
315
318
  #CreateShieldImpact(damageLocatorIndex, direction, lifeTime, size, intensity, parent) {
316
319
  {
@@ -373,12 +376,12 @@ new class extends _identity {
373
376
  }
374
377
  }
375
378
 
376
- /**
377
- * Carbon GetShieldImpactPosition (EveImpactOverlay.cpp:247-266, private):
378
- * ellipsoid shields intersect the impact ray with the shield ellipsoid in
379
- * object space; non-ellipsoid shields answer the locator position in
380
- * object space. Reads shieldIsEllipsoid off the instance exactly as
381
- * Carbon does; the module-level helper carries the math.
379
+ /**
380
+ * Carbon GetShieldImpactPosition (EveImpactOverlay.cpp:247-266, private):
381
+ * ellipsoid shields intersect the impact ray with the shield ellipsoid in
382
+ * object space; non-ellipsoid shields answer the locator position in
383
+ * object space. Reads shieldIsEllipsoid off the instance exactly as
384
+ * Carbon does; the module-level helper carries the math.
382
385
  */
383
386
  #GetShieldImpactPosition(parentInverseWorldTransform, damageLocatorPositionWorld, impactDirection, ellipsoidCenter, ellipsoidRadii, out = vec3.create()) {
384
387
  return getShieldImpactPosition(out, this.shieldIsEllipsoid, parentInverseWorldTransform, damageLocatorPositionWorld, impactDirection, ellipsoidCenter, ellipsoidRadii);
@@ -420,11 +423,60 @@ new class extends _identity {
420
423
  }
421
424
 
422
425
  /** Advances shield faders and publishes the shared damage block. */
423
- UpdateSyncronous(updateContext, _parent = null) {
426
+ UpdateSyncronous(updateContext, parent) {
427
+ // Carbon EveImpactOverlay.cpp:96-110: debris spawns BEFORE the activity
428
+ // early-out, so part overlays spawn even while the ship's is idle.
429
+ this.SpawnImpactDebris(updateContext, parent);
424
430
  const hasGeneralActivity = this.HasGeneralActivity();
425
431
  this.damageOverlay.UpdateBlockData(hasGeneralActivity ? updateContext.GetDataTextureManager() : null, hasGeneralActivity);
426
432
  }
427
433
 
434
+ /**
435
+ * Spawns debris particles once for every armour impact that requested them,
436
+ * on the ship's overlay and then on each part's, offsetting part locators by
437
+ * their range in the merged damage set (Carbon EveImpactOverlay.cpp:116-180).
438
+ * The hull-emitter test reads the SHIP's impact configuration even for a
439
+ * part overlay; ported as written.
440
+ */
441
+ SpawnImpactDebris(updateContext, parent) {
442
+ if (!_EveDamageOverlay.impactEffectEnabled) return;
443
+ const gpuParticleSystem = updateContext.GetGpuParticleSystem();
444
+ if (!gpuParticleSystem || !this.armorImpactEmitter) return;
445
+ const spawnFromOverlay = (overlay, mergedIndexOffset) => {
446
+ const armorImpactParentSize = overlay.GetArmorImpactParentSize();
447
+ if (armorImpactParentSize <= 0) return;
448
+ for (const impact of overlay.ArmorImpacts().values()) {
449
+ if (!impact.requestSpawnDebris) continue;
450
+ const locatorIndex = mergedIndexOffset + impact.damageLocatorIndex;
451
+ const impactPosWS = vec3.create();
452
+ parent.GetDamageLocatorPosition(locatorIndex, true, impactPosWS);
453
+ this.armorImpactEmitter.SetPosition(impactPosWS);
454
+ const impactDirWS = vec3.fromValues(0, 1, 0);
455
+ parent.GetDamageLocatorDirection(locatorIndex, true, impactDirWS);
456
+ this.armorImpactEmitter.SetDirection(impactDirWS);
457
+ const parentVelocityWS = vec3.create();
458
+ parent.GetWorldVelocity(parentVelocityWS);
459
+ const scale = impact.size * armorImpactParentSize / (IMPACT_ARMOR_SIZE_MAX / IMPACT_ARMOR_SIZE_FACTOR);
460
+ const rateModifier = Math.min(Math.max(overlay.GetRenderPriority() / IMPACT_ARMOR_PARTICLE_LOD_FACTOR, 0), 1);
461
+ const args = new _ITr2GenericEmitterUp();
462
+ args.time = updateContext.GetTime();
463
+ args.system = gpuParticleSystem;
464
+ vec3.copy(args.originShift, updateContext.GetOriginShift());
465
+ this.armorImpactEmitter.SpawnOnce(args, parentVelocityWS, scale, rateModifier);
466
+ impact.requestSpawnDebris = false;
467
+ if (this.hullImpactEmitter && this.damageOverlay.GetImpactConfiguration() === ImpactConfiguration.IMPACT_HULL) {
468
+ this.hullImpactEmitter.SetPosition(impactPosWS);
469
+ this.hullImpactEmitter.SetDirection(impactDirWS);
470
+ this.hullImpactEmitter.SpawnOnce(args, parentVelocityWS, scale, rateModifier);
471
+ }
472
+ }
473
+ };
474
+ spawnFromOverlay(this.damageOverlay, 0);
475
+ for (const [overlay, start] of parent.CollectPartDamageOverlays([])) {
476
+ spawnFromOverlay(overlay, start);
477
+ }
478
+ }
479
+
428
480
  /** Ages shield impacts and rebuilds the shared damage rows. */
429
481
  UpdateAsyncronous(updateContext, parent) {
430
482
  const delta = updateContext.GetDeltaT();
@@ -496,9 +548,9 @@ new class extends _identity {
496
548
  this.damageOverlay.SetHullRepairing(this.hullRepairing);
497
549
  }
498
550
 
499
- /**
500
- * Maps an effect name to the fader that drives it, or null when the name is
501
- * unknown.
551
+ /**
552
+ * Maps an effect name to the fader that drives it, or null when the name is
553
+ * unknown.
502
554
  */
503
555
  }];
504
556
  #effectFader(overlay, name) {