@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +82 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2Effect.js","sources":["../../../../src/trinity/shader/Tr2Effect.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2Effect.h\n// Maintained CarbonEngineJS implementation; generated schema is reference-only.\nimport { carbon, CjsSchema, impl, io, type } from \"#schema\";\nimport { Tr2Material } from \"./Tr2Material.js\";\nimport { vec4 } from \"#math/vec4\";\nimport { Tr2ConstantEffectParameter } from \"./parameter/Tr2ConstantEffectParameter.js\";\nimport { Tr2FloatParameter } from \"./parameter/Tr2FloatParameter.js\";\nimport { Tr2GeometryBufferParameter } from \"./parameter/Tr2GeometryBufferParameter.js\";\nimport { Tr2Matrix4Parameter } from \"./parameter/Tr2Matrix4Parameter.js\";\nimport { ShaderStageType, Tr2EffectConstant, Tr2EffectRes, Tr2Shader } from \"#resource/shader\";\nimport { Tr2EffectParam } from \"./material/Tr2EffectParam.js\";\nimport { Tr2EffectPassParameters } from \"./material/Tr2EffectPassParameters.js\";\nimport { Tr2EffectTechniqueInputs } from \"./material/Tr2EffectTechniqueInputs.js\";\nimport { CjsResMan, ResourceRequirement } from \"#resource\";\nimport { GetEffectPathDefaults, NormalizeResourcePath, ResolveEffectPath } from \"#utils/effectPath\";\nimport { Tr2EffectStateManager } from \"./Tr2EffectStateManager.js\";\nimport { Tr2ShaderOption } from \"./reflection/Tr2ShaderOption.js\";\nimport { Tr2SamplerOverride } from \"./sampler/Tr2SamplerOverride.js\";\nimport { Tr2Vector2Parameter } from \"./parameter/Tr2Vector2Parameter.js\";\nimport { Tr2Vector3Parameter } from \"./parameter/Tr2Vector3Parameter.js\";\nimport { Tr2Vector4Parameter } from \"./parameter/Tr2Vector4Parameter.js\";\nimport { TriFloatArrayParameter } from \"./parameter/TriFloatArrayParameter.js\";\nimport { TriTextureParameter } from \"./parameter/TriTextureParameter.js\";\nimport { TriVariableParameter } from \"./parameter/TriVariableParameter.js\";\nimport { TriVector4 } from \"./parameter/TriVector4.js\";\nimport { CjsParameter } from \"./parameter/CjsParameter.js\";\nimport { ResourceFlags } from \"./parameter/ITr2EffectValue.js\";\nimport { Tr2VariableStore } from \"../core/variable/Tr2VariableStore.js\";\n\n\nfunction requireShader(shader)\n{\n if (!(shader instanceof Tr2Shader))\n {\n throw new TypeError(\"Shader reflection must be a Tr2Shader.\");\n }\n return shader;\n}\n\n/** Owns the mutable effect facade: shader path and options, authored parameters and resources, sampler overrides, variable-store resolution, and rebuild state. */\n@type.define({ className: \"Tr2Effect\", family: \"shader\" })\nexport class Tr2Effect extends Tr2Material\n{\n\n /** m_effectFilePath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.rebuild(\"pipeline\")\n @io.always\n @io.persist\n @type.string\n effectFilePath = \"\";\n\n /** m_options (PTr2ShaderOptionStructureList) [READ, PERSIST] */\n @io.rebuild(\"pipeline\")\n @io.persist\n @type.list(\"Tr2ShaderOption\")\n options = [];\n\n /** m_name (std::string) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_constParameters (PTr2ConstantEffectParameterStructureList) [READ, PERSIST] */\n @io.rebuild(\"bindings\")\n @io.persist\n @type.list(\"Tr2ConstantEffectParameter\")\n constParameters = [];\n\n /** m_parameters (PITriEffectParameterVector) [READ, PERSIST] */\n @io.rebuild(\"bindings\")\n @io.persist\n @type.list(\"ITriEffectParameter\")\n parameters = [];\n\n /** m_resources (PITriEffectResourceParameterVector) [READ, PERSIST] */\n @io.rebuild(\"bindings\")\n @io.persist\n @type.list(\"ITriEffectResourceParameter\")\n resources = [];\n\n /** m_effectResource (Tr2EffectResPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2EffectRes\")\n effectResource = null;\n\n /** m_actualEffectFilePath (std::string) [READ] */\n @io.read\n @type.string\n actualEffectFilePath = \"\";\n\n /** m_samplerOverrides (PTr2SamplerOverrideStructureList) [READ, PERSIST] */\n @io.rebuild(\"bindings\")\n @io.persist\n @type.list(\"Tr2SamplerOverride\")\n samplerOverrides = [];\n\n parameterHash = 0xffffffff;\n\n display = true;\n\n /**\n * Carbon keeps m_variableStore null and falls back to the GLOBAL store at\n * call time, so a later global-store swap is seen by existing effects.\n * Read through GetVariableStore(); never capture the global eagerly.\n */\n variableStore = null;\n\n insideStartUpdate = false;\n\n /** Carbon method RebuildCachedData -> RebuildCachedDataInternal (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n RebuildCachedData()\n {\n this.RebuildCachedDataInternal();\n }\n\n /**\n * The resource-arrival overload: Carbon temporarily clears\n * insideStartUpdate so a shader arriving during a batched Start/EndUpdate\n * still rebuilds immediately.\n */\n @carbon.method\n @impl.implemented\n RebuildCachedDataAsync()\n {\n const wasInsideStartUpdate = this.insideStartUpdate;\n this.insideStartUpdate = false;\n this.RebuildCachedDataInternal();\n this.insideStartUpdate = wasInsideStartUpdate;\n }\n\n /**\n * Overrides the store this effect's TriVariableParameter values resolve\n * against; passing null restores the fallback to the global store.\n */\n @carbon.method\n @impl.implemented\n SetVariableStore(store)\n {\n this.variableStore = store ?? null;\n }\n\n /**\n * An autoregistered name from whichever global store holds it.\n *\n * Carbon's autoregistration IS Tr2VariableStore::GetVariable: a miss\n * RESERVES the name with the INVALID type, and that reserved variable is the\n * shared slot the scene fills later - which is how EveSpaceSceneShadowMap\n * reaches an effect at all. Tr2ShadowMap registers into this same global\n * store, so a registration and a lookup now meet.\n *\n * @param {string} name Variable name.\n * @returns {object|null} The variable, reserved if it did not exist.\n */\n static #GlobalVariable(name)\n {\n return Tr2VariableStore.GlobalStore().GetVariable?.(name) ?? null;\n }\n\n /** The effect's store, falling back to the global store at call time. */\n @carbon.method\n @impl.implemented\n GetVariableStore()\n {\n return this.variableStore ?? Tr2VariableStore.GlobalStore();\n }\n\n /**\n * The authored constant-parameter list itself, not a copy - callers that\n * mutate it mutate the effect.\n */\n @carbon.method\n @impl.implemented\n GetConstParameters()\n {\n return this.constParameters;\n }\n\n /**\n * Content hash over the shader path, options, constant parameters, and\n * every parameter/resource - Carbon's effect dedup/batching key. Only\n * hashes authored content; values coming from a variable store are not\n * included. Not lightweight - do not call every frame.\n */\n @carbon.method\n @impl.adapted\n GetHashValue()\n {\n let hash = 0;\n const path = this.actualEffectFilePath || this.effectFilePath;\n if (path)\n {\n hash = CjsParameter.hashFnv1String(path);\n }\n for (const option of this.options)\n {\n hash = CjsParameter.hashFnv1String(option?.name ?? \"\", hash);\n hash = CjsParameter.hashFnv1String(option?.value ?? \"\", hash);\n }\n for (const parameter of this.constParameters)\n {\n hash = CjsParameter.hashFnv1String(parameter?.name ?? \"\", hash);\n hash = CjsParameter.hashFnv1Floats(parameter?.value ?? [0, 0, 0, 0], hash);\n }\n for (const parameter of this.parameters)\n {\n hash = parameter?.GetHashValue?.(hash) ?? hash;\n }\n for (const resource of this.resources)\n {\n hash = resource?.GetHashValue?.(hash) ?? hash;\n }\n return hash >>> 0;\n }\n\n /** Carbon method GetParameterAnnotations -> PyGetParameterAnnotations (MAP_METHOD). */\n @carbon.method\n @impl.implemented\n GetParameterAnnotations(parameterName)\n {\n return CjsParameter.getEffectAnnotations(this.shader, parameterName);\n }\n\n /** Carbon method PopulateParameters (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n PopulateParameters()\n {\n if (!this.shader)\n {\n return false;\n }\n for (const stage of Tr2Effect.iterateShaderStages(this.shader))\n {\n for (const constant of stage.constants ?? [])\n {\n if (!Tr2Effect.getBool(this.shader, constant.name, \"SasUiVisible\", false) || this.#hasParameterLike(constant.name))\n {\n continue;\n }\n const converted = Tr2Effect.convertEffectConstant(constant, stage.constantValues);\n if (converted)\n {\n this.parameters.push(converted);\n }\n }\n for (const resource of Tr2Effect.iterateResources(stage.resources))\n {\n if (!Tr2Effect.getBool(this.shader, resource.name, \"SasUiVisible\", false) || this.#hasParameterLike(resource.name))\n {\n continue;\n }\n this.resources.push(Tr2Effect.convertEffectResource(resource));\n }\n for (const resource of Tr2Effect.iterateResources(stage.uavs))\n {\n if (!Tr2Effect.getBool(this.shader, resource.name, \"SasUiVisible\", false) || this.#hasParameterLike(resource.name))\n {\n continue;\n }\n this.resources.push(Tr2Effect.convertEffectResource(resource));\n }\n }\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /** Carbon method EndUpdate (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n EndUpdate()\n {\n if (this.insideStartUpdate)\n {\n this.insideStartUpdate = false;\n this.RebuildCachedDataInternal();\n }\n }\n\n /** Carbon method PruneParameters (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n PruneParameters()\n {\n if (!this.shader)\n {\n return false;\n }\n this.parameters = this.parameters.filter(parameter => this.#isShaderParameterVisible(CjsParameter.getNamedValue(parameter)));\n this.constParameters = this.constParameters.filter(parameter => this.#isShaderParameterVisible(parameter?.name));\n this.resources = this.resources.filter(parameter => this.#isShaderParameterVisible(CjsParameter.getNamedValue(parameter)));\n return true;\n }\n\n /** Carbon method IsParameterUsedByTechnique (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n IsParameterUsedByTechnique(parameterName)\n {\n return this.shader === null ? false : !!requireShader(this.shader).GetConstant(parameterName);\n }\n\n /** Carbon method StartUpdate (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n StartUpdate()\n {\n this.insideStartUpdate = true;\n }\n\n /**\n * Attaches every resource to this material, derives actualEffectFilePath from\n * the authored path, and rebuilds cached shader data.\n */\n Initialize()\n {\n for (const resource of this.resources)\n {\n resource?.OnAddedToMaterial?.(this);\n }\n this.actualEffectFilePath = this.effectFilePath ? Tr2Effect.convertEffectPath(this.effectFilePath) : \"\";\n this.#AcquireEffectResource();\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /**\n * Builds the per-technique, per-pass parameter mapping from the resolved\n * shader (Carbon `Tr2Effect::RebuildCachedDataInternal`, Tr2Effect.cpp:693-795).\n *\n * The outer list is per TECHNIQUE, each holding `passes` and `libraries`.\n * That is the shape `Tr2Material`'s readers already expect, so this\n * assembles the existing material models rather than inventing a structure.\n *\n * Device work is deliberately absent. Carbon creates a constant buffer, a\n * resource set and sampler-state objects in this same loop; here only the\n * CPU mirror is allocated, through `Tr2MaterialStageInput`'s own\n * `AllocateConstants` / `GetSharedConstantBuffer`, which exist for exactly\n * this reason. An engine realizes the rest from what is recorded.\n *\n * @returns {void}\n */\n #BuildParametersForPasses()\n {\n // Carbon's `m_parametersForPasses.clear()` (Tr2Effect.cpp:693) tears down\n // value members: each stage's constant buffer and each pass's resource\n // set die with it. Ours are device objects behind handles, so they are\n // destroyed by name before the array is dropped - otherwise every rebuild\n // leaked one GPUBuffer per stage.\n for (const technique of this.parametersForPasses ?? [])\n {\n for (const pass of technique?.passes ?? [])\n {\n for (const stageInput of pass?.stageInput ?? []) stageInput?.constantBuffer?.Destroy();\n pass?.resourceSet?.Destroy();\n }\n }\n\n this.parametersForPasses = [];\n\n const techniques = this.shader?.GetEffect?.()?.techniques ?? [];\n\n for (const technique of techniques)\n {\n const inputs = new Tr2EffectTechniqueInputs();\n\n for (const pass of technique?.passes ?? [])\n {\n const passParameters = new Tr2EffectPassParameters();\n\n // THE READER'S DESCRIPTION IS NOT THIS DESCRIPTION, and assigning it\n // here was the bug. `pass.resourceSetDesc` off the reflection is an\n // `HlslResourceSetDescription` - samplers and D3D12 heap views, no\n // `SetSrv`, no `ClearResources` - while this field is Carbon's\n // `Tr2ResourceSetDescriptionAL`, which the pass parameters construct\n // for themselves and `UpdateResourceSetDesc` fills at bind time.\n //\n // Carbon copies a description here because ITS reflection carries the\n // same type; ours does not, so there is nothing to copy. Removed\n // 2026-09-05; see /docs/research/graphics-path-review-2026-09-05.md.\n passParameters.resourceSetHash = 0;\n passParameters.resourceSetDirty = true;\n passParameters.compatibleWithGdr = true;\n\n const stageInputs = pass?.stageInputs ?? [];\n\n for (let stageType = 0; stageType < stageInputs.length; stageType += 1)\n {\n const stage = stageInputs[stageType];\n\n if (!stage?.exists) continue;\n\n // A stage Carbon's GDR path cannot express: anything but vertex,\n // pixel or compute (Tr2Effect.cpp:723-726).\n if (stageType !== ShaderStageType.VERTEX_SHADER\n && stageType !== ShaderStageType.PIXEL_SHADER\n && stageType !== ShaderStageType.COMPUTE_SHADER)\n {\n passParameters.compatibleWithGdr = false;\n }\n\n this.#MapPassParameters(stage, passParameters.stageInput[stageType], passParameters);\n this.#MapPassResources(stage.resources, passParameters.stageInput[stageType].textures, passParameters);\n this.#MapPassResources(stage.uavs, passParameters.stageInput[stageType].uavs, passParameters);\n }\n\n if (!passParameters.compatibleWithGdr) this.compatibleWithGdr = false;\n\n inputs.passes.push(passParameters);\n }\n\n this.parametersForPasses.push(inputs);\n }\n }\n\n /**\n * Maps one stage's authored constants onto byte offsets in its CPU mirror\n * (Carbon `MapPassParameters`, Tr2Effect.cpp:1722-2025).\n *\n * `registerIndex` and `registerCount` on a stored parameter are BYTE OFFSET\n * and BYTE SIZE, not a register index and count. Carbon's field names are\n * historical and mean something different here than they do for resources.\n *\n * Every constant contributes to the buffer size whether or not anything\n * binds it, because the shader may sample an unbound constant and expect a\n * default. `GetConstantBufferSize` already carries that rule.\n *\n * A stage whose values are entirely static takes a shared, deduplicated\n * mirror; one with variable parameters gets its own. That split is Carbon's\n * and it is why `Tr2MaterialStageInput` has both methods.\n *\n * @param {object} stage Reflected stage input.\n * @param {object} stageInput Material stage input to populate.\n * @param {object} passParameters Owning pass parameters.\n * @returns {void}\n */\n #MapPassParameters(stage, stageInput, passParameters)\n {\n const constantSize = stage.GetConstantBufferSize?.() ?? 0;\n const constants = stage.constants ?? [];\n const constParameters = this.GetConstParameters();\n const bound = new Map();\n let hasVariableParams = false;\n\n for (let index = 0; index < constants.length; index += 1)\n {\n const constant = constants[index];\n const name = constant?.name ?? \"\";\n\n if (!name) continue;\n // Authored constants are baked into the mirror rather than bound, so\n // they do not make the stage variable.\n if (constParameters.some(parameter => parameter?.name === name)) continue;\n\n const value = this.FindParameterByName(name)\n ?? this.#ResolveResourceValue(name, passParameters)\n ?? this.GetVariableStore().FindVariable?.(name)\n ?? (constant.isAutoregister ? Tr2Effect.#GlobalVariable(name) : null)\n ?? null;\n\n if (value)\n {\n bound.set(index, value);\n hasVariableParams = true;\n }\n }\n\n if (constantSize === 0) return;\n\n const defaults = stage.constantValues ?? new Uint8Array(0);\n const mirror = new Uint8Array(constantSize);\n\n mirror.set(defaults.subarray(0, Math.min(defaults.length, constantSize)));\n Tr2Effect.#BakeConstantParameters(mirror, constants, constParameters);\n\n if (!hasVariableParams)\n {\n // Fully static: Carbon takes a shared buffer keyed on the contents.\n stageInput.GetSharedConstantBuffer(mirror, constantSize);\n return;\n }\n\n stageInput.AllocateConstants(constantSize);\n stageInput.constantMirror?.set(mirror.subarray(0, stageInput.constantMirror.length));\n\n for (const [ index, value ] of bound)\n {\n const constant = constants[index];\n const parameter = new Tr2EffectParam();\n\n parameter.sourceName = constant.name;\n parameter.sourceValue = value;\n parameter.registerIndex = constant.offset;\n parameter.registerCount = constant.size;\n\n value.RebuildEffectHandles?.(this.shader);\n\n if (value.SupportsDirtyNotification?.())\n {\n stageInput.shaderParametersWithNotification.push(parameter);\n }\n else\n {\n stageInput.shaderParameters.push(parameter);\n }\n }\n }\n\n /**\n * Maps a stage's texture or UAV registers onto authored values\n * (Carbon `MapPassResources`, Tr2Effect.cpp:1436-1489).\n *\n * Here `registerIndex` really is the register, and `registerCount` is\n * overloaded as a flag word carrying only the sRGB bit. Unresolved names\n * produce no entry, so this vector is sparse where the constant one is not.\n *\n * Binding from the effect's own resources or from an effect parameter clears\n * GDR compatibility, because a general draw cannot know those values.\n *\n * @param {Map} resources Register-keyed reflected resources.\n * @param {Array} into Parameter vector to fill.\n * @param {object} passParameters Owning pass parameters.\n * @returns {void}\n */\n #MapPassResources(resources, into, passParameters)\n {\n if (!resources || typeof resources.entries !== \"function\") return;\n\n // Carbon iterates a register-ordered map; ours is unordered, so sort to\n // keep the emitted order stable between runs.\n const entries = [ ...resources.entries() ].sort((left, right) => Number(left[0]) - Number(right[0]));\n\n for (const [ register, resource ] of entries)\n {\n const name = resource?.name ?? \"\";\n\n if (!name) continue;\n\n let value = this.GetResourceByName(name) ?? null;\n\n if (value)\n {\n passParameters.compatibleWithGdr = false;\n }\n else\n {\n const parameter = this.FindParameterByName(name);\n\n if (parameter instanceof TriVariableParameter)\n {\n value = parameter;\n passParameters.compatibleWithGdr = false;\n }\n else\n {\n value = this.GetVariableStore().FindVariable?.(name)\n ?? (resource.isAutoregister ? Tr2Effect.#GlobalVariable(name) : null)\n ?? null;\n }\n }\n\n if (!value) continue;\n\n const stored = new Tr2EffectParam();\n\n stored.sourceName = name;\n stored.sourceValue = value;\n stored.registerIndex = Number(register);\n stored.registerCount = resource.isSRGB ? ResourceFlags.RESOURCE_FLAG_SRGB : 0;\n into.push(stored);\n }\n }\n\n /**\n * Resolves a named effect resource and records the pass's use of it.\n *\n * @param {string} name Constant name.\n * @param {object} passParameters Owning pass parameters.\n * @returns {object|null} Resolved value.\n */\n #ResolveResourceValue(name, passParameters)\n {\n const resource = this.GetResourceByName(name);\n\n if (!resource) return null;\n if (!passParameters.usedResources.includes(resource)) passParameters.usedResources.push(resource);\n passParameters.usedTexturesDirty = true;\n\n return resource;\n }\n\n /**\n * Bakes authored constant-parameter values into a stage mirror.\n *\n * @param {Uint8Array} mirror Stage constant mirror.\n * @param {Array} constants Reflected constants.\n * @param {Array} constParameters Authored constant parameters.\n * @returns {void}\n */\n static #BakeConstantParameters(mirror, constants, constParameters)\n {\n for (const constant of constants)\n {\n const authored = constParameters.find(parameter => parameter?.name === constant?.name);\n\n if (!authored) continue;\n\n const values = authored.value ?? [];\n const floats = new Float32Array(mirror.buffer, mirror.byteOffset + constant.offset, Math.min(values.length, constant.size / 4));\n\n floats.set(values.slice(0, floats.length));\n }\n }\n\n /**\n * Acquires the effect resource for the resolved path, if a manager is\n * installed and this effect has not been handed one already.\n *\n * Carbon fetches through the process-wide manager and registers a notify\n * target (`BeResMan->GetResource(...)` then `AddNotifyTarget(this)`,\n * Tr2Effect.cpp:397-402). That mechanism is not ported: this runtime replaced\n * notify targets with events, `CjsResource` is a `CjsEventEmitter`, and\n * nothing in `src` has an `AddNotifyTarget`. The equivalent is subscribing to\n * the resource's `completed` event through `OnCompleted`, which replays for a\n * late subscriber - so a resource that is already prepared rebuilds\n * immediately rather than waiting for a state change that has been and gone.\n *\n * The resource owns the subscription, which is what keeps Trinity out of the\n * lifecycle; `shader.test.js` asserts exactly that by throwing from an\n * `AddNotifyTarget` on a test resource.\n *\n * Does nothing when no manager is installed or the path did not resolve.\n * Both are real states - a caller composing by hand assigns `effectResource`\n * itself, and an unresolved path means no backend is committed - and neither\n * is an error worth throwing during hydration.\n *\n * @returns {void}\n */\n #AcquireEffectResource()\n {\n const resourceManager = CjsResMan.GetGlobal();\n\n if (!resourceManager || !this.actualEffectFilePath) return;\n // A caller that assigned a resource by hand owns it; do not replace it.\n if (this.effectResource !== null) return;\n\n const resource = resourceManager.GetResource(this.actualEffectFilePath, {\n requirement: ResourceRequirement.SHADER\n });\n\n this.effectResource = resource;\n // `source` is this effect, so a later Initialize can drop the subscription\n // in one call rather than tracking listeners individually.\n resource.OnCompleted(() => this.RebuildCachedDataAsync(), this);\n resource.Ready?.();\n }\n\n /** Re-runs Initialize after notified fields change; always returns true. */\n OnModified()\n {\n this.Initialize();\n return true;\n }\n\n /**\n * Keeps list membership consistent: a removed entry has its reroute\n * destination cleared and is detached from the material, an inserted one is\n * attached, and cached data is rebuilt either way.\n */\n OnListModified(event, _key, _key2, value)\n {\n if (value?.SetDestination && String(event).includes(\"REMOVED\"))\n {\n value.SetDestination(null, 0);\n }\n if (value?.OnRemovedFromMaterial && String(event).includes(\"REMOVED\"))\n {\n value.OnRemovedFromMaterial(this);\n }\n if (value?.OnAddedToMaterial && String(event).includes(\"INSERTED\"))\n {\n value.OnAddedToMaterial(this);\n }\n this.RebuildCachedDataInternal();\n }\n\n /**\n * Re-resolves the shader for the current option set and re-binds every\n * parameter and resource to it, rebuilding the screen-size LOD texture list on\n * the way; a no-op while a StartUpdate batch is open. Resolves shader metadata\n * only - no GPU program is created.\n */\n RebuildCachedDataInternal()\n {\n if (this.insideStartUpdate)\n {\n return;\n }\n this.parameterHash = 0xffffffff;\n if (this.effectResource !== null)\n {\n if (!(this.effectResource instanceof Tr2EffectRes))\n {\n throw new TypeError(\"Tr2Effect.effectResource must be a Tr2EffectRes or null.\");\n }\n const shader = this.effectResource.GetShader(this.options);\n if (shader !== null && !(shader instanceof Tr2Shader))\n {\n throw new TypeError(\"Tr2EffectRes.GetShader must return a Tr2Shader or null.\");\n }\n this.shader = shader;\n // Carbon stamps registration handles while reading the description; the\n // resource layer cannot reach Trinity's tables, so the stamp happens here\n // on the first rebuild that resolves a shader. Interning is idempotent,\n // so a rebuild that re-resolves the same permutation is a no-op.\n if (shader !== null) Tr2EffectStateManager.registerShaderHandles(shader);\n }\n this.lodTextureParameters = [];\n // Carbon initialises the flag here and every rule below only ever CLEARS\n // it (Tr2Effect.cpp:676). Keeping the assignment is right; what was missing\n // is everything that clears it.\n this.compatibleWithGdr = true;\n this.#BuildParametersForPasses();\n for (const parameter of this.parameters)\n {\n if (parameter instanceof TriVariableParameter)\n {\n parameter.Initialize(this.GetVariableStore());\n }\n parameter?.RebuildEffectHandles?.(this.shader);\n }\n for (const resource of this.resources)\n {\n resource?.RebuildEffectHandles?.(this.shader);\n if (resource?.UsedWithScreenSize && !this.lodTextureParameters.includes(resource))\n {\n this.lodTextureParameters.push(resource);\n }\n }\n }\n\n /**\n * Drops the resolved shader and clears every parameter's and resource's effect\n * handles by rebuilding them against null.\n */\n ReleaseCachedData()\n {\n this.shader = null;\n for (const parameter of this.parameters)\n {\n parameter?.RebuildEffectHandles?.(null);\n }\n for (const resource of this.resources)\n {\n resource?.RebuildEffectHandles?.(null);\n }\n this.lodTextureParameters = [];\n }\n\n /**\n * Sets the authored effect path through SetValues so the pipeline rebuild flag\n * fires; returns whether anything changed.\n */\n SetEffectPathName(path)\n {\n return this.SetValues({ effectFilePath: path ? String(path) : \"\" }, { source: this, returnBoolean: true });\n }\n\n /**\n * The authored path, not the slash-normalized actualEffectFilePath that\n * Initialize derives from it.\n */\n GetEffectPathName()\n {\n return this.effectFilePath;\n }\n\n /**\n * The effect resource the shader is resolved from, or null before one has been\n * assigned.\n */\n GetEffectRes()\n {\n return this.effectResource;\n }\n\n /** The authored effect name, which is independent of the effect file path. */\n GetName()\n {\n return this.name;\n }\n\n /**\n * Appends a resource parameter, attaches it to this material and rebuilds\n * cached data; does not check for a duplicate name and always returns true.\n */\n AddResource(parameter)\n {\n this.resources.push(parameter);\n parameter?.OnAddedToMaterial?.(this);\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /**\n * Creates and attaches a TriTextureParameter for the name, returning false\n * when a resource already uses that name.\n */\n AddResourceTexture2D(name, resourcePath = \"\")\n {\n if (this.GetResourceByName(name))\n {\n return false;\n }\n const parameter = new TriTextureParameter();\n parameter.SetParameterName?.(name);\n parameter.SetResourcePath?.(resourcePath);\n return this.AddResource(parameter);\n }\n\n /**\n * Carbon's SetResourceTexture2D - assigns the texture path on the named\n * resource, creating the TriTextureParameter when absent.\n */\n @carbon.method\n @impl.adapted\n SetResourceTexture2D(name, resourcePath = \"\")\n {\n const updated = this.#setNamedTexture(name, resourcePath);\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /**\n * Adds a sampler override for the named resource using Carbon's authoring\n * defaults for the fields not passed in (addressW 1, filter 3, mipFilter 2);\n * returns false when an override of that name already exists.\n */\n AddSamplerOverride(name, addressU = 1, addressV = addressU)\n {\n if (this.HasSamplerOverride(name))\n {\n return false;\n }\n const override = new Tr2SamplerOverride();\n override.name = String(name);\n override.addressU = addressU;\n override.addressV = addressV;\n override.addressW = 1;\n override.filter = 3;\n override.mipFilter = 2;\n this.samplerOverrides.push(override);\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /**\n * Adds an authored constant parameter, cloning the value so the caller's\n * vector is not aliased; returns false when a constant of that name already\n * exists.\n */\n AddParameterVector4(name, value = vec4.create())\n {\n if (this.HasParameter(name))\n {\n return false;\n }\n const parameter = new Tr2ConstantEffectParameter();\n parameter.name = String(name);\n parameter.value = vec4.clone(value);\n this.constParameters.push(parameter);\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /**\n * Adds a constant parameter with the scalar splatted across all four\n * components, matching Carbon's float authoring.\n */\n AddParameterFloat(name, value = 0)\n {\n return this.AddParameterVector4(name, vec4.fromValues(value, value, value, value));\n }\n\n /**\n * Adds a constant parameter from a colour vector; behaviourally identical to\n * AddParameterVector4.\n */\n AddParameterColor(name, value)\n {\n return this.AddParameterVector4(name, value);\n }\n\n /**\n * JS convenience over the Carbon lists: the effect collections also accept\n * unique-name plain-object maps. Canonical arrays keep the inherited\n * CjsModel path untouched; `textures` is an input alias for `resources`.\n */\n SetValues(values = {}, options = {})\n {\n const source = values && typeof values === \"object\" ? values : {};\n const rest = {};\n const changedCollections = new Set();\n for (const key of Object.keys(source))\n {\n const route = Tr2Effect.#VALUE_COLLECTIONS[key];\n const value = source[key];\n if (route && value && typeof value === \"object\" && !Array.isArray(value))\n {\n if (this[route.setter](value))\n {\n changedCollections.add(route.field);\n }\n continue;\n }\n if (key === \"textures\")\n {\n continue;\n }\n rest[key] = value;\n }\n const result = super.SetValues(rest, { ...options, returnBoolean: false });\n const changed = result instanceof Set ? result : new Set();\n for (const field of changedCollections)\n {\n changed.add(field);\n }\n return options?.returnBoolean === true ? changed.size > 0 : changed;\n }\n\n /**\n * Merges dynamic parameters by unique name. Values may be raw\n * (number/vector/matrix/res path string) or explicit `{ type, ... }`\n * descriptors; `null` removes. Texture values route to `resources`.\n */\n SetParameters(values = {})\n {\n let updated = false;\n for (const name of Object.keys(values ?? {}))\n {\n const value = values[name];\n if (value === undefined) continue;\n if (value === null)\n {\n const removedParameter = this.#removeNamed(this.parameters, name);\n const removedResource = this.#removeNamed(this.resources, name);\n updated = removedParameter || removedResource || updated;\n continue;\n }\n updated = this.#setNamedParameter(name, value) || updated;\n }\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /**\n * Sets one named dynamic parameter. Carbon exposes this singular facade and\n * smart-light meshes use it while stamping their resolved group color.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"JS explicitly rebuilds the cached CPU effect data after Carbon's Vector4 parameter reuse-or-append policy because plain array mutation has no Blue list notification.\")\n SetParameter(name, value)\n {\n const parameterName = String(name ?? \"\");\n const existing = CjsParameter.findByName(this.parameters, parameterName);\n let parameter = existing instanceof Tr2Vector4Parameter ? existing : null;\n if (!parameter)\n {\n parameter = new Tr2Vector4Parameter();\n parameter.name = parameterName;\n this.parameters.push(parameter);\n }\n parameter.SetValue(value);\n this.RebuildCachedDataInternal();\n }\n\n /** Merges texture resources by unique name from res path strings. */\n SetTextures(values = {})\n {\n let updated = false;\n for (const name of Object.keys(values ?? {}))\n {\n const value = values[name];\n if (value === undefined) continue;\n if (value === null)\n {\n updated = this.#removeNamed(this.resources, name) || updated;\n continue;\n }\n updated = this.#setNamedTexture(name, value) || updated;\n }\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /**\n * Merges authored constant parameters by unique name. Numbers splat to a\n * vec4, matching Carbon's AddParameterFloat authoring behavior.\n */\n SetConstParameters(values = {})\n {\n let updated = false;\n for (const name of Object.keys(values ?? {}))\n {\n const value = values[name];\n if (value === undefined) continue;\n if (value === null)\n {\n updated = this.#removeNamed(this.constParameters, name) || updated;\n continue;\n }\n const vector = Tr2Effect.#toConstVector4(value);\n if (!vector)\n {\n throw new TypeError(`Tr2Effect.SetConstParameters cannot read a vec4 value for \"${name}\".`);\n }\n const existing = CjsParameter.findByName(this.constParameters, name);\n if (existing)\n {\n vec4.copy(existing.value, vector);\n }\n else\n {\n const parameter = new Tr2ConstantEffectParameter();\n parameter.name = String(name);\n parameter.value = vector;\n this.constParameters.push(parameter);\n }\n updated = true;\n }\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /** Merges sampler overrides by unique name; `null` removes an override. */\n SetSamplerOverrides(values = {})\n {\n let updated = false;\n for (const name of Object.keys(values ?? {}))\n {\n const value = values[name];\n if (value === undefined) continue;\n if (value === null)\n {\n updated = this.#removeNamed(this.samplerOverrides, name) || updated;\n continue;\n }\n const existing = CjsParameter.findByName(this.samplerOverrides, name);\n if (value instanceof Tr2SamplerOverride)\n {\n if (!value.name)\n {\n value.name = String(name);\n }\n if (existing)\n {\n this.samplerOverrides[this.samplerOverrides.indexOf(existing)] = value;\n }\n else\n {\n this.samplerOverrides.push(value);\n }\n updated = true;\n continue;\n }\n if (typeof value !== \"object\" || Array.isArray(value) || ArrayBuffer.isView(value))\n {\n throw new TypeError(`Tr2Effect.SetSamplerOverrides requires override values for \"${name}\".`);\n }\n let override = existing;\n if (!override)\n {\n override = new Tr2SamplerOverride();\n override.name = String(name);\n this.samplerOverrides.push(override);\n updated = true;\n }\n if (override.SetValues(value, { returnBoolean: true }))\n {\n updated = true;\n }\n }\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /**\n * Creates a parameter model from a raw value using the class-declared\n * isValue claims, or from an explicit `{ type, ... }` descriptor.\n * Returns null when no registered parameter class claims the value.\n */\n static CreateParameterFromValue(name, value)\n {\n if (value && typeof value === \"object\" && !Array.isArray(value) && !ArrayBuffer.isView(value))\n {\n const ExplicitClass = Tr2Effect.#resolveExplicitParameterClass(value);\n if (!ExplicitClass)\n {\n return null;\n }\n const { type, Type, _type, ...fields } = value;\n const parameter = new ExplicitClass();\n parameter.SetValues(fields);\n if (name && !CjsParameter.getNamedValue(parameter))\n {\n parameter.SetValues({ name: String(name) });\n }\n return parameter;\n }\n for (const ParameterClass of Tr2Effect.INFERRED_PARAMETER_TYPES)\n {\n if (!ParameterClass.isValue?.(value))\n {\n continue;\n }\n const parameter = new ParameterClass();\n parameter.SetValues({ name: String(name ?? \"\") });\n if (ParameterClass === TriTextureParameter)\n {\n parameter.SetValues({ resourcePath: String(value) });\n }\n else\n {\n parameter.SetValue(value);\n }\n return parameter;\n }\n return null;\n }\n\n /**\n * Removes the named entry from one of the effect's collections, detaching it\n * from the material first when the list is `resources`; returns whether\n * anything was removed.\n */\n #removeNamed(list, name)\n {\n const existing = CjsParameter.findByName(list, name);\n if (!existing)\n {\n return false;\n }\n if (list === this.resources)\n {\n existing?.OnRemovedFromMaterial?.(this);\n }\n list.splice(list.indexOf(existing), 1);\n return true;\n }\n\n /**\n * Assigns a dynamic parameter by name, reusing the existing model when its\n * class claims the value and otherwise creating one and replacing the old\n * entry; string values route to the texture resource list instead. Throws\n * TypeError when no registered parameter class can represent the value.\n */\n #setNamedParameter(name, value)\n {\n if (typeof value === \"string\")\n {\n return this.#setNamedTexture(name, value);\n }\n const existing = CjsParameter.findByName(this.parameters, name);\n if (existing && existing.constructor.isValue?.(value))\n {\n existing.SetValue(value);\n return true;\n }\n const created = Tr2Effect.CreateParameterFromValue(name, value);\n if (!created)\n {\n throw new TypeError(`Tr2Effect.SetParameters cannot infer a parameter type for \"${name}\".`);\n }\n if (created instanceof TriTextureParameter)\n {\n const existingResource = CjsParameter.findByName(this.resources, name);\n if (existingResource)\n {\n existingResource?.OnRemovedFromMaterial?.(this);\n this.resources[this.resources.indexOf(existingResource)] = created;\n }\n else\n {\n this.resources.push(created);\n }\n created?.OnAddedToMaterial?.(this);\n return true;\n }\n if (existing)\n {\n this.parameters[this.parameters.indexOf(existing)] = created;\n }\n else\n {\n this.parameters.push(created);\n }\n return true;\n }\n\n /**\n * Points the named texture resource at a res path, creating and attaching a\n * TriTextureParameter when absent; returns false when the path is already that\n * value, and throws TypeError for non-string values.\n */\n #setNamedTexture(name, value)\n {\n if (typeof value !== \"string\")\n {\n throw new TypeError(`Tr2Effect.SetTextures requires res path strings for \"${name}\".`);\n }\n const existing = CjsParameter.findByName(this.resources, name);\n if (existing)\n {\n if (existing.resourcePath === value)\n {\n return false;\n }\n if (existing.SetResourcePath)\n {\n existing.SetResourcePath(value);\n }\n else\n {\n existing.resourcePath = value;\n }\n return true;\n }\n const parameter = new TriTextureParameter();\n parameter.SetParameterName?.(name);\n parameter.SetResourcePath?.(value);\n this.resources.push(parameter);\n parameter?.OnAddedToMaterial?.(this);\n return true;\n }\n\n /**\n * Resolves a descriptor's `Type`/`type`/`_type` field to a parameter\n * constructor, directly or through the schema registry; returns null when no\n * type field is present and throws TypeError for an unregistered class name.\n */\n static #resolveExplicitParameterClass(value)\n {\n const explicit = value?.Type ?? value?.type ?? value?._type;\n if (!explicit)\n {\n return null;\n }\n if (typeof explicit === \"function\")\n {\n return explicit;\n }\n const Registered = CjsSchema.GetConstructor(String(explicit));\n if (!Registered)\n {\n throw new TypeError(`Unknown effect parameter type \"${explicit}\".`);\n }\n return Registered;\n }\n\n /**\n * Coerces a number (splatted to all four components), a four-number array, or\n * a `{ value }` wrapper into a new vec4; returns null when no vec4 can be\n * read.\n */\n static #toConstVector4(value)\n {\n if (typeof value === \"number\")\n {\n return vec4.fromValues(value, value, value, value);\n }\n if (CjsParameter.isNumberArrayValue(value, 4))\n {\n return vec4.clone(value);\n }\n if (value && typeof value === \"object\" && !Array.isArray(value) && \"value\" in value)\n {\n return Tr2Effect.#toConstVector4(value.value);\n }\n return null;\n }\n\n static #VALUE_COLLECTIONS = Object.freeze({\n parameters: { setter: \"SetParameters\", field: \"parameters\" },\n textures: { setter: \"SetTextures\", field: \"resources\" },\n constParameters: { setter: \"SetConstParameters\", field: \"constParameters\" },\n samplerOverrides: { setter: \"SetSamplerOverrides\", field: \"samplerOverrides\" }\n });\n\n static INFERRED_PARAMETER_TYPES = Object.freeze([\n Tr2FloatParameter,\n Tr2Vector2Parameter,\n Tr2Vector3Parameter,\n Tr2Vector4Parameter,\n Tr2Matrix4Parameter,\n TriTextureParameter\n ]);\n\n /**\n * Empties both the constant and dynamic parameter lists inside one\n * StartUpdate/EndUpdate batch, so cached data rebuilds once at the end.\n */\n ClearAllParameters()\n {\n this.StartUpdate();\n this.constParameters = [];\n this.parameters = [];\n this.EndUpdate();\n }\n\n /**\n * Detaches every resource from this material and empties the resource list,\n * then rebuilds cached data.\n */\n ClearAllResources()\n {\n for (const resource of this.resources)\n {\n resource?.OnRemovedFromMaterial?.(this);\n }\n this.resources = [];\n this.RebuildCachedDataInternal();\n }\n\n /**\n * Sets a shader option, adding it when absent; cached data is rebuilt only\n * when the value actually changes, since options select the shader\n * permutation.\n */\n SetOption(name, value)\n {\n const existing = CjsParameter.findByName(this.options, name);\n if (existing)\n {\n if (existing.value !== value)\n {\n existing.value = String(value);\n this.RebuildCachedDataInternal();\n }\n return;\n }\n const option = new Tr2ShaderOption();\n option.name = String(name);\n option.value = String(value);\n this.options.push(option);\n this.RebuildCachedDataInternal();\n }\n\n /**\n * Drops the named option so the shader resolves with its default permutation\n * again.\n */\n ResetOption(name)\n {\n this.options = this.options.filter(option => option?.name !== name);\n this.RebuildCachedDataInternal();\n }\n\n /** The option's value, or the empty string when the option is not set. */\n GetOption(name)\n {\n return CjsParameter.findByName(this.options, name)?.value ?? \"\";\n }\n\n /**\n * Looks the name up in the dynamic parameters first, then the resources;\n * authored constant parameters are not searched.\n */\n GetParameterByName(name)\n {\n return this.FindParameterByName(name) ?? this.GetResourceByName(name);\n }\n\n /**\n * The dynamic parameter with this shader name, or null; resources and constant\n * parameters are not consulted.\n */\n FindParameterByName(name)\n {\n return this.parameters.find(parameter => CjsParameter.getNamedValue(parameter) === name) ?? null;\n }\n\n /** The resource parameter with this shader name, or null. */\n GetResourceByName(name)\n {\n return this.resources.find(parameter => CjsParameter.getNamedValue(parameter) === name) ?? null;\n }\n\n /** Whether a sampler override is authored for this resource name. */\n HasSamplerOverride(name)\n {\n return this.samplerOverrides.some(value => value?.name === name);\n }\n\n /**\n * Whether an authored constant parameter uses this name; dynamic parameters\n * and resources do not count.\n */\n HasParameter(name)\n {\n return this.constParameters.some(value => value?.name === name);\n }\n\n /**\n * Whether any collection - parameters, resources or constant parameters -\n * already claims the name; the duplicate guard PopulateParameters uses.\n */\n #hasParameterLike(name)\n {\n return !!(this.GetParameterByName(name) || this.HasParameter(name));\n }\n\n /**\n * Whether the resolved shader both marks the name SasUiVisible and exposes it\n * as a constant or resource; the predicate PruneParameters filters on.\n */\n #isShaderParameterVisible(name)\n {\n if (!name)\n {\n return false;\n }\n const shader = requireShader(this.shader);\n return Tr2Effect.getBool(shader, name, \"SasUiVisible\", false) && !!(shader.GetConstant(name) || shader.GetResource(name));\n }\n\n /**\n * Resolves an authored effect path to the compiled path a backend loads.\n *\n * Carbon's `ConvertEffectPath` (Tr2Effect.cpp:309-370) does three things:\n * lowercases, substitutes `/effect/` for `/effect.<platform>/`, and replaces\n * the extension with the shader-model suffix. This did only the first half of\n * the first one - a backslash swap - so `actualEffectFilePath` still ended in\n * `.fx` and no extension route could ever match it.\n *\n * Carbon returns false when it cannot substitute, and `Initialize` then\n * blanks the path rather than fetching. The same happens here: with no\n * platform name installed there is no committed backend, so an authored\n * `/effect/*.fx` has no compiled tree to resolve into and yields \"\". The\n * resolver itself throws in that case by design, and that loud failure is\n * right for a caller that named a path deliberately; it is wrong for\n * hydration, which may build an effect long before a backend exists.\n *\n * @param {string} path Authored effect path.\n * @param {object} [options] Overrides for the installed configuration.\n * @returns {string} Compiled path, or \"\" when none can be resolved.\n */\n static convertEffectPath(path, options = {})\n {\n const authored = String(path ?? \"\");\n\n if (!authored) return \"\";\n\n const installed = GetEffectPathDefaults();\n const platformName = options.platformName ?? installed.platformName ?? null;\n const shaderModel = options.shaderModel ?? installed.shaderModel ?? \"high\";\n const normalized = NormalizeResourcePath(authored);\n\n if (!platformName && normalized.endsWith(\".fx\") && normalized.includes(\"/effect/\"))\n {\n return \"\";\n }\n\n return ResolveEffectPath(normalized, { platformName, shaderModel });\n }\n\n /**\n * Flattens a canonical shader's technique/pass tree into stage inputs.\n */\n static iterateShaderStages(shader)\n {\n const stages = [];\n const desc = requireShader(shader).GetEffectDescription();\n for (const technique of desc.techniques)\n {\n for (const pass of technique.passes)\n {\n stages.push(...pass.stageInputs);\n }\n }\n return stages;\n }\n\n /**\n * Returns a canonical stage resource map's descriptions in iteration order.\n */\n static iterateResources(values)\n {\n if (!(values instanceof Map))\n {\n throw new TypeError(\"Tr2Effect stage resources must be a Map.\");\n }\n return [...values.values()];\n }\n\n /**\n * Reads a boolean shader annotation off a parameter, tolerating Map/array/object annotation containers and the several value field names reflection data uses.\n * @returns {boolean} defaultValue when the annotation is absent\n */\n static getBool(shader, parameterName, annotationName, defaultValue = false)\n {\n const annotations = requireShader(shader).GetParameterAnnotations(parameterName);\n const values = annotations instanceof Map ? [...annotations.values()] : Array.isArray(annotations) ? annotations : Object.values(annotations ?? {});\n const annotation = values.find(value => value?.name === annotationName);\n if (!annotation)\n {\n return defaultValue;\n }\n return Boolean(annotation.boolValue ?? annotation.value ?? annotation.booleanValue ?? defaultValue);\n }\n\n /**\n * Builds the parameter model matching a reflected shader constant - float\n * array, matrix, vector or scalar - seeded with the shader-authored defaults;\n * a 16-component constant whose name contains `Reflection` becomes an\n * EnvMapTransform variable parameter instead. Returns null for non-FLOAT\n * constants, which Carbon does not surface as parameters.\n */\n static convertEffectConstant(constant, constantValues)\n {\n // Carbon only populates parameters for FLOAT constants; INT/UINT/BOOL\n // constants are skipped. String types accepted for pre-enum reflection data.\n const constantType = constant?.type;\n if (constantType !== undefined && constantType !== null &&\n constantType !== Tr2EffectConstant.Type.FLOAT && constantType !== \"FLOAT\")\n {\n return null;\n }\n const name = constant.name ?? \"\";\n const dimension = Number(constant.dimension ?? 1);\n const elements = Number(constant.elements ?? 1);\n if (elements > 1)\n {\n const parameter = new TriFloatArrayParameter();\n parameter.name = name;\n parameter.value = Array.from({ length: elements }, (_, index) =>\n {\n const row = new TriVector4();\n row.data = Tr2Effect.readVector4(constant, constantValues, index);\n return row;\n });\n return parameter;\n }\n if (dimension === 16 && name.includes(\"Reflection\"))\n {\n const parameter = new TriVariableParameter();\n parameter.name = name;\n parameter.variableName = \"EnvMapTransform\";\n parameter.Initialize();\n return parameter;\n }\n if (dimension === 16)\n {\n const parameter = new Tr2Matrix4Parameter();\n parameter.name = name;\n Tr2Effect.readComponents(parameter.value, constant, constantValues, 16);\n return parameter;\n }\n if (dimension === 2)\n {\n const parameter = new Tr2Vector2Parameter();\n parameter.name = name;\n Tr2Effect.readComponents(parameter.value, constant, constantValues, 2);\n return parameter;\n }\n if (dimension === 3)\n {\n const parameter = new Tr2Vector3Parameter();\n parameter.name = name;\n Tr2Effect.readComponents(parameter.value, constant, constantValues, 3);\n return parameter;\n }\n if (dimension > 1)\n {\n const parameter = new Tr2Vector4Parameter();\n parameter.name = name;\n parameter.value = Tr2Effect.readVector4(constant, constantValues, 0);\n return parameter;\n }\n const parameter = new Tr2FloatParameter();\n parameter.name = name;\n parameter.value = Tr2Effect.readScalar(constant, constantValues);\n return parameter;\n }\n\n /**\n * Builds a TriTextureParameter for texture resources and a\n * Tr2GeometryBufferParameter for everything else.\n */\n static convertEffectResource(resource)\n {\n if (Tr2Effect.isTextureResource(resource))\n {\n const parameter = new TriTextureParameter();\n parameter.SetParameterName?.(resource.name ?? \"\");\n return parameter;\n }\n const parameter = new Tr2GeometryBufferParameter();\n parameter.name = resource.name ?? \"\";\n return parameter;\n }\n\n /**\n * Classifies a reflected resource as a texture: string types containing\n * TEXTURE but not BUFFER, or numeric types 1..5 (TEXTURE_1D through\n * TEXTURE_TYPELESS); buffer types start at 6.\n */\n static isTextureResource(resource)\n {\n const type = resource?.type;\n if (typeof type === \"string\")\n {\n return type.includes(\"TEXTURE\") && !type.includes(\"BUFFER\");\n }\n // Tr2EffectResource texture types are TEXTURE_1D(1)..TEXTURE_TYPELESS(5);\n // Carbon routes TYPELESS to TriTextureParameter too. Buffers start at 6.\n return Number(type) >= 1 && Number(type) <= 5;\n }\n\n /**\n * Reads a constant's shader-authored default scalar, preferring an inline\n * value and otherwise a little-endian float32 at the constant's offset into\n * the stage's constantValues; 0 when neither is available.\n */\n static readScalar(constant, values)\n {\n if (typeof constant.value === \"number\")\n {\n return constant.value;\n }\n if (ArrayBuffer.isView(values))\n {\n const offset = Number(constant.offset ?? 0);\n if (offset >= 0 && offset + 4 <= values.byteLength)\n {\n return new DataView(values.buffer, values.byteOffset, values.byteLength).getFloat32(offset, true);\n }\n }\n return 0;\n }\n\n /**\n * Reads the shader-authored default components for a constant into the\n * parameter's value slot (Carbon reads them straight from constantValues\n * at the constant's offset). Missing data leaves the class default.\n */\n static readComponents(out, constant, values, count)\n {\n if (constant.value && typeof constant.value.length === \"number\")\n {\n for (let i = 0; i < count; i++)\n {\n out[i] = Number(constant.value[i]) || 0;\n }\n return out;\n }\n if (ArrayBuffer.isView(values))\n {\n const view = new DataView(values.buffer, values.byteOffset, values.byteLength);\n const offset = Number(constant.offset ?? 0);\n if (offset >= 0 && offset + count * 4 <= values.byteLength)\n {\n for (let i = 0; i < count; i++)\n {\n out[i] = view.getFloat32(offset + i * 4, true);\n }\n }\n }\n return out;\n }\n\n /**\n * Reads the shader-authored default vec4 for one element of a constant out of the stage's constantValues (16 bytes per element), or from the constant's inline value when it has one.\n * @param element zero-based array element index; ignored when the constant carries an inline value\n * @returns {vec4} a newly allocated vector; components outside the buffer stay 0\n */\n static readVector4(constant, values, element)\n {\n if (constant.value && typeof constant.value.length === \"number\")\n {\n return vec4.fromValues(constant.value[0] ?? 0, constant.value[1] ?? 0, constant.value[2] ?? 0, constant.value[3] ?? 0);\n }\n const out = vec4.create();\n if (ArrayBuffer.isView(values))\n {\n const view = new DataView(values.buffer, values.byteOffset, values.byteLength);\n const offset = Number(constant.offset ?? 0) + element * 16;\n for (let i = 0; i < 4; i++)\n {\n const componentOffset = offset + i * 4;\n if (componentOffset >= 0 && componentOffset + 4 <= values.byteLength)\n {\n out[i] = view.getFloat32(componentOffset, true);\n }\n }\n }\n return out;\n }\n\n}\n"],"names":["requireShader","shader","Tr2Shader","TypeError","_Tr2Effect","_identity","Tr2Effect","Tr2Material","e","_init_effectFilePath","_init_extra_effectFilePath","_init_options","_init_extra_options","_init_name","_init_extra_name","_init_constParameters","_init_extra_constParameters","_init_parameters","_init_extra_parameters","_init_resources","_init_extra_resources","_init_effectResource","_init_extra_effectResource","_init_actualEffectFilePath","_init_extra_actualEffectFilePath","_init_samplerOverrides","_init_extra_samplerOverrides","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","rebuild","always","persist","string","list","read","objectRef","carbon","method","impl","adapted","implemented","reason","effectFilePath","options","name","constParameters","parameters","resources","effectResource","actualEffectFilePath","samplerOverrides","parameterHash","display","variableStore","insideStartUpdate","RebuildCachedData","RebuildCachedDataInternal","RebuildCachedDataAsync","wasInsideStartUpdate","SetVariableStore","store","GetVariableStore","Tr2VariableStore","GlobalStore","GetConstParameters","GetHashValue","hash","path","CjsParameter","hashFnv1String","option","value","parameter","hashFnv1Floats","resource","GetParameterAnnotations","parameterName","getEffectAnnotations","PopulateParameters","stage","iterateShaderStages","constant","constants","getBool","converted","convertEffectConstant","constantValues","push","iterateResources","convertEffectResource","uavs","EndUpdate","PruneParameters","filter","getNamedValue","IsParameterUsedByTechnique","GetConstant","StartUpdate","Initialize","OnAddedToMaterial","convertEffectPath","#BuildParametersForPasses","technique","parametersForPasses","pass","passes","stageInput","constantBuffer","Destroy","resourceSet","techniques","GetEffect","inputs","Tr2EffectTechniqueInputs","passParameters","Tr2EffectPassParameters","resourceSetHash","resourceSetDirty","compatibleWithGdr","stageInputs","stageType","length","exists","ShaderStageType","VERTEX_SHADER","PIXEL_SHADER","COMPUTE_SHADER","textures","#MapPassParameters","constantSize","GetConstantBufferSize","bound","Map","hasVariableParams","index","some","FindParameterByName","FindVariable","isAutoregister","set","defaults","Uint8Array","mirror","subarray","Math","min","GetSharedConstantBuffer","AllocateConstants","constantMirror","Tr2EffectParam","sourceName","sourceValue","registerIndex","offset","registerCount","size","RebuildEffectHandles","SupportsDirtyNotification","shaderParametersWithNotification","shaderParameters","#MapPassResources","into","entries","sort","left","right","Number","register","GetResourceByName","TriVariableParameter","stored","isSRGB","ResourceFlags","RESOURCE_FLAG_SRGB","#ResolveResourceValue","usedResources","includes","usedTexturesDirty","#AcquireEffectResource","resourceManager","CjsResMan","GetGlobal","GetResource","requirement","ResourceRequirement","SHADER","OnCompleted","Ready","OnModified","OnListModified","event","_key","_key2","SetDestination","String","OnRemovedFromMaterial","Tr2EffectRes","GetShader","Tr2EffectStateManager","registerShaderHandles","lodTextureParameters","UsedWithScreenSize","ReleaseCachedData","SetEffectPathName","SetValues","source","returnBoolean","GetEffectPathName","GetEffectRes","GetName","AddResource","AddResourceTexture2D","resourcePath","TriTextureParameter","SetParameterName","SetResourcePath","SetResourceTexture2D","updated","AddSamplerOverride","addressU","addressV","HasSamplerOverride","override","Tr2SamplerOverride","addressW","mipFilter","AddParameterVector4","vec4","create","HasParameter","Tr2ConstantEffectParameter","clone","AddParameterFloat","fromValues","AddParameterColor","values","rest","changedCollections","Set","key","Object","keys","route","Array","isArray","setter","add","field","result","changed","SetParameters","undefined","removedParameter","removedResource","SetParameter","existing","findByName","Tr2Vector4Parameter","SetValue","SetTextures","SetConstParameters","vector","copy","SetSamplerOverrides","indexOf","ArrayBuffer","isView","CreateParameterFromValue","ExplicitClass","Type","_type","fields","ParameterClass","INFERRED_PARAMETER_TYPES","isValue","#removeNamed","splice","#setNamedParameter","constructor","created","existingResource","#setNamedTexture","ClearAllParameters","ClearAllResources","SetOption","Tr2ShaderOption","ResetOption","GetOption","GetParameterByName","find","#hasParameterLike","#isShaderParameterVisible","authored","installed","GetEffectPathDefaults","platformName","shaderModel","normalized","NormalizeResourcePath","endsWith","ResolveEffectPath","stages","desc","GetEffectDescription","annotationName","defaultValue","annotations","annotation","Boolean","boolValue","booleanValue","constantType","Tr2EffectConstant","FLOAT","dimension","elements","TriFloatArrayParameter","from","_","row","TriVector4","data","readVector4","variableName","Tr2Matrix4Parameter","readComponents","Tr2Vector2Parameter","Tr2Vector3Parameter","Tr2FloatParameter","readScalar","isTextureResource","Tr2GeometryBufferParameter","byteLength","DataView","buffer","byteOffset","getFloat32","out","count","i","view","element","componentOffset","#GlobalVariable","GetVariable","#BakeConstantParameters","floats","Float32Array","slice","#resolveExplicitParameterClass","explicit","Registered","CjsSchema","GetConstructor","#toConstVector4","isNumberArrayValue","freeze"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2Effect.js","sources":["../../../../src/trinity/shader/Tr2Effect.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2Effect.h\n// Maintained CarbonEngineJS implementation; generated schema is reference-only.\nimport { carbon, CjsSchema, impl, io, type } from \"#schema\";\nimport { Tr2RegisterMapAL, Tr2ResourceSetDescriptionAL } from \"#trinityal\";\nimport { Tr2Material } from \"./Tr2Material.js\";\nimport { vec4 } from \"#math/vec4\";\nimport { Tr2ConstantEffectParameter } from \"./parameter/Tr2ConstantEffectParameter.js\";\nimport { Tr2FloatParameter } from \"./parameter/Tr2FloatParameter.js\";\nimport { Tr2GeometryBufferParameter } from \"./parameter/Tr2GeometryBufferParameter.js\";\nimport { Tr2Matrix4Parameter } from \"./parameter/Tr2Matrix4Parameter.js\";\nimport { ShaderStageType, Tr2EffectConstant, Tr2EffectRes, Tr2Shader } from \"#resource/shader\";\nimport { Tr2EffectParam } from \"./material/Tr2EffectParam.js\";\nimport { Tr2EffectPassParameters } from \"./material/Tr2EffectPassParameters.js\";\nimport { Tr2EffectTechniqueInputs } from \"./material/Tr2EffectTechniqueInputs.js\";\nimport { CjsResMan, ResourceRequirement } from \"#resource\";\nimport { GetEffectPathDefaults, NormalizeResourcePath, ResolveEffectPath } from \"#utils/effectPath\";\nimport { Tr2EffectStateManager } from \"./Tr2EffectStateManager.js\";\nimport { Tr2ShaderOption } from \"./reflection/Tr2ShaderOption.js\";\nimport { Tr2SamplerOverride } from \"./sampler/Tr2SamplerOverride.js\";\nimport { Tr2RuntimeTextureParameter } from \"./parameter/Tr2RuntimeTextureParameter.js\";\nimport { Tr2Vector2Parameter } from \"./parameter/Tr2Vector2Parameter.js\";\nimport { Tr2Vector3Parameter } from \"./parameter/Tr2Vector3Parameter.js\";\nimport { Tr2Vector4Parameter } from \"./parameter/Tr2Vector4Parameter.js\";\nimport { TriFloatArrayParameter } from \"./parameter/TriFloatArrayParameter.js\";\nimport { TriTextureParameter } from \"./parameter/TriTextureParameter.js\";\nimport { TriVariableParameter } from \"./parameter/TriVariableParameter.js\";\nimport { TriVector4 } from \"./parameter/TriVector4.js\";\nimport { CjsParameter } from \"./parameter/CjsParameter.js\";\nimport { ResourceFlags } from \"./parameter/ITr2EffectValue.js\";\nimport { Tr2VariableStore } from \"../core/variable/Tr2VariableStore.js\";\n\n\nfunction requireShader(shader)\n{\n if (!(shader instanceof Tr2Shader))\n {\n throw new TypeError(\"Shader reflection must be a Tr2Shader.\");\n }\n return shader;\n}\n\n/** Whether a value is a texture rather than a number or vector. */\nfunction IsTextureLike(value)\n{\n return typeof value === \"object\"\n && value !== null\n && typeof value.length !== \"number\"\n && (typeof value.IsValid === \"function\" || typeof value.GetTexture === \"function\");\n}\n\n/**\n * Carbon's overload set, resolved by value (`Tr2Effect.h:93-100`).\n *\n * Each width has its own parameter class, matching Carbon's overload per type.\n */\nfunction ParameterClassFor(value)\n{\n if (typeof value === \"number\") return Tr2FloatParameter;\n if (typeof value?.length !== \"number\") return null;\n\n if (value.length === 2) return Tr2Vector2Parameter;\n if (value.length === 3) return Tr2Vector3Parameter;\n if (value.length === 4) return Tr2Vector4Parameter;\n if (value.length === 16) return Tr2Matrix4Parameter;\n return null;\n}\n\n/** A readable kind for the refusal message. */\nfunction describe(value)\n{\n if (value === undefined) return \"undefined\";\n if (typeof value?.length === \"number\") return `a ${value.length}-component value`;\n return typeof value;\n}\n\n/** Owns the mutable effect facade: shader path and options, authored parameters and resources, sampler overrides, variable-store resolution, and rebuild state. */\n@type.define({ className: \"Tr2Effect\", family: \"shader\" })\nexport class Tr2Effect extends Tr2Material\n{\n\n /** m_effectFilePath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.rebuild(\"pipeline\")\n @io.always\n @io.persist\n @type.string\n effectFilePath = \"\";\n\n /** m_options (PTr2ShaderOptionStructureList) [READ, PERSIST] */\n @io.rebuild(\"pipeline\")\n @io.persist\n @type.list(\"Tr2ShaderOption\")\n options = [];\n\n /** m_name (std::string) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_constParameters (PTr2ConstantEffectParameterStructureList) [READ, PERSIST] */\n @io.rebuild(\"bindings\")\n @io.persist\n @type.list(\"Tr2ConstantEffectParameter\")\n constParameters = [];\n\n /** m_parameters (PITriEffectParameterVector) [READ, PERSIST] */\n @io.rebuild(\"bindings\")\n @io.persist\n @type.list(\"ITriEffectParameter\")\n parameters = [];\n\n /** m_resources (PITriEffectResourceParameterVector) [READ, PERSIST] */\n @io.rebuild(\"bindings\")\n @io.persist\n @type.list(\"ITriEffectResourceParameter\")\n resources = [];\n\n /** m_effectResource (Tr2EffectResPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2EffectRes\")\n effectResource = null;\n\n /** m_actualEffectFilePath (std::string) [READ] */\n @io.read\n @type.string\n actualEffectFilePath = \"\";\n\n /** m_samplerOverrides (PTr2SamplerOverrideStructureList) [READ, PERSIST] */\n @io.rebuild(\"bindings\")\n @io.persist\n @type.list(\"Tr2SamplerOverride\")\n samplerOverrides = [];\n\n parameterHash = 0xffffffff;\n\n display = true;\n\n /**\n * Carbon keeps m_variableStore null and falls back to the GLOBAL store at\n * call time, so a later global-store swap is seen by existing effects.\n * Read through GetVariableStore(); never capture the global eagerly.\n */\n variableStore = null;\n\n insideStartUpdate = false;\n\n /** Carbon method RebuildCachedData -> RebuildCachedDataInternal (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n RebuildCachedData()\n {\n this.RebuildCachedDataInternal();\n }\n\n /**\n * The resource-arrival overload: Carbon temporarily clears\n * insideStartUpdate so a shader arriving during a batched Start/EndUpdate\n * still rebuilds immediately.\n */\n @carbon.method\n @impl.implemented\n RebuildCachedDataAsync()\n {\n const wasInsideStartUpdate = this.insideStartUpdate;\n this.insideStartUpdate = false;\n this.RebuildCachedDataInternal();\n this.insideStartUpdate = wasInsideStartUpdate;\n }\n\n /**\n * Overrides the store this effect's TriVariableParameter values resolve\n * against; passing null restores the fallback to the global store.\n */\n @carbon.method\n @impl.implemented\n SetVariableStore(store)\n {\n this.variableStore = store ?? null;\n }\n\n /**\n * An autoregistered name from whichever global store holds it.\n *\n * Carbon's autoregistration IS Tr2VariableStore::GetVariable: a miss\n * RESERVES the name with the INVALID type, and that reserved variable is the\n * shared slot the scene fills later - which is how EveSpaceSceneShadowMap\n * reaches an effect at all. Tr2ShadowMap registers into this same global\n * store, so a registration and a lookup now meet.\n *\n * @param {string} name Variable name.\n * @returns {object|null} The variable, reserved if it did not exist.\n */\n static #GlobalVariable(name)\n {\n return Tr2VariableStore.GlobalStore().GetVariable?.(name) ?? null;\n }\n\n /** The effect's store, falling back to the global store at call time. */\n @carbon.method\n @impl.implemented\n GetVariableStore()\n {\n return this.variableStore ?? Tr2VariableStore.GlobalStore();\n }\n\n /**\n * The authored constant-parameter list itself, not a copy - callers that\n * mutate it mutate the effect.\n */\n @carbon.method\n @impl.implemented\n GetConstParameters()\n {\n return this.constParameters;\n }\n\n /**\n * Content hash over the shader path, options, constant parameters, and\n * every parameter/resource - Carbon's effect dedup/batching key. Only\n * hashes authored content; values coming from a variable store are not\n * included. Not lightweight - do not call every frame.\n */\n @carbon.method\n @impl.adapted\n GetHashValue()\n {\n let hash = 0;\n const path = this.actualEffectFilePath || this.effectFilePath;\n if (path)\n {\n hash = CjsParameter.hashFnv1String(path);\n }\n for (const option of this.options)\n {\n hash = CjsParameter.hashFnv1String(option?.name ?? \"\", hash);\n hash = CjsParameter.hashFnv1String(option?.value ?? \"\", hash);\n }\n for (const parameter of this.constParameters)\n {\n hash = CjsParameter.hashFnv1String(parameter?.name ?? \"\", hash);\n hash = CjsParameter.hashFnv1Floats(parameter?.value ?? [0, 0, 0, 0], hash);\n }\n for (const parameter of this.parameters)\n {\n hash = parameter?.GetHashValue?.(hash) ?? hash;\n }\n for (const resource of this.resources)\n {\n hash = resource?.GetHashValue?.(hash) ?? hash;\n }\n return hash >>> 0;\n }\n\n /** Carbon method GetParameterAnnotations -> PyGetParameterAnnotations (MAP_METHOD). */\n @carbon.method\n @impl.implemented\n GetParameterAnnotations(parameterName)\n {\n return CjsParameter.getEffectAnnotations(this.shader, parameterName);\n }\n\n /** Carbon method PopulateParameters (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n PopulateParameters()\n {\n if (!this.shader)\n {\n return false;\n }\n for (const stage of Tr2Effect.iterateShaderStages(this.shader))\n {\n for (const constant of stage.constants ?? [])\n {\n if (!Tr2Effect.getBool(this.shader, constant.name, \"SasUiVisible\", false) || this.#hasParameterLike(constant.name))\n {\n continue;\n }\n const converted = Tr2Effect.convertEffectConstant(constant, stage.constantValues);\n if (converted)\n {\n this.parameters.push(converted);\n }\n }\n for (const resource of Tr2Effect.iterateResources(stage.resources))\n {\n if (!Tr2Effect.getBool(this.shader, resource.name, \"SasUiVisible\", false) || this.#hasParameterLike(resource.name))\n {\n continue;\n }\n this.resources.push(Tr2Effect.convertEffectResource(resource));\n }\n for (const resource of Tr2Effect.iterateResources(stage.uavs))\n {\n if (!Tr2Effect.getBool(this.shader, resource.name, \"SasUiVisible\", false) || this.#hasParameterLike(resource.name))\n {\n continue;\n }\n this.resources.push(Tr2Effect.convertEffectResource(resource));\n }\n }\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /** Carbon method EndUpdate (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n EndUpdate()\n {\n if (this.insideStartUpdate)\n {\n this.insideStartUpdate = false;\n this.RebuildCachedDataInternal();\n }\n }\n\n /** Carbon method PruneParameters (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n PruneParameters()\n {\n if (!this.shader)\n {\n return false;\n }\n this.parameters = this.parameters.filter(parameter => this.#isShaderParameterVisible(CjsParameter.getNamedValue(parameter)));\n this.constParameters = this.constParameters.filter(parameter => this.#isShaderParameterVisible(parameter?.name));\n this.resources = this.resources.filter(parameter => this.#isShaderParameterVisible(CjsParameter.getNamedValue(parameter)));\n return true;\n }\n\n /** Carbon method IsParameterUsedByTechnique (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n IsParameterUsedByTechnique(parameterName)\n {\n return this.shader === null ? false : !!requireShader(this.shader).GetConstant(parameterName);\n }\n\n /** Carbon method StartUpdate (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n StartUpdate()\n {\n this.insideStartUpdate = true;\n }\n\n /**\n * Attaches every resource to this material, derives actualEffectFilePath from\n * the authored path, and rebuilds cached shader data.\n */\n Initialize()\n {\n for (const resource of this.resources)\n {\n resource?.OnAddedToMaterial?.(this);\n }\n this.actualEffectFilePath = this.effectFilePath ? Tr2Effect.convertEffectPath(this.effectFilePath) : \"\";\n this.#AcquireEffectResource();\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /**\n * Builds the per-technique, per-pass parameter mapping from the resolved\n * shader (Carbon `Tr2Effect::RebuildCachedDataInternal`, Tr2Effect.cpp:693-795).\n *\n * The outer list is per TECHNIQUE, each holding `passes` and `libraries`.\n * That is the shape `Tr2Material`'s readers already expect, so this\n * assembles the existing material models rather than inventing a structure.\n *\n * Device work is deliberately absent. Carbon creates a constant buffer, a\n * resource set and sampler-state objects in this same loop; here only the\n * CPU mirror is allocated, through `Tr2MaterialStageInput`'s own\n * `AllocateConstants` / `GetSharedConstantBuffer`, which exist for exactly\n * this reason. An engine realizes the rest from what is recorded.\n *\n * @returns {void}\n */\n @impl.adapted\n @impl.reason(\"Device-free JS reflection supplies stage signatures in authored order; pass descriptions allocate their map here and sampler states are seeded by the applying context.\")\n #BuildParametersForPasses()\n {\n // Carbon's `m_parametersForPasses.clear()` (Tr2Effect.cpp:693) tears down\n // value members: each stage's constant buffer and each pass's resource\n // set die with it. Ours are device objects behind handles, so they are\n // destroyed by name before the array is dropped - otherwise every rebuild\n // leaked one GPUBuffer per stage.\n for (const technique of this.parametersForPasses ?? [])\n {\n for (const pass of technique?.passes ?? [])\n {\n for (const stageInput of pass?.stageInput ?? []) stageInput?.constantBuffer?.Destroy();\n pass?.resourceSet?.Destroy();\n }\n }\n\n this.parametersForPasses = [];\n\n const techniques = this.shader?.GetEffect?.()?.techniques ?? [];\n\n for (const technique of techniques)\n {\n const inputs = new Tr2EffectTechniqueInputs();\n\n for (const pass of technique?.passes ?? [])\n {\n const passParameters = new Tr2EffectPassParameters();\n\n // Carbon builds the map from stage signatures before material writes\n // (Tr2EffectDescription.cpp:617-646; Tr2Effect.cpp:708). Our device-free\n // reflection keeps sampler metadata; states are seeded by the applying\n // context, as documented on Tr2Material.SeedSamplers.\n const stages = [];\n const signatures = [];\n const ordered = pass.stageOrder?.length ? pass.stageOrder : pass.stageInputs.map((_, stage) => stage);\n for (const stage of ordered)\n {\n if (!pass.stageInputs[stage]?.exists) continue;\n stages.push(stage);\n signatures.push(pass.stageInputs[stage].signature);\n }\n passParameters.resourceSetDesc = new Tr2ResourceSetDescriptionAL({\n registers: new Tr2RegisterMapAL({ stages, signatures })\n });\n passParameters.resourceSetHash = 0;\n passParameters.resourceSetDirty = true;\n passParameters.compatibleWithGdr = true;\n\n const stageInputs = pass?.stageInputs ?? [];\n\n for (let stageType = 0; stageType < stageInputs.length; stageType += 1)\n {\n const stage = stageInputs[stageType];\n\n if (!stage?.exists) continue;\n\n // A stage Carbon's GDR path cannot express: anything but vertex,\n // pixel or compute (Tr2Effect.cpp:723-726).\n if (stageType !== ShaderStageType.VERTEX_SHADER\n && stageType !== ShaderStageType.PIXEL_SHADER\n && stageType !== ShaderStageType.COMPUTE_SHADER)\n {\n passParameters.compatibleWithGdr = false;\n }\n\n this.#MapPassParameters(stage, passParameters.stageInput[stageType], passParameters);\n this.#MapPassResources(stage.resources, passParameters.stageInput[stageType].textures, passParameters);\n this.#MapPassResources(stage.uavs, passParameters.stageInput[stageType].uavs, passParameters);\n }\n\n if (!passParameters.compatibleWithGdr) this.compatibleWithGdr = false;\n\n inputs.passes.push(passParameters);\n }\n\n this.parametersForPasses.push(inputs);\n }\n }\n\n /**\n * Maps one stage's authored constants onto byte offsets in its CPU mirror\n * (Carbon `MapPassParameters`, Tr2Effect.cpp:1722-2025).\n *\n * `registerIndex` and `registerCount` on a stored parameter are BYTE OFFSET\n * and BYTE SIZE, not a register index and count. Carbon's field names are\n * historical and mean something different here than they do for resources.\n *\n * Every constant contributes to the buffer size whether or not anything\n * binds it, because the shader may sample an unbound constant and expect a\n * default. `GetConstantBufferSize` already carries that rule.\n *\n * A stage whose values are entirely static takes a shared, deduplicated\n * mirror; one with variable parameters gets its own. That split is Carbon's\n * and it is why `Tr2MaterialStageInput` has both methods.\n *\n * @param {object} stage Reflected stage input.\n * @param {object} stageInput Material stage input to populate.\n * @param {object} passParameters Owning pass parameters.\n * @returns {void}\n */\n #MapPassParameters(stage, stageInput, passParameters)\n {\n const constantSize = stage.GetConstantBufferSize?.() ?? 0;\n const constants = stage.constants ?? [];\n const constParameters = this.GetConstParameters();\n const bound = new Map();\n let hasVariableParams = false;\n\n for (let index = 0; index < constants.length; index += 1)\n {\n const constant = constants[index];\n const name = constant?.name ?? \"\";\n\n if (!name) continue;\n // Authored constants are baked into the mirror rather than bound, so\n // they do not make the stage variable.\n if (constParameters.some(parameter => parameter?.name === name)) continue;\n\n const value = this.FindParameterByName(name)\n ?? this.#ResolveResourceValue(name, passParameters)\n ?? this.GetVariableStore().FindVariable?.(name)\n ?? (constant.isAutoregister ? Tr2Effect.#GlobalVariable(name) : null)\n ?? null;\n\n if (value)\n {\n bound.set(index, value);\n hasVariableParams = true;\n }\n }\n\n if (constantSize === 0) return;\n\n const defaults = stage.constantValues ?? new Uint8Array(0);\n const mirror = new Uint8Array(constantSize);\n\n mirror.set(defaults.subarray(0, Math.min(defaults.length, constantSize)));\n Tr2Effect.#BakeConstantParameters(mirror, constants, constParameters);\n\n if (!hasVariableParams)\n {\n // Fully static: Carbon takes a shared buffer keyed on the contents.\n stageInput.GetSharedConstantBuffer(mirror, constantSize);\n return;\n }\n\n stageInput.AllocateConstants(constantSize);\n stageInput.constantMirror?.set(mirror.subarray(0, stageInput.constantMirror.length));\n\n for (const [ index, value ] of bound)\n {\n const constant = constants[index];\n const parameter = new Tr2EffectParam();\n\n parameter.sourceName = constant.name;\n parameter.sourceValue = value;\n parameter.registerIndex = constant.offset;\n parameter.registerCount = constant.size;\n\n value.RebuildEffectHandles?.(this.shader);\n\n if (value.SupportsDirtyNotification?.())\n {\n stageInput.shaderParametersWithNotification.push(parameter);\n }\n else\n {\n stageInput.shaderParameters.push(parameter);\n }\n }\n }\n\n /**\n * Maps a stage's texture or UAV registers onto authored values\n * (Carbon `MapPassResources`, Tr2Effect.cpp:1436-1489).\n *\n * Here `registerIndex` really is the register, and `registerCount` is\n * overloaded as a flag word carrying only the sRGB bit. Unresolved names\n * produce no entry, so this vector is sparse where the constant one is not.\n *\n * Binding from the effect's own resources or from an effect parameter clears\n * GDR compatibility, because a general draw cannot know those values.\n *\n * @param {Map} resources Register-keyed reflected resources.\n * @param {Array} into Parameter vector to fill.\n * @param {object} passParameters Owning pass parameters.\n * @returns {void}\n */\n #MapPassResources(resources, into, passParameters)\n {\n if (!resources || typeof resources.entries !== \"function\") return;\n\n // Carbon iterates a register-ordered map; ours is unordered, so sort to\n // keep the emitted order stable between runs.\n const entries = [ ...resources.entries() ].sort((left, right) => Number(left[0]) - Number(right[0]));\n\n for (const [ register, resource ] of entries)\n {\n const name = resource?.name ?? \"\";\n\n if (!name) continue;\n\n let value = this.GetResourceByName(name) ?? null;\n\n if (value)\n {\n passParameters.compatibleWithGdr = false;\n }\n else\n {\n const parameter = this.FindParameterByName(name);\n\n if (parameter instanceof TriVariableParameter)\n {\n value = parameter;\n passParameters.compatibleWithGdr = false;\n }\n else\n {\n value = this.GetVariableStore().FindVariable?.(name)\n ?? (resource.isAutoregister ? Tr2Effect.#GlobalVariable(name) : null)\n ?? null;\n }\n }\n\n if (!value) continue;\n\n const stored = new Tr2EffectParam();\n\n stored.sourceName = name;\n stored.sourceValue = value;\n stored.registerIndex = Number(register);\n stored.registerCount = resource.isSRGB ? ResourceFlags.RESOURCE_FLAG_SRGB : 0;\n into.push(stored);\n }\n }\n\n /**\n * Resolves a named effect resource and records the pass's use of it.\n *\n * @param {string} name Constant name.\n * @param {object} passParameters Owning pass parameters.\n * @returns {object|null} Resolved value.\n */\n #ResolveResourceValue(name, passParameters)\n {\n const resource = this.GetResourceByName(name);\n\n if (!resource) return null;\n if (!passParameters.usedResources.includes(resource)) passParameters.usedResources.push(resource);\n passParameters.usedTexturesDirty = true;\n\n return resource;\n }\n\n /**\n * Bakes authored constant-parameter values into a stage mirror.\n *\n * @param {Uint8Array} mirror Stage constant mirror.\n * @param {Array} constants Reflected constants.\n * @param {Array} constParameters Authored constant parameters.\n * @returns {void}\n */\n static #BakeConstantParameters(mirror, constants, constParameters)\n {\n for (const constant of constants)\n {\n const authored = constParameters.find(parameter => parameter?.name === constant?.name);\n\n if (!authored) continue;\n\n const values = authored.value ?? [];\n const floats = new Float32Array(mirror.buffer, mirror.byteOffset + constant.offset, Math.min(values.length, constant.size / 4));\n\n floats.set(values.slice(0, floats.length));\n }\n }\n\n /**\n * Acquires the effect resource for the resolved path, if a manager is\n * installed and this effect has not been handed one already.\n *\n * Carbon fetches through the process-wide manager and registers a notify\n * target (`BeResMan->GetResource(...)` then `AddNotifyTarget(this)`,\n * Tr2Effect.cpp:397-402). That mechanism is not ported: this runtime replaced\n * notify targets with events, `CjsResource` is a `CjsEventEmitter`, and\n * nothing in `src` has an `AddNotifyTarget`. The equivalent is subscribing to\n * the resource's `completed` event through `OnCompleted`, which replays for a\n * late subscriber - so a resource that is already prepared rebuilds\n * immediately rather than waiting for a state change that has been and gone.\n *\n * The resource owns the subscription, which is what keeps Trinity out of the\n * lifecycle; `shader.test.js` asserts exactly that by throwing from an\n * `AddNotifyTarget` on a test resource.\n *\n * Does nothing when no manager is installed or the path did not resolve.\n * Both are real states - a caller composing by hand assigns `effectResource`\n * itself, and an unresolved path means no backend is committed - and neither\n * is an error worth throwing during hydration.\n *\n * @returns {void}\n */\n #AcquireEffectResource()\n {\n const resourceManager = CjsResMan.GetGlobal();\n\n if (!resourceManager || !this.actualEffectFilePath) return;\n // A caller that assigned a resource by hand owns it; do not replace it.\n if (this.effectResource !== null) return;\n\n const resource = resourceManager.GetResource(this.actualEffectFilePath, {\n requirement: ResourceRequirement.SHADER\n });\n\n this.effectResource = resource;\n // `source` is this effect, so a later Initialize can drop the subscription\n // in one call rather than tracking listeners individually.\n resource.OnCompleted(() => this.RebuildCachedDataAsync(), this);\n resource.Ready?.();\n }\n\n /** Re-runs Initialize after notified fields change; always returns true. */\n OnModified()\n {\n this.Initialize();\n return true;\n }\n\n /**\n * Keeps list membership consistent: a removed entry has its reroute\n * destination cleared and is detached from the material, an inserted one is\n * attached, and cached data is rebuilt either way.\n */\n OnListModified(event, _key, _key2, value)\n {\n if (value?.SetDestination && String(event).includes(\"REMOVED\"))\n {\n value.SetDestination(null, 0);\n }\n if (value?.OnRemovedFromMaterial && String(event).includes(\"REMOVED\"))\n {\n value.OnRemovedFromMaterial(this);\n }\n if (value?.OnAddedToMaterial && String(event).includes(\"INSERTED\"))\n {\n value.OnAddedToMaterial(this);\n }\n this.RebuildCachedDataInternal();\n }\n\n /**\n * Re-resolves the shader for the current option set and re-binds every\n * parameter and resource to it, rebuilding the screen-size LOD texture list on\n * the way; a no-op while a StartUpdate batch is open. Resolves shader metadata\n * only - no GPU program is created.\n */\n RebuildCachedDataInternal()\n {\n if (this.insideStartUpdate)\n {\n return;\n }\n this.parameterHash = 0xffffffff;\n if (this.effectResource !== null)\n {\n if (!(this.effectResource instanceof Tr2EffectRes))\n {\n throw new TypeError(\"Tr2Effect.effectResource must be a Tr2EffectRes or null.\");\n }\n const shader = this.effectResource.GetShader(this.options);\n if (shader !== null && !(shader instanceof Tr2Shader))\n {\n throw new TypeError(\"Tr2EffectRes.GetShader must return a Tr2Shader or null.\");\n }\n this.shader = shader;\n // Carbon stamps registration handles while reading the description; the\n // resource layer cannot reach Trinity's tables, so the stamp happens here\n // on the first rebuild that resolves a shader. Interning is idempotent,\n // so a rebuild that re-resolves the same permutation is a no-op.\n if (shader !== null) Tr2EffectStateManager.registerShaderHandles(shader);\n }\n this.lodTextureParameters = [];\n // Carbon initialises the flag here and every rule below only ever CLEARS\n // it (Tr2Effect.cpp:676). Keeping the assignment is right; what was missing\n // is everything that clears it.\n this.compatibleWithGdr = true;\n this.#BuildParametersForPasses();\n for (const parameter of this.parameters)\n {\n if (parameter instanceof TriVariableParameter)\n {\n parameter.Initialize(this.GetVariableStore());\n }\n parameter?.RebuildEffectHandles?.(this.shader);\n }\n for (const resource of this.resources)\n {\n resource?.RebuildEffectHandles?.(this.shader);\n if (resource?.UsedWithScreenSize && !this.lodTextureParameters.includes(resource))\n {\n this.lodTextureParameters.push(resource);\n }\n }\n }\n\n /**\n * Drops the resolved shader and clears every parameter's and resource's effect\n * handles by rebuilding them against null.\n */\n ReleaseCachedData()\n {\n this.shader = null;\n for (const parameter of this.parameters)\n {\n parameter?.RebuildEffectHandles?.(null);\n }\n for (const resource of this.resources)\n {\n resource?.RebuildEffectHandles?.(null);\n }\n this.lodTextureParameters = [];\n }\n\n /**\n * Sets the authored effect path through SetValues so the pipeline rebuild flag\n * fires; returns whether anything changed.\n */\n SetEffectPathName(path)\n {\n return this.SetValues({ effectFilePath: path ? String(path) : \"\" }, { source: this, returnBoolean: true });\n }\n\n /**\n * The authored path, not the slash-normalized actualEffectFilePath that\n * Initialize derives from it.\n */\n GetEffectPathName()\n {\n return this.effectFilePath;\n }\n\n /**\n * The effect resource the shader is resolved from, or null before one has been\n * assigned.\n */\n GetEffectRes()\n {\n return this.effectResource;\n }\n\n /** The authored effect name, which is independent of the effect file path. */\n GetName()\n {\n return this.name;\n }\n\n /**\n * Appends a resource parameter, attaches it to this material and rebuilds\n * cached data; does not check for a duplicate name and always returns true.\n */\n AddResource(parameter)\n {\n this.resources.push(parameter);\n parameter?.OnAddedToMaterial?.(this);\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /**\n * Creates and attaches a TriTextureParameter for the name, returning false\n * when a resource already uses that name.\n */\n AddResourceTexture2D(name, resourcePath = \"\")\n {\n if (this.GetResourceByName(name))\n {\n return false;\n }\n const parameter = new TriTextureParameter();\n parameter.SetParameterName?.(name);\n parameter.SetResourcePath?.(resourcePath);\n return this.AddResource(parameter);\n }\n\n /**\n * Carbon's SetResourceTexture2D - assigns the texture path on the named\n * resource, creating the TriTextureParameter when absent.\n */\n @carbon.method\n @impl.adapted\n SetResourceTexture2D(name, resourcePath = \"\")\n {\n const updated = this.#setNamedTexture(name, resourcePath);\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /**\n * Adds a sampler override for the named resource using Carbon's authoring\n * defaults for the fields not passed in (addressW 1, filter 3, mipFilter 2);\n * returns false when an override of that name already exists.\n */\n AddSamplerOverride(name, addressU = 1, addressV = addressU)\n {\n if (this.HasSamplerOverride(name))\n {\n return false;\n }\n const override = new Tr2SamplerOverride();\n override.name = String(name);\n override.addressU = addressU;\n override.addressV = addressV;\n override.addressW = 1;\n override.filter = 3;\n override.mipFilter = 2;\n this.samplerOverrides.push(override);\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /**\n * Adds an authored constant parameter, cloning the value so the caller's\n * vector is not aliased; returns false when a constant of that name already\n * exists.\n */\n AddParameterVector4(name, value = vec4.create())\n {\n if (this.HasParameter(name))\n {\n return false;\n }\n const parameter = new Tr2ConstantEffectParameter();\n parameter.name = String(name);\n parameter.value = vec4.clone(value);\n this.constParameters.push(parameter);\n this.RebuildCachedDataInternal();\n return true;\n }\n\n /**\n * Adds a constant parameter with the scalar splatted across all four\n * components, matching Carbon's float authoring.\n */\n AddParameterFloat(name, value = 0)\n {\n return this.AddParameterVector4(name, vec4.fromValues(value, value, value, value));\n }\n\n /**\n * Adds a constant parameter from a colour vector; behaviourally identical to\n * AddParameterVector4.\n */\n AddParameterColor(name, value)\n {\n return this.AddParameterVector4(name, value);\n }\n\n /**\n * JS convenience over the Carbon lists: the effect collections also accept\n * unique-name plain-object maps. Canonical arrays keep the inherited\n * CjsModel path untouched; `textures` is an input alias for `resources`.\n */\n SetValues(values = {}, options = {})\n {\n const source = values && typeof values === \"object\" ? values : {};\n const rest = {};\n const changedCollections = new Set();\n for (const key of Object.keys(source))\n {\n const route = Tr2Effect.#VALUE_COLLECTIONS[key];\n const value = source[key];\n if (route && value && typeof value === \"object\" && !Array.isArray(value))\n {\n if (this[route.setter](value))\n {\n changedCollections.add(route.field);\n }\n continue;\n }\n if (key === \"textures\")\n {\n continue;\n }\n rest[key] = value;\n }\n const result = super.SetValues(rest, { ...options, returnBoolean: false });\n const changed = result instanceof Set ? result : new Set();\n for (const field of changedCollections)\n {\n changed.add(field);\n }\n return options?.returnBoolean === true ? changed.size > 0 : changed;\n }\n\n /**\n * Merges dynamic parameters by unique name. Values may be raw\n * (number/vector/matrix/res path string) or explicit `{ type, ... }`\n * descriptors; `null` removes. Texture values route to `resources`.\n */\n SetParameters(values = {})\n {\n let updated = false;\n for (const name of Object.keys(values ?? {}))\n {\n const value = values[name];\n if (value === undefined) continue;\n if (value === null)\n {\n const removedParameter = this.#removeNamed(this.parameters, name);\n const removedResource = this.#removeNamed(this.resources, name);\n updated = removedParameter || removedResource || updated;\n continue;\n }\n updated = this.#setNamedParameter(name, value) || updated;\n }\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /**\n * Sets one named dynamic parameter. Carbon exposes this singular facade and\n * smart-light meshes use it while stamping their resolved group color.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"JS explicitly rebuilds the cached CPU effect data after Carbon's Vector4 parameter reuse-or-append policy because plain array mutation has no Blue list notification.\")\n SetParameter(name, value, uavMipLevel = 0)\n {\n const parameterName = String(name ?? \"\");\n\n // A TEXTURE IS NOT A PARAMETER HERE, it is a resource, so Carbon's texture\n // overload (`Tr2Effect.h:94`) routes to the runtime texture slot instead.\n // Null clears it, which is what Carbon's `Tr2TextureAL{}` does.\n if (value === null || IsTextureLike(value))\n {\n return this.#SetTextureParameter(parameterName, value, uavMipLevel);\n }\n\n const Parameter = ParameterClassFor(value);\n\n if (!Parameter)\n {\n throw new TypeError(\n `Tr2Effect.SetParameter: no Carbon overload takes ${describe(value)} for \"${parameterName}\"`\n );\n }\n\n const existing = CjsParameter.findByName(this.parameters, parameterName);\n let parameter = existing instanceof Parameter ? existing : null;\n\n if (!parameter)\n {\n // A same-name parameter of the WRONG TYPE is left in place and a new one\n // appended. That looks like a bug and is Carbon's behaviour - pinned by\n // `smart mesh uses the real effect Vector4 facade and preserves Carbon\n // wrong-type append`. Removing the old one is a silent behaviour change\n // for anything still holding a reference to it.\n parameter = new Parameter();\n parameter.name = parameterName;\n this.parameters.push(parameter);\n }\n\n parameter.SetValue(value);\n this.RebuildCachedDataInternal();\n }\n\n /** Carbon's texture overload: a named slot fed by a live texture. */\n #SetTextureParameter(parameterName, texture, uavMipLevel)\n {\n const existing = this.GetResourceByName(parameterName);\n\n if (existing instanceof Tr2RuntimeTextureParameter)\n {\n existing.SetTextureProvider(texture);\n existing.SetUavMipLevel(uavMipLevel);\n this.RebuildCachedDataInternal();\n return;\n }\n\n // A null texture still CREATES the slot, which is Carbon's else branch\n // (cpp:2093-2099) and is load-bearing: Tr2ShadowMap's constructor declares\n // its two texture slots by setting them to an empty texture (cpp:41-42).\n // Skipping that would leave the effect without slots it expects to have.\n const parameter = new Tr2RuntimeTextureParameter();\n\n parameter.Create(parameterName, texture, uavMipLevel);\n this.AddResource(parameter);\n this.RebuildCachedDataInternal();\n }\n\n /** Merges texture resources by unique name from res path strings. */\n SetTextures(values = {})\n {\n let updated = false;\n for (const name of Object.keys(values ?? {}))\n {\n const value = values[name];\n if (value === undefined) continue;\n if (value === null)\n {\n updated = this.#removeNamed(this.resources, name) || updated;\n continue;\n }\n updated = this.#setNamedTexture(name, value) || updated;\n }\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /**\n * Merges authored constant parameters by unique name. Numbers splat to a\n * vec4, matching Carbon's AddParameterFloat authoring behavior.\n */\n SetConstParameters(values = {})\n {\n let updated = false;\n for (const name of Object.keys(values ?? {}))\n {\n const value = values[name];\n if (value === undefined) continue;\n if (value === null)\n {\n updated = this.#removeNamed(this.constParameters, name) || updated;\n continue;\n }\n const vector = Tr2Effect.#toConstVector4(value);\n if (!vector)\n {\n throw new TypeError(`Tr2Effect.SetConstParameters cannot read a vec4 value for \"${name}\".`);\n }\n const existing = CjsParameter.findByName(this.constParameters, name);\n if (existing)\n {\n vec4.copy(existing.value, vector);\n }\n else\n {\n const parameter = new Tr2ConstantEffectParameter();\n parameter.name = String(name);\n parameter.value = vector;\n this.constParameters.push(parameter);\n }\n updated = true;\n }\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /** Merges sampler overrides by unique name; `null` removes an override. */\n SetSamplerOverrides(values = {})\n {\n let updated = false;\n for (const name of Object.keys(values ?? {}))\n {\n const value = values[name];\n if (value === undefined) continue;\n if (value === null)\n {\n updated = this.#removeNamed(this.samplerOverrides, name) || updated;\n continue;\n }\n const existing = CjsParameter.findByName(this.samplerOverrides, name);\n if (value instanceof Tr2SamplerOverride)\n {\n if (!value.name)\n {\n value.name = String(name);\n }\n if (existing)\n {\n this.samplerOverrides[this.samplerOverrides.indexOf(existing)] = value;\n }\n else\n {\n this.samplerOverrides.push(value);\n }\n updated = true;\n continue;\n }\n if (typeof value !== \"object\" || Array.isArray(value) || ArrayBuffer.isView(value))\n {\n throw new TypeError(`Tr2Effect.SetSamplerOverrides requires override values for \"${name}\".`);\n }\n let override = existing;\n if (!override)\n {\n override = new Tr2SamplerOverride();\n override.name = String(name);\n this.samplerOverrides.push(override);\n updated = true;\n }\n if (override.SetValues(value, { returnBoolean: true }))\n {\n updated = true;\n }\n }\n if (updated)\n {\n this.RebuildCachedDataInternal();\n }\n return updated;\n }\n\n /**\n * Creates a parameter model from a raw value using the class-declared\n * isValue claims, or from an explicit `{ type, ... }` descriptor.\n * Returns null when no registered parameter class claims the value.\n */\n static CreateParameterFromValue(name, value)\n {\n if (value && typeof value === \"object\" && !Array.isArray(value) && !ArrayBuffer.isView(value))\n {\n const ExplicitClass = Tr2Effect.#resolveExplicitParameterClass(value);\n if (!ExplicitClass)\n {\n return null;\n }\n const { type, Type, _type, ...fields } = value;\n const parameter = new ExplicitClass();\n parameter.SetValues(fields);\n if (name && !CjsParameter.getNamedValue(parameter))\n {\n parameter.SetValues({ name: String(name) });\n }\n return parameter;\n }\n for (const ParameterClass of Tr2Effect.INFERRED_PARAMETER_TYPES)\n {\n if (!ParameterClass.isValue?.(value))\n {\n continue;\n }\n const parameter = new ParameterClass();\n parameter.SetValues({ name: String(name ?? \"\") });\n if (ParameterClass === TriTextureParameter)\n {\n parameter.SetValues({ resourcePath: String(value) });\n }\n else\n {\n parameter.SetValue(value);\n }\n return parameter;\n }\n return null;\n }\n\n /**\n * Removes the named entry from one of the effect's collections, detaching it\n * from the material first when the list is `resources`; returns whether\n * anything was removed.\n */\n #removeNamed(list, name)\n {\n const existing = CjsParameter.findByName(list, name);\n if (!existing)\n {\n return false;\n }\n if (list === this.resources)\n {\n existing?.OnRemovedFromMaterial?.(this);\n }\n list.splice(list.indexOf(existing), 1);\n return true;\n }\n\n /**\n * Assigns a dynamic parameter by name, reusing the existing model when its\n * class claims the value and otherwise creating one and replacing the old\n * entry; string values route to the texture resource list instead. Throws\n * TypeError when no registered parameter class can represent the value.\n */\n #setNamedParameter(name, value)\n {\n if (typeof value === \"string\")\n {\n return this.#setNamedTexture(name, value);\n }\n const existing = CjsParameter.findByName(this.parameters, name);\n if (existing && existing.constructor.isValue?.(value))\n {\n existing.SetValue(value);\n return true;\n }\n const created = Tr2Effect.CreateParameterFromValue(name, value);\n if (!created)\n {\n throw new TypeError(`Tr2Effect.SetParameters cannot infer a parameter type for \"${name}\".`);\n }\n if (created instanceof TriTextureParameter)\n {\n const existingResource = CjsParameter.findByName(this.resources, name);\n if (existingResource)\n {\n existingResource?.OnRemovedFromMaterial?.(this);\n this.resources[this.resources.indexOf(existingResource)] = created;\n }\n else\n {\n this.resources.push(created);\n }\n created?.OnAddedToMaterial?.(this);\n return true;\n }\n if (existing)\n {\n this.parameters[this.parameters.indexOf(existing)] = created;\n }\n else\n {\n this.parameters.push(created);\n }\n return true;\n }\n\n /**\n * Points the named texture resource at a res path, creating and attaching a\n * TriTextureParameter when absent; returns false when the path is already that\n * value, and throws TypeError for non-string values.\n */\n #setNamedTexture(name, value)\n {\n if (typeof value !== \"string\")\n {\n throw new TypeError(`Tr2Effect.SetTextures requires res path strings for \"${name}\".`);\n }\n const existing = CjsParameter.findByName(this.resources, name);\n if (existing)\n {\n if (existing.resourcePath === value)\n {\n return false;\n }\n if (existing.SetResourcePath)\n {\n existing.SetResourcePath(value);\n }\n else\n {\n existing.resourcePath = value;\n }\n return true;\n }\n const parameter = new TriTextureParameter();\n parameter.SetParameterName?.(name);\n parameter.SetResourcePath?.(value);\n this.resources.push(parameter);\n parameter?.OnAddedToMaterial?.(this);\n return true;\n }\n\n /**\n * Resolves a descriptor's `Type`/`type`/`_type` field to a parameter\n * constructor, directly or through the schema registry; returns null when no\n * type field is present and throws TypeError for an unregistered class name.\n */\n static #resolveExplicitParameterClass(value)\n {\n const explicit = value?.Type ?? value?.type ?? value?._type;\n if (!explicit)\n {\n return null;\n }\n if (typeof explicit === \"function\")\n {\n return explicit;\n }\n const Registered = CjsSchema.GetConstructor(String(explicit));\n if (!Registered)\n {\n throw new TypeError(`Unknown effect parameter type \"${explicit}\".`);\n }\n return Registered;\n }\n\n /**\n * Coerces a number (splatted to all four components), a four-number array, or\n * a `{ value }` wrapper into a new vec4; returns null when no vec4 can be\n * read.\n */\n static #toConstVector4(value)\n {\n if (typeof value === \"number\")\n {\n return vec4.fromValues(value, value, value, value);\n }\n if (CjsParameter.isNumberArrayValue(value, 4))\n {\n return vec4.clone(value);\n }\n if (value && typeof value === \"object\" && !Array.isArray(value) && \"value\" in value)\n {\n return Tr2Effect.#toConstVector4(value.value);\n }\n return null;\n }\n\n static #VALUE_COLLECTIONS = Object.freeze({\n parameters: { setter: \"SetParameters\", field: \"parameters\" },\n textures: { setter: \"SetTextures\", field: \"resources\" },\n constParameters: { setter: \"SetConstParameters\", field: \"constParameters\" },\n samplerOverrides: { setter: \"SetSamplerOverrides\", field: \"samplerOverrides\" }\n });\n\n static INFERRED_PARAMETER_TYPES = Object.freeze([\n Tr2FloatParameter,\n Tr2Vector2Parameter,\n Tr2Vector3Parameter,\n Tr2Vector4Parameter,\n Tr2Matrix4Parameter,\n TriTextureParameter\n ]);\n\n /**\n * Empties both the constant and dynamic parameter lists inside one\n * StartUpdate/EndUpdate batch, so cached data rebuilds once at the end.\n */\n ClearAllParameters()\n {\n this.StartUpdate();\n this.constParameters = [];\n this.parameters = [];\n this.EndUpdate();\n }\n\n /**\n * Detaches every resource from this material and empties the resource list,\n * then rebuilds cached data.\n */\n ClearAllResources()\n {\n for (const resource of this.resources)\n {\n resource?.OnRemovedFromMaterial?.(this);\n }\n this.resources = [];\n this.RebuildCachedDataInternal();\n }\n\n /**\n * Sets a shader option, adding it when absent; cached data is rebuilt only\n * when the value actually changes, since options select the shader\n * permutation.\n */\n SetOption(name, value)\n {\n const existing = CjsParameter.findByName(this.options, name);\n if (existing)\n {\n if (existing.value !== value)\n {\n existing.value = String(value);\n this.RebuildCachedDataInternal();\n }\n return;\n }\n const option = new Tr2ShaderOption();\n option.name = String(name);\n option.value = String(value);\n this.options.push(option);\n this.RebuildCachedDataInternal();\n }\n\n /**\n * Drops the named option so the shader resolves with its default permutation\n * again.\n */\n ResetOption(name)\n {\n this.options = this.options.filter(option => option?.name !== name);\n this.RebuildCachedDataInternal();\n }\n\n /** The option's value, or the empty string when the option is not set. */\n GetOption(name)\n {\n return CjsParameter.findByName(this.options, name)?.value ?? \"\";\n }\n\n /**\n * Looks the name up in the dynamic parameters first, then the resources;\n * authored constant parameters are not searched.\n */\n GetParameterByName(name)\n {\n return this.FindParameterByName(name) ?? this.GetResourceByName(name);\n }\n\n /**\n * The dynamic parameter with this shader name, or null; resources and constant\n * parameters are not consulted.\n */\n FindParameterByName(name)\n {\n return this.parameters.find(parameter => CjsParameter.getNamedValue(parameter) === name) ?? null;\n }\n\n /** The resource parameter with this shader name, or null. */\n GetResourceByName(name)\n {\n return this.resources.find(parameter => CjsParameter.getNamedValue(parameter) === name) ?? null;\n }\n\n /** Whether a sampler override is authored for this resource name. */\n HasSamplerOverride(name)\n {\n return this.samplerOverrides.some(value => value?.name === name);\n }\n\n /**\n * Whether an authored constant parameter uses this name; dynamic parameters\n * and resources do not count.\n */\n HasParameter(name)\n {\n return this.constParameters.some(value => value?.name === name);\n }\n\n /**\n * Whether any collection - parameters, resources or constant parameters -\n * already claims the name; the duplicate guard PopulateParameters uses.\n */\n #hasParameterLike(name)\n {\n return !!(this.GetParameterByName(name) || this.HasParameter(name));\n }\n\n /**\n * Whether the resolved shader both marks the name SasUiVisible and exposes it\n * as a constant or resource; the predicate PruneParameters filters on.\n */\n #isShaderParameterVisible(name)\n {\n if (!name)\n {\n return false;\n }\n const shader = requireShader(this.shader);\n return Tr2Effect.getBool(shader, name, \"SasUiVisible\", false) && !!(shader.GetConstant(name) || shader.GetResource(name));\n }\n\n /**\n * Resolves an authored effect path to the compiled path a backend loads.\n *\n * Carbon's `ConvertEffectPath` (Tr2Effect.cpp:309-370) does three things:\n * lowercases, substitutes `/effect/` for `/effect.<platform>/`, and replaces\n * the extension with the shader-model suffix. This did only the first half of\n * the first one - a backslash swap - so `actualEffectFilePath` still ended in\n * `.fx` and no extension route could ever match it.\n *\n * Carbon returns false when it cannot substitute, and `Initialize` then\n * blanks the path rather than fetching. The same happens here: with no\n * platform name installed there is no committed backend, so an authored\n * `/effect/*.fx` has no compiled tree to resolve into and yields \"\". The\n * resolver itself throws in that case by design, and that loud failure is\n * right for a caller that named a path deliberately; it is wrong for\n * hydration, which may build an effect long before a backend exists.\n *\n * @param {string} path Authored effect path.\n * @param {object} [options] Overrides for the installed configuration.\n * @returns {string} Compiled path, or \"\" when none can be resolved.\n */\n static convertEffectPath(path, options = {})\n {\n const authored = String(path ?? \"\");\n\n if (!authored) return \"\";\n\n const installed = GetEffectPathDefaults();\n const platformName = options.platformName ?? installed.platformName ?? null;\n const shaderModel = options.shaderModel ?? installed.shaderModel ?? \"high\";\n const normalized = NormalizeResourcePath(authored);\n\n if (!platformName && normalized.endsWith(\".fx\") && normalized.includes(\"/effect/\"))\n {\n return \"\";\n }\n\n return ResolveEffectPath(normalized, { platformName, shaderModel });\n }\n\n /**\n * Flattens a canonical shader's technique/pass tree into stage inputs.\n */\n static iterateShaderStages(shader)\n {\n const stages = [];\n const desc = requireShader(shader).GetEffectDescription();\n for (const technique of desc.techniques)\n {\n for (const pass of technique.passes)\n {\n stages.push(...pass.stageInputs);\n }\n }\n return stages;\n }\n\n /**\n * Returns a canonical stage resource map's descriptions in iteration order.\n */\n static iterateResources(values)\n {\n if (!(values instanceof Map))\n {\n throw new TypeError(\"Tr2Effect stage resources must be a Map.\");\n }\n return [...values.values()];\n }\n\n /**\n * Reads a boolean shader annotation off a parameter, tolerating Map/array/object annotation containers and the several value field names reflection data uses.\n * @returns {boolean} defaultValue when the annotation is absent\n */\n static getBool(shader, parameterName, annotationName, defaultValue = false)\n {\n const annotations = requireShader(shader).GetParameterAnnotations(parameterName);\n const values = annotations instanceof Map ? [...annotations.values()] : Array.isArray(annotations) ? annotations : Object.values(annotations ?? {});\n const annotation = values.find(value => value?.name === annotationName);\n if (!annotation)\n {\n return defaultValue;\n }\n return Boolean(annotation.boolValue ?? annotation.value ?? annotation.booleanValue ?? defaultValue);\n }\n\n /**\n * Builds the parameter model matching a reflected shader constant - float\n * array, matrix, vector or scalar - seeded with the shader-authored defaults;\n * a 16-component constant whose name contains `Reflection` becomes an\n * EnvMapTransform variable parameter instead. Returns null for non-FLOAT\n * constants, which Carbon does not surface as parameters.\n */\n static convertEffectConstant(constant, constantValues)\n {\n // Carbon only populates parameters for FLOAT constants; INT/UINT/BOOL\n // constants are skipped. String types accepted for pre-enum reflection data.\n const constantType = constant?.type;\n if (constantType !== undefined && constantType !== null &&\n constantType !== Tr2EffectConstant.Type.FLOAT && constantType !== \"FLOAT\")\n {\n return null;\n }\n const name = constant.name ?? \"\";\n const dimension = Number(constant.dimension ?? 1);\n const elements = Number(constant.elements ?? 1);\n if (elements > 1)\n {\n const parameter = new TriFloatArrayParameter();\n parameter.name = name;\n parameter.value = Array.from({ length: elements }, (_, index) =>\n {\n const row = new TriVector4();\n row.data = Tr2Effect.readVector4(constant, constantValues, index);\n return row;\n });\n return parameter;\n }\n if (dimension === 16 && name.includes(\"Reflection\"))\n {\n const parameter = new TriVariableParameter();\n parameter.name = name;\n parameter.variableName = \"EnvMapTransform\";\n parameter.Initialize();\n return parameter;\n }\n if (dimension === 16)\n {\n const parameter = new Tr2Matrix4Parameter();\n parameter.name = name;\n Tr2Effect.readComponents(parameter.value, constant, constantValues, 16);\n return parameter;\n }\n if (dimension === 2)\n {\n const parameter = new Tr2Vector2Parameter();\n parameter.name = name;\n Tr2Effect.readComponents(parameter.value, constant, constantValues, 2);\n return parameter;\n }\n if (dimension === 3)\n {\n const parameter = new Tr2Vector3Parameter();\n parameter.name = name;\n Tr2Effect.readComponents(parameter.value, constant, constantValues, 3);\n return parameter;\n }\n if (dimension > 1)\n {\n const parameter = new Tr2Vector4Parameter();\n parameter.name = name;\n parameter.value = Tr2Effect.readVector4(constant, constantValues, 0);\n return parameter;\n }\n const parameter = new Tr2FloatParameter();\n parameter.name = name;\n parameter.value = Tr2Effect.readScalar(constant, constantValues);\n return parameter;\n }\n\n /**\n * Builds a TriTextureParameter for texture resources and a\n * Tr2GeometryBufferParameter for everything else.\n */\n static convertEffectResource(resource)\n {\n if (Tr2Effect.isTextureResource(resource))\n {\n const parameter = new TriTextureParameter();\n parameter.SetParameterName?.(resource.name ?? \"\");\n return parameter;\n }\n const parameter = new Tr2GeometryBufferParameter();\n parameter.name = resource.name ?? \"\";\n return parameter;\n }\n\n /**\n * Classifies a reflected resource as a texture: string types containing\n * TEXTURE but not BUFFER, or numeric types 1..5 (TEXTURE_1D through\n * TEXTURE_TYPELESS); buffer types start at 6.\n */\n static isTextureResource(resource)\n {\n const type = resource?.type;\n if (typeof type === \"string\")\n {\n return type.includes(\"TEXTURE\") && !type.includes(\"BUFFER\");\n }\n // Tr2EffectResource texture types are TEXTURE_1D(1)..TEXTURE_TYPELESS(5);\n // Carbon routes TYPELESS to TriTextureParameter too. Buffers start at 6.\n return Number(type) >= 1 && Number(type) <= 5;\n }\n\n /**\n * Reads a constant's shader-authored default scalar, preferring an inline\n * value and otherwise a little-endian float32 at the constant's offset into\n * the stage's constantValues; 0 when neither is available.\n */\n static readScalar(constant, values)\n {\n if (typeof constant.value === \"number\")\n {\n return constant.value;\n }\n if (ArrayBuffer.isView(values))\n {\n const offset = Number(constant.offset ?? 0);\n if (offset >= 0 && offset + 4 <= values.byteLength)\n {\n return new DataView(values.buffer, values.byteOffset, values.byteLength).getFloat32(offset, true);\n }\n }\n return 0;\n }\n\n /**\n * Reads the shader-authored default components for a constant into the\n * parameter's value slot (Carbon reads them straight from constantValues\n * at the constant's offset). Missing data leaves the class default.\n */\n static readComponents(out, constant, values, count)\n {\n if (constant.value && typeof constant.value.length === \"number\")\n {\n for (let i = 0; i < count; i++)\n {\n out[i] = Number(constant.value[i]) || 0;\n }\n return out;\n }\n if (ArrayBuffer.isView(values))\n {\n const view = new DataView(values.buffer, values.byteOffset, values.byteLength);\n const offset = Number(constant.offset ?? 0);\n if (offset >= 0 && offset + count * 4 <= values.byteLength)\n {\n for (let i = 0; i < count; i++)\n {\n out[i] = view.getFloat32(offset + i * 4, true);\n }\n }\n }\n return out;\n }\n\n /**\n * Reads the shader-authored default vec4 for one element of a constant out of the stage's constantValues (16 bytes per element), or from the constant's inline value when it has one.\n * @param element zero-based array element index; ignored when the constant carries an inline value\n * @returns {vec4} a newly allocated vector; components outside the buffer stay 0\n */\n static readVector4(constant, values, element)\n {\n if (constant.value && typeof constant.value.length === \"number\")\n {\n return vec4.fromValues(constant.value[0] ?? 0, constant.value[1] ?? 0, constant.value[2] ?? 0, constant.value[3] ?? 0);\n }\n const out = vec4.create();\n if (ArrayBuffer.isView(values))\n {\n const view = new DataView(values.buffer, values.byteOffset, values.byteLength);\n const offset = Number(constant.offset ?? 0) + element * 16;\n for (let i = 0; i < 4; i++)\n {\n const componentOffset = offset + i * 4;\n if (componentOffset >= 0 && componentOffset + 4 <= values.byteLength)\n {\n out[i] = view.getFloat32(componentOffset, true);\n }\n }\n }\n return out;\n }\n\n}\n"],"names":["requireShader","shader","Tr2Shader","TypeError","IsTextureLike","value","length","IsValid","GetTexture","ParameterClassFor","Tr2FloatParameter","Tr2Vector2Parameter","Tr2Vector3Parameter","Tr2Vector4Parameter","Tr2Matrix4Parameter","describe","undefined","_Tr2Effect","_identity","Tr2Effect","Tr2Material","e","_call_BuildParametersForPasses","_init_effectFilePath","_init_extra_effectFilePath","_init_options","_init_extra_options","_init_name","_init_extra_name","_init_constParameters","_init_extra_constParameters","_init_parameters","_init_extra_parameters","_init_resources","_init_extra_resources","_init_effectResource","_init_extra_effectResource","_init_actualEffectFilePath","_init_extra_actualEffectFilePath","_init_samplerOverrides","_init_extra_samplerOverrides","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","rebuild","always","persist","string","list","read","objectRef","carbon","method","impl","adapted","implemented","reason","technique","parametersForPasses","pass","passes","stageInput","constantBuffer","Destroy","resourceSet","techniques","GetEffect","inputs","Tr2EffectTechniqueInputs","passParameters","Tr2EffectPassParameters","stages","signatures","ordered","stageOrder","stageInputs","map","_","stage","exists","push","signature","resourceSetDesc","Tr2ResourceSetDescriptionAL","registers","Tr2RegisterMapAL","resourceSetHash","resourceSetDirty","compatibleWithGdr","stageType","ShaderStageType","VERTEX_SHADER","PIXEL_SHADER","COMPUTE_SHADER","resources","textures","uavs","effectFilePath","options","name","constParameters","parameters","effectResource","actualEffectFilePath","samplerOverrides","parameterHash","display","variableStore","insideStartUpdate","RebuildCachedData","RebuildCachedDataInternal","RebuildCachedDataAsync","wasInsideStartUpdate","SetVariableStore","store","GetVariableStore","Tr2VariableStore","GlobalStore","GetConstParameters","GetHashValue","hash","path","CjsParameter","hashFnv1String","option","parameter","hashFnv1Floats","resource","GetParameterAnnotations","parameterName","getEffectAnnotations","PopulateParameters","iterateShaderStages","constant","constants","getBool","converted","convertEffectConstant","constantValues","iterateResources","convertEffectResource","EndUpdate","PruneParameters","filter","getNamedValue","IsParameterUsedByTechnique","GetConstant","StartUpdate","Initialize","OnAddedToMaterial","convertEffectPath","#MapPassParameters","constantSize","GetConstantBufferSize","bound","Map","hasVariableParams","index","some","FindParameterByName","FindVariable","isAutoregister","set","defaults","Uint8Array","mirror","subarray","Math","min","GetSharedConstantBuffer","AllocateConstants","constantMirror","Tr2EffectParam","sourceName","sourceValue","registerIndex","offset","registerCount","size","RebuildEffectHandles","SupportsDirtyNotification","shaderParametersWithNotification","shaderParameters","#MapPassResources","into","entries","sort","left","right","Number","register","GetResourceByName","TriVariableParameter","stored","isSRGB","ResourceFlags","RESOURCE_FLAG_SRGB","#ResolveResourceValue","usedResources","includes","usedTexturesDirty","#AcquireEffectResource","resourceManager","CjsResMan","GetGlobal","GetResource","requirement","ResourceRequirement","SHADER","OnCompleted","Ready","OnModified","OnListModified","event","_key","_key2","SetDestination","String","OnRemovedFromMaterial","Tr2EffectRes","GetShader","Tr2EffectStateManager","registerShaderHandles","lodTextureParameters","UsedWithScreenSize","ReleaseCachedData","SetEffectPathName","SetValues","source","returnBoolean","GetEffectPathName","GetEffectRes","GetName","AddResource","AddResourceTexture2D","resourcePath","TriTextureParameter","SetParameterName","SetResourcePath","SetResourceTexture2D","updated","AddSamplerOverride","addressU","addressV","HasSamplerOverride","override","Tr2SamplerOverride","addressW","mipFilter","AddParameterVector4","vec4","create","HasParameter","Tr2ConstantEffectParameter","clone","AddParameterFloat","fromValues","AddParameterColor","values","rest","changedCollections","Set","key","Object","keys","route","Array","isArray","setter","add","field","result","changed","SetParameters","removedParameter","removedResource","SetParameter","uavMipLevel","Parameter","existing","findByName","SetValue","#SetTextureParameter","texture","Tr2RuntimeTextureParameter","SetTextureProvider","SetUavMipLevel","Create","SetTextures","SetConstParameters","vector","copy","SetSamplerOverrides","indexOf","ArrayBuffer","isView","CreateParameterFromValue","ExplicitClass","Type","_type","fields","ParameterClass","INFERRED_PARAMETER_TYPES","isValue","#removeNamed","splice","#setNamedParameter","constructor","created","existingResource","#setNamedTexture","ClearAllParameters","ClearAllResources","SetOption","Tr2ShaderOption","ResetOption","GetOption","GetParameterByName","find","#hasParameterLike","#isShaderParameterVisible","authored","installed","GetEffectPathDefaults","platformName","shaderModel","normalized","NormalizeResourcePath","endsWith","ResolveEffectPath","desc","GetEffectDescription","annotationName","defaultValue","annotations","annotation","Boolean","boolValue","booleanValue","constantType","Tr2EffectConstant","FLOAT","dimension","elements","TriFloatArrayParameter","from","row","TriVector4","data","readVector4","variableName","readComponents","readScalar","isTextureResource","Tr2GeometryBufferParameter","byteLength","DataView","buffer","byteOffset","getFloat32","out","count","i","view","element","componentOffset","#GlobalVariable","GetVariable","#BakeConstantParameters","floats","Float32Array","slice","#resolveExplicitParameterClass","explicit","Registered","CjsSchema","GetConstructor","#toConstVector4","isNumberArrayValue","freeze"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { type } from '#schema';
|
|
|
3
3
|
import { CjsModel } from '#model';
|
|
4
4
|
import { RenderingMode } from '#consts/graphics';
|
|
5
5
|
import { RenderState, CullMode, FillMode, CompareFunc, BlendMode, BlendOperation } from '#consts/render-context';
|
|
6
|
-
import { Tr2VertexDefinition } from '../core/vertex/Tr2VertexDefinition.js';
|
|
6
|
+
import { Tr2VertexDefinition } from '../core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js';
|
|
7
7
|
import { Tr2RenderStateSetup } from '#resource/shader';
|
|
8
8
|
import { Failed } from '../../trinityal/ALResult.js';
|
|
9
9
|
|
|
@@ -725,8 +725,12 @@ new class extends _identity {
|
|
|
725
725
|
* @param {boolean} [updateViewport] Whether slot zero moves the viewport.
|
|
726
726
|
* @returns {boolean} Whether the bind was accepted.
|
|
727
727
|
*/
|
|
728
|
-
SetRenderTarget(index, renderTarget, updateViewport = true) {
|
|
729
|
-
|
|
728
|
+
SetRenderTarget(index, renderTarget, updateViewport = true, slice = 0) {
|
|
729
|
+
// SLICE IS CARBON'S FOURTH ARGUMENT (`Tr2EffectStateManager.h:147`) and it
|
|
730
|
+
// was being dropped here. The WebGPU backend already accepts one, so a
|
|
731
|
+
// caller rendering into a cascade or a cube face was silently writing
|
|
732
|
+
// slice 0 - a correct-looking image in the wrong place.
|
|
733
|
+
const bound = this.#renderContext.SetRenderTarget(index, renderTarget, slice);
|
|
730
734
|
if (index === 0 && updateViewport) this.#RefreshRenderTargetViewport();
|
|
731
735
|
return bound;
|
|
732
736
|
}
|
|
@@ -741,9 +745,17 @@ new class extends _identity {
|
|
|
741
745
|
* @param {number} [slot] Target slot.
|
|
742
746
|
* @returns {boolean} True.
|
|
743
747
|
*/
|
|
744
|
-
PushRenderTarget(renderTarget =
|
|
748
|
+
PushRenderTarget(renderTarget = undefined, slot = 0) {
|
|
745
749
|
this.#renderContext.PushRenderTarget(slot);
|
|
746
|
-
|
|
750
|
+
|
|
751
|
+
// UNDEFINED IS "SAVE ONLY"; NULL IS "SAVE AND UNBIND". Carbon draws that
|
|
752
|
+
// distinction with its two overloads plus a default-constructed
|
|
753
|
+
// Tr2TextureAL, which is a real argument that binds an EMPTY texture and so
|
|
754
|
+
// clears the slot (`Tr2ShadowMap.cpp:238`, commented "empty texture").
|
|
755
|
+
// Testing `!= null` instead made the unbind unreachable: a shadow pass asking
|
|
756
|
+
// for it silently kept the scene's colour target bound for the whole pass.
|
|
757
|
+
// PushDepthStencilBuffer below already uses this sentinel.
|
|
758
|
+
if (renderTarget !== undefined) this.SetRenderTarget(slot, renderTarget);
|
|
747
759
|
return true;
|
|
748
760
|
}
|
|
749
761
|
|