@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +82 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { imageMimeType, capitalizeFormatId, rawVariant, pngChannels, identifyImageBytes, foreignImageRecord } from '../../../format/imageSignatures.js';
|
|
2
|
+
export { isPNG } from '../../../format/imageSignatures.js';
|
|
3
|
+
import { asUint8Array, readU32BE } from '#utils/bytes';
|
|
4
|
+
import { decompressBytes } from '#utils/compression';
|
|
2
5
|
|
|
3
6
|
const OUTPUT_IMAGE = "image";
|
|
4
7
|
const OUTPUT_RGBA = "rgba";
|
|
@@ -16,13 +19,6 @@ const DEBUG_OUTPUTS = Object.freeze({
|
|
|
16
19
|
tga: "tgaJson",
|
|
17
20
|
dds: "ddsJson"
|
|
18
21
|
});
|
|
19
|
-
const IMAGE_MIME_TYPES = Object.freeze({
|
|
20
|
-
png: "image/png",
|
|
21
|
-
jpeg: "image/jpeg",
|
|
22
|
-
jpg: "image/jpeg",
|
|
23
|
-
tga: "image/x-tga",
|
|
24
|
-
dds: "image/vnd-ms.dds"
|
|
25
|
-
});
|
|
26
22
|
|
|
27
23
|
/**
|
|
28
24
|
* Normalizes reader options against their supported defaults for the PNG format
|
|
@@ -62,7 +58,7 @@ function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
|
|
|
62
58
|
const detected = inspectBytes(bytes);
|
|
63
59
|
const sourceFormat = expectedType || values.inputType || detected.sourceFormat;
|
|
64
60
|
if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType) {
|
|
65
|
-
throw new TypeError(`CjsFormat${
|
|
61
|
+
throw new TypeError(`CjsFormat${capitalizeFormatId(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);
|
|
66
62
|
}
|
|
67
63
|
return {
|
|
68
64
|
payloadType: sourceFormat === "dds" ? "texture" : "image",
|
|
@@ -158,73 +154,13 @@ async function readWithValuesAsync(input, values = DEFAULT_VALUES, expectedType
|
|
|
158
154
|
return readWithValues(bytes, values, expectedType);
|
|
159
155
|
}
|
|
160
156
|
|
|
161
|
-
/** Converts a parsed payload into a JSON-safe value for the PNG format reader. */
|
|
162
|
-
function toJsonValue(value) {
|
|
163
|
-
if (value instanceof Uint8Array) {
|
|
164
|
-
return {
|
|
165
|
-
byteLength: value.byteLength
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
if (Array.isArray(value)) return value.map(toJsonValue);
|
|
169
|
-
if (value && typeof value === "object") {
|
|
170
|
-
const output = {};
|
|
171
|
-
for (const [key, entry] of Object.entries(value)) output[key] = toJsonValue(entry);
|
|
172
|
-
return output;
|
|
173
|
-
}
|
|
174
|
-
return value;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
157
|
/**
|
|
178
158
|
* Inspects the supplied bytes without decoding their payload for the PNG format
|
|
179
159
|
* reader.
|
|
180
160
|
*/
|
|
181
161
|
function inspectBytes(bytes) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
if (isDDS(bytes)) return inspectDDS(bytes);
|
|
185
|
-
if (isTGA(bytes)) return inspectTGA(bytes);
|
|
186
|
-
return {
|
|
187
|
-
sourceFormat: "",
|
|
188
|
-
width: 0,
|
|
189
|
-
height: 0
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Reports whether the supplied bytes begin with a PNG signature for the PNG
|
|
195
|
-
* format reader.
|
|
196
|
-
*/
|
|
197
|
-
function isPNG(bytes) {
|
|
198
|
-
return bytes.byteLength >= 24 && bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 && bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Reports whether the supplied bytes begin with a JPEG signature for the PNG
|
|
203
|
-
* format reader.
|
|
204
|
-
*/
|
|
205
|
-
function isJPEG(bytes) {
|
|
206
|
-
return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Reports whether the supplied bytes begin with a DDS signature for the PNG
|
|
211
|
-
* format reader.
|
|
212
|
-
*/
|
|
213
|
-
function isDDS(bytes) {
|
|
214
|
-
return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Reports whether the supplied bytes have a supported TGA header for the PNG
|
|
219
|
-
* format reader.
|
|
220
|
-
*/
|
|
221
|
-
function isTGA(bytes) {
|
|
222
|
-
if (bytes.byteLength < 18) return false;
|
|
223
|
-
const imageType = bytes[2],
|
|
224
|
-
width = readU16LE(bytes, 12),
|
|
225
|
-
height = readU16LE(bytes, 14),
|
|
226
|
-
bpp = bytes[16];
|
|
227
|
-
return width > 0 && height > 0 && [1, 2, 3, 9, 10, 11].includes(imageType) && [8, 16, 24, 32].includes(bpp);
|
|
162
|
+
const sourceFormat = identifyImageBytes(bytes);
|
|
163
|
+
return sourceFormat === "png" ? inspectPNG(bytes) : foreignImageRecord(sourceFormat);
|
|
228
164
|
}
|
|
229
165
|
function inspectPNG(bytes) {
|
|
230
166
|
const colorType = bytes[25],
|
|
@@ -257,7 +193,7 @@ async function decodePngToRgba(bytes, metadata) {
|
|
|
257
193
|
metadata.__pngTransparentGray = metadata.bitDepth === 16 ? chunks.trns[0] << 8 | chunks.trns[1] : chunks.trns[1];
|
|
258
194
|
}
|
|
259
195
|
const compressed = concatBytes(chunks.idat);
|
|
260
|
-
const inflated =
|
|
196
|
+
const inflated = await decompressBytes(compressed, "deflate");
|
|
261
197
|
const channels = pngChannels(metadata.colorType);
|
|
262
198
|
const rgba = new Uint8Array(metadata.width * metadata.height * 4);
|
|
263
199
|
if (metadata.interlaceMethod === 0) {
|
|
@@ -290,18 +226,6 @@ async function decodePngToRgba(bytes, metadata) {
|
|
|
290
226
|
data: rgba
|
|
291
227
|
};
|
|
292
228
|
}
|
|
293
|
-
function rawVariant(metadata) {
|
|
294
|
-
return {
|
|
295
|
-
kind: "raw",
|
|
296
|
-
payloadType: "raw",
|
|
297
|
-
codec: metadata.sourceFormat,
|
|
298
|
-
mimeType: imageMimeType(metadata.sourceFormat),
|
|
299
|
-
supported: true
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
function imageMimeType(sourceFormat) {
|
|
303
|
-
return IMAGE_MIME_TYPES[sourceFormat] || "application/octet-stream";
|
|
304
|
-
}
|
|
305
229
|
function pngRgbaSupport(metadata) {
|
|
306
230
|
if (metadata.idatChunkCount < 1 || metadata.idatBytes < 1) {
|
|
307
231
|
return {
|
|
@@ -340,7 +264,10 @@ function pngRgbaSupport(metadata) {
|
|
|
340
264
|
reason: "PNG compression/filter methods are unsupported by the RGBA decoder."
|
|
341
265
|
};
|
|
342
266
|
}
|
|
343
|
-
|
|
267
|
+
// `Blob` is deliberately not required: the shared `decompressBytes` feeds the
|
|
268
|
+
// bytes straight to `Response`, so an environment with DecompressionStream and
|
|
269
|
+
// Response but no Blob can decode and used to be told it could not.
|
|
270
|
+
if (typeof DecompressionStream !== "function" || typeof Response !== "function") {
|
|
344
271
|
return {
|
|
345
272
|
supported: false,
|
|
346
273
|
reason: "PNG async RGBA decode requires platform DecompressionStream support."
|
|
@@ -554,75 +481,9 @@ function throwPngUnsupported(metadata, message) {
|
|
|
554
481
|
error.sourceFormat = metadata.sourceFormat;
|
|
555
482
|
throw error;
|
|
556
483
|
}
|
|
557
|
-
function inspectJPEG(bytes) {
|
|
558
|
-
let offset = 2;
|
|
559
|
-
while (offset + 9 < bytes.byteLength) {
|
|
560
|
-
if (bytes[offset] !== 0xff) {
|
|
561
|
-
offset++;
|
|
562
|
-
continue;
|
|
563
|
-
}
|
|
564
|
-
const marker = bytes[offset + 1],
|
|
565
|
-
length = readU16BE(bytes, offset + 2);
|
|
566
|
-
if ([0xc0, 0xc1, 0xc2, 0xc3].includes(marker)) {
|
|
567
|
-
return {
|
|
568
|
-
sourceFormat: "jpeg",
|
|
569
|
-
width: readU16BE(bytes, offset + 7),
|
|
570
|
-
height: readU16BE(bytes, offset + 5),
|
|
571
|
-
channels: bytes[offset + 9],
|
|
572
|
-
marker,
|
|
573
|
-
pixelFormat: "jpeg-ycbcr",
|
|
574
|
-
isCompressed: true
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
|
-
offset += Math.max(length + 2, 2);
|
|
578
|
-
}
|
|
579
|
-
return {
|
|
580
|
-
sourceFormat: "jpeg",
|
|
581
|
-
width: 0,
|
|
582
|
-
height: 0,
|
|
583
|
-
channels: 0,
|
|
584
|
-
pixelFormat: "jpeg",
|
|
585
|
-
isCompressed: true
|
|
586
|
-
};
|
|
587
|
-
}
|
|
588
|
-
function inspectDDS(bytes) {
|
|
589
|
-
const fourCc = String.fromCharCode(bytes[84], bytes[85], bytes[86], bytes[87]).replace(/\0+$/u, "");
|
|
590
|
-
return {
|
|
591
|
-
sourceFormat: "dds",
|
|
592
|
-
width: readU32LE(bytes, 16),
|
|
593
|
-
height: readU32LE(bytes, 12),
|
|
594
|
-
mipCount: Math.max(readU32LE(bytes, 28), 1),
|
|
595
|
-
fourCc,
|
|
596
|
-
textureFormat: fourCc || "dds-legacy",
|
|
597
|
-
isCompressed: !!fourCc,
|
|
598
|
-
hasMipMaps: readU32LE(bytes, 28) > 1
|
|
599
|
-
};
|
|
600
|
-
}
|
|
601
|
-
function inspectTGA(bytes) {
|
|
602
|
-
return {
|
|
603
|
-
sourceFormat: "tga",
|
|
604
|
-
width: readU16LE(bytes, 12),
|
|
605
|
-
height: readU16LE(bytes, 14),
|
|
606
|
-
channels: Math.max(bytes[16] / 8, 1),
|
|
607
|
-
imageType: bytes[2],
|
|
608
|
-
pixelFormat: `tga-${bytes[16]}`,
|
|
609
|
-
isCompressed: [9, 10, 11].includes(bytes[2])
|
|
610
|
-
};
|
|
611
|
-
}
|
|
612
|
-
function pngChannels(colorType) {
|
|
613
|
-
if (colorType === 0) return 1;
|
|
614
|
-
if (colorType === 2) return 3;
|
|
615
|
-
if (colorType === 3) return 1;
|
|
616
|
-
if (colorType === 4) return 2;
|
|
617
|
-
if (colorType === 6) return 4;
|
|
618
|
-
return 0;
|
|
619
|
-
}
|
|
620
484
|
function readI32BE(bytes, offset) {
|
|
621
485
|
return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getInt32(0, false);
|
|
622
486
|
}
|
|
623
|
-
function capitalize(value) {
|
|
624
|
-
return value ? value[0].toUpperCase() + value.slice(1) : "Image";
|
|
625
|
-
}
|
|
626
487
|
|
|
627
|
-
export { DEFAULT_VALUES, OUTPUT_IMAGE, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_RGBA, inspectBytes, inspectWithValues,
|
|
488
|
+
export { DEFAULT_VALUES, OUTPUT_IMAGE, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_RGBA, inspectBytes, inspectWithValues, normalizeEmit, normalizeInputType, normalizeValues, probeSupportWithValues, readWithValues, readWithValuesAsync };
|
|
628
489
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/png/core/helpers.js"],"sourcesContent":["import { asUint8Array, readU16BE, readU16LE, readU32BE, readU32LE } from \"#utils/bytes\";\n\nexport const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_TEXTURE = \"texture\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n png: \"pngJson\",\n jpeg: \"jpegJson\",\n jpg: \"jpegJson\",\n tga: \"tgaJson\",\n dds: \"ddsJson\"\n});\n\nconst IMAGE_MIME_TYPES = Object.freeze({\n png: \"image/png\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n tga: \"image/x-tga\",\n dds: \"image/vnd-ms.dds\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the PNG format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsImageFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\n/** Normalizes the requested input representation for the PNG format reader. */\nexport function normalizeInputType(inputType)\n{\n if (!inputType) return \"\";\n const value = String(inputType).replace(/^\\./u, \"\").toLowerCase();\n return value === \"jpg\" ? \"jpeg\" : value;\n}\n\n/** Normalizes the requested output representation for the PNG format reader. */\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the PNG format reader. */\r/** Inspects input using normalized format options for the PNG format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Image input\");\n const detected = inspectBytes(bytes);\n const sourceFormat = expectedType || values.inputType || detected.sourceFormat;\n\n if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsFormat${capitalize(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);\n }\n\n return {\n payloadType: sourceFormat === \"dds\" ? \"texture\" : \"image\",\n mediaTypes: sourceFormat === \"dds\" ? [ \"texture\", \"image\" ] : [ \"image\" ],\n sourceFormat,\n byteLength: bytes.byteLength,\n ...detected\n };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the PNG\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const pngSupport = metadata.sourceFormat === \"png\" ? pngRgbaSupport(metadata) : null;\n const variants = [\n {\n kind: \"rgba\",\n payloadType: \"rgba\",\n codec: \"rgba8unorm\",\n supported: pngSupport?.supported === true,\n reason: pngSupport?.reason || `${metadata.sourceFormat.toUpperCase()} RGBA decode is not implemented yet.`,\n meta: { async: true }\n },\n rawVariant(metadata)\n ];\n\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (variants.some((variant) => variant.kind === \"rgba\" && variant.supported) ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferredOutput: variants.find(v => v.supported)?.kind || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized image format.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the PNG format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Image input\");\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return metadata;\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\n/**\n * Reads input asynchronously using normalized format options for the PNG format\n * reader.\n */\nexport async function readWithValuesAsync(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Image input\");\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW || values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return readWithValues(bytes, values, expectedType);\n }\n\n if ((values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE) && metadata.sourceFormat === \"png\")\n {\n return decodePngToRgba(bytes, metadata);\n }\n\n return readWithValues(bytes, values, expectedType);\n}\n\n/** Converts a parsed payload into a JSON-safe value for the PNG format reader. */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\n/**\n * Inspects the supplied bytes without decoding their payload for the PNG format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isPNG(bytes)) return inspectPNG(bytes);\n if (isJPEG(bytes)) return inspectJPEG(bytes);\n if (isDDS(bytes)) return inspectDDS(bytes);\n if (isTGA(bytes)) return inspectTGA(bytes);\n return { sourceFormat: \"\", width: 0, height: 0 };\n}\n\n/**\n * Reports whether the supplied bytes begin with a PNG signature for the PNG\n * format reader.\n */\nexport function isPNG(bytes)\n{\n return bytes.byteLength >= 24 &&\n bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 &&\n bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;\n}\n\n/**\n * Reports whether the supplied bytes begin with a JPEG signature for the PNG\n * format reader.\n */\nexport function isJPEG(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;\n}\n\n/**\n * Reports whether the supplied bytes begin with a DDS signature for the PNG\n * format reader.\n */\nexport function isDDS(bytes)\n{\n return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;\n}\n\n/**\n * Reports whether the supplied bytes have a supported TGA header for the PNG\n * format reader.\n */\nexport function isTGA(bytes)\n{\n if (bytes.byteLength < 18) return false;\n const imageType = bytes[2], width = readU16LE(bytes, 12), height = readU16LE(bytes, 14), bpp = bytes[16];\n return width > 0 && height > 0 && [ 1, 2, 3, 9, 10, 11 ].includes(imageType) && [ 8, 16, 24, 32 ].includes(bpp);\n}\n\nfunction inspectPNG(bytes)\n{\n const colorType = bytes[25], bitDepth = bytes[24];\n const chunks = readPngChunkSummary(bytes);\n return {\n sourceFormat: \"png\",\n width: readU32BE(bytes, 16),\n height: readU32BE(bytes, 20),\n bitDepth,\n colorType,\n channels: pngChannels(colorType),\n pixelFormat: `png-${bitDepth}-${colorType}`,\n isCompressed: false,\n compressionMethod: bytes[26],\n filterMethod: bytes[27],\n interlaceMethod: bytes[28],\n ...chunks\n };\n}\n\nasync function decodePngToRgba(bytes, metadata)\n{\n const support = pngRgbaSupport(metadata);\n if (!support.supported)\n {\n throwPngUnsupported(metadata, support.reason);\n }\n\n const chunks = readPngChunks(bytes);\n metadata.__pngPalette = chunks.palette;\n metadata.__pngTransparency = chunks.trns;\n if (chunks.trns && metadata.colorType === 0)\n {\n metadata.__pngTransparentGray = metadata.bitDepth === 16\n ? (chunks.trns[0] << 8) | chunks.trns[1]\n : chunks.trns[1];\n }\n const compressed = concatBytes(chunks.idat);\n const inflated = new Uint8Array(await new Response(\n new Blob([ compressed ]).stream().pipeThrough(new DecompressionStream(\"deflate\"))\n ).arrayBuffer());\n const channels = pngChannels(metadata.colorType);\n const rgba = new Uint8Array(metadata.width * metadata.height * 4);\n if (metadata.interlaceMethod === 0)\n {\n const bytesPerSample = metadata.bitDepth >= 8 ? Math.ceil(metadata.bitDepth / 8) : 1;\n const rowBytes = Math.ceil(metadata.width * channels * metadata.bitDepth / 8);\n const filterBytesPerPixel = Math.max(1, channels * bytesPerSample);\n const expectedLength = metadata.height * (rowBytes + 1);\n if (inflated.byteLength < expectedLength)\n {\n throwPngUnsupported(metadata, \"PNG image data is truncated.\");\n }\n\n const rows = unfilterPngRows(inflated, metadata.height, rowBytes, filterBytesPerPixel);\n for (let y = 0; y < metadata.height; y++)\n {\n decodePngRow(rows, y * rowBytes, rgba, y * metadata.width * 4, metadata, metadata.width);\n }\n }\n else\n {\n decodeAdam7Rows(inflated, rgba, metadata);\n }\n\n return {\n payloadType: OUTPUT_RGBA,\n sourceFormat: \"png\",\n mimeType: \"image/png\",\n width: metadata.width,\n height: metadata.height,\n pixelFormat: \"rgba8unorm\",\n strideBytes: metadata.width * 4,\n origin: \"top-left\",\n colorSpace: chunks.srgb ? \"srgb\" : \"unknown\",\n alphaMode: [ 4, 6 ].includes(metadata.colorType) || chunks.trns ? \"straight\" : \"opaque\",\n metadata,\n data: rgba\n };\n}\n\nfunction rawVariant(metadata)\n{\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n supported: true,\n };\n}\n\nfunction imageMimeType(sourceFormat)\n{\n return IMAGE_MIME_TYPES[sourceFormat] || \"application/octet-stream\";\n}\n\nfunction pngRgbaSupport(metadata)\n{\n if (metadata.idatChunkCount < 1 || metadata.idatBytes < 1)\n {\n return { supported: false, reason: \"PNG has no IDAT image data for RGBA decode.\" };\n }\n if (!metadata.hasIend)\n {\n return { supported: false, reason: \"PNG stream has no complete IEND chunk.\" };\n }\n const depths = {\n 0: [ 1, 2, 4, 8, 16 ],\n 2: [ 8, 16 ],\n 3: [ 1, 2, 4, 8 ],\n 4: [ 8, 16 ],\n 6: [ 8, 16 ]\n };\n if (!Object.hasOwn(depths, metadata.colorType) || !depths[metadata.colorType].includes(metadata.bitDepth))\n {\n return { supported: false, reason: \"PNG color type and bit depth are unsupported by the RGBA decoder.\" };\n }\n if (![ 0, 1 ].includes(metadata.interlaceMethod))\n {\n return { supported: false, reason: \"PNG interlace method is unsupported by the RGBA decoder.\" };\n }\n if (metadata.compressionMethod !== 0 || metadata.filterMethod !== 0)\n {\n return { supported: false, reason: \"PNG compression/filter methods are unsupported by the RGBA decoder.\" };\n }\n if (typeof DecompressionStream !== \"function\" || typeof Blob !== \"function\" || typeof Response !== \"function\")\n {\n return { supported: false, reason: \"PNG async RGBA decode requires platform DecompressionStream support.\" };\n }\n return { supported: true, reason: \"Use readAsync/readWithValuesAsync for platform deflate decode.\" };\n}\n\nfunction readPngChunks(bytes)\n{\n const chunks = { idat: [], palette: null, trns: null, srgb: false };\n let offset = 8;\n while (offset + 12 <= bytes.byteLength)\n {\n const length = readU32BE(bytes, offset);\n const type = String.fromCharCode(bytes[offset + 4], bytes[offset + 5], bytes[offset + 6], bytes[offset + 7]);\n const start = offset + 8;\n const end = start + length;\n if (end + 4 > bytes.byteLength) break;\n const data = bytes.subarray(start, end);\n if (type === \"IDAT\") chunks.idat.push(data);\n else if (type === \"PLTE\") chunks.palette = data;\n else if (type === \"tRNS\") chunks.trns = data;\n else if (type === \"sRGB\") chunks.srgb = true;\n offset = end + 4;\n if (type === \"IEND\") break;\n }\n return chunks;\n}\n\nfunction readPngChunkSummary(bytes)\n{\n let cursor = 8;\n let chunkCount = 0;\n let idatChunkCount = 0;\n let idatBytes = 0;\n let hasPalette = false;\n let hasTransparency = false;\n let hasSrgb = false;\n let hasIend = false;\n let chunksComplete = true;\n let pngOffset = null;\n let physicalPixelDimensions = null;\n while (cursor + 12 <= bytes.byteLength)\n {\n const length = readU32BE(bytes, cursor);\n const type = String.fromCharCode(bytes[cursor + 4], bytes[cursor + 5], bytes[cursor + 6], bytes[cursor + 7]);\n const end = cursor + 8 + length;\n if (end + 4 > bytes.byteLength)\n {\n chunksComplete = false;\n break;\n }\n chunkCount++;\n if (type === \"IDAT\")\n {\n idatChunkCount++;\n idatBytes += length;\n }\n else if (type === \"PLTE\") hasPalette = true;\n else if (type === \"tRNS\") hasTransparency = true;\n else if (type === \"sRGB\") hasSrgb = true;\n else if (type === \"oFFs\" && length === 9)\n {\n pngOffset = {\n x: readI32BE(bytes, cursor + 8),\n y: readI32BE(bytes, cursor + 12),\n unit: bytes[cursor + 16]\n };\n }\n else if (type === \"pHYs\" && length === 9)\n {\n physicalPixelDimensions = {\n x: readU32BE(bytes, cursor + 8),\n y: readU32BE(bytes, cursor + 12),\n unit: bytes[cursor + 16]\n };\n }\n else if (type === \"IEND\") hasIend = true;\n cursor = end + 4;\n if (type === \"IEND\") break;\n }\n return {\n chunkCount,\n idatChunkCount,\n idatBytes,\n hasPalette,\n hasTransparency,\n hasSrgb,\n hasIend,\n chunksComplete,\n offset: pngOffset,\n physicalPixelDimensions\n };\n}\n\nfunction concatBytes(chunks)\n{\n const length = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);\n const output = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks)\n {\n output.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return output;\n}\n\nfunction unfilterPngRows(inflated, height, rowBytes, bytesPerPixel)\n{\n const rows = new Uint8Array(height * rowBytes);\n let inputOffset = 0;\n for (let y = 0; y < height; y++)\n {\n const filter = inflated[inputOffset++];\n const rowOffset = y * rowBytes;\n const previousOffset = (y - 1) * rowBytes;\n for (let x = 0; x < rowBytes; x++)\n {\n const raw = inflated[inputOffset++];\n const left = x >= bytesPerPixel ? rows[rowOffset + x - bytesPerPixel] : 0;\n const up = y > 0 ? rows[previousOffset + x] : 0;\n const upLeft = y > 0 && x >= bytesPerPixel ? rows[previousOffset + x - bytesPerPixel] : 0;\n let value = raw;\n if (filter === 1) value = raw + left;\n else if (filter === 2) value = raw + up;\n else if (filter === 3) value = raw + Math.floor((left + up) / 2);\n else if (filter === 4) value = raw + paeth(left, up, upLeft);\n else if (filter !== 0) throw new Error(`png: unsupported filter type ${filter}`);\n rows[rowOffset + x] = value & 0xff;\n }\n }\n return rows;\n}\n\nfunction decodePngRow(rows, rowOffset, output, outputOffset, metadata, rowWidth, xStep = 1)\n{\n const channels = pngChannels(metadata.colorType);\n const bitDepth = metadata.bitDepth;\n for (let x = 0; x < rowWidth; x++)\n {\n const samples = [];\n for (let channel = 0; channel < channels; channel++)\n {\n samples.push(readPngSample(rows, rowOffset, x * channels + channel, bitDepth));\n }\n const out = outputOffset + x * xStep * 4;\n if (metadata.colorType === 0)\n {\n const gray = scalePngSample(samples[0], bitDepth);\n output[out] = gray;\n output[out + 1] = gray;\n output[out + 2] = gray;\n output[out + 3] = pngTransparentGray(metadata, samples[0]) ? 0 : 255;\n }\n else if (metadata.colorType === 2)\n {\n output[out] = scalePngSample(samples[0], bitDepth);\n output[out + 1] = scalePngSample(samples[1], bitDepth);\n output[out + 2] = scalePngSample(samples[2], bitDepth);\n output[out + 3] = 255;\n }\n else if (metadata.colorType === 3)\n {\n const index = samples[0];\n const palette = metadata.__pngPalette || [];\n output[out] = palette[index * 3] || 0;\n output[out + 1] = palette[index * 3 + 1] || 0;\n output[out + 2] = palette[index * 3 + 2] || 0;\n output[out + 3] = metadata.__pngTransparency?.[index] ?? 255;\n }\n else if (metadata.colorType === 4)\n {\n const gray = scalePngSample(samples[0], bitDepth);\n output[out] = gray;\n output[out + 1] = gray;\n output[out + 2] = gray;\n output[out + 3] = scalePngSample(samples[1], bitDepth);\n }\n else\n {\n output[out] = scalePngSample(samples[0], bitDepth);\n output[out + 1] = scalePngSample(samples[1], bitDepth);\n output[out + 2] = scalePngSample(samples[2], bitDepth);\n output[out + 3] = scalePngSample(samples[3], bitDepth);\n }\n }\n}\n\nfunction decodeAdam7Rows(inflated, output, metadata)\n{\n const passes = [\n [ 0, 0, 8, 8 ],\n [ 4, 0, 8, 8 ],\n [ 0, 4, 4, 8 ],\n [ 2, 0, 4, 4 ],\n [ 0, 2, 2, 4 ],\n [ 1, 0, 2, 2 ],\n [ 0, 1, 1, 2 ]\n ];\n const channels = pngChannels(metadata.colorType);\n const bytesPerSample = metadata.bitDepth >= 8 ? Math.ceil(metadata.bitDepth / 8) : 1;\n const filterBytesPerPixel = Math.max(1, channels * bytesPerSample);\n let offset = 0;\n\n for (const [ xStart, yStart, xStep, yStep ] of passes)\n {\n const passWidth = Math.max(0, Math.ceil((metadata.width - xStart) / xStep));\n const passHeight = Math.max(0, Math.ceil((metadata.height - yStart) / yStep));\n if (passWidth === 0 || passHeight === 0) continue;\n\n const rowBytes = Math.ceil(passWidth * channels * metadata.bitDepth / 8);\n const expectedLength = passHeight * (rowBytes + 1);\n if (offset + expectedLength > inflated.byteLength)\n {\n throwPngUnsupported(metadata, \"PNG Adam7 image data is truncated.\");\n }\n\n const rows = unfilterPngRows(inflated.subarray(offset, offset + expectedLength), passHeight, rowBytes, filterBytesPerPixel);\n for (let y = 0; y < passHeight; y++)\n {\n const destinationY = yStart + y * yStep;\n const destinationX = xStart;\n const outputOffset = (destinationY * metadata.width + destinationX) * 4;\n decodePngRow(rows, y * rowBytes, output, outputOffset, metadata, passWidth, xStep);\n }\n offset += expectedLength;\n }\n\n if (offset !== inflated.byteLength)\n {\n throwPngUnsupported(metadata, \"PNG Adam7 image data has trailing bytes.\");\n }\n}\n\nfunction readPngSample(rows, rowOffset, sampleIndex, bitDepth)\n{\n if (bitDepth >= 8)\n {\n const bytesPerSample = bitDepth / 8;\n const offset = rowOffset + sampleIndex * bytesPerSample;\n return bytesPerSample === 1 ? rows[offset] : (rows[offset] << 8) | rows[offset + 1];\n }\n const perByte = 8 / bitDepth;\n const offset = rowOffset + Math.floor(sampleIndex / perByte);\n const shift = (perByte - 1 - (sampleIndex % perByte)) * bitDepth;\n return (rows[offset] >>> shift) & ((1 << bitDepth) - 1);\n}\n\nfunction scalePngSample(value, bitDepth)\n{\n const max = (1 << Math.min(bitDepth, 16)) - 1;\n return Math.round(value * 255 / max);\n}\n\nfunction pngTransparentGray(metadata, value)\n{\n return metadata.__pngTransparentGray !== undefined && value === metadata.__pngTransparentGray;\n}\n\nfunction paeth(a, b, c)\n{\n const p = a + b - c;\n const pa = Math.abs(p - a), pb = Math.abs(p - b), pc = Math.abs(p - c);\n return pa <= pb && pa <= pc ? a : pb <= pc ? b : c;\n}\n\nfunction throwPngUnsupported(metadata, message)\n{\n const error = new Error(`png: ${message}`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n}\n\nfunction inspectJPEG(bytes)\n{\n let offset = 2;\n while (offset + 9 < bytes.byteLength)\n {\n if (bytes[offset] !== 0xff)\n {\n offset++;\n continue;\n }\n const marker = bytes[offset + 1], length = readU16BE(bytes, offset + 2);\n if ([ 0xc0, 0xc1, 0xc2, 0xc3 ].includes(marker))\n {\n return {\n sourceFormat: \"jpeg\",\n width: readU16BE(bytes, offset + 7),\n height: readU16BE(bytes, offset + 5),\n channels: bytes[offset + 9],\n marker,\n pixelFormat: \"jpeg-ycbcr\",\n isCompressed: true\n };\n }\n offset += Math.max(length + 2, 2);\n }\n return { sourceFormat: \"jpeg\", width: 0, height: 0, channels: 0, pixelFormat: \"jpeg\", isCompressed: true };\n}\n\nfunction inspectDDS(bytes)\n{\n const fourCc = String.fromCharCode(bytes[84], bytes[85], bytes[86], bytes[87]).replace(/\\0+$/u, \"\");\n return {\n sourceFormat: \"dds\",\n width: readU32LE(bytes, 16),\n height: readU32LE(bytes, 12),\n mipCount: Math.max(readU32LE(bytes, 28), 1),\n fourCc,\n textureFormat: fourCc || \"dds-legacy\",\n isCompressed: !!fourCc,\n hasMipMaps: readU32LE(bytes, 28) > 1\n };\n}\n\nfunction inspectTGA(bytes)\n{\n return {\n sourceFormat: \"tga\",\n width: readU16LE(bytes, 12),\n height: readU16LE(bytes, 14),\n channels: Math.max(bytes[16] / 8, 1),\n imageType: bytes[2],\n pixelFormat: `tga-${bytes[16]}`,\n isCompressed: [ 9, 10, 11 ].includes(bytes[2])\n };\n}\n\nfunction pngChannels(colorType)\n{\n if (colorType === 0) return 1;\n if (colorType === 2) return 3;\n if (colorType === 3) return 1;\n if (colorType === 4) return 2;\n if (colorType === 6) return 4;\n return 0;\n}\n\nfunction readI32BE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getInt32(0, false);\n}\n\nfunction capitalize(value)\n{\n return value ? value[0].toUpperCase() + value.slice(1) : \"Image\";\n}\n\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","png","jpeg","jpg","tga","dds","IMAGE_MIME_TYPES","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","value","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","inspectWithValues","input","expectedType","bytes","asUint8Array","detected","inspectBytes","sourceFormat","capitalize","payloadType","mediaTypes","byteLength","probeSupportWithValues","metadata","pngSupport","pngRgbaSupport","variants","kind","codec","supported","reason","toUpperCase","meta","async","rawVariant","format","some","variant","confidence","preferredOutput","find","v","warnings","errors","error","message","readWithValues","mimeType","imageMimeType","Error","code","readWithValuesAsync","decodePngToRgba","toJsonValue","Uint8Array","Array","isArray","map","output","key","entry","entries","isPNG","inspectPNG","isJPEG","inspectJPEG","isDDS","inspectDDS","isTGA","inspectTGA","width","height","imageType","readU16LE","bpp","colorType","bitDepth","chunks","readPngChunkSummary","readU32BE","channels","pngChannels","pixelFormat","isCompressed","compressionMethod","filterMethod","interlaceMethod","support","throwPngUnsupported","readPngChunks","__pngPalette","palette","__pngTransparency","trns","__pngTransparentGray","compressed","concatBytes","idat","inflated","Response","Blob","stream","pipeThrough","DecompressionStream","arrayBuffer","rgba","bytesPerSample","Math","ceil","rowBytes","filterBytesPerPixel","max","expectedLength","rows","unfilterPngRows","y","decodePngRow","decodeAdam7Rows","strideBytes","origin","colorSpace","srgb","alphaMode","data","idatChunkCount","idatBytes","hasIend","depths","hasOwn","offset","length","type","fromCharCode","start","end","subarray","push","cursor","chunkCount","hasPalette","hasTransparency","hasSrgb","chunksComplete","pngOffset","physicalPixelDimensions","x","readI32BE","unit","reduce","sum","chunk","set","bytesPerPixel","inputOffset","filter","rowOffset","previousOffset","raw","left","up","upLeft","floor","paeth","outputOffset","rowWidth","xStep","samples","channel","readPngSample","out","gray","scalePngSample","pngTransparentGray","index","passes","xStart","yStart","yStep","passWidth","passHeight","destinationY","destinationX","sampleIndex","perByte","shift","min","round","a","b","c","p","pa","abs","pb","pc","marker","readU16BE","fourCc","readU32LE","mipCount","textureFormat","hasMipMaps","DataView","buffer","byteOffset","getInt32","slice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/png/core/helpers.js"],"sourcesContent":["import { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { capitalizeFormatId, foreignImageRecord, identifyImageBytes, imageMimeType, isPNG, pngChannels, rawVariant } from \"../../../format/imageSignatures.js\";\n\n// The container sniffer is shared; re-exported because the format class\n// imports it from this module.\nexport { isPNG };\nimport { asUint8Array, readU16BE, readU16LE, readU32BE, readU32LE } from \"#utils/bytes\";\nimport { decompressBytes } from \"#utils/compression\";\nexport const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_TEXTURE = \"texture\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n png: \"pngJson\",\n jpeg: \"jpegJson\",\n jpg: \"jpegJson\",\n tga: \"tgaJson\",\n dds: \"ddsJson\"\n});\n\n\n/**\n * Normalizes reader options against their supported defaults for the PNG format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsImageFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\n/** Normalizes the requested input representation for the PNG format reader. */\nexport function normalizeInputType(inputType)\n{\n if (!inputType) return \"\";\n const value = String(inputType).replace(/^\\./u, \"\").toLowerCase();\n return value === \"jpg\" ? \"jpeg\" : value;\n}\n\n/** Normalizes the requested output representation for the PNG format reader. */\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the PNG format reader. */\n/** Inspects input using normalized format options for the PNG format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Image input\");\n const detected = inspectBytes(bytes);\n const sourceFormat = expectedType || values.inputType || detected.sourceFormat;\n\n if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsFormat${capitalizeFormatId(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);\n }\n\n return {\n payloadType: sourceFormat === \"dds\" ? \"texture\" : \"image\",\n mediaTypes: sourceFormat === \"dds\" ? [ \"texture\", \"image\" ] : [ \"image\" ],\n sourceFormat,\n byteLength: bytes.byteLength,\n ...detected\n };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the PNG\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const pngSupport = metadata.sourceFormat === \"png\" ? pngRgbaSupport(metadata) : null;\n const variants = [\n {\n kind: \"rgba\",\n payloadType: \"rgba\",\n codec: \"rgba8unorm\",\n supported: pngSupport?.supported === true,\n reason: pngSupport?.reason || `${metadata.sourceFormat.toUpperCase()} RGBA decode is not implemented yet.`,\n meta: { async: true }\n },\n rawVariant(metadata)\n ];\n\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (variants.some((variant) => variant.kind === \"rgba\" && variant.supported) ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferredOutput: variants.find(v => v.supported)?.kind || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized image format.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the PNG format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Image input\");\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return metadata;\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\n/**\n * Reads input asynchronously using normalized format options for the PNG format\n * reader.\n */\nexport async function readWithValuesAsync(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Image input\");\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW || values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return readWithValues(bytes, values, expectedType);\n }\n\n if ((values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE) && metadata.sourceFormat === \"png\")\n {\n return decodePngToRgba(bytes, metadata);\n }\n\n return readWithValues(bytes, values, expectedType);\n}\n\n/** Converts a parsed payload into a JSON-safe value for the PNG format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\n/**\n * Inspects the supplied bytes without decoding their payload for the PNG format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n const sourceFormat = identifyImageBytes(bytes);\n return sourceFormat === \"png\" ? inspectPNG(bytes) : foreignImageRecord(sourceFormat);\n}\n\n\n\n\n\nfunction inspectPNG(bytes)\n{\n const colorType = bytes[25], bitDepth = bytes[24];\n const chunks = readPngChunkSummary(bytes);\n return {\n sourceFormat: \"png\",\n width: readU32BE(bytes, 16),\n height: readU32BE(bytes, 20),\n bitDepth,\n colorType,\n channels: pngChannels(colorType),\n pixelFormat: `png-${bitDepth}-${colorType}`,\n isCompressed: false,\n compressionMethod: bytes[26],\n filterMethod: bytes[27],\n interlaceMethod: bytes[28],\n ...chunks\n };\n}\n\nasync function decodePngToRgba(bytes, metadata)\n{\n const support = pngRgbaSupport(metadata);\n if (!support.supported)\n {\n throwPngUnsupported(metadata, support.reason);\n }\n\n const chunks = readPngChunks(bytes);\n metadata.__pngPalette = chunks.palette;\n metadata.__pngTransparency = chunks.trns;\n if (chunks.trns && metadata.colorType === 0)\n {\n metadata.__pngTransparentGray = metadata.bitDepth === 16\n ? (chunks.trns[0] << 8) | chunks.trns[1]\n : chunks.trns[1];\n }\n const compressed = concatBytes(chunks.idat);\n const inflated = await decompressBytes(compressed, \"deflate\");\n const channels = pngChannels(metadata.colorType);\n const rgba = new Uint8Array(metadata.width * metadata.height * 4);\n if (metadata.interlaceMethod === 0)\n {\n const bytesPerSample = metadata.bitDepth >= 8 ? Math.ceil(metadata.bitDepth / 8) : 1;\n const rowBytes = Math.ceil(metadata.width * channels * metadata.bitDepth / 8);\n const filterBytesPerPixel = Math.max(1, channels * bytesPerSample);\n const expectedLength = metadata.height * (rowBytes + 1);\n if (inflated.byteLength < expectedLength)\n {\n throwPngUnsupported(metadata, \"PNG image data is truncated.\");\n }\n\n const rows = unfilterPngRows(inflated, metadata.height, rowBytes, filterBytesPerPixel);\n for (let y = 0; y < metadata.height; y++)\n {\n decodePngRow(rows, y * rowBytes, rgba, y * metadata.width * 4, metadata, metadata.width);\n }\n }\n else\n {\n decodeAdam7Rows(inflated, rgba, metadata);\n }\n\n return {\n payloadType: OUTPUT_RGBA,\n sourceFormat: \"png\",\n mimeType: \"image/png\",\n width: metadata.width,\n height: metadata.height,\n pixelFormat: \"rgba8unorm\",\n strideBytes: metadata.width * 4,\n origin: \"top-left\",\n colorSpace: chunks.srgb ? \"srgb\" : \"unknown\",\n alphaMode: [ 4, 6 ].includes(metadata.colorType) || chunks.trns ? \"straight\" : \"opaque\",\n metadata,\n data: rgba\n };\n}\n\n\n\nfunction pngRgbaSupport(metadata)\n{\n if (metadata.idatChunkCount < 1 || metadata.idatBytes < 1)\n {\n return { supported: false, reason: \"PNG has no IDAT image data for RGBA decode.\" };\n }\n if (!metadata.hasIend)\n {\n return { supported: false, reason: \"PNG stream has no complete IEND chunk.\" };\n }\n const depths = {\n 0: [ 1, 2, 4, 8, 16 ],\n 2: [ 8, 16 ],\n 3: [ 1, 2, 4, 8 ],\n 4: [ 8, 16 ],\n 6: [ 8, 16 ]\n };\n if (!Object.hasOwn(depths, metadata.colorType) || !depths[metadata.colorType].includes(metadata.bitDepth))\n {\n return { supported: false, reason: \"PNG color type and bit depth are unsupported by the RGBA decoder.\" };\n }\n if (![ 0, 1 ].includes(metadata.interlaceMethod))\n {\n return { supported: false, reason: \"PNG interlace method is unsupported by the RGBA decoder.\" };\n }\n if (metadata.compressionMethod !== 0 || metadata.filterMethod !== 0)\n {\n return { supported: false, reason: \"PNG compression/filter methods are unsupported by the RGBA decoder.\" };\n }\n // `Blob` is deliberately not required: the shared `decompressBytes` feeds the\n // bytes straight to `Response`, so an environment with DecompressionStream and\n // Response but no Blob can decode and used to be told it could not.\n if (typeof DecompressionStream !== \"function\" || typeof Response !== \"function\")\n {\n return { supported: false, reason: \"PNG async RGBA decode requires platform DecompressionStream support.\" };\n }\n return { supported: true, reason: \"Use readAsync/readWithValuesAsync for platform deflate decode.\" };\n}\n\nfunction readPngChunks(bytes)\n{\n const chunks = { idat: [], palette: null, trns: null, srgb: false };\n let offset = 8;\n while (offset + 12 <= bytes.byteLength)\n {\n const length = readU32BE(bytes, offset);\n const type = String.fromCharCode(bytes[offset + 4], bytes[offset + 5], bytes[offset + 6], bytes[offset + 7]);\n const start = offset + 8;\n const end = start + length;\n if (end + 4 > bytes.byteLength) break;\n const data = bytes.subarray(start, end);\n if (type === \"IDAT\") chunks.idat.push(data);\n else if (type === \"PLTE\") chunks.palette = data;\n else if (type === \"tRNS\") chunks.trns = data;\n else if (type === \"sRGB\") chunks.srgb = true;\n offset = end + 4;\n if (type === \"IEND\") break;\n }\n return chunks;\n}\n\nfunction readPngChunkSummary(bytes)\n{\n let cursor = 8;\n let chunkCount = 0;\n let idatChunkCount = 0;\n let idatBytes = 0;\n let hasPalette = false;\n let hasTransparency = false;\n let hasSrgb = false;\n let hasIend = false;\n let chunksComplete = true;\n let pngOffset = null;\n let physicalPixelDimensions = null;\n while (cursor + 12 <= bytes.byteLength)\n {\n const length = readU32BE(bytes, cursor);\n const type = String.fromCharCode(bytes[cursor + 4], bytes[cursor + 5], bytes[cursor + 6], bytes[cursor + 7]);\n const end = cursor + 8 + length;\n if (end + 4 > bytes.byteLength)\n {\n chunksComplete = false;\n break;\n }\n chunkCount++;\n if (type === \"IDAT\")\n {\n idatChunkCount++;\n idatBytes += length;\n }\n else if (type === \"PLTE\") hasPalette = true;\n else if (type === \"tRNS\") hasTransparency = true;\n else if (type === \"sRGB\") hasSrgb = true;\n else if (type === \"oFFs\" && length === 9)\n {\n pngOffset = {\n x: readI32BE(bytes, cursor + 8),\n y: readI32BE(bytes, cursor + 12),\n unit: bytes[cursor + 16]\n };\n }\n else if (type === \"pHYs\" && length === 9)\n {\n physicalPixelDimensions = {\n x: readU32BE(bytes, cursor + 8),\n y: readU32BE(bytes, cursor + 12),\n unit: bytes[cursor + 16]\n };\n }\n else if (type === \"IEND\") hasIend = true;\n cursor = end + 4;\n if (type === \"IEND\") break;\n }\n return {\n chunkCount,\n idatChunkCount,\n idatBytes,\n hasPalette,\n hasTransparency,\n hasSrgb,\n hasIend,\n chunksComplete,\n offset: pngOffset,\n physicalPixelDimensions\n };\n}\n\nfunction concatBytes(chunks)\n{\n const length = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);\n const output = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks)\n {\n output.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return output;\n}\n\nfunction unfilterPngRows(inflated, height, rowBytes, bytesPerPixel)\n{\n const rows = new Uint8Array(height * rowBytes);\n let inputOffset = 0;\n for (let y = 0; y < height; y++)\n {\n const filter = inflated[inputOffset++];\n const rowOffset = y * rowBytes;\n const previousOffset = (y - 1) * rowBytes;\n for (let x = 0; x < rowBytes; x++)\n {\n const raw = inflated[inputOffset++];\n const left = x >= bytesPerPixel ? rows[rowOffset + x - bytesPerPixel] : 0;\n const up = y > 0 ? rows[previousOffset + x] : 0;\n const upLeft = y > 0 && x >= bytesPerPixel ? rows[previousOffset + x - bytesPerPixel] : 0;\n let value = raw;\n if (filter === 1) value = raw + left;\n else if (filter === 2) value = raw + up;\n else if (filter === 3) value = raw + Math.floor((left + up) / 2);\n else if (filter === 4) value = raw + paeth(left, up, upLeft);\n else if (filter !== 0) throw new Error(`png: unsupported filter type ${filter}`);\n rows[rowOffset + x] = value & 0xff;\n }\n }\n return rows;\n}\n\nfunction decodePngRow(rows, rowOffset, output, outputOffset, metadata, rowWidth, xStep = 1)\n{\n const channels = pngChannels(metadata.colorType);\n const bitDepth = metadata.bitDepth;\n for (let x = 0; x < rowWidth; x++)\n {\n const samples = [];\n for (let channel = 0; channel < channels; channel++)\n {\n samples.push(readPngSample(rows, rowOffset, x * channels + channel, bitDepth));\n }\n const out = outputOffset + x * xStep * 4;\n if (metadata.colorType === 0)\n {\n const gray = scalePngSample(samples[0], bitDepth);\n output[out] = gray;\n output[out + 1] = gray;\n output[out + 2] = gray;\n output[out + 3] = pngTransparentGray(metadata, samples[0]) ? 0 : 255;\n }\n else if (metadata.colorType === 2)\n {\n output[out] = scalePngSample(samples[0], bitDepth);\n output[out + 1] = scalePngSample(samples[1], bitDepth);\n output[out + 2] = scalePngSample(samples[2], bitDepth);\n output[out + 3] = 255;\n }\n else if (metadata.colorType === 3)\n {\n const index = samples[0];\n const palette = metadata.__pngPalette || [];\n output[out] = palette[index * 3] || 0;\n output[out + 1] = palette[index * 3 + 1] || 0;\n output[out + 2] = palette[index * 3 + 2] || 0;\n output[out + 3] = metadata.__pngTransparency?.[index] ?? 255;\n }\n else if (metadata.colorType === 4)\n {\n const gray = scalePngSample(samples[0], bitDepth);\n output[out] = gray;\n output[out + 1] = gray;\n output[out + 2] = gray;\n output[out + 3] = scalePngSample(samples[1], bitDepth);\n }\n else\n {\n output[out] = scalePngSample(samples[0], bitDepth);\n output[out + 1] = scalePngSample(samples[1], bitDepth);\n output[out + 2] = scalePngSample(samples[2], bitDepth);\n output[out + 3] = scalePngSample(samples[3], bitDepth);\n }\n }\n}\n\nfunction decodeAdam7Rows(inflated, output, metadata)\n{\n const passes = [\n [ 0, 0, 8, 8 ],\n [ 4, 0, 8, 8 ],\n [ 0, 4, 4, 8 ],\n [ 2, 0, 4, 4 ],\n [ 0, 2, 2, 4 ],\n [ 1, 0, 2, 2 ],\n [ 0, 1, 1, 2 ]\n ];\n const channels = pngChannels(metadata.colorType);\n const bytesPerSample = metadata.bitDepth >= 8 ? Math.ceil(metadata.bitDepth / 8) : 1;\n const filterBytesPerPixel = Math.max(1, channels * bytesPerSample);\n let offset = 0;\n\n for (const [ xStart, yStart, xStep, yStep ] of passes)\n {\n const passWidth = Math.max(0, Math.ceil((metadata.width - xStart) / xStep));\n const passHeight = Math.max(0, Math.ceil((metadata.height - yStart) / yStep));\n if (passWidth === 0 || passHeight === 0) continue;\n\n const rowBytes = Math.ceil(passWidth * channels * metadata.bitDepth / 8);\n const expectedLength = passHeight * (rowBytes + 1);\n if (offset + expectedLength > inflated.byteLength)\n {\n throwPngUnsupported(metadata, \"PNG Adam7 image data is truncated.\");\n }\n\n const rows = unfilterPngRows(inflated.subarray(offset, offset + expectedLength), passHeight, rowBytes, filterBytesPerPixel);\n for (let y = 0; y < passHeight; y++)\n {\n const destinationY = yStart + y * yStep;\n const destinationX = xStart;\n const outputOffset = (destinationY * metadata.width + destinationX) * 4;\n decodePngRow(rows, y * rowBytes, output, outputOffset, metadata, passWidth, xStep);\n }\n offset += expectedLength;\n }\n\n if (offset !== inflated.byteLength)\n {\n throwPngUnsupported(metadata, \"PNG Adam7 image data has trailing bytes.\");\n }\n}\n\nfunction readPngSample(rows, rowOffset, sampleIndex, bitDepth)\n{\n if (bitDepth >= 8)\n {\n const bytesPerSample = bitDepth / 8;\n const offset = rowOffset + sampleIndex * bytesPerSample;\n return bytesPerSample === 1 ? rows[offset] : (rows[offset] << 8) | rows[offset + 1];\n }\n const perByte = 8 / bitDepth;\n const offset = rowOffset + Math.floor(sampleIndex / perByte);\n const shift = (perByte - 1 - (sampleIndex % perByte)) * bitDepth;\n return (rows[offset] >>> shift) & ((1 << bitDepth) - 1);\n}\n\nfunction scalePngSample(value, bitDepth)\n{\n const max = (1 << Math.min(bitDepth, 16)) - 1;\n return Math.round(value * 255 / max);\n}\n\nfunction pngTransparentGray(metadata, value)\n{\n return metadata.__pngTransparentGray !== undefined && value === metadata.__pngTransparentGray;\n}\n\nfunction paeth(a, b, c)\n{\n const p = a + b - c;\n const pa = Math.abs(p - a), pb = Math.abs(p - b), pc = Math.abs(p - c);\n return pa <= pb && pa <= pc ? a : pb <= pc ? b : c;\n}\n\nfunction throwPngUnsupported(metadata, message)\n{\n const error = new Error(`png: ${message}`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n}\n\n\n\n\n\nfunction readI32BE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getInt32(0, false);\n}\n\n\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","png","jpeg","jpg","tga","dds","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","value","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","inspectWithValues","input","expectedType","bytes","asUint8Array","detected","inspectBytes","sourceFormat","capitalizeFormatId","payloadType","mediaTypes","byteLength","probeSupportWithValues","metadata","pngSupport","pngRgbaSupport","variants","kind","codec","supported","reason","toUpperCase","meta","async","rawVariant","format","some","variant","confidence","preferredOutput","find","v","warnings","errors","error","message","readWithValues","mimeType","imageMimeType","Error","code","readWithValuesAsync","decodePngToRgba","identifyImageBytes","inspectPNG","foreignImageRecord","colorType","bitDepth","chunks","readPngChunkSummary","width","readU32BE","height","channels","pngChannels","pixelFormat","isCompressed","compressionMethod","filterMethod","interlaceMethod","support","throwPngUnsupported","readPngChunks","__pngPalette","palette","__pngTransparency","trns","__pngTransparentGray","compressed","concatBytes","idat","inflated","decompressBytes","rgba","Uint8Array","bytesPerSample","Math","ceil","rowBytes","filterBytesPerPixel","max","expectedLength","rows","unfilterPngRows","y","decodePngRow","decodeAdam7Rows","strideBytes","origin","colorSpace","srgb","alphaMode","data","idatChunkCount","idatBytes","hasIend","depths","hasOwn","DecompressionStream","Response","offset","length","type","fromCharCode","start","end","subarray","push","cursor","chunkCount","hasPalette","hasTransparency","hasSrgb","chunksComplete","pngOffset","physicalPixelDimensions","x","readI32BE","unit","reduce","sum","chunk","output","set","bytesPerPixel","inputOffset","filter","rowOffset","previousOffset","raw","left","up","upLeft","floor","paeth","outputOffset","rowWidth","xStep","samples","channel","readPngSample","out","gray","scalePngSample","pngTransparentGray","index","passes","xStart","yStart","yStep","passWidth","passHeight","destinationY","destinationX","sampleIndex","perByte","shift","min","round","a","b","c","p","pa","abs","pb","pc","DataView","buffer","byteOffset","getInt32"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { adler32, crc32 } from '#utils/checksum';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* PNG encoding, from the normalized RGBA payload every image format here
|
|
3
5
|
* decodes TO.
|
|
@@ -24,35 +26,9 @@
|
|
|
24
26
|
const SIGNATURE = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
|
|
25
27
|
|
|
26
28
|
/** CRC-32, built once. PNG tags every chunk with one and decoders check it. */
|
|
27
|
-
const CRC_TABLE = (() => {
|
|
28
|
-
const table = new Uint32Array(256);
|
|
29
|
-
for (let index = 0; index < 256; index++) {
|
|
30
|
-
let value = index;
|
|
31
|
-
for (let bit = 0; bit < 8; bit++) {
|
|
32
|
-
value = value & 1 ? 0xedb88320 ^ value >>> 1 : value >>> 1;
|
|
33
|
-
}
|
|
34
|
-
table[index] = value >>> 0;
|
|
35
|
-
}
|
|
36
|
-
return table;
|
|
37
|
-
})();
|
|
38
|
-
function crc32(bytes) {
|
|
39
|
-
let crc = 0xffffffff;
|
|
40
|
-
for (let index = 0; index < bytes.length; index++) {
|
|
41
|
-
crc = CRC_TABLE[(crc ^ bytes[index]) & 0xff] ^ crc >>> 8;
|
|
42
|
-
}
|
|
43
|
-
return (crc ^ 0xffffffff) >>> 0;
|
|
44
|
-
}
|
|
45
29
|
|
|
46
30
|
/** Adler-32 over the uncompressed data, which the zlib wrapper ends with. */
|
|
47
|
-
|
|
48
|
-
let a = 1;
|
|
49
|
-
let b = 0;
|
|
50
|
-
for (let index = 0; index < bytes.length; index++) {
|
|
51
|
-
a = (a + bytes[index]) % 65521;
|
|
52
|
-
b = (b + a) % 65521;
|
|
53
|
-
}
|
|
54
|
-
return (b << 16 | a) >>> 0;
|
|
55
|
-
}
|
|
31
|
+
|
|
56
32
|
function chunk(type, payload) {
|
|
57
33
|
const name = [...type].map(character => character.charCodeAt(0));
|
|
58
34
|
const body = new Uint8Array(name.length + payload.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sources":["../../../../../../src/resource/formats/png/core/writer.js"],"sourcesContent":["/**\n * PNG encoding, from the normalized RGBA payload every image format here\n * decodes TO.\n *\n * The lossless counterpart of the JPEG writer beside it. Which one a caller\n * wants is not a matter of taste: JPEG is smaller on photographs and renders\n * and destroys flat colour and sharp edges, PNG is exact and much larger on a\n * gradient. Converting 128x128 pattern art to JPEG measurably made some of it\n * BIGGER, which is the case this exists for.\n *\n * ## Two entry points, because compression is asynchronous\n *\n * `CompressionStream` is the only deflate available to browser-safe code, and\n * it is async - so an async `writeAsync` is the compressing path, and the sync\n * `write` emits STORED deflate blocks: a valid PNG that every decoder reads,\n * at roughly the size of the raw pixels. That is the same split\n * `CjsCmfFormat` makes for the same reason, and the sync path exists so a\n * caller that cannot await still has an exit.\n *\n * The reader beside this uses `DecompressionStream`, so the pair agree about\n * where deflate comes from and neither adds a dependency.\n */\n\nconst SIGNATURE = [ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a ];\n\n/** CRC-32, built once. PNG tags every chunk with one and decoders check it. */\nconst CRC_TABLE = (() =>\n{\n const table = new Uint32Array(256);\n\n for (let index = 0; index < 256; index++)\n {\n let value = index;\n\n for (let bit = 0; bit < 8; bit++)\n {\n value = value & 1 ? 0xedb88320 ^ (value >>> 1) : value >>> 1;\n }\n\n table[index] = value >>> 0;\n }\n\n return table;\n})();\n\nfunction crc32(bytes)\n{\n let crc = 0xffffffff;\n\n for (let index = 0; index < bytes.length; index++)\n {\n crc = CRC_TABLE[(crc ^ bytes[index]) & 0xff] ^ (crc >>> 8);\n }\n\n return (crc ^ 0xffffffff) >>> 0;\n}\n\n/** Adler-32 over the uncompressed data, which the zlib wrapper ends with. */\nfunction adler32(bytes)\n{\n let a = 1;\n let b = 0;\n\n for (let index = 0; index < bytes.length; index++)\n {\n a = (a + bytes[index]) % 65521;\n b = (b + a) % 65521;\n }\n\n return ((b << 16) | a) >>> 0;\n}\n\nfunction chunk(type, payload)\n{\n const name = [ ...type ].map((character) => character.charCodeAt(0));\n const body = new Uint8Array(name.length + payload.length);\n\n body.set(name, 0);\n body.set(payload, name.length);\n\n const out = new Uint8Array(body.length + 8);\n const view = new DataView(out.buffer);\n\n view.setUint32(0, payload.length);\n out.set(body, 4);\n view.setUint32(out.length - 4, crc32(body));\n\n return out;\n}\n\n/**\n * Lays the payload out as PNG scanlines, each prefixed by a filter byte.\n *\n * Filter 0 (None) throughout. The filters exist to make the deflate that\n * follows more effective, and choosing between them per row is a heuristic\n * search that belongs with a compressor tuned for it; None costs one byte a\n * row and keeps this readable. A caller who needs the last twenty percent is\n * better served by a real image pipeline than by a heuristic hidden here.\n */\nfunction toScanlines(payload)\n{\n const { width, height, data } = payload;\n const stride = Number(payload.strideBytes) || width * 4;\n const flip = payload.origin === \"bottom-left\";\n const rowBytes = width * 4;\n const out = new Uint8Array((rowBytes + 1) * height);\n\n for (let row = 0; row < height; row++)\n {\n const source = (flip ? height - 1 - row : row) * stride;\n const target = row * (rowBytes + 1);\n\n out[target] = 0;\n out.set(data.subarray(source, source + rowBytes), target + 1);\n }\n\n return out;\n}\n\n/** Wraps deflate output in the two-byte zlib header and its adler trailer. */\nfunction toZlib(deflated, uncompressed)\n{\n const out = new Uint8Array(deflated.length + 6);\n const view = new DataView(out.buffer);\n\n out[0] = 0x78;\n out[1] = 0x01;\n out.set(deflated, 2);\n view.setUint32(out.length - 4, adler32(uncompressed));\n\n return out;\n}\n\n/**\n * Emits stored (uncompressed) deflate blocks.\n *\n * Every block carries its length and that length's complement, and the last is\n * flagged final. It compresses nothing, which is the point of the sync path:\n * it is correct without an await.\n */\nfunction storedDeflate(bytes)\n{\n const MAX = 0xffff;\n const blocks = Math.max(1, Math.ceil(bytes.length / MAX));\n const out = new Uint8Array(bytes.length + blocks * 5);\n let read = 0;\n let write = 0;\n\n while (read < bytes.length || blocks === 1 && read === 0)\n {\n const size = Math.min(MAX, bytes.length - read);\n const final = read + size >= bytes.length ? 1 : 0;\n\n out[write++] = final;\n out[write++] = size & 0xff;\n out[write++] = size >>> 8;\n out[write++] = ~size & 0xff;\n out[write++] = (~size >>> 8) & 0xff;\n out.set(bytes.subarray(read, read + size), write);\n write += size;\n read += size;\n\n if (final) break;\n }\n\n return out.subarray(0, write);\n}\n\nfunction assemble(payload, zlib)\n{\n const header = new Uint8Array(13);\n const view = new DataView(header.buffer);\n\n view.setUint32(0, payload.width);\n view.setUint32(4, payload.height);\n header[8] = 8; // bit depth\n header[9] = 6; // colour type: truecolour with alpha\n header[10] = 0; // deflate, the only compression PNG defines\n header[11] = 0; // adaptive filtering, the only filter method\n header[12] = 0; // no interlace\n\n const ihdr = chunk(\"IHDR\", header);\n const idat = chunk(\"IDAT\", zlib);\n const iend = chunk(\"IEND\", new Uint8Array(0));\n const out = new Uint8Array(SIGNATURE.length + ihdr.length + idat.length + iend.length);\n let offset = 0;\n\n out.set(SIGNATURE, offset); offset += SIGNATURE.length;\n out.set(ihdr, offset); offset += ihdr.length;\n out.set(idat, offset); offset += idat.length;\n out.set(iend, offset);\n\n return out;\n}\n\n/**\n * Checks the requested compression METHOD, which PNG allows exactly one of.\n *\n * Zero means deflate, and the specification defines nothing else. Accepting a\n * value and writing 0 regardless would be worse than refusing: the file would\n * be correct and the caller's belief about it would not, which is the kind of\n * disagreement that surfaces much later and somewhere else.\n */\nfunction normalizeCompression(value)\n{\n if (value === undefined || value === null) return 0;\n\n if (value !== 0)\n {\n throw new Error(\n `png: compression method ${JSON.stringify(value)} is not defined by the format; `\n + \"PNG defines method 0 (deflate) and no other\",\n );\n }\n\n return 0;\n}\n\nfunction validate(payload, options = {})\n{\n const width = Number(payload?.width) | 0;\n const height = Number(payload?.height) | 0;\n\n normalizeCompression(options.compression);\n\n if (!width || !height || !payload?.data)\n {\n throw new Error(\"png: encoding needs a payload with width, height and data\");\n }\n\n const stride = Number(payload.strideBytes) || width * 4;\n\n if (payload.data.length < stride * height)\n {\n throw new Error(\n `png: payload data is ${payload.data.length} bytes, short of ${stride * height}`,\n );\n }\n\n return { ...payload, width, height, strideBytes: stride };\n}\n\n/**\n * Encodes a normalized RGBA payload as PNG bytes, without compressing.\n *\n * @param {object} payload `{ width, height, data }`, honouring `strideBytes`\n * and `origin` when present.\n * @param {object} [options] `compression` names the PNG compression method,\n * which is 0 and can be nothing else.\n * @returns {Uint8Array} PNG bytes, roughly the size of the raw pixels.\n */\nexport function encodePng(payload, options = {})\n{\n const checked = validate(payload, options);\n const scanlines = toScanlines(checked);\n\n return assemble(checked, toZlib(storedDeflate(scanlines), scanlines));\n}\n\n/**\n * Encodes a normalized RGBA payload as compressed PNG bytes.\n *\n * @param {object} payload `{ width, height, data }`, honouring `strideBytes`\n * and `origin` when present.\n * @param {object} [options] `compression` names the PNG compression method,\n * which is 0 and can be nothing else.\n * @returns {Promise<Uint8Array>} PNG bytes.\n */\nexport async function encodePngAsync(payload, options = {})\n{\n const checked = validate(payload, options);\n const scanlines = toScanlines(checked);\n\n if (typeof CompressionStream !== \"function\")\n {\n // Not an error: the result is a correct PNG either way, and refusing\n // here would make the async path less capable than the sync one.\n return assemble(checked, toZlib(storedDeflate(scanlines), scanlines));\n }\n\n const compressed = new Uint8Array(await new Response(\n new Blob([ scanlines ]).stream().pipeThrough(new CompressionStream(\"deflate-raw\")),\n ).arrayBuffer());\n\n return assemble(checked, toZlib(compressed, scanlines));\n}\n"],"names":["SIGNATURE","CRC_TABLE","table","Uint32Array","index","value","bit","crc32","bytes","crc","length","adler32","a","b","chunk","type","payload","name","map","character","charCodeAt","body","Uint8Array","set","out","view","DataView","buffer","setUint32","toScanlines","width","height","data","stride","Number","strideBytes","flip","origin","rowBytes","row","source","target","subarray","toZlib","deflated","uncompressed","storedDeflate","MAX","blocks","Math","max","ceil","read","write","size","min","final","assemble","zlib","header","ihdr","idat","iend","offset","normalizeCompression","undefined","Error","JSON","stringify","validate","options","compression","encodePng","checked","scanlines","encodePngAsync","CompressionStream","compressed","Response","Blob","stream","pipeThrough","arrayBuffer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"writer.js","sources":["../../../../../../src/resource/formats/png/core/writer.js"],"sourcesContent":["import { adler32, crc32 } from \"#utils/checksum\";\n\n/**\n * PNG encoding, from the normalized RGBA payload every image format here\n * decodes TO.\n *\n * The lossless counterpart of the JPEG writer beside it. Which one a caller\n * wants is not a matter of taste: JPEG is smaller on photographs and renders\n * and destroys flat colour and sharp edges, PNG is exact and much larger on a\n * gradient. Converting 128x128 pattern art to JPEG measurably made some of it\n * BIGGER, which is the case this exists for.\n *\n * ## Two entry points, because compression is asynchronous\n *\n * `CompressionStream` is the only deflate available to browser-safe code, and\n * it is async - so an async `writeAsync` is the compressing path, and the sync\n * `write` emits STORED deflate blocks: a valid PNG that every decoder reads,\n * at roughly the size of the raw pixels. That is the same split\n * `CjsCmfFormat` makes for the same reason, and the sync path exists so a\n * caller that cannot await still has an exit.\n *\n * The reader beside this uses `DecompressionStream`, so the pair agree about\n * where deflate comes from and neither adds a dependency.\n */\n\nconst SIGNATURE = [ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a ];\n\n/** CRC-32, built once. PNG tags every chunk with one and decoders check it. */\n\n\n/** Adler-32 over the uncompressed data, which the zlib wrapper ends with. */\n\nfunction chunk(type, payload)\n{\n const name = [ ...type ].map((character) => character.charCodeAt(0));\n const body = new Uint8Array(name.length + payload.length);\n\n body.set(name, 0);\n body.set(payload, name.length);\n\n const out = new Uint8Array(body.length + 8);\n const view = new DataView(out.buffer);\n\n view.setUint32(0, payload.length);\n out.set(body, 4);\n view.setUint32(out.length - 4, crc32(body));\n\n return out;\n}\n\n/**\n * Lays the payload out as PNG scanlines, each prefixed by a filter byte.\n *\n * Filter 0 (None) throughout. The filters exist to make the deflate that\n * follows more effective, and choosing between them per row is a heuristic\n * search that belongs with a compressor tuned for it; None costs one byte a\n * row and keeps this readable. A caller who needs the last twenty percent is\n * better served by a real image pipeline than by a heuristic hidden here.\n */\nfunction toScanlines(payload)\n{\n const { width, height, data } = payload;\n const stride = Number(payload.strideBytes) || width * 4;\n const flip = payload.origin === \"bottom-left\";\n const rowBytes = width * 4;\n const out = new Uint8Array((rowBytes + 1) * height);\n\n for (let row = 0; row < height; row++)\n {\n const source = (flip ? height - 1 - row : row) * stride;\n const target = row * (rowBytes + 1);\n\n out[target] = 0;\n out.set(data.subarray(source, source + rowBytes), target + 1);\n }\n\n return out;\n}\n\n/** Wraps deflate output in the two-byte zlib header and its adler trailer. */\nfunction toZlib(deflated, uncompressed)\n{\n const out = new Uint8Array(deflated.length + 6);\n const view = new DataView(out.buffer);\n\n out[0] = 0x78;\n out[1] = 0x01;\n out.set(deflated, 2);\n view.setUint32(out.length - 4, adler32(uncompressed));\n\n return out;\n}\n\n/**\n * Emits stored (uncompressed) deflate blocks.\n *\n * Every block carries its length and that length's complement, and the last is\n * flagged final. It compresses nothing, which is the point of the sync path:\n * it is correct without an await.\n */\nfunction storedDeflate(bytes)\n{\n const MAX = 0xffff;\n const blocks = Math.max(1, Math.ceil(bytes.length / MAX));\n const out = new Uint8Array(bytes.length + blocks * 5);\n let read = 0;\n let write = 0;\n\n while (read < bytes.length || blocks === 1 && read === 0)\n {\n const size = Math.min(MAX, bytes.length - read);\n const final = read + size >= bytes.length ? 1 : 0;\n\n out[write++] = final;\n out[write++] = size & 0xff;\n out[write++] = size >>> 8;\n out[write++] = ~size & 0xff;\n out[write++] = (~size >>> 8) & 0xff;\n out.set(bytes.subarray(read, read + size), write);\n write += size;\n read += size;\n\n if (final) break;\n }\n\n return out.subarray(0, write);\n}\n\nfunction assemble(payload, zlib)\n{\n const header = new Uint8Array(13);\n const view = new DataView(header.buffer);\n\n view.setUint32(0, payload.width);\n view.setUint32(4, payload.height);\n header[8] = 8; // bit depth\n header[9] = 6; // colour type: truecolour with alpha\n header[10] = 0; // deflate, the only compression PNG defines\n header[11] = 0; // adaptive filtering, the only filter method\n header[12] = 0; // no interlace\n\n const ihdr = chunk(\"IHDR\", header);\n const idat = chunk(\"IDAT\", zlib);\n const iend = chunk(\"IEND\", new Uint8Array(0));\n const out = new Uint8Array(SIGNATURE.length + ihdr.length + idat.length + iend.length);\n let offset = 0;\n\n out.set(SIGNATURE, offset); offset += SIGNATURE.length;\n out.set(ihdr, offset); offset += ihdr.length;\n out.set(idat, offset); offset += idat.length;\n out.set(iend, offset);\n\n return out;\n}\n\n/**\n * Checks the requested compression METHOD, which PNG allows exactly one of.\n *\n * Zero means deflate, and the specification defines nothing else. Accepting a\n * value and writing 0 regardless would be worse than refusing: the file would\n * be correct and the caller's belief about it would not, which is the kind of\n * disagreement that surfaces much later and somewhere else.\n */\nfunction normalizeCompression(value)\n{\n if (value === undefined || value === null) return 0;\n\n if (value !== 0)\n {\n throw new Error(\n `png: compression method ${JSON.stringify(value)} is not defined by the format; `\n + \"PNG defines method 0 (deflate) and no other\",\n );\n }\n\n return 0;\n}\n\nfunction validate(payload, options = {})\n{\n const width = Number(payload?.width) | 0;\n const height = Number(payload?.height) | 0;\n\n normalizeCompression(options.compression);\n\n if (!width || !height || !payload?.data)\n {\n throw new Error(\"png: encoding needs a payload with width, height and data\");\n }\n\n const stride = Number(payload.strideBytes) || width * 4;\n\n if (payload.data.length < stride * height)\n {\n throw new Error(\n `png: payload data is ${payload.data.length} bytes, short of ${stride * height}`,\n );\n }\n\n return { ...payload, width, height, strideBytes: stride };\n}\n\n/**\n * Encodes a normalized RGBA payload as PNG bytes, without compressing.\n *\n * @param {object} payload `{ width, height, data }`, honouring `strideBytes`\n * and `origin` when present.\n * @param {object} [options] `compression` names the PNG compression method,\n * which is 0 and can be nothing else.\n * @returns {Uint8Array} PNG bytes, roughly the size of the raw pixels.\n */\nexport function encodePng(payload, options = {})\n{\n const checked = validate(payload, options);\n const scanlines = toScanlines(checked);\n\n return assemble(checked, toZlib(storedDeflate(scanlines), scanlines));\n}\n\n/**\n * Encodes a normalized RGBA payload as compressed PNG bytes.\n *\n * @param {object} payload `{ width, height, data }`, honouring `strideBytes`\n * and `origin` when present.\n * @param {object} [options] `compression` names the PNG compression method,\n * which is 0 and can be nothing else.\n * @returns {Promise<Uint8Array>} PNG bytes.\n */\nexport async function encodePngAsync(payload, options = {})\n{\n const checked = validate(payload, options);\n const scanlines = toScanlines(checked);\n\n if (typeof CompressionStream !== \"function\")\n {\n // Not an error: the result is a correct PNG either way, and refusing\n // here would make the async path less capable than the sync one.\n return assemble(checked, toZlib(storedDeflate(scanlines), scanlines));\n }\n\n const compressed = new Uint8Array(await new Response(\n new Blob([ scanlines ]).stream().pipeThrough(new CompressionStream(\"deflate-raw\")),\n ).arrayBuffer());\n\n return assemble(checked, toZlib(compressed, scanlines));\n}\n"],"names":["SIGNATURE","chunk","type","payload","name","map","character","charCodeAt","body","Uint8Array","length","set","out","view","DataView","buffer","setUint32","crc32","toScanlines","width","height","data","stride","Number","strideBytes","flip","origin","rowBytes","row","source","target","subarray","toZlib","deflated","uncompressed","adler32","storedDeflate","bytes","MAX","blocks","Math","max","ceil","read","write","size","min","final","assemble","zlib","header","ihdr","idat","iend","offset","normalizeCompression","value","undefined","Error","JSON","stringify","validate","options","compression","encodePng","checked","scanlines","encodePngAsync","CompressionStream","compressed","Response","Blob","stream","pipeThrough","arrayBuffer"],"mappings":"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"}
|