@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.2
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/schema/CjsSchema.js +20 -2
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/global/schema/hydration.js +14 -0
- package/dist/global/schema/hydration.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 +69 -9
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.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 +158 -345
- 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 +92 -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsCharacterGlesMorphDeformation.js","sources":["../../../../src/character/gles/CjsCharacterGlesMorphDeformation.js"],"sourcesContent":["const deformationStates = new WeakMap();\n\nconst TARGET_CHANNELS = new Set([\n \"POSITION\",\n \"NORMAL\",\n \"TANGENT\",\n \"BITANGENT\",\n \"BINORMAL\"\n]);\n\n/**\n * Reversibly realizes exact morph requests on cached GLES geometry.\n *\n * The backend host supplies vertex-layout interpretation and the live buffer\n * operations, keeping Tw2/GL bindings out of the reusable character package.\n */\nexport class CjsCharacterGlesMorphDeformation\n{\n _geometryHost;\n\n constructor({ geometryHost } = {})\n {\n this._geometryHost = RequireGeometryHost(geometryHost);\n }\n\n /** Classifies a requested target without mutating realized geometry. */\n static ClassifyTarget(geometryResource, requests)\n {\n const normalized = NormalizeRequests(requests);\n if (normalized.length !== 1)\n {\n throw new TypeError(\"GLES morph target classification requires one request\");\n }\n\n const request = normalized[0];\n const matchedMeshIndices = [];\n const coalescedMeshIndices = [];\n const ambiguousMeshIndices = [];\n for (const [ meshIndex, mesh ] of (geometryResource?.meshes ?? []).entries())\n {\n const matches = (mesh?.morphTargets ?? []).filter(target =>\n TargetIdentity(target) === request.identity);\n if (matches.length === 1)\n {\n matchedMeshIndices.push(meshIndex);\n }\n else if (matches.length > 1)\n {\n if (AreEquivalentTargets(matches))\n {\n matchedMeshIndices.push(meshIndex);\n coalescedMeshIndices.push(meshIndex);\n }\n else\n {\n ambiguousMeshIndices.push(meshIndex);\n }\n }\n }\n\n return {\n status: ambiguousMeshIndices.length\n ? \"ambiguous\"\n : matchedMeshIndices.length\n ? \"exact\"\n : \"unavailable\",\n targetName: request.targetName,\n matchedMeshIndices,\n coalescedMeshIndices,\n ambiguousMeshIndices\n };\n }\n\n /** Returns whether geometry exposes at least one non-ambiguous target. */\n static HasAnyTarget(geometryResource, requests)\n {\n const classifications = NormalizeRequests(requests).map(request =>\n this.ClassifyTarget(geometryResource, [ request ]));\n return classifications.every(value => value.status !== \"ambiguous\")\n && classifications.some(value => value.status === \"exact\");\n }\n\n /** Acquires one shared-geometry deformation lease. */\n async Acquire(geometryResource, requests)\n {\n const normalized = NormalizeRequests(requests);\n const meshes = this._geometryHost.GetMeshes(geometryResource);\n if (!Array.isArray(meshes) || !meshes.length)\n {\n throw new Error(\"GLES morph deformation requires geometry meshes\");\n }\n\n const signature = JSON.stringify(normalized.map(value => [ value.identity, value.weight ]));\n let state = deformationStates.get(geometryResource);\n\n if (state?.leases.size)\n {\n if (state.signature !== signature)\n {\n throw new Error(\"GLES morph deformation conflicts on shared geometry\");\n }\n VerifyPreparedIdentity(state.prepared);\n ApplyPrepared(state.prepared, this._geometryHost);\n const lease = {};\n state.leases.add(lease);\n return { lease, report: CloneReport(state.report) };\n }\n\n await this._geometryHost.EnsureSystemMirror(geometryResource);\n const prepared = meshes.map((mesh, meshIndex) =>\n PrepareMesh(mesh, meshIndex, normalized, this._geometryHost));\n const matched = new Set(prepared.flatMap(value => value.matchedTargets));\n if (!matched.size)\n {\n throw new Error(\"GLES morph deformation found no exact target\");\n }\n\n ApplyPrepared(prepared, this._geometryHost);\n await this._geometryHost.RebuildBounds(geometryResource);\n\n const report = CreateReport(normalized, prepared, matched);\n const lease = {};\n state = {\n leases: new Set([ lease ]),\n meshes,\n prepared,\n report,\n signature\n };\n deformationStates.set(geometryResource, state);\n return { lease, report: CloneReport(report) };\n }\n\n /** Replaces one exclusively owned lease's weights without a rebuild. */\n async Update(geometryResource, lease, requests)\n {\n const normalized = NormalizeRequests(requests, { allowEmpty: true });\n const state = deformationStates.get(geometryResource);\n if (!state?.leases.has(lease))\n {\n throw new Error(\"GLES morph deformation update requires an active lease\");\n }\n\n const signature = JSON.stringify(normalized.map(value => [ value.identity, value.weight ]));\n if (state.signature === signature)\n {\n VerifyPreparedIdentity(state.prepared);\n ApplyPrepared(state.prepared, this._geometryHost);\n await this._geometryHost.RebuildBounds(geometryResource);\n return CloneReport(state.report);\n }\n if (state.leases.size !== 1)\n {\n throw new Error(\"GLES morph deformation update conflicts on shared geometry\");\n }\n\n VerifyPreparedIdentity(state.prepared);\n const previousByMesh = new Map(state.prepared.map(value => [ value.mesh, value ]));\n const prepared = state.meshes.map((mesh, meshIndex) => PrepareMesh(\n mesh,\n meshIndex,\n normalized,\n this._geometryHost,\n previousByMesh.get(mesh)?.original ?? null\n ));\n const matched = new Set(prepared.flatMap(value => value.matchedTargets));\n if (normalized.length && !matched.size)\n {\n throw new Error(\"GLES morph deformation found no exact target\");\n }\n\n ApplyUpdatedPrepared(state.prepared, prepared, this._geometryHost);\n await this._geometryHost.RebuildBounds(geometryResource);\n const report = CreateReport(normalized, prepared, matched);\n state.prepared = prepared;\n state.report = report;\n state.signature = signature;\n return CloneReport(report);\n }\n\n /** Releases a lease and restores original vertices after the final owner. */\n async Release(geometryResource, lease)\n {\n const state = deformationStates.get(geometryResource);\n if (!state?.leases.delete(lease)) return false;\n if (state.leases.size) return true;\n\n VerifyPreparedIdentity(state.prepared);\n const failures = RestorePrepared(state.prepared, this._geometryHost);\n if (failures.length)\n {\n state.leases.add(lease);\n const error = new Error(\"GLES morph deformation restore failed\");\n error.errors = failures;\n throw error;\n }\n await this._geometryHost.RebuildBounds(geometryResource);\n deformationStates.delete(geometryResource);\n return true;\n }\n}\n\nfunction NormalizeRequests(requests, { allowEmpty = false } = {})\n{\n if (!Array.isArray(requests) || (!allowEmpty && !requests.length))\n {\n throw new TypeError(\"GLES morph deformation requires target requests\");\n }\n\n const byIdentity = new Map();\n for (const request of requests)\n {\n const targetName = String(request?.targetName ?? \"\").trim();\n const identity = normalizeCjsCharacterGlesMorphTargetName(targetName);\n const weight = Number(request?.weight);\n if (!targetName || !Number.isFinite(weight))\n {\n throw new TypeError(\"GLES morph deformation requires exact finite target weights\");\n }\n const existing = byIdentity.get(identity);\n if (existing && existing.weight !== weight)\n {\n throw new Error(`Conflicting morph weights for ${JSON.stringify(targetName)}`);\n }\n byIdentity.set(identity, { identity, targetName, weight });\n }\n return [ ...byIdentity.values() ].sort((a, b) => a.identity.localeCompare(b.identity));\n}\n\nfunction PrepareMesh(mesh, meshIndex, requests, geometryHost, baseBufferData = null)\n{\n const bufferData = mesh?.bufferData;\n const stride = Number(mesh?.declaration?.stride) / 4;\n if (!bufferData?.length || !Number.isInteger(stride) || stride <= 0)\n {\n return EmptyPrepared(mesh, meshIndex);\n }\n\n const vertexCount = Number(mesh?._vertices) || Math.floor(bufferData.length / stride);\n if (!vertexCount || vertexCount * stride > bufferData.length)\n {\n throw new Error(`GLES morph deformation mesh ${meshIndex} has invalid vertex storage`);\n }\n\n const targets = Array.isArray(mesh.morphTargets) ? mesh.morphTargets : [];\n if (baseBufferData && baseBufferData.length !== bufferData.length)\n {\n throw new Error(`GLES morph deformation mesh ${meshIndex} changed vertex storage`);\n }\n const original = baseBufferData ? baseBufferData.slice() : bufferData.slice();\n const deformed = original.slice();\n const matchedTargets = [];\n const changedVertices = new Set();\n\n for (const request of requests)\n {\n const matches = targets.filter(target => TargetIdentity(target) === request.identity);\n if (matches.length > 1 && !AreEquivalentTargets(matches))\n {\n throw new Error(\n `GLES morph target ${JSON.stringify(request.targetName)} is ambiguous on mesh ${meshIndex}`\n );\n }\n if (!matches.length) continue;\n ApplyTarget(\n mesh,\n matches[0],\n request.weight,\n original,\n deformed,\n stride,\n vertexCount,\n changedVertices,\n geometryHost\n );\n matchedTargets.push(request.identity);\n }\n\n return {\n mesh,\n meshIndex,\n bufferData,\n buffer: mesh.buffer,\n original,\n deformed,\n matchedTargets,\n changedVertexCount: changedVertices.size\n };\n}\n\nfunction ApplyTarget(\n mesh,\n target,\n weight,\n original,\n deformed,\n stride,\n vertexCount,\n changed,\n geometryHost\n)\n{\n const sparse = target.vertexIndices ?? null;\n const targetVertexCount = sparse ? sparse.length : vertexCount;\n if (!targetVertexCount) return;\n\n for (const [ key, values ] of Object.entries(target.vertex ?? {}))\n {\n const channel = String(key).toUpperCase();\n if (!TARGET_CHANNELS.has(channel) || !values?.length) continue;\n\n const declaration = geometryHost.GetVertexChannelDeclaration(mesh, channel);\n if (!declaration) continue;\n const components = values.length / targetVertexCount;\n if (!Number.isInteger(components) || components <= 0 || components > declaration.elements)\n {\n throw new Error(`GLES morph target ${JSON.stringify(target.sourceName)} has invalid ${key} data`);\n }\n const offset = Number(declaration.offset) / 4;\n if (!Number.isInteger(offset) || offset < 0)\n {\n throw new Error(\"GLES morph target declaration has an invalid offset\");\n }\n\n for (let item = 0; item < targetVertexCount; item++)\n {\n const vertex = sparse ? Number(sparse[item]) : item;\n if (!Number.isInteger(vertex) || vertex < 0 || vertex >= vertexCount)\n {\n throw new Error(`GLES morph target ${JSON.stringify(target.sourceName)} has an invalid vertex index`);\n }\n const destination = vertex * stride + offset;\n const source = item * components;\n for (let component = 0; component < components; component++)\n {\n const base = original[destination + component];\n const value = Number(values[source + component]);\n if (!Number.isFinite(value))\n {\n throw new Error(`GLES morph target ${JSON.stringify(target.sourceName)} contains non-finite data`);\n }\n deformed[destination + component] += weight * (\n target.dataIsDeltas === true ? value : value - base\n );\n }\n changed.add(vertex);\n }\n }\n}\n\nfunction EmptyPrepared(mesh, meshIndex)\n{\n return {\n mesh,\n meshIndex,\n bufferData: mesh?.bufferData ?? null,\n buffer: mesh?.buffer ?? null,\n original: null,\n deformed: null,\n matchedTargets: [],\n changedVertexCount: 0\n };\n}\n\nfunction TargetIdentity(target)\n{\n return normalizeCjsCharacterGlesMorphTargetName(target?.sourceName || target?.name || \"\");\n}\n\n/** Normalizes the authored Shape suffix and separators used by GR2 targets. */\nexport function normalizeCjsCharacterGlesMorphTargetName(value)\n{\n return String(value ?? \"\")\n .trim()\n .replace(/shape[\\s_.-]*\\d*$/iu, \"\")\n .replace(/[^a-z0-9]+/giu, \"\")\n .toLowerCase();\n}\n\nfunction AreEquivalentTargets(targets)\n{\n const first = targets[0];\n return targets.slice(1).every(target => AreEquivalentTargetPayloads(first, target));\n}\n\nfunction AreEquivalentTargetPayloads(left, right)\n{\n if ((left?.dataIsDeltas === true) !== (right?.dataIsDeltas === true)) return false;\n if (!AreEquivalentNumberArrays(left?.vertexIndices ?? null, right?.vertexIndices ?? null))\n {\n return false;\n }\n\n const leftChannels = NormalizeTargetChannels(left?.vertex);\n const rightChannels = NormalizeTargetChannels(right?.vertex);\n if (!leftChannels || !rightChannels || leftChannels.size !== rightChannels.size) return false;\n for (const [ channel, values ] of leftChannels)\n {\n if (!rightChannels.has(channel)\n || !AreEquivalentNumberArrays(values, rightChannels.get(channel)))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction NormalizeTargetChannels(vertex)\n{\n const channels = new Map();\n for (const [ key, values ] of Object.entries(vertex ?? {}))\n {\n const channel = String(key).toUpperCase();\n if (!TARGET_CHANNELS.has(channel) || !values?.length) continue;\n if (channels.has(channel)) return null;\n channels.set(channel, values);\n }\n return channels;\n}\n\nfunction AreEquivalentNumberArrays(left, right)\n{\n if (left === right) return true;\n if (left == null || right == null || left.length !== right.length) return false;\n for (let index = 0; index < left.length; index++)\n {\n if (Number(left[index]) !== Number(right[index])) return false;\n }\n return true;\n}\n\nfunction VerifyPreparedIdentity(prepared)\n{\n for (const value of prepared)\n {\n if (!value.matchedTargets.length) continue;\n if (value.mesh?.bufferData !== value.bufferData || value.mesh?.buffer !== value.buffer)\n {\n throw new Error(\"GLES morph deformation geometry changed while leased\");\n }\n }\n}\n\nfunction ApplyPrepared(prepared, geometryHost)\n{\n const applied = [];\n try\n {\n for (const value of prepared)\n {\n if (!value.matchedTargets.length) continue;\n value.bufferData.set(value.deformed);\n geometryHost.RebuildMeshBounds(value.mesh);\n applied.push(value);\n if (!geometryHost.UploadVertices(value.mesh))\n {\n throw new Error(\"GLES morph deformation upload failed\");\n }\n }\n }\n catch (error)\n {\n error.rollbackFailures = RestorePrepared(applied, geometryHost);\n throw error;\n }\n}\n\nfunction ApplyUpdatedPrepared(previous, prepared, geometryHost)\n{\n if (previous.length !== prepared.length)\n {\n throw new Error(\"GLES morph deformation geometry changed while leased\");\n }\n\n const applied = [];\n try\n {\n for (let index = 0; index < prepared.length; index++)\n {\n const before = previous[index];\n const after = prepared[index];\n if (before.mesh !== after.mesh || before.bufferData !== after.bufferData\n || before.buffer !== after.buffer)\n {\n throw new Error(\"GLES morph deformation geometry changed while leased\");\n }\n if (!before.matchedTargets.length && !after.matchedTargets.length) continue;\n after.bufferData.set(after.deformed);\n geometryHost.RebuildMeshBounds(after.mesh);\n applied.push({ before, after });\n if (!geometryHost.UploadVertices(after.mesh))\n {\n throw new Error(\"GLES morph deformation upload failed\");\n }\n }\n }\n catch (error)\n {\n const rollbackFailures = [];\n for (const { before } of applied.reverse())\n {\n try\n {\n before.bufferData.set(before.deformed);\n geometryHost.RebuildMeshBounds(before.mesh);\n if (!geometryHost.UploadVertices(before.mesh))\n {\n throw new Error(\"vertex update rollback upload failed\");\n }\n }\n catch (rollbackError)\n {\n rollbackFailures.push(rollbackError);\n }\n }\n error.rollbackFailures = rollbackFailures;\n throw error;\n }\n}\n\nfunction RestorePrepared(prepared, geometryHost)\n{\n const failures = [];\n for (const value of [ ...prepared ].reverse())\n {\n if (!value.matchedTargets.length) continue;\n try\n {\n value.bufferData.set(value.original);\n geometryHost.RebuildMeshBounds(value.mesh);\n if (!geometryHost.UploadVertices(value.mesh))\n {\n throw new Error(\"vertex restore upload failed\");\n }\n }\n catch (error)\n {\n failures.push(error);\n }\n }\n return failures;\n}\n\nfunction RequireGeometryHost(value)\n{\n const host = value && typeof value === \"object\" ? value : null;\n for (const name of [\n \"GetMeshes\",\n \"EnsureSystemMirror\",\n \"GetVertexChannelDeclaration\",\n \"RebuildMeshBounds\",\n \"UploadVertices\",\n \"RebuildBounds\"\n ])\n {\n if (typeof host?.[name] !== \"function\")\n {\n throw new TypeError(`GLES morph deformation geometryHost.${name} is required`);\n }\n }\n return host;\n}\n\nfunction CreateReport(requests, prepared, matched)\n{\n return {\n status: \"applied\",\n rule: \"legacy-gles-exact-morph-target-v1\",\n requestedTargetCount: requests.length,\n matchedTargetCount: matched.size,\n matchedTargets: [ ...matched ].sort(),\n meshReports: prepared.map(value => ({\n meshIndex: value.meshIndex,\n matchedTargets: [ ...value.matchedTargets ],\n changedVertexCount: value.changedVertexCount,\n uploaded: value.matchedTargets.length > 0\n }))\n };\n}\n\nfunction CloneReport(value)\n{\n return {\n ...value,\n matchedTargets: [ ...value.matchedTargets ],\n meshReports: value.meshReports.map(report => ({\n ...report,\n matchedTargets: [ ...report.matchedTargets ]\n }))\n };\n}\n\nexport default CjsCharacterGlesMorphDeformation;\n"],"names":["deformationStates","WeakMap","TARGET_CHANNELS","Set","CjsCharacterGlesMorphDeformation","_geometryHost","constructor","geometryHost","RequireGeometryHost","ClassifyTarget","geometryResource","requests","normalized","NormalizeRequests","length","TypeError","request","matchedMeshIndices","coalescedMeshIndices","ambiguousMeshIndices","meshIndex","mesh","meshes","entries","matches","morphTargets","filter","target","TargetIdentity","identity","push","AreEquivalentTargets","status","targetName","HasAnyTarget","classifications","map","every","value","some","Acquire","GetMeshes","Array","isArray","Error","signature","JSON","stringify","weight","state","get","leases","size","VerifyPreparedIdentity","prepared","ApplyPrepared","lease","add","report","CloneReport","EnsureSystemMirror","PrepareMesh","matched","flatMap","matchedTargets","RebuildBounds","CreateReport","set","Update","allowEmpty","has","previousByMesh","Map","original","ApplyUpdatedPrepared","Release","delete","failures","RestorePrepared","error","errors","byIdentity","String","trim","normalizeCjsCharacterGlesMorphTargetName","Number","isFinite","existing","values","sort","a","b","localeCompare","baseBufferData","bufferData","stride","declaration","isInteger","EmptyPrepared","vertexCount","_vertices","Math","floor","targets","slice","deformed","changedVertices","ApplyTarget","buffer","changedVertexCount","changed","sparse","vertexIndices","targetVertexCount","key","Object","vertex","channel","toUpperCase","GetVertexChannelDeclaration","components","elements","sourceName","offset","item","destination","source","component","base","dataIsDeltas","name","replace","toLowerCase","first","AreEquivalentTargetPayloads","left","right","AreEquivalentNumberArrays","leftChannels","NormalizeTargetChannels","rightChannels","channels","index","applied","RebuildMeshBounds","UploadVertices","rollbackFailures","previous","before","after","reverse","rollbackError","host","rule","requestedTargetCount","matchedTargetCount","meshReports","uploaded"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsCharacterGlesMorphDeformation.js","sources":["../../../../src/character/gles/CjsCharacterGlesMorphDeformation.js"],"sourcesContent":["const deformationStates = new WeakMap();\n\nconst TARGET_CHANNELS = new Set([\n \"POSITION\",\n \"NORMAL\",\n \"TANGENT\",\n \"BITANGENT\",\n \"BINORMAL\"\n]);\n\n/**\n * Reversibly realizes exact morph requests on cached GLES geometry.\n *\n * The backend host supplies vertex-layout interpretation and the live buffer\n * operations, keeping Tw2/GL bindings out of the reusable character package.\n */\nexport class CjsCharacterGlesMorphDeformation\n{\n _geometryHost;\n\n /** Validates and retains the geometry host used to apply morph deformation. */\n constructor({ geometryHost } = {})\n {\n this._geometryHost = RequireGeometryHost(geometryHost);\n }\n\n /** Classifies a requested target without mutating realized geometry. */\n static ClassifyTarget(geometryResource, requests)\n {\n const normalized = NormalizeRequests(requests);\n if (normalized.length !== 1)\n {\n throw new TypeError(\"GLES morph target classification requires one request\");\n }\n\n const request = normalized[0];\n const matchedMeshIndices = [];\n const coalescedMeshIndices = [];\n const ambiguousMeshIndices = [];\n for (const [ meshIndex, mesh ] of (geometryResource?.meshes ?? []).entries())\n {\n const matches = (mesh?.morphTargets ?? []).filter(target =>\n TargetIdentity(target) === request.identity);\n if (matches.length === 1)\n {\n matchedMeshIndices.push(meshIndex);\n }\n else if (matches.length > 1)\n {\n if (AreEquivalentTargets(matches))\n {\n matchedMeshIndices.push(meshIndex);\n coalescedMeshIndices.push(meshIndex);\n }\n else\n {\n ambiguousMeshIndices.push(meshIndex);\n }\n }\n }\n\n return {\n status: ambiguousMeshIndices.length\n ? \"ambiguous\"\n : matchedMeshIndices.length\n ? \"exact\"\n : \"unavailable\",\n targetName: request.targetName,\n matchedMeshIndices,\n coalescedMeshIndices,\n ambiguousMeshIndices\n };\n }\n\n /** Returns whether geometry exposes at least one non-ambiguous target. */\n static HasAnyTarget(geometryResource, requests)\n {\n const classifications = NormalizeRequests(requests).map(request =>\n this.ClassifyTarget(geometryResource, [ request ]));\n return classifications.every(value => value.status !== \"ambiguous\")\n && classifications.some(value => value.status === \"exact\");\n }\n\n /** Acquires one shared-geometry deformation lease. */\n async Acquire(geometryResource, requests)\n {\n const normalized = NormalizeRequests(requests);\n const meshes = this._geometryHost.GetMeshes(geometryResource);\n if (!Array.isArray(meshes) || !meshes.length)\n {\n throw new Error(\"GLES morph deformation requires geometry meshes\");\n }\n\n const signature = JSON.stringify(normalized.map(value => [ value.identity, value.weight ]));\n let state = deformationStates.get(geometryResource);\n\n if (state?.leases.size)\n {\n if (state.signature !== signature)\n {\n throw new Error(\"GLES morph deformation conflicts on shared geometry\");\n }\n VerifyPreparedIdentity(state.prepared);\n ApplyPrepared(state.prepared, this._geometryHost);\n const lease = {};\n state.leases.add(lease);\n return { lease, report: CloneReport(state.report) };\n }\n\n await this._geometryHost.EnsureSystemMirror(geometryResource);\n const prepared = meshes.map((mesh, meshIndex) =>\n PrepareMesh(mesh, meshIndex, normalized, this._geometryHost));\n const matched = new Set(prepared.flatMap(value => value.matchedTargets));\n if (!matched.size)\n {\n throw new Error(\"GLES morph deformation found no exact target\");\n }\n\n ApplyPrepared(prepared, this._geometryHost);\n await this._geometryHost.RebuildBounds(geometryResource);\n\n const report = CreateReport(normalized, prepared, matched);\n const lease = {};\n state = {\n leases: new Set([ lease ]),\n meshes,\n prepared,\n report,\n signature\n };\n deformationStates.set(geometryResource, state);\n return { lease, report: CloneReport(report) };\n }\n\n /** Replaces one exclusively owned lease's weights without a rebuild. */\n async Update(geometryResource, lease, requests)\n {\n const normalized = NormalizeRequests(requests, { allowEmpty: true });\n const state = deformationStates.get(geometryResource);\n if (!state?.leases.has(lease))\n {\n throw new Error(\"GLES morph deformation update requires an active lease\");\n }\n\n const signature = JSON.stringify(normalized.map(value => [ value.identity, value.weight ]));\n if (state.signature === signature)\n {\n VerifyPreparedIdentity(state.prepared);\n ApplyPrepared(state.prepared, this._geometryHost);\n await this._geometryHost.RebuildBounds(geometryResource);\n return CloneReport(state.report);\n }\n if (state.leases.size !== 1)\n {\n throw new Error(\"GLES morph deformation update conflicts on shared geometry\");\n }\n\n VerifyPreparedIdentity(state.prepared);\n const previousByMesh = new Map(state.prepared.map(value => [ value.mesh, value ]));\n const prepared = state.meshes.map((mesh, meshIndex) => PrepareMesh(\n mesh,\n meshIndex,\n normalized,\n this._geometryHost,\n previousByMesh.get(mesh)?.original ?? null\n ));\n const matched = new Set(prepared.flatMap(value => value.matchedTargets));\n if (normalized.length && !matched.size)\n {\n throw new Error(\"GLES morph deformation found no exact target\");\n }\n\n ApplyUpdatedPrepared(state.prepared, prepared, this._geometryHost);\n await this._geometryHost.RebuildBounds(geometryResource);\n const report = CreateReport(normalized, prepared, matched);\n state.prepared = prepared;\n state.report = report;\n state.signature = signature;\n return CloneReport(report);\n }\n\n /** Releases a lease and restores original vertices after the final owner. */\n async Release(geometryResource, lease)\n {\n const state = deformationStates.get(geometryResource);\n if (!state?.leases.delete(lease)) return false;\n if (state.leases.size) return true;\n\n VerifyPreparedIdentity(state.prepared);\n const failures = RestorePrepared(state.prepared, this._geometryHost);\n if (failures.length)\n {\n state.leases.add(lease);\n const error = new Error(\"GLES morph deformation restore failed\");\n error.errors = failures;\n throw error;\n }\n await this._geometryHost.RebuildBounds(geometryResource);\n deformationStates.delete(geometryResource);\n return true;\n }\n}\n\nfunction NormalizeRequests(requests, { allowEmpty = false } = {})\n{\n if (!Array.isArray(requests) || (!allowEmpty && !requests.length))\n {\n throw new TypeError(\"GLES morph deformation requires target requests\");\n }\n\n const byIdentity = new Map();\n for (const request of requests)\n {\n const targetName = String(request?.targetName ?? \"\").trim();\n const identity = normalizeCjsCharacterGlesMorphTargetName(targetName);\n const weight = Number(request?.weight);\n if (!targetName || !Number.isFinite(weight))\n {\n throw new TypeError(\"GLES morph deformation requires exact finite target weights\");\n }\n const existing = byIdentity.get(identity);\n if (existing && existing.weight !== weight)\n {\n throw new Error(`Conflicting morph weights for ${JSON.stringify(targetName)}`);\n }\n byIdentity.set(identity, { identity, targetName, weight });\n }\n return [ ...byIdentity.values() ].sort((a, b) => a.identity.localeCompare(b.identity));\n}\n\nfunction PrepareMesh(mesh, meshIndex, requests, geometryHost, baseBufferData = null)\n{\n const bufferData = mesh?.bufferData;\n const stride = Number(mesh?.declaration?.stride) / 4;\n if (!bufferData?.length || !Number.isInteger(stride) || stride <= 0)\n {\n return EmptyPrepared(mesh, meshIndex);\n }\n\n const vertexCount = Number(mesh?._vertices) || Math.floor(bufferData.length / stride);\n if (!vertexCount || vertexCount * stride > bufferData.length)\n {\n throw new Error(`GLES morph deformation mesh ${meshIndex} has invalid vertex storage`);\n }\n\n const targets = Array.isArray(mesh.morphTargets) ? mesh.morphTargets : [];\n if (baseBufferData && baseBufferData.length !== bufferData.length)\n {\n throw new Error(`GLES morph deformation mesh ${meshIndex} changed vertex storage`);\n }\n const original = baseBufferData ? baseBufferData.slice() : bufferData.slice();\n const deformed = original.slice();\n const matchedTargets = [];\n const changedVertices = new Set();\n\n for (const request of requests)\n {\n const matches = targets.filter(target => TargetIdentity(target) === request.identity);\n if (matches.length > 1 && !AreEquivalentTargets(matches))\n {\n throw new Error(\n `GLES morph target ${JSON.stringify(request.targetName)} is ambiguous on mesh ${meshIndex}`\n );\n }\n if (!matches.length) continue;\n ApplyTarget(\n mesh,\n matches[0],\n request.weight,\n original,\n deformed,\n stride,\n vertexCount,\n changedVertices,\n geometryHost\n );\n matchedTargets.push(request.identity);\n }\n\n return {\n mesh,\n meshIndex,\n bufferData,\n buffer: mesh.buffer,\n original,\n deformed,\n matchedTargets,\n changedVertexCount: changedVertices.size\n };\n}\n\nfunction ApplyTarget(\n mesh,\n target,\n weight,\n original,\n deformed,\n stride,\n vertexCount,\n changed,\n geometryHost\n)\n{\n const sparse = target.vertexIndices ?? null;\n const targetVertexCount = sparse ? sparse.length : vertexCount;\n if (!targetVertexCount) return;\n\n for (const [ key, values ] of Object.entries(target.vertex ?? {}))\n {\n const channel = String(key).toUpperCase();\n if (!TARGET_CHANNELS.has(channel) || !values?.length) continue;\n\n const declaration = geometryHost.GetVertexChannelDeclaration(mesh, channel);\n if (!declaration) continue;\n const components = values.length / targetVertexCount;\n if (!Number.isInteger(components) || components <= 0 || components > declaration.elements)\n {\n throw new Error(`GLES morph target ${JSON.stringify(target.sourceName)} has invalid ${key} data`);\n }\n const offset = Number(declaration.offset) / 4;\n if (!Number.isInteger(offset) || offset < 0)\n {\n throw new Error(\"GLES morph target declaration has an invalid offset\");\n }\n\n for (let item = 0; item < targetVertexCount; item++)\n {\n const vertex = sparse ? Number(sparse[item]) : item;\n if (!Number.isInteger(vertex) || vertex < 0 || vertex >= vertexCount)\n {\n throw new Error(`GLES morph target ${JSON.stringify(target.sourceName)} has an invalid vertex index`);\n }\n const destination = vertex * stride + offset;\n const source = item * components;\n for (let component = 0; component < components; component++)\n {\n const base = original[destination + component];\n const value = Number(values[source + component]);\n if (!Number.isFinite(value))\n {\n throw new Error(`GLES morph target ${JSON.stringify(target.sourceName)} contains non-finite data`);\n }\n deformed[destination + component] += weight * (\n target.dataIsDeltas === true ? value : value - base\n );\n }\n changed.add(vertex);\n }\n }\n}\n\nfunction EmptyPrepared(mesh, meshIndex)\n{\n return {\n mesh,\n meshIndex,\n bufferData: mesh?.bufferData ?? null,\n buffer: mesh?.buffer ?? null,\n original: null,\n deformed: null,\n matchedTargets: [],\n changedVertexCount: 0\n };\n}\n\nfunction TargetIdentity(target)\n{\n return normalizeCjsCharacterGlesMorphTargetName(target?.sourceName || target?.name || \"\");\n}\n\n/** Normalizes the authored Shape suffix and separators used by GR2 targets. */\nexport function normalizeCjsCharacterGlesMorphTargetName(value)\n{\n return String(value ?? \"\")\n .trim()\n .replace(/shape[\\s_.-]*\\d*$/iu, \"\")\n .replace(/[^a-z0-9]+/giu, \"\")\n .toLowerCase();\n}\n\nfunction AreEquivalentTargets(targets)\n{\n const first = targets[0];\n return targets.slice(1).every(target => AreEquivalentTargetPayloads(first, target));\n}\n\nfunction AreEquivalentTargetPayloads(left, right)\n{\n if ((left?.dataIsDeltas === true) !== (right?.dataIsDeltas === true)) return false;\n if (!AreEquivalentNumberArrays(left?.vertexIndices ?? null, right?.vertexIndices ?? null))\n {\n return false;\n }\n\n const leftChannels = NormalizeTargetChannels(left?.vertex);\n const rightChannels = NormalizeTargetChannels(right?.vertex);\n if (!leftChannels || !rightChannels || leftChannels.size !== rightChannels.size) return false;\n for (const [ channel, values ] of leftChannels)\n {\n if (!rightChannels.has(channel)\n || !AreEquivalentNumberArrays(values, rightChannels.get(channel)))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction NormalizeTargetChannels(vertex)\n{\n const channels = new Map();\n for (const [ key, values ] of Object.entries(vertex ?? {}))\n {\n const channel = String(key).toUpperCase();\n if (!TARGET_CHANNELS.has(channel) || !values?.length) continue;\n if (channels.has(channel)) return null;\n channels.set(channel, values);\n }\n return channels;\n}\n\nfunction AreEquivalentNumberArrays(left, right)\n{\n if (left === right) return true;\n if (left == null || right == null || left.length !== right.length) return false;\n for (let index = 0; index < left.length; index++)\n {\n if (Number(left[index]) !== Number(right[index])) return false;\n }\n return true;\n}\n\nfunction VerifyPreparedIdentity(prepared)\n{\n for (const value of prepared)\n {\n if (!value.matchedTargets.length) continue;\n if (value.mesh?.bufferData !== value.bufferData || value.mesh?.buffer !== value.buffer)\n {\n throw new Error(\"GLES morph deformation geometry changed while leased\");\n }\n }\n}\n\nfunction ApplyPrepared(prepared, geometryHost)\n{\n const applied = [];\n try\n {\n for (const value of prepared)\n {\n if (!value.matchedTargets.length) continue;\n value.bufferData.set(value.deformed);\n geometryHost.RebuildMeshBounds(value.mesh);\n applied.push(value);\n if (!geometryHost.UploadVertices(value.mesh))\n {\n throw new Error(\"GLES morph deformation upload failed\");\n }\n }\n }\n catch (error)\n {\n error.rollbackFailures = RestorePrepared(applied, geometryHost);\n throw error;\n }\n}\n\nfunction ApplyUpdatedPrepared(previous, prepared, geometryHost)\n{\n if (previous.length !== prepared.length)\n {\n throw new Error(\"GLES morph deformation geometry changed while leased\");\n }\n\n const applied = [];\n try\n {\n for (let index = 0; index < prepared.length; index++)\n {\n const before = previous[index];\n const after = prepared[index];\n if (before.mesh !== after.mesh || before.bufferData !== after.bufferData\n || before.buffer !== after.buffer)\n {\n throw new Error(\"GLES morph deformation geometry changed while leased\");\n }\n if (!before.matchedTargets.length && !after.matchedTargets.length) continue;\n after.bufferData.set(after.deformed);\n geometryHost.RebuildMeshBounds(after.mesh);\n applied.push({ before, after });\n if (!geometryHost.UploadVertices(after.mesh))\n {\n throw new Error(\"GLES morph deformation upload failed\");\n }\n }\n }\n catch (error)\n {\n const rollbackFailures = [];\n for (const { before } of applied.reverse())\n {\n try\n {\n before.bufferData.set(before.deformed);\n geometryHost.RebuildMeshBounds(before.mesh);\n if (!geometryHost.UploadVertices(before.mesh))\n {\n throw new Error(\"vertex update rollback upload failed\");\n }\n }\n catch (rollbackError)\n {\n rollbackFailures.push(rollbackError);\n }\n }\n error.rollbackFailures = rollbackFailures;\n throw error;\n }\n}\n\nfunction RestorePrepared(prepared, geometryHost)\n{\n const failures = [];\n for (const value of [ ...prepared ].reverse())\n {\n if (!value.matchedTargets.length) continue;\n try\n {\n value.bufferData.set(value.original);\n geometryHost.RebuildMeshBounds(value.mesh);\n if (!geometryHost.UploadVertices(value.mesh))\n {\n throw new Error(\"vertex restore upload failed\");\n }\n }\n catch (error)\n {\n failures.push(error);\n }\n }\n return failures;\n}\n\nfunction RequireGeometryHost(value)\n{\n const host = value && typeof value === \"object\" ? value : null;\n for (const name of [\n \"GetMeshes\",\n \"EnsureSystemMirror\",\n \"GetVertexChannelDeclaration\",\n \"RebuildMeshBounds\",\n \"UploadVertices\",\n \"RebuildBounds\"\n ])\n {\n if (typeof host?.[name] !== \"function\")\n {\n throw new TypeError(`GLES morph deformation geometryHost.${name} is required`);\n }\n }\n return host;\n}\n\nfunction CreateReport(requests, prepared, matched)\n{\n return {\n status: \"applied\",\n rule: \"legacy-gles-exact-morph-target-v1\",\n requestedTargetCount: requests.length,\n matchedTargetCount: matched.size,\n matchedTargets: [ ...matched ].sort(),\n meshReports: prepared.map(value => ({\n meshIndex: value.meshIndex,\n matchedTargets: [ ...value.matchedTargets ],\n changedVertexCount: value.changedVertexCount,\n uploaded: value.matchedTargets.length > 0\n }))\n };\n}\n\nfunction CloneReport(value)\n{\n return {\n ...value,\n matchedTargets: [ ...value.matchedTargets ],\n meshReports: value.meshReports.map(report => ({\n ...report,\n matchedTargets: [ ...report.matchedTargets ]\n }))\n };\n}\n\nexport default CjsCharacterGlesMorphDeformation;\n"],"names":["deformationStates","WeakMap","TARGET_CHANNELS","Set","CjsCharacterGlesMorphDeformation","_geometryHost","constructor","geometryHost","RequireGeometryHost","ClassifyTarget","geometryResource","requests","normalized","NormalizeRequests","length","TypeError","request","matchedMeshIndices","coalescedMeshIndices","ambiguousMeshIndices","meshIndex","mesh","meshes","entries","matches","morphTargets","filter","target","TargetIdentity","identity","push","AreEquivalentTargets","status","targetName","HasAnyTarget","classifications","map","every","value","some","Acquire","GetMeshes","Array","isArray","Error","signature","JSON","stringify","weight","state","get","leases","size","VerifyPreparedIdentity","prepared","ApplyPrepared","lease","add","report","CloneReport","EnsureSystemMirror","PrepareMesh","matched","flatMap","matchedTargets","RebuildBounds","CreateReport","set","Update","allowEmpty","has","previousByMesh","Map","original","ApplyUpdatedPrepared","Release","delete","failures","RestorePrepared","error","errors","byIdentity","String","trim","normalizeCjsCharacterGlesMorphTargetName","Number","isFinite","existing","values","sort","a","b","localeCompare","baseBufferData","bufferData","stride","declaration","isInteger","EmptyPrepared","vertexCount","_vertices","Math","floor","targets","slice","deformed","changedVertices","ApplyTarget","buffer","changedVertexCount","changed","sparse","vertexIndices","targetVertexCount","key","Object","vertex","channel","toUpperCase","GetVertexChannelDeclaration","components","elements","sourceName","offset","item","destination","source","component","base","dataIsDeltas","name","replace","toLowerCase","first","AreEquivalentTargetPayloads","left","right","AreEquivalentNumberArrays","leftChannels","NormalizeTargetChannels","rightChannels","channels","index","applied","RebuildMeshBounds","UploadVertices","rollbackFailures","previous","before","after","reverse","rollbackError","host","rule","requestedTargetCount","matchedTargetCount","meshReports","uploaded"],"mappings":"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"}
|
|
@@ -8,6 +8,11 @@ const originalIndices = new WeakMap();
|
|
|
8
8
|
*/
|
|
9
9
|
class CjsCharacterGlesPaletteCompatibility {
|
|
10
10
|
_geometryHost;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Validates and retains the geometry host used to apply palette-capacity
|
|
14
|
+
* policies.
|
|
15
|
+
*/
|
|
11
16
|
constructor({
|
|
12
17
|
geometryHost
|
|
13
18
|
} = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsCharacterGlesPaletteCompatibility.js","sources":["../../../../src/character/gles/CjsCharacterGlesPaletteCompatibility.js"],"sourcesContent":["const originalIndices = new WeakMap();\n\n/**\n * Applies reviewed GLES palette-capacity policies to realized geometry.\n *\n * Geometry inspection is intentionally local to this backend helper; every\n * platform-specific resource operation is delegated to the injected host.\n */\nexport class CjsCharacterGlesPaletteCompatibility\n{\n _geometryHost;\n\n constructor({ geometryHost } = {})\n {\n this._geometryHost = RequireGeometryHost(geometryHost);\n }\n\n /** Applies one declared palette policy to geometry that the host realized. */\n async Apply(geometryResource, policy)\n {\n ValidatePolicy(policy);\n\n const meshes = this._geometryHost.GetMeshes(geometryResource);\n if (!Array.isArray(meshes) || !meshes.length)\n {\n throw new Error(\"GLES palette compatibility requires geometry meshes\");\n }\n\n await this._geometryHost.EnsureSystemMirror(geometryResource);\n\n const reports = meshes.map(mesh => MaskMesh(\n mesh,\n policy.bonePrefixes,\n this._geometryHost\n ));\n const report = {\n status: reports.every(value => value.available && value.uploaded)\n ? \"applied\"\n : \"failed\",\n rule: policy.rule,\n shaderCapacity: policy.shaderCapacity,\n requiredBoneCount: policy.requiredBoneCount,\n bonePrefixes: [ ...policy.bonePrefixes ],\n matchedBoneCount: reports.reduce((sum, value) => sum + value.matchedBoneCount, 0),\n maskedVertexCount: reports.reduce((sum, value) => sum + value.maskedVertexCount, 0),\n maskedTriangleCount: reports.reduce((sum, value) => sum + value.maskedTriangleCount, 0),\n meshReports: reports\n };\n\n if (report.status !== \"applied\" || !report.maskedTriangleCount)\n {\n throw new Error(\"GLES right-hand compatibility mask could not be applied\");\n }\n\n await this._geometryHost.RebuildBounds(geometryResource);\n return report;\n }\n}\n\nfunction MaskMesh(mesh, bonePrefixes, geometryHost)\n{\n const indices = mesh?.indexData;\n const bindings = Array.isArray(mesh?.boneBindings) ? mesh.boneBindings : [];\n const stride = Number(mesh?.declaration?.stride) / 4;\n const vertexCount = Number(mesh?._vertices)\n || (Number.isInteger(stride) && stride > 0 && mesh?.bufferData\n ? Math.floor(mesh.bufferData.length / stride)\n : 0);\n\n if (!indices?.length || !bindings.length || !vertexCount\n || typeof mesh?.GetVertexBlendIndice !== \"function\"\n || typeof mesh?.GetVertexBlendWeight !== \"function\")\n {\n return EmptyReport(false);\n }\n\n let source = originalIndices.get(mesh);\n if (!source || source.target !== indices || source.values.length !== indices.length)\n {\n source = { target: indices, values: indices.slice() };\n originalIndices.set(mesh, source);\n }\n if (typeof indices.set === \"function\") indices.set(source.values);\n else source.values.forEach((value, index) => { indices[index] = value; });\n\n const normalizedPrefixes = bonePrefixes.map(value => value.toLowerCase());\n const matchedBones = new Set();\n\n bindings.forEach((binding, index) =>\n {\n const name = String(binding ?? \"\").toLowerCase();\n if (normalizedPrefixes.some(prefix => name.startsWith(prefix))) matchedBones.add(index);\n });\n\n if (!matchedBones.size) return EmptyReport(true);\n\n const affected = new Uint8Array(vertexCount);\n const blendIndices = [ 0, 0, 0, 0 ];\n const blendWeights = [ 0, 0, 0, 0 ];\n let maskedVertexCount = 0;\n\n for (let vertex = 0; vertex < vertexCount; vertex++)\n {\n if (mesh.declaration?.swapBlendWeightsAndIndices === false)\n {\n mesh.GetVertexBlendWeight(blendIndices, vertex);\n mesh.GetVertexBlendIndice(blendWeights, vertex);\n }\n else\n {\n mesh.GetVertexBlendIndice(blendIndices, vertex);\n mesh.GetVertexBlendWeight(blendWeights, vertex);\n }\n\n for (let influence = 0; influence < 4; influence++)\n {\n const boneIndex = Math.round(Number(blendIndices[influence]));\n const weight = Math.abs(Number(blendWeights[influence]) || 0);\n if (weight <= 1e-6 || !matchedBones.has(boneIndex)) continue;\n affected[vertex] = 1;\n maskedVertexCount++;\n break;\n }\n }\n\n let maskedTriangleCount = 0;\n for (let index = 0; index + 2 < indices.length; index += 3)\n {\n const a = Number(indices[index]);\n const b = Number(indices[index + 1]);\n const c = Number(indices[index + 2]);\n if (![ a, b, c ].every(value => Number.isInteger(value) && value >= 0 && value < vertexCount)) continue;\n if (!affected[a] && !affected[b] && !affected[c]) continue;\n indices[index + 1] = a;\n indices[index + 2] = a;\n maskedTriangleCount++;\n }\n\n return {\n available: true,\n matchedBoneCount: matchedBones.size,\n maskedVertexCount,\n maskedTriangleCount,\n uploaded: maskedTriangleCount > 0 && geometryHost.UploadIndices(mesh)\n };\n}\n\nfunction EmptyReport(available)\n{\n return {\n available,\n matchedBoneCount: 0,\n maskedVertexCount: 0,\n maskedTriangleCount: 0,\n uploaded: false\n };\n}\n\nfunction RequireGeometryHost(value)\n{\n const host = value && typeof value === \"object\" ? value : null;\n for (const name of [ \"GetMeshes\", \"EnsureSystemMirror\", \"UploadIndices\", \"RebuildBounds\" ])\n {\n if (typeof host?.[name] !== \"function\")\n {\n throw new TypeError(`GLES palette compatibility geometryHost.${name} is required`);\n }\n }\n return host;\n}\n\nfunction ValidatePolicy(policy)\n{\n if (policy?.status !== \"policy\"\n || policy?.rule !== \"legacy-opengl-bone-capacity-mask-v1\"\n || policy?.shaderCapacity !== 58\n || policy?.requiredBoneCount !== 69\n || !Array.isArray(policy?.bonePrefixes)\n || policy.bonePrefixes.length !== 1\n || policy.bonePrefixes[0] !== \"RightHand\")\n {\n throw new TypeError(\"Unsupported GLES palette compatibility policy\");\n }\n}\n\nexport default CjsCharacterGlesPaletteCompatibility;\n"],"names":["originalIndices","WeakMap","CjsCharacterGlesPaletteCompatibility","_geometryHost","constructor","geometryHost","RequireGeometryHost","Apply","geometryResource","policy","ValidatePolicy","meshes","GetMeshes","Array","isArray","length","Error","EnsureSystemMirror","reports","map","mesh","MaskMesh","bonePrefixes","report","status","every","value","available","uploaded","rule","shaderCapacity","requiredBoneCount","matchedBoneCount","reduce","sum","maskedVertexCount","maskedTriangleCount","meshReports","RebuildBounds","indices","indexData","bindings","boneBindings","stride","Number","declaration","vertexCount","_vertices","isInteger","bufferData","Math","floor","GetVertexBlendIndice","GetVertexBlendWeight","EmptyReport","source","get","target","values","slice","set","forEach","index","normalizedPrefixes","toLowerCase","matchedBones","Set","binding","name","String","some","prefix","startsWith","add","size","affected","Uint8Array","blendIndices","blendWeights","vertex","swapBlendWeightsAndIndices","influence","boneIndex","round","weight","abs","has","a","b","c","UploadIndices","host","TypeError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsCharacterGlesPaletteCompatibility.js","sources":["../../../../src/character/gles/CjsCharacterGlesPaletteCompatibility.js"],"sourcesContent":["const originalIndices = new WeakMap();\n\n/**\n * Applies reviewed GLES palette-capacity policies to realized geometry.\n *\n * Geometry inspection is intentionally local to this backend helper; every\n * platform-specific resource operation is delegated to the injected host.\n */\nexport class CjsCharacterGlesPaletteCompatibility\n{\n _geometryHost;\n\n /**\n * Validates and retains the geometry host used to apply palette-capacity\n * policies.\n */\n constructor({ geometryHost } = {})\n {\n this._geometryHost = RequireGeometryHost(geometryHost);\n }\n\n /** Applies one declared palette policy to geometry that the host realized. */\n async Apply(geometryResource, policy)\n {\n ValidatePolicy(policy);\n\n const meshes = this._geometryHost.GetMeshes(geometryResource);\n if (!Array.isArray(meshes) || !meshes.length)\n {\n throw new Error(\"GLES palette compatibility requires geometry meshes\");\n }\n\n await this._geometryHost.EnsureSystemMirror(geometryResource);\n\n const reports = meshes.map(mesh => MaskMesh(\n mesh,\n policy.bonePrefixes,\n this._geometryHost\n ));\n const report = {\n status: reports.every(value => value.available && value.uploaded)\n ? \"applied\"\n : \"failed\",\n rule: policy.rule,\n shaderCapacity: policy.shaderCapacity,\n requiredBoneCount: policy.requiredBoneCount,\n bonePrefixes: [ ...policy.bonePrefixes ],\n matchedBoneCount: reports.reduce((sum, value) => sum + value.matchedBoneCount, 0),\n maskedVertexCount: reports.reduce((sum, value) => sum + value.maskedVertexCount, 0),\n maskedTriangleCount: reports.reduce((sum, value) => sum + value.maskedTriangleCount, 0),\n meshReports: reports\n };\n\n if (report.status !== \"applied\" || !report.maskedTriangleCount)\n {\n throw new Error(\"GLES right-hand compatibility mask could not be applied\");\n }\n\n await this._geometryHost.RebuildBounds(geometryResource);\n return report;\n }\n}\n\nfunction MaskMesh(mesh, bonePrefixes, geometryHost)\n{\n const indices = mesh?.indexData;\n const bindings = Array.isArray(mesh?.boneBindings) ? mesh.boneBindings : [];\n const stride = Number(mesh?.declaration?.stride) / 4;\n const vertexCount = Number(mesh?._vertices)\n || (Number.isInteger(stride) && stride > 0 && mesh?.bufferData\n ? Math.floor(mesh.bufferData.length / stride)\n : 0);\n\n if (!indices?.length || !bindings.length || !vertexCount\n || typeof mesh?.GetVertexBlendIndice !== \"function\"\n || typeof mesh?.GetVertexBlendWeight !== \"function\")\n {\n return EmptyReport(false);\n }\n\n let source = originalIndices.get(mesh);\n if (!source || source.target !== indices || source.values.length !== indices.length)\n {\n source = { target: indices, values: indices.slice() };\n originalIndices.set(mesh, source);\n }\n if (typeof indices.set === \"function\") indices.set(source.values);\n else source.values.forEach((value, index) => { indices[index] = value; });\n\n const normalizedPrefixes = bonePrefixes.map(value => value.toLowerCase());\n const matchedBones = new Set();\n\n bindings.forEach((binding, index) =>\n {\n const name = String(binding ?? \"\").toLowerCase();\n if (normalizedPrefixes.some(prefix => name.startsWith(prefix))) matchedBones.add(index);\n });\n\n if (!matchedBones.size) return EmptyReport(true);\n\n const affected = new Uint8Array(vertexCount);\n const blendIndices = [ 0, 0, 0, 0 ];\n const blendWeights = [ 0, 0, 0, 0 ];\n let maskedVertexCount = 0;\n\n for (let vertex = 0; vertex < vertexCount; vertex++)\n {\n if (mesh.declaration?.swapBlendWeightsAndIndices === false)\n {\n mesh.GetVertexBlendWeight(blendIndices, vertex);\n mesh.GetVertexBlendIndice(blendWeights, vertex);\n }\n else\n {\n mesh.GetVertexBlendIndice(blendIndices, vertex);\n mesh.GetVertexBlendWeight(blendWeights, vertex);\n }\n\n for (let influence = 0; influence < 4; influence++)\n {\n const boneIndex = Math.round(Number(blendIndices[influence]));\n const weight = Math.abs(Number(blendWeights[influence]) || 0);\n if (weight <= 1e-6 || !matchedBones.has(boneIndex)) continue;\n affected[vertex] = 1;\n maskedVertexCount++;\n break;\n }\n }\n\n let maskedTriangleCount = 0;\n for (let index = 0; index + 2 < indices.length; index += 3)\n {\n const a = Number(indices[index]);\n const b = Number(indices[index + 1]);\n const c = Number(indices[index + 2]);\n if (![ a, b, c ].every(value => Number.isInteger(value) && value >= 0 && value < vertexCount)) continue;\n if (!affected[a] && !affected[b] && !affected[c]) continue;\n indices[index + 1] = a;\n indices[index + 2] = a;\n maskedTriangleCount++;\n }\n\n return {\n available: true,\n matchedBoneCount: matchedBones.size,\n maskedVertexCount,\n maskedTriangleCount,\n uploaded: maskedTriangleCount > 0 && geometryHost.UploadIndices(mesh)\n };\n}\n\nfunction EmptyReport(available)\n{\n return {\n available,\n matchedBoneCount: 0,\n maskedVertexCount: 0,\n maskedTriangleCount: 0,\n uploaded: false\n };\n}\n\nfunction RequireGeometryHost(value)\n{\n const host = value && typeof value === \"object\" ? value : null;\n for (const name of [ \"GetMeshes\", \"EnsureSystemMirror\", \"UploadIndices\", \"RebuildBounds\" ])\n {\n if (typeof host?.[name] !== \"function\")\n {\n throw new TypeError(`GLES palette compatibility geometryHost.${name} is required`);\n }\n }\n return host;\n}\n\nfunction ValidatePolicy(policy)\n{\n if (policy?.status !== \"policy\"\n || policy?.rule !== \"legacy-opengl-bone-capacity-mask-v1\"\n || policy?.shaderCapacity !== 58\n || policy?.requiredBoneCount !== 69\n || !Array.isArray(policy?.bonePrefixes)\n || policy.bonePrefixes.length !== 1\n || policy.bonePrefixes[0] !== \"RightHand\")\n {\n throw new TypeError(\"Unsupported GLES palette compatibility policy\");\n }\n}\n\nexport default CjsCharacterGlesPaletteCompatibility;\n"],"names":["originalIndices","WeakMap","CjsCharacterGlesPaletteCompatibility","_geometryHost","constructor","geometryHost","RequireGeometryHost","Apply","geometryResource","policy","ValidatePolicy","meshes","GetMeshes","Array","isArray","length","Error","EnsureSystemMirror","reports","map","mesh","MaskMesh","bonePrefixes","report","status","every","value","available","uploaded","rule","shaderCapacity","requiredBoneCount","matchedBoneCount","reduce","sum","maskedVertexCount","maskedTriangleCount","meshReports","RebuildBounds","indices","indexData","bindings","boneBindings","stride","Number","declaration","vertexCount","_vertices","isInteger","bufferData","Math","floor","GetVertexBlendIndice","GetVertexBlendWeight","EmptyReport","source","get","target","values","slice","set","forEach","index","normalizedPrefixes","toLowerCase","matchedBones","Set","binding","name","String","some","prefix","startsWith","add","size","affected","Uint8Array","blendIndices","blendWeights","vertex","swapBlendWeightsAndIndices","influence","boneIndex","round","weight","abs","has","a","b","c","UploadIndices","host","TypeError"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsCharacterGlesTriangleCoverage.js","sources":["../../../../src/character/gles/CjsCharacterGlesTriangleCoverage.js"],"sourcesContent":["const coverageStates = new WeakMap();\n\n/**\n * Reversibly masks triangles for reviewed GLES foundation-coverage policies.\n *\n * Cached geometry may be shared by overlapping appearance revisions. Leases\n * keep a mask active until the final realized consumer has released it. All\n * live resource and buffer work is performed by the injected geometry host.\n */\nexport class CjsCharacterGlesTriangleCoverage\n{\n _geometryHost;\n\n constructor({ geometryHost } = {})\n {\n this._geometryHost = RequireGeometryHost(geometryHost);\n }\n\n /** Acquires one coverage lease and returns a detached application report. */\n async Acquire(geometryResource, policy)\n {\n ValidatePolicy(policy);\n const meshes = this._geometryHost.GetMeshes(geometryResource);\n if (!Array.isArray(meshes) || !meshes.length)\n {\n throw new Error(\"GLES triangle coverage requires geometry meshes\");\n }\n\n let state = coverageStates.get(geometryResource);\n if (state?.leases.size)\n {\n const lease = {};\n const previousPrepared = state.prepared;\n const policies = new Map(state.policies);\n policies.set(lease, CreatePolicyDescriptor(policy));\n const prepared = BuildPrepared(state.meshes, state.originalIndices, [ ...policies.values() ]);\n if (prepared.some(value => !value.available)\n || !prepared.some(value => value.maskedTriangleCount > 0))\n {\n throw new Error(\"GLES semantic triangle coverage could not be prepared\");\n }\n try\n {\n ApplyPrepared(prepared, this._geometryHost);\n }\n catch (error)\n {\n error.rollbackFailures ??= [];\n error.rollbackFailures.push(...TryApplyPrepared(\n previousPrepared,\n this._geometryHost\n ));\n throw error;\n }\n const report = CreateReport(policy, prepared);\n state.leases.add(lease);\n state.policies = policies;\n state.prepared = prepared;\n state.report = report;\n await this._geometryHost.RebuildBounds(geometryResource);\n return { lease, report: CloneReport(report) };\n }\n\n await this._geometryHost.EnsureSystemMirror(geometryResource);\n const originalIndices = meshes.map(mesh => mesh?.indexData?.slice?.() ?? null);\n const prepared = BuildPrepared(meshes, originalIndices, [ CreatePolicyDescriptor(policy) ]);\n if (prepared.some(value => !value.available)\n || !prepared.some(value => value.maskedTriangleCount > 0))\n {\n throw new Error(\"GLES semantic triangle coverage could not be prepared\");\n }\n\n ApplyPrepared(prepared, this._geometryHost);\n await this._geometryHost.RebuildBounds(geometryResource);\n\n const report = CreateReport(policy, prepared);\n const lease = {};\n state = {\n leases: new Set([ lease ]),\n policies: new Map([ [ lease, CreatePolicyDescriptor(policy) ] ]),\n meshes,\n originalIndices,\n prepared,\n report\n };\n coverageStates.set(geometryResource, state);\n return { lease, report: CloneReport(report) };\n }\n\n /** Releases a lease and restores captured indices after the final owner. */\n async Release(geometryResource, lease)\n {\n const state = coverageStates.get(geometryResource);\n if (!state?.leases.has(lease)) return false;\n state.leases.delete(lease);\n const releasedPolicy = state.policies.get(lease);\n state.policies.delete(lease);\n if (state.leases.size)\n {\n const previousPrepared = state.prepared;\n const prepared = BuildPrepared(\n state.meshes,\n state.originalIndices,\n [ ...state.policies.values() ]\n );\n try\n {\n ApplyPrepared(prepared, this._geometryHost);\n }\n catch (error)\n {\n const reapplyFailures = TryApplyPrepared(previousPrepared, this._geometryHost);\n state.leases.add(lease);\n state.policies.set(lease, releasedPolicy);\n error.rollbackFailures ??= [];\n error.rollbackFailures.push(...reapplyFailures);\n throw error;\n }\n state.prepared = prepared;\n await this._geometryHost.RebuildBounds(geometryResource);\n return true;\n }\n\n const failures = RestorePrepared(state.prepared, this._geometryHost);\n if (failures.length)\n {\n const reapplyFailures = TryApplyPrepared(state.prepared, this._geometryHost);\n state.leases.add(lease);\n state.policies.set(lease, releasedPolicy);\n failures.push(...reapplyFailures);\n const error = new Error(\"GLES triangle coverage restore failed\");\n error.errors = failures;\n throw error;\n }\n await this._geometryHost.RebuildBounds(geometryResource);\n coverageStates.delete(geometryResource);\n return true;\n }\n}\n\nfunction ApplyPrepared(prepared, geometryHost)\n{\n const applied = [];\n try\n {\n for (const item of prepared)\n {\n SetIndices(item.mesh.indexData, item.maskedIndices);\n applied.push(item);\n if (!geometryHost.UploadIndices(item.mesh))\n {\n throw new Error(\"GLES foot/toe triangle coverage upload failed\");\n }\n }\n }\n catch (error)\n {\n error.rollbackFailures = RestorePrepared(applied, geometryHost);\n throw error;\n }\n}\n\nfunction TryApplyPrepared(prepared, geometryHost)\n{\n try\n {\n ApplyPrepared(prepared, geometryHost);\n return [];\n }\n catch (error)\n {\n return [ error, ...(error.rollbackFailures ?? []) ];\n }\n}\n\nfunction BuildPrepared(meshes, originalIndices, policies)\n{\n return meshes.map((mesh, index) => PrepareMesh(mesh, policies, originalIndices[index]));\n}\n\nfunction CreatePolicyDescriptor(policy)\n{\n return {\n bonePrefixes: [ ...policy.bonePrefixes ],\n triangleSelection: policy.triangleSelection ?? \"any-vertex\"\n };\n}\n\nfunction PrepareMesh(mesh, policies, sourceIndices = null)\n{\n const indices = mesh?.indexData;\n const bindings = Array.isArray(mesh?.boneBindings) ? mesh.boneBindings : [];\n const stride = Number(mesh?.declaration?.stride) / 4;\n const vertexCount = Number(mesh?._vertices)\n || (Number.isInteger(stride) && stride > 0 && mesh?.bufferData\n ? Math.floor(mesh.bufferData.length / stride)\n : 0);\n if (!indices?.length || !bindings.length || !vertexCount\n || typeof mesh?.GetVertexBlendIndice !== \"function\"\n || typeof mesh?.GetVertexBlendWeight !== \"function\")\n {\n return {\n mesh,\n available: false,\n originalIndices: null,\n maskedIndices: null,\n matchedBoneCount: 0,\n maskedVertexCount: 0,\n maskedTriangleCount: 0\n };\n }\n\n const originalIndices = sourceIndices?.slice?.() ?? indices.slice();\n const maskedIndices = originalIndices.slice();\n const matchedBoneSets = policies.map(policy =>\n {\n const prefixes = policy.bonePrefixes.map(value => value.toLowerCase());\n const matched = new Set();\n bindings.forEach((binding, index) =>\n {\n const name = String(binding ?? \"\").toLowerCase();\n if (prefixes.some(prefix => name.startsWith(prefix))) matched.add(index);\n });\n return matched;\n });\n\n const affectedByPolicy = policies.map(() => new Uint8Array(vertexCount));\n const affected = new Uint8Array(vertexCount);\n const blendIndices = [ 0, 0, 0, 0 ];\n const blendWeights = [ 0, 0, 0, 0 ];\n let maskedVertexCount = 0;\n for (let vertex = 0; vertex < vertexCount; vertex++)\n {\n if (mesh.declaration?.swapBlendWeightsAndIndices === false)\n {\n mesh.GetVertexBlendWeight(blendIndices, vertex);\n mesh.GetVertexBlendIndice(blendWeights, vertex);\n }\n else\n {\n mesh.GetVertexBlendIndice(blendIndices, vertex);\n mesh.GetVertexBlendWeight(blendWeights, vertex);\n }\n for (let influence = 0; influence < 4; influence++)\n {\n const boneIndex = Math.round(Number(blendIndices[influence]));\n const weight = Math.abs(Number(blendWeights[influence]) || 0);\n if (weight <= 1e-6) continue;\n matchedBoneSets.forEach((matchedBones, policyIndex) =>\n {\n if (matchedBones.has(boneIndex)) affectedByPolicy[policyIndex][vertex] = 1;\n });\n }\n if (affectedByPolicy.some(value => value[vertex]))\n {\n affected[vertex] = 1;\n maskedVertexCount++;\n }\n }\n\n let maskedTriangleCount = 0;\n for (let index = 0; index + 2 < maskedIndices.length; index += 3)\n {\n const a = Number(maskedIndices[index]);\n const b = Number(maskedIndices[index + 1]);\n const c = Number(maskedIndices[index + 2]);\n if (![ a, b, c ].every(value => Number.isInteger(value)\n && value >= 0 && value < vertexCount)) continue;\n const selected = policies.some((policy, policyIndex) =>\n {\n const policyAffected = affectedByPolicy[policyIndex];\n return policy.triangleSelection === \"all-vertices\"\n ? policyAffected[a] && policyAffected[b] && policyAffected[c]\n : policyAffected[a] || policyAffected[b] || policyAffected[c];\n });\n if (!selected) continue;\n maskedIndices[index + 1] = a;\n maskedIndices[index + 2] = a;\n maskedTriangleCount++;\n }\n\n return {\n mesh,\n available: true,\n originalIndices,\n maskedIndices,\n matchedBoneCount: new Set(matchedBoneSets.flatMap(value => [ ...value ])).size,\n maskedVertexCount,\n maskedTriangleCount\n };\n}\n\nfunction RestorePrepared(prepared, geometryHost)\n{\n const failures = [];\n for (const item of [ ...prepared ].reverse())\n {\n try\n {\n SetIndices(item.mesh.indexData, item.originalIndices);\n if (!geometryHost.UploadIndices(item.mesh))\n {\n throw new Error(\"index restore upload failed\");\n }\n }\n catch (error)\n {\n failures.push(error);\n }\n }\n return failures;\n}\n\nfunction SetIndices(target, source)\n{\n if (typeof target?.set === \"function\") target.set(source);\n else source.forEach((value, index) => { target[index] = value; });\n}\n\nfunction RequireGeometryHost(value)\n{\n const host = value && typeof value === \"object\" ? value : null;\n for (const name of [ \"GetMeshes\", \"EnsureSystemMirror\", \"UploadIndices\", \"RebuildBounds\" ])\n {\n if (typeof host?.[name] !== \"function\")\n {\n throw new TypeError(`GLES triangle coverage geometryHost.${name} is required`);\n }\n }\n return host;\n}\n\nfunction ValidatePolicy(policy)\n{\n const footwear = [ \"LeftFoot\", \"RightFoot\", \"LeftToe\", \"RightToe\" ];\n const fullLeg = [\n \"LeftUpLeg\", \"RightUpLeg\", \"LeftLeg\", \"RightLeg\",\n \"LeftFoot\", \"RightFoot\", \"LeftToe\", \"RightToe\"\n ];\n const expected = policy?.evidence?.rule === \"legacy-opengl-authored-leg-coverage-v1\"\n ? fullLeg\n : footwear;\n if (policy?.strategy !== \"triangle-mask\"\n || policy?.triangleRule !== \"legacy-opengl-exact-foundation-triangle-coverage-v1\"\n || policy?.evidence?.status !== \"policy\"\n || ![\n \"legacy-opengl-exact-foundation-coverage-v1\",\n \"legacy-opengl-authored-footwear-coverage-v1\",\n \"legacy-opengl-configured-footwear-skin-replacement-v1\",\n \"legacy-opengl-authored-leg-coverage-v1\"\n ].includes(policy?.evidence?.rule)\n || !Array.isArray(policy?.bonePrefixes)\n || policy?.triangleSelection !== (policy?.evidence?.rule\n === \"legacy-opengl-authored-leg-coverage-v1\"\n ? \"all-vertices\"\n : undefined)\n || policy.bonePrefixes.length !== expected.length\n || expected.some((value, index) => policy.bonePrefixes[index] !== value))\n {\n throw new TypeError(\"Unsupported GLES triangle coverage policy\");\n }\n}\n\nfunction CreateReport(policy, prepared)\n{\n return {\n status: \"applied\",\n rule: policy.triangleRule,\n bonePrefixes: [ ...policy.bonePrefixes ],\n matchedBoneCount: prepared.reduce((sum, value) => sum + value.matchedBoneCount, 0),\n maskedVertexCount: prepared.reduce((sum, value) => sum + value.maskedVertexCount, 0),\n maskedTriangleCount: prepared.reduce((sum, value) => sum + value.maskedTriangleCount, 0),\n meshReports: prepared.map(value => ({\n available: value.available,\n matchedBoneCount: value.matchedBoneCount,\n maskedVertexCount: value.maskedVertexCount,\n maskedTriangleCount: value.maskedTriangleCount,\n uploaded: true\n }))\n };\n}\n\nfunction CloneReport(value)\n{\n return {\n ...value,\n bonePrefixes: [ ...value.bonePrefixes ],\n meshReports: value.meshReports.map(report => ({ ...report }))\n };\n}\n\nexport default CjsCharacterGlesTriangleCoverage;\n"],"names":["coverageStates","WeakMap","CjsCharacterGlesTriangleCoverage","_geometryHost","constructor","geometryHost","RequireGeometryHost","Acquire","geometryResource","policy","ValidatePolicy","meshes","GetMeshes","Array","isArray","length","Error","state","get","leases","size","lease","previousPrepared","prepared","policies","Map","set","CreatePolicyDescriptor","BuildPrepared","originalIndices","values","some","value","available","maskedTriangleCount","ApplyPrepared","error","rollbackFailures","push","TryApplyPrepared","report","CreateReport","add","RebuildBounds","CloneReport","EnsureSystemMirror","map","mesh","indexData","slice","Set","Release","has","delete","releasedPolicy","reapplyFailures","failures","RestorePrepared","errors","applied","item","SetIndices","maskedIndices","UploadIndices","index","PrepareMesh","bonePrefixes","triangleSelection","sourceIndices","indices","bindings","boneBindings","stride","Number","declaration","vertexCount","_vertices","isInteger","bufferData","Math","floor","GetVertexBlendIndice","GetVertexBlendWeight","matchedBoneCount","maskedVertexCount","matchedBoneSets","prefixes","toLowerCase","matched","forEach","binding","name","String","prefix","startsWith","affectedByPolicy","Uint8Array","affected","blendIndices","blendWeights","vertex","swapBlendWeightsAndIndices","influence","boneIndex","round","weight","abs","matchedBones","policyIndex","a","b","c","every","selected","policyAffected","flatMap","reverse","target","source","host","TypeError","footwear","fullLeg","expected","evidence","rule","strategy","triangleRule","status","includes","undefined","reduce","sum","meshReports","uploaded"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsCharacterGlesTriangleCoverage.js","sources":["../../../../src/character/gles/CjsCharacterGlesTriangleCoverage.js"],"sourcesContent":["const coverageStates = new WeakMap();\n\n/**\n * Reversibly masks triangles for reviewed GLES foundation-coverage policies.\n *\n * Cached geometry may be shared by overlapping appearance revisions. Leases\n * keep a mask active until the final realized consumer has released it. All\n * live resource and buffer work is performed by the injected geometry host.\n */\nexport class CjsCharacterGlesTriangleCoverage\n{\n _geometryHost;\n\n /**\n * Validates and retains the geometry host used to apply triangle-coverage\n * masks.\n */\n constructor({ geometryHost } = {})\n {\n this._geometryHost = RequireGeometryHost(geometryHost);\n }\n\n /** Acquires one coverage lease and returns a detached application report. */\n async Acquire(geometryResource, policy)\n {\n ValidatePolicy(policy);\n const meshes = this._geometryHost.GetMeshes(geometryResource);\n if (!Array.isArray(meshes) || !meshes.length)\n {\n throw new Error(\"GLES triangle coverage requires geometry meshes\");\n }\n\n let state = coverageStates.get(geometryResource);\n if (state?.leases.size)\n {\n const lease = {};\n const previousPrepared = state.prepared;\n const policies = new Map(state.policies);\n policies.set(lease, CreatePolicyDescriptor(policy));\n const prepared = BuildPrepared(state.meshes, state.originalIndices, [ ...policies.values() ]);\n if (prepared.some(value => !value.available)\n || !prepared.some(value => value.maskedTriangleCount > 0))\n {\n throw new Error(\"GLES semantic triangle coverage could not be prepared\");\n }\n try\n {\n ApplyPrepared(prepared, this._geometryHost);\n }\n catch (error)\n {\n error.rollbackFailures ??= [];\n error.rollbackFailures.push(...TryApplyPrepared(\n previousPrepared,\n this._geometryHost\n ));\n throw error;\n }\n const report = CreateReport(policy, prepared);\n state.leases.add(lease);\n state.policies = policies;\n state.prepared = prepared;\n state.report = report;\n await this._geometryHost.RebuildBounds(geometryResource);\n return { lease, report: CloneReport(report) };\n }\n\n await this._geometryHost.EnsureSystemMirror(geometryResource);\n const originalIndices = meshes.map(mesh => mesh?.indexData?.slice?.() ?? null);\n const prepared = BuildPrepared(meshes, originalIndices, [ CreatePolicyDescriptor(policy) ]);\n if (prepared.some(value => !value.available)\n || !prepared.some(value => value.maskedTriangleCount > 0))\n {\n throw new Error(\"GLES semantic triangle coverage could not be prepared\");\n }\n\n ApplyPrepared(prepared, this._geometryHost);\n await this._geometryHost.RebuildBounds(geometryResource);\n\n const report = CreateReport(policy, prepared);\n const lease = {};\n state = {\n leases: new Set([ lease ]),\n policies: new Map([ [ lease, CreatePolicyDescriptor(policy) ] ]),\n meshes,\n originalIndices,\n prepared,\n report\n };\n coverageStates.set(geometryResource, state);\n return { lease, report: CloneReport(report) };\n }\n\n /** Releases a lease and restores captured indices after the final owner. */\n async Release(geometryResource, lease)\n {\n const state = coverageStates.get(geometryResource);\n if (!state?.leases.has(lease)) return false;\n state.leases.delete(lease);\n const releasedPolicy = state.policies.get(lease);\n state.policies.delete(lease);\n if (state.leases.size)\n {\n const previousPrepared = state.prepared;\n const prepared = BuildPrepared(\n state.meshes,\n state.originalIndices,\n [ ...state.policies.values() ]\n );\n try\n {\n ApplyPrepared(prepared, this._geometryHost);\n }\n catch (error)\n {\n const reapplyFailures = TryApplyPrepared(previousPrepared, this._geometryHost);\n state.leases.add(lease);\n state.policies.set(lease, releasedPolicy);\n error.rollbackFailures ??= [];\n error.rollbackFailures.push(...reapplyFailures);\n throw error;\n }\n state.prepared = prepared;\n await this._geometryHost.RebuildBounds(geometryResource);\n return true;\n }\n\n const failures = RestorePrepared(state.prepared, this._geometryHost);\n if (failures.length)\n {\n const reapplyFailures = TryApplyPrepared(state.prepared, this._geometryHost);\n state.leases.add(lease);\n state.policies.set(lease, releasedPolicy);\n failures.push(...reapplyFailures);\n const error = new Error(\"GLES triangle coverage restore failed\");\n error.errors = failures;\n throw error;\n }\n await this._geometryHost.RebuildBounds(geometryResource);\n coverageStates.delete(geometryResource);\n return true;\n }\n}\n\nfunction ApplyPrepared(prepared, geometryHost)\n{\n const applied = [];\n try\n {\n for (const item of prepared)\n {\n SetIndices(item.mesh.indexData, item.maskedIndices);\n applied.push(item);\n if (!geometryHost.UploadIndices(item.mesh))\n {\n throw new Error(\"GLES foot/toe triangle coverage upload failed\");\n }\n }\n }\n catch (error)\n {\n error.rollbackFailures = RestorePrepared(applied, geometryHost);\n throw error;\n }\n}\n\nfunction TryApplyPrepared(prepared, geometryHost)\n{\n try\n {\n ApplyPrepared(prepared, geometryHost);\n return [];\n }\n catch (error)\n {\n return [ error, ...(error.rollbackFailures ?? []) ];\n }\n}\n\nfunction BuildPrepared(meshes, originalIndices, policies)\n{\n return meshes.map((mesh, index) => PrepareMesh(mesh, policies, originalIndices[index]));\n}\n\nfunction CreatePolicyDescriptor(policy)\n{\n return {\n bonePrefixes: [ ...policy.bonePrefixes ],\n triangleSelection: policy.triangleSelection ?? \"any-vertex\"\n };\n}\n\nfunction PrepareMesh(mesh, policies, sourceIndices = null)\n{\n const indices = mesh?.indexData;\n const bindings = Array.isArray(mesh?.boneBindings) ? mesh.boneBindings : [];\n const stride = Number(mesh?.declaration?.stride) / 4;\n const vertexCount = Number(mesh?._vertices)\n || (Number.isInteger(stride) && stride > 0 && mesh?.bufferData\n ? Math.floor(mesh.bufferData.length / stride)\n : 0);\n if (!indices?.length || !bindings.length || !vertexCount\n || typeof mesh?.GetVertexBlendIndice !== \"function\"\n || typeof mesh?.GetVertexBlendWeight !== \"function\")\n {\n return {\n mesh,\n available: false,\n originalIndices: null,\n maskedIndices: null,\n matchedBoneCount: 0,\n maskedVertexCount: 0,\n maskedTriangleCount: 0\n };\n }\n\n const originalIndices = sourceIndices?.slice?.() ?? indices.slice();\n const maskedIndices = originalIndices.slice();\n const matchedBoneSets = policies.map(policy =>\n {\n const prefixes = policy.bonePrefixes.map(value => value.toLowerCase());\n const matched = new Set();\n bindings.forEach((binding, index) =>\n {\n const name = String(binding ?? \"\").toLowerCase();\n if (prefixes.some(prefix => name.startsWith(prefix))) matched.add(index);\n });\n return matched;\n });\n\n const affectedByPolicy = policies.map(() => new Uint8Array(vertexCount));\n const affected = new Uint8Array(vertexCount);\n const blendIndices = [ 0, 0, 0, 0 ];\n const blendWeights = [ 0, 0, 0, 0 ];\n let maskedVertexCount = 0;\n for (let vertex = 0; vertex < vertexCount; vertex++)\n {\n if (mesh.declaration?.swapBlendWeightsAndIndices === false)\n {\n mesh.GetVertexBlendWeight(blendIndices, vertex);\n mesh.GetVertexBlendIndice(blendWeights, vertex);\n }\n else\n {\n mesh.GetVertexBlendIndice(blendIndices, vertex);\n mesh.GetVertexBlendWeight(blendWeights, vertex);\n }\n for (let influence = 0; influence < 4; influence++)\n {\n const boneIndex = Math.round(Number(blendIndices[influence]));\n const weight = Math.abs(Number(blendWeights[influence]) || 0);\n if (weight <= 1e-6) continue;\n matchedBoneSets.forEach((matchedBones, policyIndex) =>\n {\n if (matchedBones.has(boneIndex)) affectedByPolicy[policyIndex][vertex] = 1;\n });\n }\n if (affectedByPolicy.some(value => value[vertex]))\n {\n affected[vertex] = 1;\n maskedVertexCount++;\n }\n }\n\n let maskedTriangleCount = 0;\n for (let index = 0; index + 2 < maskedIndices.length; index += 3)\n {\n const a = Number(maskedIndices[index]);\n const b = Number(maskedIndices[index + 1]);\n const c = Number(maskedIndices[index + 2]);\n if (![ a, b, c ].every(value => Number.isInteger(value)\n && value >= 0 && value < vertexCount)) continue;\n const selected = policies.some((policy, policyIndex) =>\n {\n const policyAffected = affectedByPolicy[policyIndex];\n return policy.triangleSelection === \"all-vertices\"\n ? policyAffected[a] && policyAffected[b] && policyAffected[c]\n : policyAffected[a] || policyAffected[b] || policyAffected[c];\n });\n if (!selected) continue;\n maskedIndices[index + 1] = a;\n maskedIndices[index + 2] = a;\n maskedTriangleCount++;\n }\n\n return {\n mesh,\n available: true,\n originalIndices,\n maskedIndices,\n matchedBoneCount: new Set(matchedBoneSets.flatMap(value => [ ...value ])).size,\n maskedVertexCount,\n maskedTriangleCount\n };\n}\n\nfunction RestorePrepared(prepared, geometryHost)\n{\n const failures = [];\n for (const item of [ ...prepared ].reverse())\n {\n try\n {\n SetIndices(item.mesh.indexData, item.originalIndices);\n if (!geometryHost.UploadIndices(item.mesh))\n {\n throw new Error(\"index restore upload failed\");\n }\n }\n catch (error)\n {\n failures.push(error);\n }\n }\n return failures;\n}\n\nfunction SetIndices(target, source)\n{\n if (typeof target?.set === \"function\") target.set(source);\n else source.forEach((value, index) => { target[index] = value; });\n}\n\nfunction RequireGeometryHost(value)\n{\n const host = value && typeof value === \"object\" ? value : null;\n for (const name of [ \"GetMeshes\", \"EnsureSystemMirror\", \"UploadIndices\", \"RebuildBounds\" ])\n {\n if (typeof host?.[name] !== \"function\")\n {\n throw new TypeError(`GLES triangle coverage geometryHost.${name} is required`);\n }\n }\n return host;\n}\n\nfunction ValidatePolicy(policy)\n{\n const footwear = [ \"LeftFoot\", \"RightFoot\", \"LeftToe\", \"RightToe\" ];\n const fullLeg = [\n \"LeftUpLeg\", \"RightUpLeg\", \"LeftLeg\", \"RightLeg\",\n \"LeftFoot\", \"RightFoot\", \"LeftToe\", \"RightToe\"\n ];\n const expected = policy?.evidence?.rule === \"legacy-opengl-authored-leg-coverage-v1\"\n ? fullLeg\n : footwear;\n if (policy?.strategy !== \"triangle-mask\"\n || policy?.triangleRule !== \"legacy-opengl-exact-foundation-triangle-coverage-v1\"\n || policy?.evidence?.status !== \"policy\"\n || ![\n \"legacy-opengl-exact-foundation-coverage-v1\",\n \"legacy-opengl-authored-footwear-coverage-v1\",\n \"legacy-opengl-configured-footwear-skin-replacement-v1\",\n \"legacy-opengl-authored-leg-coverage-v1\"\n ].includes(policy?.evidence?.rule)\n || !Array.isArray(policy?.bonePrefixes)\n || policy?.triangleSelection !== (policy?.evidence?.rule\n === \"legacy-opengl-authored-leg-coverage-v1\"\n ? \"all-vertices\"\n : undefined)\n || policy.bonePrefixes.length !== expected.length\n || expected.some((value, index) => policy.bonePrefixes[index] !== value))\n {\n throw new TypeError(\"Unsupported GLES triangle coverage policy\");\n }\n}\n\nfunction CreateReport(policy, prepared)\n{\n return {\n status: \"applied\",\n rule: policy.triangleRule,\n bonePrefixes: [ ...policy.bonePrefixes ],\n matchedBoneCount: prepared.reduce((sum, value) => sum + value.matchedBoneCount, 0),\n maskedVertexCount: prepared.reduce((sum, value) => sum + value.maskedVertexCount, 0),\n maskedTriangleCount: prepared.reduce((sum, value) => sum + value.maskedTriangleCount, 0),\n meshReports: prepared.map(value => ({\n available: value.available,\n matchedBoneCount: value.matchedBoneCount,\n maskedVertexCount: value.maskedVertexCount,\n maskedTriangleCount: value.maskedTriangleCount,\n uploaded: true\n }))\n };\n}\n\nfunction CloneReport(value)\n{\n return {\n ...value,\n bonePrefixes: [ ...value.bonePrefixes ],\n meshReports: value.meshReports.map(report => ({ ...report }))\n };\n}\n\nexport default CjsCharacterGlesTriangleCoverage;\n"],"names":["coverageStates","WeakMap","CjsCharacterGlesTriangleCoverage","_geometryHost","constructor","geometryHost","RequireGeometryHost","Acquire","geometryResource","policy","ValidatePolicy","meshes","GetMeshes","Array","isArray","length","Error","state","get","leases","size","lease","previousPrepared","prepared","policies","Map","set","CreatePolicyDescriptor","BuildPrepared","originalIndices","values","some","value","available","maskedTriangleCount","ApplyPrepared","error","rollbackFailures","push","TryApplyPrepared","report","CreateReport","add","RebuildBounds","CloneReport","EnsureSystemMirror","map","mesh","indexData","slice","Set","Release","has","delete","releasedPolicy","reapplyFailures","failures","RestorePrepared","errors","applied","item","SetIndices","maskedIndices","UploadIndices","index","PrepareMesh","bonePrefixes","triangleSelection","sourceIndices","indices","bindings","boneBindings","stride","Number","declaration","vertexCount","_vertices","isInteger","bufferData","Math","floor","GetVertexBlendIndice","GetVertexBlendWeight","matchedBoneCount","maskedVertexCount","matchedBoneSets","prefixes","toLowerCase","matched","forEach","binding","name","String","prefix","startsWith","affectedByPolicy","Uint8Array","affected","blendIndices","blendWeights","vertex","swapBlendWeightsAndIndices","influence","boneIndex","round","weight","abs","matchedBones","policyIndex","a","b","c","every","selected","policyAffected","flatMap","reverse","target","source","host","TypeError","footwear","fullLeg","expected","evidence","rule","strategy","triangleRule","status","includes","undefined","reduce","sum","meshReports","uploaded"],"mappings":"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"}
|
|
@@ -26,6 +26,10 @@ const TEXTURE_PARAMETERS = Object.freeze(["DiffuseMap", "NormalMap", "SpecularMa
|
|
|
26
26
|
* state on the passed live effect and does not reach for a global facade.
|
|
27
27
|
*/
|
|
28
28
|
class CjsCharacterWebgl2EffectRouter {
|
|
29
|
+
/**
|
|
30
|
+
* Routes each distinct effect and reports applied, deferred, and retained
|
|
31
|
+
* effects with their watch requirements.
|
|
32
|
+
*/
|
|
29
33
|
static Route(effects) {
|
|
30
34
|
const report = {
|
|
31
35
|
status: "unchanged",
|
|
@@ -45,6 +49,11 @@ class CjsCharacterWebgl2EffectRouter {
|
|
|
45
49
|
if (report.applied.length) report.status = "applied";else if (report.deferred.length) report.status = "deferred";
|
|
46
50
|
return report;
|
|
47
51
|
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Restores saved state on each distinct routed effect and reports restored
|
|
55
|
+
* or deferred results.
|
|
56
|
+
*/
|
|
48
57
|
static RestoreAfterWatch(effects) {
|
|
49
58
|
const report = {
|
|
50
59
|
status: "unchanged",
|