@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":"Tr2MeshBase.js","sources":["../../../../../src/trinity/core/mesh/Tr2MeshBase.js"],"sourcesContent":["// Source: trinity/trinity/Tr2MeshBase.h\r\n// Source: trinity/trinity/Tr2MeshBase.cpp\r\n// Source: trinity/trinity/Tr2MeshBase_Blue.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { carbon, impl, io, type } from \"#schema\";\r\nimport { TriBatchType } from \"#consts/graphics\";\r\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock, TriRenderBatchAreaBlocksWithSharedMaterial } from \"../batch/Tr2RenderBatch.js\";\r\nimport { Tr2EffectStateManager } from \"../../shader/Tr2EffectStateManager.js\";\r\nimport { CarbonVertexElements } from \"../vertex/vertexUsage.js\";\r\n\r\n\r\n/**\r\n * Base mesh: owns one mesh-area list per batch type and turns the displayed\r\n * areas into GPU-free render batches and shadow area blocks.\r\n */\r\n@type.define({ className: \"Tr2MeshBase\", family: \"trinityCore\" })\r\nexport class Tr2MeshBase extends CjsModel\r\n{\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.readwrite\r\n @type.boolean\r\n display = true;\r\n\r\n @io.rebuild(\"batches\")\r\n @io.notify\r\n @io.persist\r\n @type.int32\r\n meshIndex = 0;\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n opaqueAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n decalAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n depthAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n transparentAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n additiveAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n pickableAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n mirrorAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n decalNormalAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n depthNormalAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n opaquePrepassAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n decalPrepassAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n geometryEraserAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n distortionAreas = [];\r\n\r\n // Carbon routes TRIBATCHTYPE_FLARE but does not expose this list to Blue, so\r\n // this list is typed without being read or persisted: the type declaration is\r\n // what makes its areas reachable to graph traversal, independent of io.\r\n @io.rebuild(\"batches\")\r\n @type.list(\"Tr2MeshArea\")\r\n flareAreas = [];\r\n\r\n @io.read\r\n @io.persist\r\n @type.float32\r\n maxVertexScale = 1;\r\n\r\n @io.read\r\n @io.persist\r\n @type.float32\r\n maxVertexDisplacement = 0;\r\n\r\n @io.read\r\n @io.persist\r\n @type.boolean\r\n rotatesVertices = false;\r\n\r\n /** Whether this mesh participates in rendering. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDisplay()\r\n {\r\n return this.display;\r\n }\r\n\r\n /** Index of this mesh inside its geometry resource. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMeshIndex()\r\n {\r\n return this.meshIndex;\r\n }\r\n\r\n /**\r\n * Returns the geometry bounds after applying Carbon's material-driven local\r\n * scale, displacement, and vertex-rotation expansion.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBounds()\r\n {\r\n const geometry = this.GetGeometryResource();\r\n if (!geometry) return null;\r\n const source = geometry.GetBoundingBox(this.meshIndex);\r\n if (!source) return null;\r\n\r\n const min = vec3.clone(source.min ?? source.minBounds);\r\n const max = vec3.clone(source.max ?? source.maxBounds);\r\n const scale = this.maxVertexScale;\r\n\r\n for (let index = 0; index < 3; index++)\r\n {\r\n const scaledMin = min[index] * scale;\r\n const scaledMax = max[index] * scale;\r\n min[index] = Math.min(scaledMin, scaledMax) - this.maxVertexDisplacement;\r\n max[index] = Math.max(scaledMin, scaledMax) + this.maxVertexDisplacement;\r\n }\r\n\r\n if (this.rotatesVertices)\r\n {\r\n const radius = Math.hypot(\r\n Math.max(Math.abs(min[0]), Math.abs(max[0])),\r\n Math.max(Math.abs(min[1]), Math.abs(max[1])),\r\n Math.max(Math.abs(min[2]), Math.abs(max[2]))\r\n );\r\n vec3.set(min, -radius, -radius, -radius);\r\n vec3.set(max, radius, radius, radius);\r\n }\r\n\r\n return { min, max };\r\n }\r\n\r\n /** Writes the adjusted mesh bounds into caller-owned minimum and maximum vectors. */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingBox(min, max)\r\n {\r\n const bounds = this.GetBounds();\r\n if (!bounds) return false;\r\n vec3.copy(min, bounds.min);\r\n vec3.copy(max, bounds.max);\r\n return true;\r\n }\r\n\r\n /**\r\n * The geometry this mesh draws from.\r\n *\r\n * PURE VIRTUAL IN CARBON (`Tr2MeshBase.h:69`), and missing from this base\r\n * until 2026-09-05 - only `Tr2Mesh` declared it. Every caller therefore\r\n * wrote `mesh?.GetGeometryResource()`, hedging against a base that had the\r\n * method in Carbon and not here. A mesh with no geometry to name is not a\r\n * mesh, so this throws rather than returning null: returning null would let\r\n * a subclass that forgot it draw nothing, silently.\r\n *\r\n * @returns {object} The geometry resource.\r\n */\r\n @carbon.method\r\n @impl.abstract\r\n GetGeometryResource()\r\n {\r\n throw new Error(\"Tr2MeshBase.GetGeometryResource must be implemented by a mesh.\");\r\n }\r\n\r\n /**\r\n * The live area list for a TriBatchType, or null for a non-integer or unmapped\r\n * type.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetAreas(areaType)\r\n {\r\n if (!Number.isInteger(areaType)) return null;\r\n const property = Tr2MeshBase.#areaProperties[areaType];\r\n return property ? this[property] : null;\r\n }\r\n\r\n /**\r\n * Appends an area to the list for a batch type; returns false when that type\r\n * has no list.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n AddArea(areaType, area)\r\n {\r\n const areas = this.GetAreas(areaType);\r\n if (!areas) return false;\r\n areas.push(area);\r\n return true;\r\n }\r\n\r\n /**\r\n * Every area of every batch type, in batch-type order, as one newly allocated\r\n * array.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetAllAreas()\r\n {\r\n return Tr2MeshBase.#areaProperties.flatMap(property => this[property]);\r\n }\r\n\r\n /**\r\n * Carbon Tr2MeshBase::UseWithScreenSize (Tr2MeshBase.cpp:589-610): reports the\r\n * on-screen size this mesh is being drawn at to every area material, so the\r\n * texture streamer can request a matching mip level. The LOD the size resolves\r\n * to supplies the uv densities the material needs to turn a pixel size into a\r\n * texture resolution.\r\n *\r\n * Callers pass a screen size already scaled by the LOD factor\r\n * (EveSpaceObject2, EveTransform, EveChildMesh, BehaviorGroup).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UseWithScreenSize(screenSize, worldRadius)\r\n {\r\n const geometry = this.GetGeometryResource() ?? null;\r\n if (!geometry) return false;\r\n\r\n const lod = geometry.GetMeshLod?.(this.meshIndex, screenSize) ?? null;\r\n if (!lod) return false;\r\n\r\n // Carbon reads m_uvDensities off the resolved LOD; a resource that exposes\r\n // none yields an empty list, which the material treats as \"no LOD data\" and\r\n // requests the full resolution.\r\n const uvDensities = lod.uvDensities ?? lod.m_uvDensities ?? [];\r\n let reported = false;\r\n\r\n for (const area of this.GetAllAreas())\r\n {\r\n const material = area?.GetMaterialInterface?.();\r\n if (!material?.UsedWithScreenSize) continue;\r\n\r\n material.UsedWithScreenSize(screenSize, worldRadius, uvDensities);\r\n reported = true;\r\n }\r\n\r\n return reported;\r\n }\r\n\r\n /**\r\n * Sets a shader option on every area effect that supports it; returns whether\r\n * at least one area was updated.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetShaderOption(name, value)\r\n {\r\n let updated = false;\r\n for (const area of this.GetAllAreas())\r\n {\r\n if (!area?.effect?.SetOption) continue;\r\n area.effect.SetOption(name, value);\r\n updated = true;\r\n }\r\n return updated;\r\n }\r\n\r\n /**\r\n * The vertex-displacement bounds adjustment consumers apply to this mesh: max\r\n * local scale, max local displacement and whether the material rotates\r\n * vertices.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetMaterialBoundsAdjustment()\r\n {\r\n return {\r\n maxLocalScale: this.maxVertexScale,\r\n maxLocalDisplacement: this.maxVertexDisplacement,\r\n rotatesVertices: this.rotatesVertices\r\n };\r\n }\r\n\r\n /**\r\n * Stores the bounds adjustment, coercing missing or non-numeric entries to\r\n * zero and false.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetMaterialBoundsAdjustment(value)\r\n {\r\n const source = value || {};\r\n this.maxVertexScale = Number(source.maxLocalScale) || 0;\r\n this.maxVertexDisplacement = Number(source.maxLocalDisplacement) || 0;\r\n this.rotatesVertices = !!source.rotatesVertices;\r\n return true;\r\n }\r\n\r\n /** Empty at this level; Tr2Mesh overrides it with the real geometry path. */\r\n @carbon.method\r\n @impl.adapted\r\n GetGeometryResPath()\r\n {\r\n return \"\";\r\n }\r\n\r\n // Emits one batch per displayed area into the accumulator. `areas` may be a\r\n // TriBatchType (resolved via GetAreas) or an already-resolved area list, so the\r\n // scene collector can drive a mesh directly and a transform can pass a\r\n // pre-fetched vector (Carbon Tr2Transform::GetBatches passes GetAreas(type)).\r\n // Returns whether any batch was committed (JS addition; Carbon returns void).\r\n\r\n /**\r\n * Emits one batch per displayed area into the accumulator, where areas may be\r\n * a TriBatchType or an already-resolved area list, so a scene collector or a\r\n * transform can drive the mesh directly; returns whether any batch was\r\n * committed (a JS addition, Carbon returns void).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"GPU-free descriptor batches: geometry buffers and final draw args are resolved by the engine at dispatch\")\r\n GetBatches(accumulator, areas, perObjectData, screenSize = Infinity, reverseWinding = false)\r\n {\r\n if (this.display === false) return false;\r\n\r\n const areaList = Array.isArray(areas) ? areas : this.GetAreas(areas);\r\n if (!areaList) return false;\r\n\r\n let committed = false;\r\n const geometry = this.GetGeometryResource() ?? null;\r\n\r\n // Carbon resolves the LOD once for the whole area list from the caller's\r\n // screen size (Tr2MeshBase.cpp:381) and passes it to every area. A resource\r\n // that cannot select a LOD yet yields null, and the batch then carries its\r\n // geometry-source descriptor with no draw arguments.\r\n const lod = geometry?.GetMeshLod?.(this.meshIndex, screenSize) ?? null;\r\n\r\n for (const area of areaList)\r\n {\r\n const batch = this.CreateGeometryBatch(geometry, area, perObjectData, reverseWinding, lod);\r\n if (batch) committed = accumulator.Commit(batch) || committed;\r\n }\r\n return committed;\r\n }\r\n\r\n // Builds a single GPU-free batch for one mesh area: the area's effect is the\r\n // material/shader key, and the geometry + area range are recorded as a source\r\n // descriptor for the engine to realize. Returns null for a hidden or\r\n // material-less area (Carbon returns an invalid batch in those cases).\r\n\r\n /**\r\n * Builds one GPU-free batch for a mesh area, using the area's effect as\r\n * material and shader key and recording geometry plus area range as a source\r\n * descriptor; returns null for a hidden or material-less area, where Carbon\r\n * returns an invalid batch.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"GPU-free: emits a geometry source descriptor instead of realized Tr2BufferAL allocations\")\r\n CreateGeometryBatch(geometry, area, perObjectData, reverseWinding = false, lod = null)\r\n {\r\n if (!area || area.GetDisplay() === false) return null;\r\n\r\n const effect = area.GetMaterialInterface();\r\n if (!effect) return null;\r\n\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(effect);\r\n if (!batch.IsValid()) return null;\r\n\r\n // Carbon XORs the area's authored winding with the caller's request\r\n // (Tr2MeshBase.cpp:373); it is not a property of the area alone. The\r\n // EveSpaceObject2 path always passes false, but EveChildMesh and the\r\n // reflection reason pass a live value.\r\n const reversed = area.GetReversed() !== reverseWinding;\r\n\r\n batch.SetGeometrySource(geometry, this.meshIndex, area.GetIndex(), area.GetCount(), reversed, lod);\r\n\r\n // Carbon binds lod->m_mesh->m_vertexDeclarationHandle onto the batch\r\n // (Tr2MeshBase.cpp:371). The handle is what binning and sorting compare, so\r\n // leaving it zero makes every mesh look like one declaration.\r\n const elements = geometry?.GetMeshVertexElements?.(this.meshIndex);\r\n\r\n // The geometry layer hands back the PRODUCER's vocabulary - a CMF decl names\r\n // its usages - and a shader input carries Carbon's numeric UsageCode. The\r\n // two numberings collide rather than merely differ, so this translates\r\n // before interning: an untranslated decl interns to a handle that no shader\r\n // input can ever match, and the AL's `findInputElement` fails silently for\r\n // every mesh.\r\n const carbonElements = CarbonVertexElements(elements);\r\n\r\n if (carbonElements.length)\r\n {\r\n batch.SetVertexDeclaration(Tr2EffectStateManager.getVertexDeclarationHandle(carbonElements));\r\n }\r\n\r\n // Carbon computes the draw arguments here, from the resolved LOD. Without a\r\n // LOD the batch still carries its descriptor and the arguments stay zero,\r\n // which is what every mesh batch did before this seam existed.\r\n const draw = Tr2RenderBatch.resolveDrawArguments(lod, area.GetIndex(), area.GetCount(), reversed);\r\n\r\n if (draw)\r\n {\r\n batch.SetDrawIndexedInstanced(\r\n draw.indexCountPerInstance,\r\n draw.instanceCount,\r\n draw.startIndexLocation,\r\n draw.baseVertexLocation,\r\n draw.startInstanceLocation);\r\n }\r\n\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n batch.SetPickingData(this.meshIndex, area.GetIndex());\r\n return batch;\r\n }\r\n\r\n // Appends one (startIndex, count) block per area of the requested type.\r\n // Carbon deliberately skips non-shadow-casting OPAQUE areas here too (overlay\r\n // rendering over e.g. scaffolding build effects causes problems).\r\n\r\n /**\r\n * Appends one clamped (startIndex, count) block per area of the requested type\r\n * to the caller's collector, skipping non-shadow-casting OPAQUE areas as\r\n * Carbon does because overlay rendering over build effects misbehaves.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CollectAreaBlocks(collector, areaType)\r\n {\r\n const areas = this.GetAreas(areaType);\r\n if (!areas) return collector;\r\n\r\n for (const area of areas)\r\n {\r\n if (areaType === TriBatchType.TRIBATCHTYPE_OPAQUE && !area.IsCastingShadows()) continue;\r\n collector.push(new TriRenderBatchAreaBlock(\r\n Math.max(0, area.GetIndex()), Math.max(0, area.GetCount())));\r\n }\r\n return collector;\r\n }\r\n\r\n // Appends blocks grouped by shared area material (the shadow path). Skips\r\n // non-shadow-casting OPAQUE and DECAL areas. Faithfully does NOT clamp\r\n // negative index/count (Carbon asymmetry with CollectAreaBlocks).\r\n\r\n /**\r\n * Appends blocks grouped by shared area material for the shadow path, skipping\r\n * non-shadow-casting OPAQUE and DECAL areas, and faithfully reproduces\r\n * Carbon's asymmetry by not clamping negative index or count.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Material grouping uses reference identity in place of Carbon's effect hash values.\")\r\n CollectAreaBlocksWithSharedMaterials(collectors, areaType)\r\n {\r\n const areas = this.GetAreas(areaType);\r\n if (!areas) return collectors;\r\n\r\n for (const area of areas)\r\n {\r\n if (areaType === TriBatchType.TRIBATCHTYPE_OPAQUE && !area.IsCastingShadows()) continue;\r\n if (areaType === TriBatchType.TRIBATCHTYPE_DECAL && !area.IsCastingShadows()) continue;\r\n\r\n const material = area.GetMaterialInterface();\r\n let entry = collectors.find(candidate => candidate.shaderMaterial === material);\r\n if (!entry)\r\n {\r\n entry = new TriRenderBatchAreaBlocksWithSharedMaterial();\r\n entry.shaderMaterial = material;\r\n collectors.push(entry);\r\n }\r\n entry.areaBlockVector.push(new TriRenderBatchAreaBlock(area.GetIndex(), area.GetCount()));\r\n }\r\n return collectors;\r\n }\r\n\r\n static #areaProperties = Object.freeze([\r\n \"opaqueAreas\",\r\n \"decalAreas\",\r\n \"transparentAreas\",\r\n \"depthAreas\",\r\n \"additiveAreas\",\r\n \"pickableAreas\",\r\n \"mirrorAreas\",\r\n \"decalNormalAreas\",\r\n \"depthNormalAreas\",\r\n \"opaquePrepassAreas\",\r\n \"decalPrepassAreas\",\r\n \"geometryEraserAreas\",\r\n \"flareAreas\",\r\n \"distortionAreas\"\r\n ]);\r\n}\r\n"],"names":["_Tr2MeshBase","_identity","Tr2MeshBase","CjsModel","e","_init_name","_init_extra_name","_init_display","_init_extra_display","_init_meshIndex","_init_extra_meshIndex","_init_opaqueAreas","_init_extra_opaqueAreas","_init_decalAreas","_init_extra_decalAreas","_init_depthAreas","_init_extra_depthAreas","_init_transparentAreas","_init_extra_transparentAreas","_init_additiveAreas","_init_extra_additiveAreas","_init_pickableAreas","_init_extra_pickableAreas","_init_mirrorAreas","_init_extra_mirrorAreas","_init_decalNormalAreas","_init_extra_decalNormalAreas","_init_depthNormalAreas","_init_extra_depthNormalAreas","_init_opaquePrepassAreas","_init_extra_opaquePrepassAreas","_init_decalPrepassAreas","_init_extra_decalPrepassAreas","_init_geometryEraserAreas","_init_extra_geometryEraserAreas","_init_distortionAreas","_init_extra_distortionAreas","_init_flareAreas","_init_extra_flareAreas","_init_maxVertexScale","_init_extra_maxVertexScale","_init_maxVertexDisplacement","_init_extra_maxVertexDisplacement","_init_rotatesVertices","_init_extra_rotatesVertices","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","string","readwrite","boolean","rebuild","notify","int32","list","read","float32","carbon","method","impl","implemented","adapted","abstract","reason","constructor","args","name","display","meshIndex","opaqueAreas","decalAreas","depthAreas","transparentAreas","additiveAreas","pickableAreas","mirrorAreas","decalNormalAreas","depthNormalAreas","opaquePrepassAreas","decalPrepassAreas","geometryEraserAreas","distortionAreas","flareAreas","maxVertexScale","maxVertexDisplacement","rotatesVertices","GetDisplay","GetMeshIndex","GetBounds","geometry","GetGeometryResource","source","GetBoundingBox","min","vec3","clone","minBounds","max","maxBounds","scale","index","scaledMin","scaledMax","Math","radius","hypot","abs","set","bounds","copy","Error","GetAreas","areaType","Number","isInteger","property","AddArea","area","areas","push","GetAllAreas","flatMap","UseWithScreenSize","screenSize","worldRadius","lod","GetMeshLod","uvDensities","m_uvDensities","reported","material","GetMaterialInterface","UsedWithScreenSize","SetShaderOption","value","updated","effect","SetOption","GetMaterialBoundsAdjustment","maxLocalScale","maxLocalDisplacement","SetMaterialBoundsAdjustment","GetGeometryResPath","GetBatches","accumulator","perObjectData","Infinity","reverseWinding","areaList","Array","isArray","committed","batch","CreateGeometryBatch","Commit","Tr2RenderBatch","SetMaterial","IsValid","reversed","GetReversed","SetGeometrySource","GetIndex","GetCount","elements","GetMeshVertexElements","carbonElements","CarbonVertexElements","length","SetVertexDeclaration","Tr2EffectStateManager","getVertexDeclarationHandle","draw","resolveDrawArguments","SetDrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation","SetPerObjectData","SetPickingData","CollectAreaBlocks","collector","TriBatchType","TRIBATCHTYPE_OPAQUE","IsCastingShadows","TriRenderBatchAreaBlock","CollectAreaBlocksWithSharedMaterials","collectors","TRIBATCHTYPE_DECAL","entry","find","candidate","shaderMaterial","TriRenderBatchAreaBlocksWithSharedMaterial","areaBlockVector","Object","freeze"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2MeshBase.js","sources":["../../../../../src/trinity/core/mesh/Tr2MeshBase.js"],"sourcesContent":["// Source: trinity/trinity/Tr2MeshBase.h\r\n// Source: trinity/trinity/Tr2MeshBase.cpp\r\n// Source: trinity/trinity/Tr2MeshBase_Blue.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { carbon, impl, io, type } from \"#schema\";\r\nimport { TriBatchType } from \"#consts/graphics\";\r\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock, TriRenderBatchAreaBlocksWithSharedMaterial } from \"../batch/TriRenderBatch/index.js\";\r\nimport { Tr2EffectStateManager } from \"../../shader/Tr2EffectStateManager.js\";\r\nimport { CarbonVertexElements } from \"../vertex/vertexUsage.js\";\r\n\r\n\r\n/**\r\n * Base mesh: owns one mesh-area list per batch type and turns the displayed\r\n * areas into GPU-free render batches and shadow area blocks.\r\n */\r\n@type.define({ className: \"Tr2MeshBase\", family: \"trinityCore\" })\r\nexport class Tr2MeshBase extends CjsModel\r\n{\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.readwrite\r\n @type.boolean\r\n display = true;\r\n\r\n @io.rebuild(\"batches\")\r\n @io.notify\r\n @io.persist\r\n @type.int32\r\n meshIndex = 0;\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n opaqueAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n decalAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n depthAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n transparentAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n additiveAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n pickableAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n mirrorAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n decalNormalAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n depthNormalAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n opaquePrepassAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n decalPrepassAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n geometryEraserAreas = [];\r\n\r\n @io.rebuild(\"batches\")\r\n @io.persist\r\n @type.list(\"Tr2MeshArea\")\r\n distortionAreas = [];\r\n\r\n // Carbon routes TRIBATCHTYPE_FLARE but does not expose this list to Blue, so\r\n // this list is typed without being read or persisted: the type declaration is\r\n // what makes its areas reachable to graph traversal, independent of io.\r\n @io.rebuild(\"batches\")\r\n @type.list(\"Tr2MeshArea\")\r\n flareAreas = [];\r\n\r\n @io.read\r\n @io.persist\r\n @type.float32\r\n maxVertexScale = 1;\r\n\r\n @io.read\r\n @io.persist\r\n @type.float32\r\n maxVertexDisplacement = 0;\r\n\r\n @io.read\r\n @io.persist\r\n @type.boolean\r\n rotatesVertices = false;\r\n\r\n /** Whether this mesh participates in rendering. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDisplay()\r\n {\r\n return this.display;\r\n }\r\n\r\n /** Index of this mesh inside its geometry resource. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMeshIndex()\r\n {\r\n return this.meshIndex;\r\n }\r\n\r\n /**\r\n * Returns the geometry bounds after applying Carbon's material-driven local\r\n * scale, displacement, and vertex-rotation expansion.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBounds()\r\n {\r\n const geometry = this.GetGeometryResource();\r\n if (!geometry) return null;\r\n const source = geometry.GetBoundingBox(this.meshIndex);\r\n if (!source) return null;\r\n\r\n const min = vec3.clone(source.min ?? source.minBounds);\r\n const max = vec3.clone(source.max ?? source.maxBounds);\r\n const scale = this.maxVertexScale;\r\n\r\n for (let index = 0; index < 3; index++)\r\n {\r\n const scaledMin = min[index] * scale;\r\n const scaledMax = max[index] * scale;\r\n min[index] = Math.min(scaledMin, scaledMax) - this.maxVertexDisplacement;\r\n max[index] = Math.max(scaledMin, scaledMax) + this.maxVertexDisplacement;\r\n }\r\n\r\n if (this.rotatesVertices)\r\n {\r\n const radius = Math.hypot(\r\n Math.max(Math.abs(min[0]), Math.abs(max[0])),\r\n Math.max(Math.abs(min[1]), Math.abs(max[1])),\r\n Math.max(Math.abs(min[2]), Math.abs(max[2]))\r\n );\r\n vec3.set(min, -radius, -radius, -radius);\r\n vec3.set(max, radius, radius, radius);\r\n }\r\n\r\n return { min, max };\r\n }\r\n\r\n /** Writes the adjusted mesh bounds into caller-owned minimum and maximum vectors. */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingBox(min, max)\r\n {\r\n const bounds = this.GetBounds();\r\n if (!bounds) return false;\r\n vec3.copy(min, bounds.min);\r\n vec3.copy(max, bounds.max);\r\n return true;\r\n }\r\n\r\n /**\r\n * The geometry this mesh draws from.\r\n *\r\n * PURE VIRTUAL IN CARBON (`Tr2MeshBase.h:69`), and missing from this base\r\n * until 2026-09-05 - only `Tr2Mesh` declared it. Every caller therefore\r\n * wrote `mesh?.GetGeometryResource()`, hedging against a base that had the\r\n * method in Carbon and not here. A mesh with no geometry to name is not a\r\n * mesh, so this throws rather than returning null: returning null would let\r\n * a subclass that forgot it draw nothing, silently.\r\n *\r\n * @returns {object} The geometry resource.\r\n */\r\n @carbon.method\r\n @impl.abstract\r\n GetGeometryResource()\r\n {\r\n throw new Error(\"Tr2MeshBase.GetGeometryResource must be implemented by a mesh.\");\r\n }\r\n\r\n /**\r\n * The live area list for a TriBatchType, or null for a non-integer or unmapped\r\n * type.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetAreas(areaType)\r\n {\r\n if (!Number.isInteger(areaType)) return null;\r\n const property = Tr2MeshBase.#areaProperties[areaType];\r\n return property ? this[property] : null;\r\n }\r\n\r\n /**\r\n * Appends an area to the list for a batch type; returns false when that type\r\n * has no list.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n AddArea(areaType, area)\r\n {\r\n const areas = this.GetAreas(areaType);\r\n if (!areas) return false;\r\n areas.push(area);\r\n return true;\r\n }\r\n\r\n /**\r\n * Every area of every batch type, in batch-type order, as one newly allocated\r\n * array.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetAllAreas()\r\n {\r\n return Tr2MeshBase.#areaProperties.flatMap(property => this[property]);\r\n }\r\n\r\n /**\r\n * Carbon Tr2MeshBase::UseWithScreenSize (Tr2MeshBase.cpp:589-610): reports the\r\n * on-screen size this mesh is being drawn at to every area material, so the\r\n * texture streamer can request a matching mip level. The LOD the size resolves\r\n * to supplies the uv densities the material needs to turn a pixel size into a\r\n * texture resolution.\r\n *\r\n * Callers pass a screen size already scaled by the LOD factor\r\n * (EveSpaceObject2, EveTransform, EveChildMesh, BehaviorGroup).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UseWithScreenSize(screenSize, worldRadius)\r\n {\r\n const geometry = this.GetGeometryResource() ?? null;\r\n if (!geometry) return false;\r\n\r\n const lod = geometry.GetMeshLod?.(this.meshIndex, screenSize) ?? null;\r\n if (!lod) return false;\r\n\r\n // Carbon reads m_uvDensities off the resolved LOD; a resource that exposes\r\n // none yields an empty list, which the material treats as \"no LOD data\" and\r\n // requests the full resolution.\r\n const uvDensities = lod.uvDensities ?? lod.m_uvDensities ?? [];\r\n let reported = false;\r\n\r\n for (const area of this.GetAllAreas())\r\n {\r\n const material = area?.GetMaterialInterface?.();\r\n if (!material?.UsedWithScreenSize) continue;\r\n\r\n material.UsedWithScreenSize(screenSize, worldRadius, uvDensities);\r\n reported = true;\r\n }\r\n\r\n return reported;\r\n }\r\n\r\n /**\r\n * Sets a shader option on every area effect that supports it; returns whether\r\n * at least one area was updated.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetShaderOption(name, value)\r\n {\r\n let updated = false;\r\n for (const area of this.GetAllAreas())\r\n {\r\n if (!area?.effect?.SetOption) continue;\r\n area.effect.SetOption(name, value);\r\n updated = true;\r\n }\r\n return updated;\r\n }\r\n\r\n /**\r\n * The vertex-displacement bounds adjustment consumers apply to this mesh: max\r\n * local scale, max local displacement and whether the material rotates\r\n * vertices.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetMaterialBoundsAdjustment()\r\n {\r\n return {\r\n maxLocalScale: this.maxVertexScale,\r\n maxLocalDisplacement: this.maxVertexDisplacement,\r\n rotatesVertices: this.rotatesVertices\r\n };\r\n }\r\n\r\n /**\r\n * Stores the bounds adjustment, coercing missing or non-numeric entries to\r\n * zero and false.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetMaterialBoundsAdjustment(value)\r\n {\r\n const source = value || {};\r\n this.maxVertexScale = Number(source.maxLocalScale) || 0;\r\n this.maxVertexDisplacement = Number(source.maxLocalDisplacement) || 0;\r\n this.rotatesVertices = !!source.rotatesVertices;\r\n return true;\r\n }\r\n\r\n /** Empty at this level; Tr2Mesh overrides it with the real geometry path. */\r\n @carbon.method\r\n @impl.adapted\r\n GetGeometryResPath()\r\n {\r\n return \"\";\r\n }\r\n\r\n // Emits one batch per displayed area into the accumulator. `areas` may be a\r\n // TriBatchType (resolved via GetAreas) or an already-resolved area list, so the\r\n // scene collector can drive a mesh directly and a transform can pass a\r\n // pre-fetched vector (Carbon Tr2Transform::GetBatches passes GetAreas(type)).\r\n // Returns whether any batch was committed (JS addition; Carbon returns void).\r\n\r\n /**\r\n * Emits one batch per displayed area into the accumulator, where areas may be\r\n * a TriBatchType or an already-resolved area list, so a scene collector or a\r\n * transform can drive the mesh directly; returns whether any batch was\r\n * committed (a JS addition, Carbon returns void).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"GPU-free descriptor batches: geometry buffers and final draw args are resolved by the engine at dispatch\")\r\n GetBatches(accumulator, areas, perObjectData, screenSize = Infinity, reverseWinding = false)\r\n {\r\n if (this.display === false) return false;\r\n\r\n const areaList = Array.isArray(areas) ? areas : this.GetAreas(areas);\r\n if (!areaList) return false;\r\n\r\n let committed = false;\r\n const geometry = this.GetGeometryResource() ?? null;\r\n\r\n // Carbon resolves the LOD once for the whole area list from the caller's\r\n // screen size (Tr2MeshBase.cpp:381) and passes it to every area. A resource\r\n // that cannot select a LOD yet yields null, and the batch then carries its\r\n // geometry-source descriptor with no draw arguments.\r\n const lod = geometry?.GetMeshLod?.(this.meshIndex, screenSize) ?? null;\r\n\r\n for (const area of areaList)\r\n {\r\n const batch = this.CreateGeometryBatch(geometry, area, perObjectData, reverseWinding, lod);\r\n if (batch) committed = accumulator.Commit(batch) || committed;\r\n }\r\n return committed;\r\n }\r\n\r\n // Builds a single GPU-free batch for one mesh area: the area's effect is the\r\n // material/shader key, and the geometry + area range are recorded as a source\r\n // descriptor for the engine to realize. Returns null for a hidden or\r\n // material-less area (Carbon returns an invalid batch in those cases).\r\n\r\n /**\r\n * Builds one GPU-free batch for a mesh area, using the area's effect as\r\n * material and shader key and recording geometry plus area range as a source\r\n * descriptor; returns null for a hidden or material-less area, where Carbon\r\n * returns an invalid batch.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"GPU-free: emits a geometry source descriptor instead of realized Tr2BufferAL allocations\")\r\n CreateGeometryBatch(geometry, area, perObjectData, reverseWinding = false, lod = null)\r\n {\r\n if (!area || area.GetDisplay() === false) return null;\r\n\r\n const effect = area.GetMaterialInterface();\r\n if (!effect) return null;\r\n\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(effect);\r\n if (!batch.IsValid()) return null;\r\n\r\n // Carbon XORs the area's authored winding with the caller's request\r\n // (Tr2MeshBase.cpp:373); it is not a property of the area alone. The\r\n // EveSpaceObject2 path always passes false, but EveChildMesh and the\r\n // reflection reason pass a live value.\r\n const reversed = area.GetReversed() !== reverseWinding;\r\n\r\n batch.SetGeometrySource(geometry, this.meshIndex, area.GetIndex(), area.GetCount(), reversed, lod);\r\n\r\n // Carbon binds lod->m_mesh->m_vertexDeclarationHandle onto the batch\r\n // (Tr2MeshBase.cpp:371). The handle is what binning and sorting compare, so\r\n // leaving it zero makes every mesh look like one declaration.\r\n const elements = geometry?.GetMeshVertexElements?.(this.meshIndex);\r\n\r\n // The geometry layer hands back the PRODUCER's vocabulary - a CMF decl names\r\n // its usages - and a shader input carries Carbon's numeric UsageCode. The\r\n // two numberings collide rather than merely differ, so this translates\r\n // before interning: an untranslated decl interns to a handle that no shader\r\n // input can ever match, and the AL's `findInputElement` fails silently for\r\n // every mesh.\r\n const carbonElements = CarbonVertexElements(elements);\r\n\r\n if (carbonElements.length)\r\n {\r\n batch.SetVertexDeclaration(Tr2EffectStateManager.getVertexDeclarationHandle(carbonElements));\r\n }\r\n\r\n // Carbon computes the draw arguments here, from the resolved LOD. Without a\r\n // LOD the batch still carries its descriptor and the arguments stay zero,\r\n // which is what every mesh batch did before this seam existed.\r\n const draw = Tr2RenderBatch.resolveDrawArguments(lod, area.GetIndex(), area.GetCount(), reversed);\r\n\r\n if (draw)\r\n {\r\n batch.SetDrawIndexedInstanced(\r\n draw.indexCountPerInstance,\r\n draw.instanceCount,\r\n draw.startIndexLocation,\r\n draw.baseVertexLocation,\r\n draw.startInstanceLocation);\r\n }\r\n\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n batch.SetPickingData(this.meshIndex, area.GetIndex());\r\n return batch;\r\n }\r\n\r\n // Appends one (startIndex, count) block per area of the requested type.\r\n // Carbon deliberately skips non-shadow-casting OPAQUE areas here too (overlay\r\n // rendering over e.g. scaffolding build effects causes problems).\r\n\r\n /**\r\n * Appends one clamped (startIndex, count) block per area of the requested type\r\n * to the caller's collector, skipping non-shadow-casting OPAQUE areas as\r\n * Carbon does because overlay rendering over build effects misbehaves.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CollectAreaBlocks(collector, areaType)\r\n {\r\n const areas = this.GetAreas(areaType);\r\n if (!areas) return collector;\r\n\r\n for (const area of areas)\r\n {\r\n if (areaType === TriBatchType.TRIBATCHTYPE_OPAQUE && !area.IsCastingShadows()) continue;\r\n collector.push(new TriRenderBatchAreaBlock(\r\n Math.max(0, area.GetIndex()), Math.max(0, area.GetCount())));\r\n }\r\n return collector;\r\n }\r\n\r\n // Appends blocks grouped by shared area material (the shadow path). Skips\r\n // non-shadow-casting OPAQUE and DECAL areas. Faithfully does NOT clamp\r\n // negative index/count (Carbon asymmetry with CollectAreaBlocks).\r\n\r\n /**\r\n * Appends blocks grouped by shared area material for the shadow path, skipping\r\n * non-shadow-casting OPAQUE and DECAL areas, and faithfully reproduces\r\n * Carbon's asymmetry by not clamping negative index or count.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Material grouping uses reference identity in place of Carbon's effect hash values.\")\r\n CollectAreaBlocksWithSharedMaterials(collectors, areaType)\r\n {\r\n const areas = this.GetAreas(areaType);\r\n if (!areas) return collectors;\r\n\r\n for (const area of areas)\r\n {\r\n if (areaType === TriBatchType.TRIBATCHTYPE_OPAQUE && !area.IsCastingShadows()) continue;\r\n if (areaType === TriBatchType.TRIBATCHTYPE_DECAL && !area.IsCastingShadows()) continue;\r\n\r\n const material = area.GetMaterialInterface();\r\n let entry = collectors.find(candidate => candidate.shaderMaterial === material);\r\n if (!entry)\r\n {\r\n entry = new TriRenderBatchAreaBlocksWithSharedMaterial();\r\n entry.shaderMaterial = material;\r\n collectors.push(entry);\r\n }\r\n entry.areaBlockVector.push(new TriRenderBatchAreaBlock(area.GetIndex(), area.GetCount()));\r\n }\r\n return collectors;\r\n }\r\n\r\n static #areaProperties = Object.freeze([\r\n \"opaqueAreas\",\r\n \"decalAreas\",\r\n \"transparentAreas\",\r\n \"depthAreas\",\r\n \"additiveAreas\",\r\n \"pickableAreas\",\r\n \"mirrorAreas\",\r\n \"decalNormalAreas\",\r\n \"depthNormalAreas\",\r\n \"opaquePrepassAreas\",\r\n \"decalPrepassAreas\",\r\n \"geometryEraserAreas\",\r\n \"flareAreas\",\r\n \"distortionAreas\"\r\n ]);\r\n}\r\n"],"names":["_Tr2MeshBase","_identity","Tr2MeshBase","CjsModel","e","_init_name","_init_extra_name","_init_display","_init_extra_display","_init_meshIndex","_init_extra_meshIndex","_init_opaqueAreas","_init_extra_opaqueAreas","_init_decalAreas","_init_extra_decalAreas","_init_depthAreas","_init_extra_depthAreas","_init_transparentAreas","_init_extra_transparentAreas","_init_additiveAreas","_init_extra_additiveAreas","_init_pickableAreas","_init_extra_pickableAreas","_init_mirrorAreas","_init_extra_mirrorAreas","_init_decalNormalAreas","_init_extra_decalNormalAreas","_init_depthNormalAreas","_init_extra_depthNormalAreas","_init_opaquePrepassAreas","_init_extra_opaquePrepassAreas","_init_decalPrepassAreas","_init_extra_decalPrepassAreas","_init_geometryEraserAreas","_init_extra_geometryEraserAreas","_init_distortionAreas","_init_extra_distortionAreas","_init_flareAreas","_init_extra_flareAreas","_init_maxVertexScale","_init_extra_maxVertexScale","_init_maxVertexDisplacement","_init_extra_maxVertexDisplacement","_init_rotatesVertices","_init_extra_rotatesVertices","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","string","readwrite","boolean","rebuild","notify","int32","list","read","float32","carbon","method","impl","implemented","adapted","abstract","reason","constructor","args","name","display","meshIndex","opaqueAreas","decalAreas","depthAreas","transparentAreas","additiveAreas","pickableAreas","mirrorAreas","decalNormalAreas","depthNormalAreas","opaquePrepassAreas","decalPrepassAreas","geometryEraserAreas","distortionAreas","flareAreas","maxVertexScale","maxVertexDisplacement","rotatesVertices","GetDisplay","GetMeshIndex","GetBounds","geometry","GetGeometryResource","source","GetBoundingBox","min","vec3","clone","minBounds","max","maxBounds","scale","index","scaledMin","scaledMax","Math","radius","hypot","abs","set","bounds","copy","Error","GetAreas","areaType","Number","isInteger","property","AddArea","area","areas","push","GetAllAreas","flatMap","UseWithScreenSize","screenSize","worldRadius","lod","GetMeshLod","uvDensities","m_uvDensities","reported","material","GetMaterialInterface","UsedWithScreenSize","SetShaderOption","value","updated","effect","SetOption","GetMaterialBoundsAdjustment","maxLocalScale","maxLocalDisplacement","SetMaterialBoundsAdjustment","GetGeometryResPath","GetBatches","accumulator","perObjectData","Infinity","reverseWinding","areaList","Array","isArray","committed","batch","CreateGeometryBatch","Commit","Tr2RenderBatch","SetMaterial","IsValid","reversed","GetReversed","SetGeometrySource","GetIndex","GetCount","elements","GetMeshVertexElements","carbonElements","CarbonVertexElements","length","SetVertexDeclaration","Tr2EffectStateManager","getVertexDeclarationHandle","draw","resolveDrawArguments","SetDrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation","SetPerObjectData","SetPickingData","CollectAreaBlocks","collector","TriBatchType","TRIBATCHTYPE_OPAQUE","IsCastingShadows","TriRenderBatchAreaBlock","CollectAreaBlocksWithSharedMaterials","collectors","TRIBATCHTYPE_DECAL","entry","find","candidate","shaderMaterial","TriRenderBatchAreaBlocksWithSharedMaterial","areaBlockVector","Object","freeze"],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@ import { CjsModel } from '#model';
|
|
|
4
4
|
import { io, type, carbon, impl } from '#schema';
|
|
5
5
|
import { Tr2ParticleElementDeclaration as _Tr2ParticleElementDe } from '../../particle/element/Tr2ParticleElementDeclaration.js';
|
|
6
6
|
import { Tr2VertexUsageCode } from '../vertex/usageCode.js';
|
|
7
|
-
import {
|
|
7
|
+
import { ITr2InstanceDataInstanceData as _ITr2InstanceDataInst } from './ITr2InstanceData/ITr2InstanceDataInstanceData.js';
|
|
8
|
+
import { withITr2InstanceData } from './ITr2InstanceData/ITr2InstanceData.js';
|
|
8
9
|
|
|
9
10
|
var _withITr2InstanceData;
|
|
10
11
|
let _initProto, _initClass, _init_name, _init_extra_name, _init_particleSystem, _init_extra_particleSystem, _init_layout, _init_extra_layout, _init_rows, _init_extra_rows, _init_explicitBoundingBox, _init_extra_explicitBoundingBox, _init_count, _init_extra_count, _init_aabbMin, _init_extra_aabbMin, _init_aabbMax, _init_extra_aabbMax;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2RuntimeInstanceData.js","sources":["../../../../../src/trinity/core/mesh/Tr2RuntimeInstanceData.js"],"sourcesContent":["// Source: trinity/trinity/Tr2RuntimeInstanceData.h\n// Source: trinity/trinity/Tr2RuntimeInstanceData.cpp\n// Source: trinity/trinity/Tr2RuntimeInstanceData_Blue.cpp\nimport { vec3 } from \"#math/vec3\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, io, type } from \"#schema\";\nimport { Tr2ParticleElementDeclaration } from \"../../particle/element/Tr2ParticleElementDeclaration.js\";\nimport { Tr2VertexUsageCode } from \"../vertex/usageCode.js\";\nimport { ITr2InstanceDataInstanceData, withITr2InstanceData } from \"./ITr2InstanceData.js\";\n\n\n/**\n * Owns a CPU-side instance stream - a vertex element layout, the packed\n * per-instance rows and their bounding box - and can spawn the same rows into a\n * particle system on demand.\n */\n@type.define({ className: \"Tr2RuntimeInstanceData\", family: \"trinityCore\" })\nexport class Tr2RuntimeInstanceData extends withITr2InstanceData(CjsModel)\n{\n @io.persist\n @type.string\n name = \"\";\n\n @io.persist\n @type.objectRef(\"Tr2ParticleSystem\")\n particleSystem = null;\n\n // DIVERGENCE (deliberate): Carbon only Blue-persists name/particleSystem and\n // exposes aabbMin/aabbMax as Be::READ; layout/rows/explicitBoundingBox are\n // private, fed at runtime via SetElementLayout/SetData/SetBoundingBox.\n // The JS port persists the whole quintet so instance data authored in JS can\n // round-trip without Carbon's Python/CMF side channels. Carbon-authored\n // .black files never populate these fields.\n @io.flag(\"cpuData\")\n @io.rebuild(\"instanceBuffer\")\n @io.notify\n @io.persist\n @type.array(\"unknown\")\n layout = [];\n\n @io.flag(\"cpuData\")\n @io.rebuild(\"instanceBuffer\")\n @io.notify\n @io.persist\n @type.array(\"unknown\")\n rows = [];\n\n @io.persist\n @type.boolean\n explicitBoundingBox = false;\n\n @io.read\n @type.uint32\n count = 0;\n\n @io.persist\n @type.vec3\n aabbMin = vec3.create();\n\n @io.persist\n @type.vec3\n aabbMax = vec3.create();\n\n #layout = Object.freeze([]);\n\n #data = null;\n\n #stride = 0;\n\n #dirty = false;\n\n #dataRevision = 0;\n\n #instanceData = new ITr2InstanceDataInstanceData();\n\n /** True when rows or layout have changed since the last UpdateData. */\n get dirty()\n {\n return this.#dirty;\n }\n\n /**\n * Counter bumped by every UpdateData that publishes a dirty change; consumers\n * compare it to detect that the packed bytes were republished.\n */\n get dataRevision()\n {\n return this.#dataRevision;\n }\n\n /**\n * Repacks the CPU buffer from the persisted layout and rows, then publishes\n * it.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n this.#rebuildCpuData();\n this.UpdateData();\n return true;\n }\n\n /**\n * Repacks the CPU buffer only when the cpuData flag was scheduled, i.e. layout\n * or rows actually changed.\n */\n @carbon.method\n @impl.adapted\n OnModified(_options = {})\n {\n if (this.__state.flags.delete(\"cpuData\"))\n {\n this.#rebuildCpuData();\n }\n return true;\n }\n\n /**\n * Replaces the element layout and discards every existing row - a layout must\n * be set before any SetData.\n */\n @carbon.method\n @impl.adapted\n SetElementLayout(layout)\n {\n this.#setElementLayout(layout);\n this.DestroyData();\n }\n\n /**\n * Replaces all instance rows and repacks the byte buffer; throws when no\n * layout has been set.\n */\n @carbon.method\n @impl.adapted\n SetData(rows)\n {\n this.#setData(rows);\n }\n\n /**\n * A detached copy of one instance row, with its component arrays cloned so the\n * caller cannot alias stored data.\n */\n @carbon.method\n @impl.implemented\n GetItem(index)\n {\n this.#assertItemIndex(index);\n return this.rows[index].map(Tr2RuntimeInstanceData.#cloneValue);\n }\n\n /**\n * Validates one instance row against the layout, stores it and rewrites its\n * bytes in place, marking the data dirty.\n */\n @carbon.method\n @impl.adapted\n SetItem(index, row)\n {\n this.#assertItemIndex(index);\n const normalized = this.#normalizeRow(row, index);\n this.rows[index] = normalized;\n this.#writeRow(new DataView(this.#data), index, normalized);\n this.#dirty = true;\n }\n\n /** A detached copy of one element of one instance row. */\n @carbon.method\n @impl.implemented\n GetItemElement(index, elementIndex)\n {\n this.#assertItemIndex(index);\n this.#assertElementIndex(elementIndex);\n return Tr2RuntimeInstanceData.#cloneValue(this.rows[index][elementIndex]);\n }\n\n /**\n * Validates and stores a single element of one row, patching only that\n * element's bytes in the packed buffer.\n */\n @carbon.method\n @impl.adapted\n SetItemElement(index, elementIndex, value)\n {\n this.#assertItemIndex(index);\n this.#assertElementIndex(elementIndex);\n const normalized = Tr2RuntimeInstanceData.#normalizeElementValue(\n this.#layout[elementIndex],\n value,\n `Instance ${index} element ${elementIndex}`\n );\n this.rows[index][elementIndex] = normalized;\n this.#writeElement(new DataView(this.#data), index, elementIndex, normalized);\n this.#dirty = true;\n }\n\n /**\n * Publishes pending changes by clearing the dirty flag and bumping the data\n * revision; returns false when nothing was dirty.\n */\n @carbon.method\n @impl.adapted\n UpdateData()\n {\n if (!this.#dirty)\n {\n return false;\n }\n this.#dirty = false;\n this.#dataRevision++;\n return true;\n }\n\n /**\n * Recomputes the box from the first POSITION element with at least three\n * components; returns false without touching it when the box was set\n * explicitly, and zeroes the box when there is no such element or no\n * instances.\n */\n @carbon.method\n @impl.adapted\n UpdateBoundingBox()\n {\n if (this.explicitBoundingBox)\n {\n return false;\n }\n\n const positionIndex = this.#layout.findIndex(element =>\n element.usage === \"POSITION\" && element.usageIndex === 0 && element.componentCount >= 3\n );\n if (positionIndex === -1 || this.count === 0)\n {\n vec3.set(this.aabbMin, 0, 0, 0);\n vec3.set(this.aabbMax, 0, 0, 0);\n return false;\n }\n\n vec3.set(this.aabbMin, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);\n vec3.set(this.aabbMax, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);\n for (const row of this.rows)\n {\n const position = row[positionIndex];\n for (let axis = 0; axis < 3; axis++)\n {\n const component = Number(position[axis]) || 0;\n this.aabbMin[axis] = Math.min(this.aabbMin[axis], component);\n this.aabbMax[axis] = Math.max(this.aabbMax[axis], component);\n }\n }\n return true;\n }\n\n /**\n * Sets the box explicitly from either a { min, max } object or two vectors,\n * and latches explicitBoundingBox so UpdateBoundingBox stops recomputing it.\n */\n @carbon.method\n @impl.adapted\n SetBoundingBox(bounds, maxBounds)\n {\n const min = maxBounds === undefined ? bounds?.min ?? bounds?.minBounds : bounds;\n const max = maxBounds === undefined ? bounds?.max ?? bounds?.maxBounds : maxBounds;\n if (!min || !max)\n {\n throw new TypeError(\"Bounding box requires min and max vectors\");\n }\n vec3.copy(this.aabbMin, min);\n vec3.copy(this.aabbMax, max);\n this.explicitBoundingBox = true;\n }\n\n /**\n * Reads the bounding box; the values are copied into the caller's vectors when both are supplied, otherwise a freshly cloned pair is returned.\n * @param {vec3} [minBounds] Caller-owned destination for the minimum.\n * @param {vec3} [maxBounds] Caller-owned destination for the maximum.\n * @returns {boolean|{min: vec3, max: vec3}} True when written into the out vectors, otherwise a new { min, max } pair.\n */\n @carbon.method\n @impl.implemented\n GetBoundingBox(minBounds, maxBounds)\n {\n if (minBounds && maxBounds)\n {\n vec3.copy(minBounds, this.aabbMin);\n vec3.copy(maxBounds, this.aabbMax);\n return true;\n }\n return {\n min: vec3.clone(this.aabbMin),\n max: vec3.clone(this.aabbMax)\n };\n }\n\n /**\n * The bounding box of the single CPU instance buffer; the buffer index is\n * ignored because only one stream exists.\n */\n @carbon.method\n @impl.implemented\n GetInstanceBufferBoundingBox(_bufferIndex = 0)\n {\n return this.GetBoundingBox();\n }\n\n /** Number of packed instance rows. */\n @carbon.method\n @impl.implemented\n GetCount()\n {\n return this.count;\n }\n\n /** Byte size of one packed row, summed from the element layout. */\n @carbon.method\n @impl.implemented\n GetStride()\n {\n return this.#stride;\n }\n\n /**\n * The frozen normalized element descriptors, each carrying usage, type,\n * component count, byte size and byte offset.\n */\n @carbon.method\n @impl.implemented\n GetLayout()\n {\n return this.#layout;\n }\n\n /**\n * A copy of the packed instance bytes, or null when no rows are set; the\n * caller owns the returned array.\n */\n @carbon.method\n @impl.adapted\n GetData()\n {\n return this.#data ? new Uint8Array(this.#data) : null;\n }\n\n /**\n * CPU readiness for the nominal ITr2InstanceData contract. Carbon also tests\n * the realized vertex declaration and GPU buffer; those are engine-owned in\n * CarbonEngineJS, so Trinity reports whether a published layout and byte\n * payload are available for realization.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Physical vertex-declaration and buffer readiness belongs to the engine; Trinity reports published CPU layout/bytes.\")\n IsInstanceDataReady()\n {\n return this.#layout.length > 0 && this.#data !== null && !this.#dirty;\n }\n\n /**\n * Returns the published CPU byte buffer and its row geometry. The buffer is\n * borrowed, matching Carbon's borrowed AL buffer reference.\n */\n @impl.adapted\n @impl.reason(\"The CPU ArrayBuffer replaces Carbon's realized Tr2BufferAL; the selected engine uploads or aliases it.\")\n GetInstanceData(_bufferIndex = 0, _screenSize = 0)\n {\n this.#instanceData.buffer = this.#data;\n this.#instanceData.offset = 0;\n this.#instanceData.stride = this.#stride;\n this.#instanceData.count = this.count;\n return this.#instanceData;\n }\n\n /** Returns the normalized CPU vertex layout an engine must realize. */\n @impl.adapted\n @impl.reason(\"The normalized layout replaces Carbon's engine-owned numeric vertex-declaration handle.\")\n GetInstanceBufferVertexDeclaration(_bufferIndex = 0)\n {\n return this.#layout;\n }\n\n /**\n * Drops every row and the packed buffer while keeping the layout, and marks\n * the data dirty.\n */\n @carbon.method\n @impl.adapted\n DestroyData()\n {\n this.rows = [];\n this.#data = null;\n this.count = 0;\n this.#dirty = true;\n }\n\n /**\n * Replaces the target particle system with particles decoded from the CPU\n * instance rows.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Maps Carbon vertex semantics into the maintained CPU particle-system declaration without GPU buffers.\")\n Spawn()\n {\n const particleSystem = this.particleSystem;\n if (!particleSystem?.isValid || !this.#layout.length || !this.#data)\n {\n return;\n }\n\n const declaration = particleSystem.GetElementDeclaration();\n if (!(declaration instanceof Map))\n {\n throw new TypeError(\"Tr2ParticleSystem.GetElementDeclaration must return the CPU declaration Map.\");\n }\n\n const mappings = [];\n for (const element of declaration.values())\n {\n const usage = Tr2RuntimeInstanceData.#particleUsageToVertexUsage(element.elementType);\n const usageIndex = element.elementType === Tr2ParticleElementDeclaration.Type.CUSTOM\n ? element.usageIndex\n : 0;\n const layoutIndex = this.#layout.findIndex(item =>\n item.usage === usage && item.usageIndex === usageIndex\n );\n if (layoutIndex === -1)\n {\n return;\n }\n\n const layout = this.#layout[layoutIndex];\n if (layout.baseType !== \"FLOAT32\" || layout.componentCount < element.dimension)\n {\n return;\n }\n mappings.push({ element, layoutIndex });\n }\n\n particleSystem.ClearParticles();\n for (const row of this.rows)\n {\n const particleIndex = particleSystem.BeginSpawnParticle();\n if (particleIndex === null)\n {\n break;\n }\n for (const mapping of mappings)\n {\n particleSystem.SetParticleElement(\n particleIndex,\n mapping.element.key,\n row[mapping.layoutIndex]\n );\n }\n particleSystem.EndSpawnParticle();\n }\n }\n\n /**\n * Implements ITr2GenericEmitter. Does nothing as this emitter only emits\n * particles on demand (Spawn).\n */\n @carbon.method\n @impl.implemented\n Update(_arguments)\n {\n }\n\n /**\n * Implements ITr2GenericEmitter. Does nothing as this emitter only emits\n * particles on demand (Spawn); both Carbon overloads are deliberate no-ops.\n */\n @carbon.method\n @impl.implemented\n SpawnParticles(..._args)\n {\n }\n\n /**\n * Implements ITr2GenericEmitter. Nothing to prepare - this emitter never\n * spawns from the threaded particle update.\n */\n @carbon.method\n @impl.implemented\n SetThreadSafeFlag()\n {\n }\n\n /** Carbon's CMF writer requires the native resource-path and file encoder. */\n @carbon.method\n @impl.notImplemented\n SaveToCMF(...args)\n {\n throw new Error(\"Tr2RuntimeInstanceData.SaveToCMF is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon's Granny writer requires the native Granny SDK and filesystem. */\n @carbon.method\n @impl.notImplemented\n SaveToGranny(...args)\n {\n throw new Error(\"Tr2RuntimeInstanceData.SaveToGranny is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Builds Carbon's common current/previous-transform instance stream without\n * creating renderer or GPU resources.\n *\n * @param {Array<object|ArrayLike<number>>} instances\n * @returns {number} Maximum instance scale.\n */\n SetTransformInstances(instances)\n {\n if (!Array.isArray(instances))\n {\n throw new TypeError(\"Transform instances must be an array\");\n }\n\n const rows = [];\n const min = vec3.fromValues(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);\n const max = vec3.fromValues(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);\n let maxScale = 0;\n for (let index = 0; index < instances.length; index++)\n {\n const value = instances[index];\n const transform = Array.isArray(value) || ArrayBuffer.isView(value)\n ? value\n : value?.transform;\n const previousTransform = value?.previousTransform ?? transform;\n if (!transform || transform.length !== 16)\n {\n throw new TypeError(`Transform instance ${index} must contain 16 transform values`);\n }\n if (!previousTransform || previousTransform.length !== 16)\n {\n throw new TypeError(`Transform instance ${index} must contain 16 previous-transform values`);\n }\n\n const currentRows = Tr2RuntimeInstanceData.#packTransform(transform);\n const previousRows = Tr2RuntimeInstanceData.#packTransform(previousTransform);\n rows.push([\n ...currentRows,\n ...previousRows,\n Number(value?.boneIndex ?? 0) | 0\n ]);\n\n for (let axis = 0; axis < 3; axis++)\n {\n min[axis] = Math.min(min[axis], Number(transform[12 + axis]) || 0);\n max[axis] = Math.max(max[axis], Number(transform[12 + axis]) || 0);\n }\n for (const row of currentRows)\n {\n maxScale = Math.max(maxScale, Math.hypot(row[0], row[1], row[2]));\n }\n }\n\n this.SetElementLayout(Tr2RuntimeInstanceData.TransformLayout);\n this.SetData(rows);\n this.SetBoundingBox(\n instances.length ? min : Tr2RuntimeInstanceData.#zero,\n instances.length ? max : Tr2RuntimeInstanceData.#zero\n );\n this.UpdateData();\n return maxScale;\n }\n\n /**\n * Re-normalizes the persisted layout and repacks the persisted rows; throws\n * when rows exist but the layout is empty.\n */\n #rebuildCpuData()\n {\n const rows = this.rows;\n this.#setElementLayout(this.layout);\n if (!this.#layout.length)\n {\n if (rows.length)\n {\n throw new Error(\"SetElementLayout must be called before SetData\");\n }\n this.rows = [];\n this.#data = null;\n this.count = 0;\n this.#dirty = true;\n return;\n }\n this.#setData(rows);\n }\n\n /**\n * Normalizes each element descriptor, assigns sequential byte offsets,\n * computes the row stride and republishes the persisted layout summary.\n */\n #setElementLayout(layout)\n {\n if (!Array.isArray(layout))\n {\n throw new TypeError(\"Element layout must be an array\");\n }\n\n let offset = 0;\n const normalized = layout.map((value, index) =>\n {\n const descriptor = Tr2RuntimeInstanceData.#normalizeElement(value, index, offset);\n offset += descriptor.byteSize;\n return descriptor;\n });\n\n this.layout = normalized.map(Tr2RuntimeInstanceData.#describeElement);\n this.#layout = normalized;\n this.#stride = offset;\n }\n\n /**\n * Normalizes every row against the layout and packs them into one freshly\n * allocated little-endian buffer.\n */\n #setData(rows)\n {\n if (!this.#layout.length)\n {\n throw new Error(\"SetElementLayout must be called before SetData\");\n }\n if (!Array.isArray(rows))\n {\n throw new TypeError(\"Instance data must be an array\");\n }\n\n const normalizedRows = rows.map((row, index) => this.#normalizeRow(row, index));\n const data = normalizedRows.length ? new ArrayBuffer(this.#stride * normalizedRows.length) : null;\n const view = data ? new DataView(data) : null;\n for (let index = 0; index < normalizedRows.length; index++)\n {\n this.#writeRow(view, index, normalizedRows[index]);\n }\n\n this.rows = normalizedRows;\n this.#data = data;\n this.count = normalizedRows.length;\n this.#dirty = true;\n }\n\n /**\n * Coerces a row given either as an array or as a name-keyed object into layout\n * order and validates each element.\n */\n #normalizeRow(row, rowIndex)\n {\n const values = Array.isArray(row)\n ? row\n : this.#layout.map(element => row?.[element.name]);\n if (values.length !== this.#layout.length)\n {\n throw new TypeError(`Instance ${rowIndex} must contain ${this.#layout.length} elements`);\n }\n return values.map((value, elementIndex) => Tr2RuntimeInstanceData.#normalizeElementValue(\n this.#layout[elementIndex],\n value,\n `Instance ${rowIndex} element ${elementIndex}`\n ));\n }\n\n /** Writes every element of one normalized row into the packed buffer. */\n #writeRow(view, rowIndex, row)\n {\n for (let elementIndex = 0; elementIndex < this.#layout.length; elementIndex++)\n {\n this.#writeElement(view, rowIndex, elementIndex, row[elementIndex]);\n }\n }\n\n /**\n * Writes one element at its row and layout offset; a scalar supplied for a\n * four-component INT8/UINT8 element is written as a single packed 32-bit word\n * (the bone-index case).\n */\n #writeElement(view, rowIndex, elementIndex, value)\n {\n const element = this.#layout[elementIndex];\n const offset = rowIndex * this.#stride + element.offset;\n if (!Array.isArray(value))\n {\n if (element.componentCount === 4 && element.baseType === \"INT8\")\n {\n view.setInt32(offset, Number(value) | 0, true);\n return;\n }\n if (element.componentCount === 4 && element.baseType === \"UINT8\")\n {\n view.setUint32(offset, Number(value) >>> 0, true);\n return;\n }\n }\n\n const values = Array.isArray(value) ? value : [value];\n for (let index = 0; index < element.componentCount; index++)\n {\n Tr2RuntimeInstanceData.#writeComponent(\n view,\n offset + index * element.componentByteSize,\n element.baseType,\n values[index]\n );\n }\n }\n\n /**\n * Throws RangeError unless the index is an integer inside the current instance\n * count.\n */\n #assertItemIndex(index)\n {\n if (!Number.isInteger(index) || index < 0 || index >= this.count)\n {\n throw new RangeError(\"Instance index out of range\");\n }\n }\n\n /** Throws RangeError unless the index is an integer inside the current layout. */\n #assertElementIndex(index)\n {\n if (!Number.isInteger(index) || index < 0 || index >= this.#layout.length)\n {\n throw new RangeError(\"Element index out of range\");\n }\n }\n\n /**\n * Builds a full element descriptor at the given byte offset from either a {\n * usage, usageIndex, type, name } object or Carbon's legacy [particleUsage,\n * usageIndex, componentCount] triple.\n */\n static #normalizeElement(value, index, offset)\n {\n const legacy = Array.isArray(value);\n if (!legacy && (!value || typeof value !== \"object\"))\n {\n throw new TypeError(`Element ${index} must be a descriptor or legacy triple`);\n }\n\n const usageValue = legacy\n ? Tr2RuntimeInstanceData.#particleUsageToVertexUsage(value[0])\n : value.usage;\n const usage = Tr2RuntimeInstanceData.#normalizeUsage(usageValue);\n const usageIndex = Number(legacy ? value[1] : value.usageIndex ?? 0);\n if (!Number.isInteger(usageIndex) || usageIndex < 0 || usageIndex > 15)\n {\n throw new TypeError(`Element ${index} has invalid usageIndex`);\n }\n\n const type = legacy ? `FLOAT32_${Number(value[2])}` : value.type;\n const typeInfo = Tr2RuntimeInstanceData.#normalizeType(type);\n return {\n usage,\n usageCode: Tr2RuntimeInstanceData.UsageCode[usage],\n usageIndex,\n type: typeInfo.name,\n dataType: typeInfo.dataType,\n baseType: typeInfo.baseType,\n componentCount: typeInfo.componentCount,\n componentByteSize: typeInfo.componentByteSize,\n byteSize: typeInfo.componentCount * typeInfo.componentByteSize,\n offset,\n name: String(legacy ? `element${index}` : value.name ?? `element${index}`)\n };\n }\n\n /**\n * The frozen persistable summary of an element descriptor: usage, usage index,\n * type and name.\n */\n static #describeElement(value)\n {\n return {\n usage: value.usage,\n usageIndex: value.usageIndex,\n type: value.type,\n name: value.name\n };\n }\n\n /**\n * Transposes a column-major 4x4 into the three float4 rows the transform\n * instance stream stores.\n */\n static #packTransform(value)\n {\n return [\n [Number(value[0]), Number(value[4]), Number(value[8]), Number(value[12])],\n [Number(value[1]), Number(value[5]), Number(value[9]), Number(value[13])],\n [Number(value[2]), Number(value[6]), Number(value[10]), Number(value[14])]\n ];\n }\n\n /**\n * Maps a legacy particle element type index onto its vertex usage name; throws\n * for an out-of-range index.\n */\n static #particleUsageToVertexUsage(value)\n {\n const usages = [\"TANGENT\", \"POSITION\", \"NORMAL\", \"BITANGENT\", \"TEXCOORD\"];\n const index = Number(value);\n if (!Number.isInteger(index) || index < 0 || index >= usages.length)\n {\n throw new TypeError(\"Invalid legacy particle element usage\");\n }\n return usages[index];\n }\n\n /**\n * Resolves a usage given as a name or as a UsageCode number to its canonical\n * name; throws when it matches neither.\n */\n static #normalizeUsage(value)\n {\n if (typeof value === \"number\")\n {\n const entry = Object.entries(Tr2RuntimeInstanceData.UsageCode).find(([, code]) => code === value);\n if (entry) return entry[0];\n }\n const usage = String(value ?? \"\").toUpperCase();\n if (Object.hasOwn(Tr2RuntimeInstanceData.UsageCode, usage))\n {\n return usage;\n }\n throw new TypeError(`Invalid vertex usage ${String(value)}`);\n }\n\n /**\n * Decodes a data type name or code into base type, component count and\n * component byte size by unpacking Carbon's type bit-field (low three bits the\n * type, bit 3 unsigned, bits 5-6 the component count minus one).\n */\n static #normalizeType(value)\n {\n let dataType;\n let name;\n if (typeof value === \"number\")\n {\n dataType = value;\n name = Object.entries(Tr2RuntimeInstanceData.DataType).find(([, code]) => code === dataType)?.[0];\n }\n else\n {\n name = String(value ?? \"\").toUpperCase();\n dataType = Tr2RuntimeInstanceData.DataType[name];\n }\n if (!name || dataType === undefined)\n {\n throw new TypeError(`Unsupported vertex data type ${String(value)}`);\n }\n\n const typeCode = dataType & 7;\n const componentCount = ((dataType & 96) >> 5) + 1;\n const unsigned = (dataType & 8) !== 0;\n const baseTypes = [unsigned ? \"UINT8\" : \"INT8\", unsigned ? \"UINT16\" : \"INT16\", unsigned ? \"UINT32\" : \"INT32\", \"FLOAT16\", \"FLOAT32\"];\n const componentSizes = [1, 2, 4, 2, 4];\n if (!baseTypes[typeCode])\n {\n throw new TypeError(`Unsupported vertex data type ${String(value)}`);\n }\n return {\n name,\n dataType,\n baseType: baseTypes[typeCode],\n componentCount,\n componentByteSize: componentSizes[typeCode]\n };\n }\n\n /**\n * Validates and coerces one element value against its descriptor; a bare\n * number is accepted for a single-component element and for a packed four-byte\n * integer element, anything else must supply exactly componentCount finite\n * numbers.\n */\n static #normalizeElementValue(element, value, label)\n {\n if (\n !Array.isArray(value) &&\n element.componentCount === 4 &&\n (element.baseType === \"INT8\" || element.baseType === \"UINT8\") &&\n Number.isFinite(Number(value))\n )\n {\n return Number(value) | 0;\n }\n\n if (element.componentCount === 1 && !Array.isArray(value))\n {\n if (!Number.isFinite(Number(value))) throw new TypeError(`${label} must be numeric`);\n return Number(value);\n }\n if (!Array.isArray(value) && !ArrayBuffer.isView(value))\n {\n throw new TypeError(`${label} must contain ${element.componentCount} components`);\n }\n if (value.length !== element.componentCount)\n {\n throw new TypeError(`${label} must contain ${element.componentCount} components`);\n }\n const result = Array.from(value, Number);\n if (result.some(component => !Number.isFinite(component)))\n {\n throw new TypeError(`${label} components must be numeric`);\n }\n return result;\n }\n\n /**\n * Writes one little-endian component of the given base type; FLOAT16 has no\n * packer and throws.\n */\n static #writeComponent(view, offset, baseType, value)\n {\n switch (baseType)\n {\n case \"INT8\": view.setInt8(offset, value); break;\n case \"UINT8\": view.setUint8(offset, value); break;\n case \"INT16\": view.setInt16(offset, value, true); break;\n case \"UINT16\": view.setUint16(offset, value, true); break;\n case \"INT32\": view.setInt32(offset, value, true); break;\n case \"UINT32\": view.setUint32(offset, value, true); break;\n case \"FLOAT32\": view.setFloat32(offset, value, true); break;\n default: throw new TypeError(`Packing ${baseType} is not supported`);\n }\n }\n\n /** Copies array-valued elements so returned rows never alias stored data. */\n static #cloneValue(value)\n {\n return Array.isArray(value) ? value.slice() : value;\n }\n\n /**\n * Shared instanced-transform shader contract. Carbon's\n * EveChildInstanceMeshRenderer declares TEXCOORD0..6, but that collides with\n * geometry UVs and disagrees with every other instanced producer and the\n * measured ubershader inputs. The organization contract therefore uses the\n * working TEXCOORD8..14 range on stream 1.\n */\n static TransformLayout = Object.freeze([\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 8, type: \"FLOAT32_4\", name: \"transform0\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 9, type: \"FLOAT32_4\", name: \"transform1\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 10, type: \"FLOAT32_4\", name: \"transform2\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 11, type: \"FLOAT32_4\", name: \"lastTransform0\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 12, type: \"FLOAT32_4\", name: \"lastTransform1\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 13, type: \"FLOAT32_4\", name: \"lastTransform2\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 14, type: \"BYTE_4\", name: \"boneIndex\" })\n ]);\n\n static #zero = vec3.create();\n\n static UsageCode = Tr2VertexUsageCode;\n\n static DataType = Object.freeze({\n BYTE_1: 0,\n BYTE_2: 32,\n BYTE_3: 64,\n BYTE_4: 96,\n UBYTE_1: 8,\n UBYTE_2: 40,\n UBYTE_3: 72,\n UBYTE_4: 104,\n SHORT_1: 1,\n SHORT_2: 33,\n SHORT_3: 65,\n SHORT_4: 97,\n USHORT_1: 9,\n USHORT_2: 41,\n USHORT_3: 73,\n USHORT_4: 105,\n INT32_1: 2,\n INT32_2: 34,\n INT32_3: 66,\n INT32_4: 98,\n UINT32_1: 10,\n UINT32_2: 42,\n UINT32_3: 74,\n UINT32_4: 106,\n FLOAT32_1: 4,\n FLOAT32_2: 36,\n FLOAT32_3: 68,\n FLOAT32_4: 100\n });\n}\n"],"names":["_Tr2RuntimeInstanceDa","_identity","Tr2RuntimeInstanceData","_withITr2InstanceData","withITr2InstanceData","CjsModel","e","_init_name","_init_extra_name","_init_particleSystem","_init_extra_particleSystem","_init_layout","_init_extra_layout","_init_rows","_init_extra_rows","_init_explicitBoundingBox","_init_extra_explicitBoundingBox","_init_count","_init_extra_count","_init_aabbMin","_init_extra_aabbMin","_init_aabbMax","_init_extra_aabbMax","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","string","objectRef","flag","rebuild","notify","array","boolean","read","uint32","vec3","carbon","method","impl","adapted","implemented","reason","notImplemented","name","particleSystem","layout","rows","explicitBoundingBox","count","aabbMin","create","aabbMax","Object","freeze","ITr2InstanceDataInstanceData","dirty","dataRevision","Initialize","UpdateData","OnModified","_options","__state","flags","delete","SetElementLayout","DestroyData","SetData","GetItem","index","map","SetItem","row","normalized","DataView","GetItemElement","elementIndex","SetItemElement","value","UpdateBoundingBox","positionIndex","findIndex","element","usage","usageIndex","componentCount","set","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","position","axis","component","Math","min","max","SetBoundingBox","bounds","maxBounds","undefined","minBounds","TypeError","copy","GetBoundingBox","clone","GetInstanceBufferBoundingBox","_bufferIndex","GetCount","GetStride","GetLayout","GetData","Uint8Array","IsInstanceDataReady","length","GetInstanceData","_screenSize","buffer","offset","stride","GetInstanceBufferVertexDeclaration","Spawn","isValid","declaration","GetElementDeclaration","Map","mappings","values","elementType","Tr2ParticleElementDeclaration","Type","CUSTOM","layoutIndex","item","baseType","dimension","push","ClearParticles","particleIndex","BeginSpawnParticle","mapping","SetParticleElement","key","EndSpawnParticle","Update","_arguments","SpawnParticles","_args","SetThreadSafeFlag","SaveToCMF","args","Error","SaveToGranny","SetTransformInstances","instances","Array","isArray","fromValues","maxScale","transform","ArrayBuffer","isView","previousTransform","currentRows","previousRows","boneIndex","hypot","TransformLayout","#rebuildCpuData","#setElementLayout","descriptor","byteSize","#setData","normalizedRows","data","view","#normalizeRow","rowIndex","#writeRow","#writeElement","setInt32","setUint32","componentByteSize","#assertItemIndex","isInteger","RangeError","#assertElementIndex","#normalizeElement","legacy","usageValue","typeInfo","usageCode","UsageCode","dataType","String","#describeElement","#packTransform","#particleUsageToVertexUsage","usages","#normalizeUsage","entry","entries","find","code","toUpperCase","hasOwn","#normalizeType","DataType","typeCode","unsigned","baseTypes","componentSizes","#normalizeElementValue","label","isFinite","result","from","some","#writeComponent","setInt8","setUint8","setInt16","setUint16","setFloat32","#cloneValue","slice","Tr2VertexUsageCode","BYTE_1","BYTE_2","BYTE_3","BYTE_4","UBYTE_1","UBYTE_2","UBYTE_3","UBYTE_4","SHORT_1","SHORT_2","SHORT_3","SHORT_4","USHORT_1","USHORT_2","USHORT_3","USHORT_4","INT32_1","INT32_2","INT32_3","INT32_4","UINT32_1","UINT32_2","UINT32_3","UINT32_4","FLOAT32_1","FLOAT32_2","FLOAT32_3","FLOAT32_4","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2RuntimeInstanceData.js","sources":["../../../../../src/trinity/core/mesh/Tr2RuntimeInstanceData.js"],"sourcesContent":["// Source: trinity/trinity/Tr2RuntimeInstanceData.h\n// Source: trinity/trinity/Tr2RuntimeInstanceData.cpp\n// Source: trinity/trinity/Tr2RuntimeInstanceData_Blue.cpp\nimport { vec3 } from \"#math/vec3\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, io, type } from \"#schema\";\nimport { Tr2ParticleElementDeclaration } from \"../../particle/element/Tr2ParticleElementDeclaration.js\";\nimport { Tr2VertexUsageCode } from \"../vertex/usageCode.js\";\nimport { ITr2InstanceDataInstanceData, withITr2InstanceData } from \"./ITr2InstanceData/index.js\";\n\n\n/**\n * Owns a CPU-side instance stream - a vertex element layout, the packed\n * per-instance rows and their bounding box - and can spawn the same rows into a\n * particle system on demand.\n */\n@type.define({ className: \"Tr2RuntimeInstanceData\", family: \"trinityCore\" })\nexport class Tr2RuntimeInstanceData extends withITr2InstanceData(CjsModel)\n{\n @io.persist\n @type.string\n name = \"\";\n\n @io.persist\n @type.objectRef(\"Tr2ParticleSystem\")\n particleSystem = null;\n\n // DIVERGENCE (deliberate): Carbon only Blue-persists name/particleSystem and\n // exposes aabbMin/aabbMax as Be::READ; layout/rows/explicitBoundingBox are\n // private, fed at runtime via SetElementLayout/SetData/SetBoundingBox.\n // The JS port persists the whole quintet so instance data authored in JS can\n // round-trip without Carbon's Python/CMF side channels. Carbon-authored\n // .black files never populate these fields.\n @io.flag(\"cpuData\")\n @io.rebuild(\"instanceBuffer\")\n @io.notify\n @io.persist\n @type.array(\"unknown\")\n layout = [];\n\n @io.flag(\"cpuData\")\n @io.rebuild(\"instanceBuffer\")\n @io.notify\n @io.persist\n @type.array(\"unknown\")\n rows = [];\n\n @io.persist\n @type.boolean\n explicitBoundingBox = false;\n\n @io.read\n @type.uint32\n count = 0;\n\n @io.persist\n @type.vec3\n aabbMin = vec3.create();\n\n @io.persist\n @type.vec3\n aabbMax = vec3.create();\n\n #layout = Object.freeze([]);\n\n #data = null;\n\n #stride = 0;\n\n #dirty = false;\n\n #dataRevision = 0;\n\n #instanceData = new ITr2InstanceDataInstanceData();\n\n /** True when rows or layout have changed since the last UpdateData. */\n get dirty()\n {\n return this.#dirty;\n }\n\n /**\n * Counter bumped by every UpdateData that publishes a dirty change; consumers\n * compare it to detect that the packed bytes were republished.\n */\n get dataRevision()\n {\n return this.#dataRevision;\n }\n\n /**\n * Repacks the CPU buffer from the persisted layout and rows, then publishes\n * it.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n this.#rebuildCpuData();\n this.UpdateData();\n return true;\n }\n\n /**\n * Repacks the CPU buffer only when the cpuData flag was scheduled, i.e. layout\n * or rows actually changed.\n */\n @carbon.method\n @impl.adapted\n OnModified(_options = {})\n {\n if (this.__state.flags.delete(\"cpuData\"))\n {\n this.#rebuildCpuData();\n }\n return true;\n }\n\n /**\n * Replaces the element layout and discards every existing row - a layout must\n * be set before any SetData.\n */\n @carbon.method\n @impl.adapted\n SetElementLayout(layout)\n {\n this.#setElementLayout(layout);\n this.DestroyData();\n }\n\n /**\n * Replaces all instance rows and repacks the byte buffer; throws when no\n * layout has been set.\n */\n @carbon.method\n @impl.adapted\n SetData(rows)\n {\n this.#setData(rows);\n }\n\n /**\n * A detached copy of one instance row, with its component arrays cloned so the\n * caller cannot alias stored data.\n */\n @carbon.method\n @impl.implemented\n GetItem(index)\n {\n this.#assertItemIndex(index);\n return this.rows[index].map(Tr2RuntimeInstanceData.#cloneValue);\n }\n\n /**\n * Validates one instance row against the layout, stores it and rewrites its\n * bytes in place, marking the data dirty.\n */\n @carbon.method\n @impl.adapted\n SetItem(index, row)\n {\n this.#assertItemIndex(index);\n const normalized = this.#normalizeRow(row, index);\n this.rows[index] = normalized;\n this.#writeRow(new DataView(this.#data), index, normalized);\n this.#dirty = true;\n }\n\n /** A detached copy of one element of one instance row. */\n @carbon.method\n @impl.implemented\n GetItemElement(index, elementIndex)\n {\n this.#assertItemIndex(index);\n this.#assertElementIndex(elementIndex);\n return Tr2RuntimeInstanceData.#cloneValue(this.rows[index][elementIndex]);\n }\n\n /**\n * Validates and stores a single element of one row, patching only that\n * element's bytes in the packed buffer.\n */\n @carbon.method\n @impl.adapted\n SetItemElement(index, elementIndex, value)\n {\n this.#assertItemIndex(index);\n this.#assertElementIndex(elementIndex);\n const normalized = Tr2RuntimeInstanceData.#normalizeElementValue(\n this.#layout[elementIndex],\n value,\n `Instance ${index} element ${elementIndex}`\n );\n this.rows[index][elementIndex] = normalized;\n this.#writeElement(new DataView(this.#data), index, elementIndex, normalized);\n this.#dirty = true;\n }\n\n /**\n * Publishes pending changes by clearing the dirty flag and bumping the data\n * revision; returns false when nothing was dirty.\n */\n @carbon.method\n @impl.adapted\n UpdateData()\n {\n if (!this.#dirty)\n {\n return false;\n }\n this.#dirty = false;\n this.#dataRevision++;\n return true;\n }\n\n /**\n * Recomputes the box from the first POSITION element with at least three\n * components; returns false without touching it when the box was set\n * explicitly, and zeroes the box when there is no such element or no\n * instances.\n */\n @carbon.method\n @impl.adapted\n UpdateBoundingBox()\n {\n if (this.explicitBoundingBox)\n {\n return false;\n }\n\n const positionIndex = this.#layout.findIndex(element =>\n element.usage === \"POSITION\" && element.usageIndex === 0 && element.componentCount >= 3\n );\n if (positionIndex === -1 || this.count === 0)\n {\n vec3.set(this.aabbMin, 0, 0, 0);\n vec3.set(this.aabbMax, 0, 0, 0);\n return false;\n }\n\n vec3.set(this.aabbMin, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);\n vec3.set(this.aabbMax, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);\n for (const row of this.rows)\n {\n const position = row[positionIndex];\n for (let axis = 0; axis < 3; axis++)\n {\n const component = Number(position[axis]) || 0;\n this.aabbMin[axis] = Math.min(this.aabbMin[axis], component);\n this.aabbMax[axis] = Math.max(this.aabbMax[axis], component);\n }\n }\n return true;\n }\n\n /**\n * Sets the box explicitly from either a { min, max } object or two vectors,\n * and latches explicitBoundingBox so UpdateBoundingBox stops recomputing it.\n */\n @carbon.method\n @impl.adapted\n SetBoundingBox(bounds, maxBounds)\n {\n const min = maxBounds === undefined ? bounds?.min ?? bounds?.minBounds : bounds;\n const max = maxBounds === undefined ? bounds?.max ?? bounds?.maxBounds : maxBounds;\n if (!min || !max)\n {\n throw new TypeError(\"Bounding box requires min and max vectors\");\n }\n vec3.copy(this.aabbMin, min);\n vec3.copy(this.aabbMax, max);\n this.explicitBoundingBox = true;\n }\n\n /**\n * Reads the bounding box; the values are copied into the caller's vectors when both are supplied, otherwise a freshly cloned pair is returned.\n * @param {vec3} [minBounds] Caller-owned destination for the minimum.\n * @param {vec3} [maxBounds] Caller-owned destination for the maximum.\n * @returns {boolean|{min: vec3, max: vec3}} True when written into the out vectors, otherwise a new { min, max } pair.\n */\n @carbon.method\n @impl.implemented\n GetBoundingBox(minBounds, maxBounds)\n {\n if (minBounds && maxBounds)\n {\n vec3.copy(minBounds, this.aabbMin);\n vec3.copy(maxBounds, this.aabbMax);\n return true;\n }\n return {\n min: vec3.clone(this.aabbMin),\n max: vec3.clone(this.aabbMax)\n };\n }\n\n /**\n * The bounding box of the single CPU instance buffer; the buffer index is\n * ignored because only one stream exists.\n */\n @carbon.method\n @impl.implemented\n GetInstanceBufferBoundingBox(_bufferIndex = 0)\n {\n return this.GetBoundingBox();\n }\n\n /** Number of packed instance rows. */\n @carbon.method\n @impl.implemented\n GetCount()\n {\n return this.count;\n }\n\n /** Byte size of one packed row, summed from the element layout. */\n @carbon.method\n @impl.implemented\n GetStride()\n {\n return this.#stride;\n }\n\n /**\n * The frozen normalized element descriptors, each carrying usage, type,\n * component count, byte size and byte offset.\n */\n @carbon.method\n @impl.implemented\n GetLayout()\n {\n return this.#layout;\n }\n\n /**\n * A copy of the packed instance bytes, or null when no rows are set; the\n * caller owns the returned array.\n */\n @carbon.method\n @impl.adapted\n GetData()\n {\n return this.#data ? new Uint8Array(this.#data) : null;\n }\n\n /**\n * CPU readiness for the nominal ITr2InstanceData contract. Carbon also tests\n * the realized vertex declaration and GPU buffer; those are engine-owned in\n * CarbonEngineJS, so Trinity reports whether a published layout and byte\n * payload are available for realization.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Physical vertex-declaration and buffer readiness belongs to the engine; Trinity reports published CPU layout/bytes.\")\n IsInstanceDataReady()\n {\n return this.#layout.length > 0 && this.#data !== null && !this.#dirty;\n }\n\n /**\n * Returns the published CPU byte buffer and its row geometry. The buffer is\n * borrowed, matching Carbon's borrowed AL buffer reference.\n */\n @impl.adapted\n @impl.reason(\"The CPU ArrayBuffer replaces Carbon's realized Tr2BufferAL; the selected engine uploads or aliases it.\")\n GetInstanceData(_bufferIndex = 0, _screenSize = 0)\n {\n this.#instanceData.buffer = this.#data;\n this.#instanceData.offset = 0;\n this.#instanceData.stride = this.#stride;\n this.#instanceData.count = this.count;\n return this.#instanceData;\n }\n\n /** Returns the normalized CPU vertex layout an engine must realize. */\n @impl.adapted\n @impl.reason(\"The normalized layout replaces Carbon's engine-owned numeric vertex-declaration handle.\")\n GetInstanceBufferVertexDeclaration(_bufferIndex = 0)\n {\n return this.#layout;\n }\n\n /**\n * Drops every row and the packed buffer while keeping the layout, and marks\n * the data dirty.\n */\n @carbon.method\n @impl.adapted\n DestroyData()\n {\n this.rows = [];\n this.#data = null;\n this.count = 0;\n this.#dirty = true;\n }\n\n /**\n * Replaces the target particle system with particles decoded from the CPU\n * instance rows.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Maps Carbon vertex semantics into the maintained CPU particle-system declaration without GPU buffers.\")\n Spawn()\n {\n const particleSystem = this.particleSystem;\n if (!particleSystem?.isValid || !this.#layout.length || !this.#data)\n {\n return;\n }\n\n const declaration = particleSystem.GetElementDeclaration();\n if (!(declaration instanceof Map))\n {\n throw new TypeError(\"Tr2ParticleSystem.GetElementDeclaration must return the CPU declaration Map.\");\n }\n\n const mappings = [];\n for (const element of declaration.values())\n {\n const usage = Tr2RuntimeInstanceData.#particleUsageToVertexUsage(element.elementType);\n const usageIndex = element.elementType === Tr2ParticleElementDeclaration.Type.CUSTOM\n ? element.usageIndex\n : 0;\n const layoutIndex = this.#layout.findIndex(item =>\n item.usage === usage && item.usageIndex === usageIndex\n );\n if (layoutIndex === -1)\n {\n return;\n }\n\n const layout = this.#layout[layoutIndex];\n if (layout.baseType !== \"FLOAT32\" || layout.componentCount < element.dimension)\n {\n return;\n }\n mappings.push({ element, layoutIndex });\n }\n\n particleSystem.ClearParticles();\n for (const row of this.rows)\n {\n const particleIndex = particleSystem.BeginSpawnParticle();\n if (particleIndex === null)\n {\n break;\n }\n for (const mapping of mappings)\n {\n particleSystem.SetParticleElement(\n particleIndex,\n mapping.element.key,\n row[mapping.layoutIndex]\n );\n }\n particleSystem.EndSpawnParticle();\n }\n }\n\n /**\n * Implements ITr2GenericEmitter. Does nothing as this emitter only emits\n * particles on demand (Spawn).\n */\n @carbon.method\n @impl.implemented\n Update(_arguments)\n {\n }\n\n /**\n * Implements ITr2GenericEmitter. Does nothing as this emitter only emits\n * particles on demand (Spawn); both Carbon overloads are deliberate no-ops.\n */\n @carbon.method\n @impl.implemented\n SpawnParticles(..._args)\n {\n }\n\n /**\n * Implements ITr2GenericEmitter. Nothing to prepare - this emitter never\n * spawns from the threaded particle update.\n */\n @carbon.method\n @impl.implemented\n SetThreadSafeFlag()\n {\n }\n\n /** Carbon's CMF writer requires the native resource-path and file encoder. */\n @carbon.method\n @impl.notImplemented\n SaveToCMF(...args)\n {\n throw new Error(\"Tr2RuntimeInstanceData.SaveToCMF is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon's Granny writer requires the native Granny SDK and filesystem. */\n @carbon.method\n @impl.notImplemented\n SaveToGranny(...args)\n {\n throw new Error(\"Tr2RuntimeInstanceData.SaveToGranny is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Builds Carbon's common current/previous-transform instance stream without\n * creating renderer or GPU resources.\n *\n * @param {Array<object|ArrayLike<number>>} instances\n * @returns {number} Maximum instance scale.\n */\n SetTransformInstances(instances)\n {\n if (!Array.isArray(instances))\n {\n throw new TypeError(\"Transform instances must be an array\");\n }\n\n const rows = [];\n const min = vec3.fromValues(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);\n const max = vec3.fromValues(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);\n let maxScale = 0;\n for (let index = 0; index < instances.length; index++)\n {\n const value = instances[index];\n const transform = Array.isArray(value) || ArrayBuffer.isView(value)\n ? value\n : value?.transform;\n const previousTransform = value?.previousTransform ?? transform;\n if (!transform || transform.length !== 16)\n {\n throw new TypeError(`Transform instance ${index} must contain 16 transform values`);\n }\n if (!previousTransform || previousTransform.length !== 16)\n {\n throw new TypeError(`Transform instance ${index} must contain 16 previous-transform values`);\n }\n\n const currentRows = Tr2RuntimeInstanceData.#packTransform(transform);\n const previousRows = Tr2RuntimeInstanceData.#packTransform(previousTransform);\n rows.push([\n ...currentRows,\n ...previousRows,\n Number(value?.boneIndex ?? 0) | 0\n ]);\n\n for (let axis = 0; axis < 3; axis++)\n {\n min[axis] = Math.min(min[axis], Number(transform[12 + axis]) || 0);\n max[axis] = Math.max(max[axis], Number(transform[12 + axis]) || 0);\n }\n for (const row of currentRows)\n {\n maxScale = Math.max(maxScale, Math.hypot(row[0], row[1], row[2]));\n }\n }\n\n this.SetElementLayout(Tr2RuntimeInstanceData.TransformLayout);\n this.SetData(rows);\n this.SetBoundingBox(\n instances.length ? min : Tr2RuntimeInstanceData.#zero,\n instances.length ? max : Tr2RuntimeInstanceData.#zero\n );\n this.UpdateData();\n return maxScale;\n }\n\n /**\n * Re-normalizes the persisted layout and repacks the persisted rows; throws\n * when rows exist but the layout is empty.\n */\n #rebuildCpuData()\n {\n const rows = this.rows;\n this.#setElementLayout(this.layout);\n if (!this.#layout.length)\n {\n if (rows.length)\n {\n throw new Error(\"SetElementLayout must be called before SetData\");\n }\n this.rows = [];\n this.#data = null;\n this.count = 0;\n this.#dirty = true;\n return;\n }\n this.#setData(rows);\n }\n\n /**\n * Normalizes each element descriptor, assigns sequential byte offsets,\n * computes the row stride and republishes the persisted layout summary.\n */\n #setElementLayout(layout)\n {\n if (!Array.isArray(layout))\n {\n throw new TypeError(\"Element layout must be an array\");\n }\n\n let offset = 0;\n const normalized = layout.map((value, index) =>\n {\n const descriptor = Tr2RuntimeInstanceData.#normalizeElement(value, index, offset);\n offset += descriptor.byteSize;\n return descriptor;\n });\n\n this.layout = normalized.map(Tr2RuntimeInstanceData.#describeElement);\n this.#layout = normalized;\n this.#stride = offset;\n }\n\n /**\n * Normalizes every row against the layout and packs them into one freshly\n * allocated little-endian buffer.\n */\n #setData(rows)\n {\n if (!this.#layout.length)\n {\n throw new Error(\"SetElementLayout must be called before SetData\");\n }\n if (!Array.isArray(rows))\n {\n throw new TypeError(\"Instance data must be an array\");\n }\n\n const normalizedRows = rows.map((row, index) => this.#normalizeRow(row, index));\n const data = normalizedRows.length ? new ArrayBuffer(this.#stride * normalizedRows.length) : null;\n const view = data ? new DataView(data) : null;\n for (let index = 0; index < normalizedRows.length; index++)\n {\n this.#writeRow(view, index, normalizedRows[index]);\n }\n\n this.rows = normalizedRows;\n this.#data = data;\n this.count = normalizedRows.length;\n this.#dirty = true;\n }\n\n /**\n * Coerces a row given either as an array or as a name-keyed object into layout\n * order and validates each element.\n */\n #normalizeRow(row, rowIndex)\n {\n const values = Array.isArray(row)\n ? row\n : this.#layout.map(element => row?.[element.name]);\n if (values.length !== this.#layout.length)\n {\n throw new TypeError(`Instance ${rowIndex} must contain ${this.#layout.length} elements`);\n }\n return values.map((value, elementIndex) => Tr2RuntimeInstanceData.#normalizeElementValue(\n this.#layout[elementIndex],\n value,\n `Instance ${rowIndex} element ${elementIndex}`\n ));\n }\n\n /** Writes every element of one normalized row into the packed buffer. */\n #writeRow(view, rowIndex, row)\n {\n for (let elementIndex = 0; elementIndex < this.#layout.length; elementIndex++)\n {\n this.#writeElement(view, rowIndex, elementIndex, row[elementIndex]);\n }\n }\n\n /**\n * Writes one element at its row and layout offset; a scalar supplied for a\n * four-component INT8/UINT8 element is written as a single packed 32-bit word\n * (the bone-index case).\n */\n #writeElement(view, rowIndex, elementIndex, value)\n {\n const element = this.#layout[elementIndex];\n const offset = rowIndex * this.#stride + element.offset;\n if (!Array.isArray(value))\n {\n if (element.componentCount === 4 && element.baseType === \"INT8\")\n {\n view.setInt32(offset, Number(value) | 0, true);\n return;\n }\n if (element.componentCount === 4 && element.baseType === \"UINT8\")\n {\n view.setUint32(offset, Number(value) >>> 0, true);\n return;\n }\n }\n\n const values = Array.isArray(value) ? value : [value];\n for (let index = 0; index < element.componentCount; index++)\n {\n Tr2RuntimeInstanceData.#writeComponent(\n view,\n offset + index * element.componentByteSize,\n element.baseType,\n values[index]\n );\n }\n }\n\n /**\n * Throws RangeError unless the index is an integer inside the current instance\n * count.\n */\n #assertItemIndex(index)\n {\n if (!Number.isInteger(index) || index < 0 || index >= this.count)\n {\n throw new RangeError(\"Instance index out of range\");\n }\n }\n\n /** Throws RangeError unless the index is an integer inside the current layout. */\n #assertElementIndex(index)\n {\n if (!Number.isInteger(index) || index < 0 || index >= this.#layout.length)\n {\n throw new RangeError(\"Element index out of range\");\n }\n }\n\n /**\n * Builds a full element descriptor at the given byte offset from either a {\n * usage, usageIndex, type, name } object or Carbon's legacy [particleUsage,\n * usageIndex, componentCount] triple.\n */\n static #normalizeElement(value, index, offset)\n {\n const legacy = Array.isArray(value);\n if (!legacy && (!value || typeof value !== \"object\"))\n {\n throw new TypeError(`Element ${index} must be a descriptor or legacy triple`);\n }\n\n const usageValue = legacy\n ? Tr2RuntimeInstanceData.#particleUsageToVertexUsage(value[0])\n : value.usage;\n const usage = Tr2RuntimeInstanceData.#normalizeUsage(usageValue);\n const usageIndex = Number(legacy ? value[1] : value.usageIndex ?? 0);\n if (!Number.isInteger(usageIndex) || usageIndex < 0 || usageIndex > 15)\n {\n throw new TypeError(`Element ${index} has invalid usageIndex`);\n }\n\n const type = legacy ? `FLOAT32_${Number(value[2])}` : value.type;\n const typeInfo = Tr2RuntimeInstanceData.#normalizeType(type);\n return {\n usage,\n usageCode: Tr2RuntimeInstanceData.UsageCode[usage],\n usageIndex,\n type: typeInfo.name,\n dataType: typeInfo.dataType,\n baseType: typeInfo.baseType,\n componentCount: typeInfo.componentCount,\n componentByteSize: typeInfo.componentByteSize,\n byteSize: typeInfo.componentCount * typeInfo.componentByteSize,\n offset,\n name: String(legacy ? `element${index}` : value.name ?? `element${index}`)\n };\n }\n\n /**\n * The frozen persistable summary of an element descriptor: usage, usage index,\n * type and name.\n */\n static #describeElement(value)\n {\n return {\n usage: value.usage,\n usageIndex: value.usageIndex,\n type: value.type,\n name: value.name\n };\n }\n\n /**\n * Transposes a column-major 4x4 into the three float4 rows the transform\n * instance stream stores.\n */\n static #packTransform(value)\n {\n return [\n [Number(value[0]), Number(value[4]), Number(value[8]), Number(value[12])],\n [Number(value[1]), Number(value[5]), Number(value[9]), Number(value[13])],\n [Number(value[2]), Number(value[6]), Number(value[10]), Number(value[14])]\n ];\n }\n\n /**\n * Maps a legacy particle element type index onto its vertex usage name; throws\n * for an out-of-range index.\n */\n static #particleUsageToVertexUsage(value)\n {\n const usages = [\"TANGENT\", \"POSITION\", \"NORMAL\", \"BITANGENT\", \"TEXCOORD\"];\n const index = Number(value);\n if (!Number.isInteger(index) || index < 0 || index >= usages.length)\n {\n throw new TypeError(\"Invalid legacy particle element usage\");\n }\n return usages[index];\n }\n\n /**\n * Resolves a usage given as a name or as a UsageCode number to its canonical\n * name; throws when it matches neither.\n */\n static #normalizeUsage(value)\n {\n if (typeof value === \"number\")\n {\n const entry = Object.entries(Tr2RuntimeInstanceData.UsageCode).find(([, code]) => code === value);\n if (entry) return entry[0];\n }\n const usage = String(value ?? \"\").toUpperCase();\n if (Object.hasOwn(Tr2RuntimeInstanceData.UsageCode, usage))\n {\n return usage;\n }\n throw new TypeError(`Invalid vertex usage ${String(value)}`);\n }\n\n /**\n * Decodes a data type name or code into base type, component count and\n * component byte size by unpacking Carbon's type bit-field (low three bits the\n * type, bit 3 unsigned, bits 5-6 the component count minus one).\n */\n static #normalizeType(value)\n {\n let dataType;\n let name;\n if (typeof value === \"number\")\n {\n dataType = value;\n name = Object.entries(Tr2RuntimeInstanceData.DataType).find(([, code]) => code === dataType)?.[0];\n }\n else\n {\n name = String(value ?? \"\").toUpperCase();\n dataType = Tr2RuntimeInstanceData.DataType[name];\n }\n if (!name || dataType === undefined)\n {\n throw new TypeError(`Unsupported vertex data type ${String(value)}`);\n }\n\n const typeCode = dataType & 7;\n const componentCount = ((dataType & 96) >> 5) + 1;\n const unsigned = (dataType & 8) !== 0;\n const baseTypes = [unsigned ? \"UINT8\" : \"INT8\", unsigned ? \"UINT16\" : \"INT16\", unsigned ? \"UINT32\" : \"INT32\", \"FLOAT16\", \"FLOAT32\"];\n const componentSizes = [1, 2, 4, 2, 4];\n if (!baseTypes[typeCode])\n {\n throw new TypeError(`Unsupported vertex data type ${String(value)}`);\n }\n return {\n name,\n dataType,\n baseType: baseTypes[typeCode],\n componentCount,\n componentByteSize: componentSizes[typeCode]\n };\n }\n\n /**\n * Validates and coerces one element value against its descriptor; a bare\n * number is accepted for a single-component element and for a packed four-byte\n * integer element, anything else must supply exactly componentCount finite\n * numbers.\n */\n static #normalizeElementValue(element, value, label)\n {\n if (\n !Array.isArray(value) &&\n element.componentCount === 4 &&\n (element.baseType === \"INT8\" || element.baseType === \"UINT8\") &&\n Number.isFinite(Number(value))\n )\n {\n return Number(value) | 0;\n }\n\n if (element.componentCount === 1 && !Array.isArray(value))\n {\n if (!Number.isFinite(Number(value))) throw new TypeError(`${label} must be numeric`);\n return Number(value);\n }\n if (!Array.isArray(value) && !ArrayBuffer.isView(value))\n {\n throw new TypeError(`${label} must contain ${element.componentCount} components`);\n }\n if (value.length !== element.componentCount)\n {\n throw new TypeError(`${label} must contain ${element.componentCount} components`);\n }\n const result = Array.from(value, Number);\n if (result.some(component => !Number.isFinite(component)))\n {\n throw new TypeError(`${label} components must be numeric`);\n }\n return result;\n }\n\n /**\n * Writes one little-endian component of the given base type; FLOAT16 has no\n * packer and throws.\n */\n static #writeComponent(view, offset, baseType, value)\n {\n switch (baseType)\n {\n case \"INT8\": view.setInt8(offset, value); break;\n case \"UINT8\": view.setUint8(offset, value); break;\n case \"INT16\": view.setInt16(offset, value, true); break;\n case \"UINT16\": view.setUint16(offset, value, true); break;\n case \"INT32\": view.setInt32(offset, value, true); break;\n case \"UINT32\": view.setUint32(offset, value, true); break;\n case \"FLOAT32\": view.setFloat32(offset, value, true); break;\n default: throw new TypeError(`Packing ${baseType} is not supported`);\n }\n }\n\n /** Copies array-valued elements so returned rows never alias stored data. */\n static #cloneValue(value)\n {\n return Array.isArray(value) ? value.slice() : value;\n }\n\n /**\n * Shared instanced-transform shader contract. Carbon's\n * EveChildInstanceMeshRenderer declares TEXCOORD0..6, but that collides with\n * geometry UVs and disagrees with every other instanced producer and the\n * measured ubershader inputs. The organization contract therefore uses the\n * working TEXCOORD8..14 range on stream 1.\n */\n static TransformLayout = Object.freeze([\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 8, type: \"FLOAT32_4\", name: \"transform0\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 9, type: \"FLOAT32_4\", name: \"transform1\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 10, type: \"FLOAT32_4\", name: \"transform2\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 11, type: \"FLOAT32_4\", name: \"lastTransform0\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 12, type: \"FLOAT32_4\", name: \"lastTransform1\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 13, type: \"FLOAT32_4\", name: \"lastTransform2\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 14, type: \"BYTE_4\", name: \"boneIndex\" })\n ]);\n\n static #zero = vec3.create();\n\n static UsageCode = Tr2VertexUsageCode;\n\n static DataType = Object.freeze({\n BYTE_1: 0,\n BYTE_2: 32,\n BYTE_3: 64,\n BYTE_4: 96,\n UBYTE_1: 8,\n UBYTE_2: 40,\n UBYTE_3: 72,\n UBYTE_4: 104,\n SHORT_1: 1,\n SHORT_2: 33,\n SHORT_3: 65,\n SHORT_4: 97,\n USHORT_1: 9,\n USHORT_2: 41,\n USHORT_3: 73,\n USHORT_4: 105,\n INT32_1: 2,\n INT32_2: 34,\n INT32_3: 66,\n INT32_4: 98,\n UINT32_1: 10,\n UINT32_2: 42,\n UINT32_3: 74,\n UINT32_4: 106,\n FLOAT32_1: 4,\n FLOAT32_2: 36,\n FLOAT32_3: 68,\n FLOAT32_4: 100\n });\n}\n"],"names":["_Tr2RuntimeInstanceDa","_identity","Tr2RuntimeInstanceData","_withITr2InstanceData","withITr2InstanceData","CjsModel","e","_init_name","_init_extra_name","_init_particleSystem","_init_extra_particleSystem","_init_layout","_init_extra_layout","_init_rows","_init_extra_rows","_init_explicitBoundingBox","_init_extra_explicitBoundingBox","_init_count","_init_extra_count","_init_aabbMin","_init_extra_aabbMin","_init_aabbMax","_init_extra_aabbMax","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","string","objectRef","flag","rebuild","notify","array","boolean","read","uint32","vec3","carbon","method","impl","adapted","implemented","reason","notImplemented","name","particleSystem","layout","rows","explicitBoundingBox","count","aabbMin","create","aabbMax","Object","freeze","ITr2InstanceDataInstanceData","dirty","dataRevision","Initialize","UpdateData","OnModified","_options","__state","flags","delete","SetElementLayout","DestroyData","SetData","GetItem","index","map","SetItem","row","normalized","DataView","GetItemElement","elementIndex","SetItemElement","value","UpdateBoundingBox","positionIndex","findIndex","element","usage","usageIndex","componentCount","set","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","position","axis","component","Math","min","max","SetBoundingBox","bounds","maxBounds","undefined","minBounds","TypeError","copy","GetBoundingBox","clone","GetInstanceBufferBoundingBox","_bufferIndex","GetCount","GetStride","GetLayout","GetData","Uint8Array","IsInstanceDataReady","length","GetInstanceData","_screenSize","buffer","offset","stride","GetInstanceBufferVertexDeclaration","Spawn","isValid","declaration","GetElementDeclaration","Map","mappings","values","elementType","Tr2ParticleElementDeclaration","Type","CUSTOM","layoutIndex","item","baseType","dimension","push","ClearParticles","particleIndex","BeginSpawnParticle","mapping","SetParticleElement","key","EndSpawnParticle","Update","_arguments","SpawnParticles","_args","SetThreadSafeFlag","SaveToCMF","args","Error","SaveToGranny","SetTransformInstances","instances","Array","isArray","fromValues","maxScale","transform","ArrayBuffer","isView","previousTransform","currentRows","previousRows","boneIndex","hypot","TransformLayout","#rebuildCpuData","#setElementLayout","descriptor","byteSize","#setData","normalizedRows","data","view","#normalizeRow","rowIndex","#writeRow","#writeElement","setInt32","setUint32","componentByteSize","#assertItemIndex","isInteger","RangeError","#assertElementIndex","#normalizeElement","legacy","usageValue","typeInfo","usageCode","UsageCode","dataType","String","#describeElement","#packTransform","#particleUsageToVertexUsage","usages","#normalizeUsage","entry","entries","find","code","toUpperCase","hasOwn","#normalizeType","DataType","typeCode","unsigned","baseTypes","componentSizes","#normalizeElementValue","label","isFinite","result","from","some","#writeComponent","setInt8","setUint8","setInt16","setUint16","setFloat32","#cloneValue","slice","Tr2VertexUsageCode","BYTE_1","BYTE_2","BYTE_3","BYTE_4","UBYTE_1","UBYTE_2","UBYTE_3","UBYTE_4","SHORT_1","SHORT_2","SHORT_3","SHORT_4","USHORT_1","USHORT_2","USHORT_3","USHORT_4","INT32_1","INT32_2","INT32_3","INT32_4","UINT32_1","UINT32_2","UINT32_3","UINT32_4","FLOAT32_1","FLOAT32_2","FLOAT32_3","FLOAT32_4","constructor"],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { PackLodGeometry } from '#resource/geometry/pack';
|
|
2
2
|
import { Tr2GpuUsage } from '#consts/render-context';
|
|
3
|
-
import { Tr2SuballocatedBuffer } from '../device/Tr2SuballocatedBuffer.js';
|
|
4
|
-
import { Tr2RenderBatch } from '../batch/Tr2RenderBatch.js';
|
|
3
|
+
import { Tr2SuballocatedBuffer } from '../device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js';
|
|
4
|
+
import { Tr2RenderBatch } from '../batch/TriRenderBatch/Tr2RenderBatch.js';
|
|
5
|
+
import '../batch/TriRenderBatch/DefaultKeyGenerator.js';
|
|
6
|
+
import '../batch/TriRenderBatch/EffectKeyGenerator.js';
|
|
7
|
+
import '../batch/TriRenderBatch/ITriRenderBatchAccumulator.js';
|
|
8
|
+
import '#consts/graphics';
|
|
5
9
|
|
|
6
10
|
// Source: trinity/trinity/Resources/TriGeometryRes.cpp:33-38, :2019-2140
|
|
7
11
|
// trinity/trinity/Tr2MeshBase.cpp:341-394
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriGeometryResAllocations.js","sources":["../../../../../src/trinity/core/mesh/TriGeometryResAllocations.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGeometryRes.cpp:33-38, :2019-2140\n// trinity/trinity/Tr2MeshBase.cpp:341-394\n//\n// Carbon's `TriGeometryRes::CreateLodFromCMFMesh`: a LOD's vertex bytes, its\n// indices, and a REVERSED copy of the indices go into the process-wide shared\n// geometry buffer, and the LOD remembers its allocations\n// (`lod->m_vertexAllocation`, `m_indexAllocation`, `m_reversedIndexAllocation`,\n// `m_allocationsValid`). `CreateGeometryBatch` then binds the allocations onto\n// the batch and folds their offsets into the draw arguments.\n//\n// WHERE OURS DIFFERS. Carbon does this at load, inside the resource, through\n// the main-thread context. Our geometry resource lives in a layer that cannot\n// reach a context, so the allocations are made at the FIRST SUBMIT of a batch\n// that needs them, through the submitting context - `Tr2RenderContext.SubmitGeometry`\n// calls `RealizeBatchGeometry`. The LOD object is the payload's own, and the\n// fields set on it are the ones `Tr2RenderBatch.resolveDrawArguments` already\n// reads.\n//\n// The vertex bytes come from `PackLodGeometry`, which interleaves the payload's\n// channels by the declaration (Carbon uploads the file's interleaved view\n// verbatim; our payload is deinterleaved, so the packer is the inverse of the\n// reader) and re-strides to a multiple of four.\nimport { PackLodGeometry } from \"#resource/geometry/pack\";\nimport { Tr2GpuUsage } from \"#consts/render-context\";\nimport { Tr2SuballocatedBuffer } from \"../device/Tr2SuballocatedBuffer.js\";\nimport { Tr2RenderBatch } from \"../batch/Tr2RenderBatch.js\";\n\n\n/**\n * Carbon's `g_sharedBuffer`, one per backend rather than one per process:\n * a buffer created through the stub before the device arrived must not be the\n * one a WebGPU frame binds, and a process can hold both.\n */\nconst sharedBuffers = new WeakMap();\n\n/** Carbon's usage for the shared buffer (`TriGeometryRes.cpp:33-36`, the non-DX11 form). */\nconst SHARED_BUFFER_USAGE = Tr2GpuUsage.VERTEX_BUFFER | Tr2GpuUsage.INDEX_BUFFER | Tr2GpuUsage.SHADER_RESOURCE;\n\n\n/**\n * The shared geometry buffer for the context's backend.\n *\n * @param {object} renderContext A `Tr2RenderContext`.\n * @returns {Tr2SuballocatedBuffer} The buffer.\n */\nexport function SharedGeometryBuffer(renderContext)\n{\n const key = renderContext.GetRenderContextAL();\n let buffer = sharedBuffers.get(key);\n\n if (!buffer)\n {\n buffer = new Tr2SuballocatedBuffer(\"TriGeometryRes shared vertex/index buffer\", SHARED_BUFFER_USAGE);\n sharedBuffers.set(key, buffer);\n }\n\n return buffer;\n}\n\n\n/**\n * Reverses an index buffer's bytes, Carbon's `std::reverse` over u16 or u32\n * (`TriGeometryRes.cpp:2055-2076`).\n */\nfunction ReversedIndices(bytes, format)\n{\n const Typed = format === \"uint32\" ? Uint32Array : Uint16Array;\n const source = new Typed(bytes.buffer, bytes.byteOffset, bytes.byteLength / Typed.BYTES_PER_ELEMENT);\n const reversed = new Typed(source.length);\n\n for (let index = 0; index < source.length; index += 1) reversed[index] = source[source.length - 1 - index];\n\n return new Uint8Array(reversed.buffer);\n}\n\n\n/**\n * Makes a LOD's allocations in the shared buffer, once.\n *\n * @param {object} geometry The `TriGeometryRes`.\n * @param {number} meshIndex The mesh.\n * @param {object} lod The LOD object the batch's area belongs to.\n * @param {object} renderContext The `Tr2RenderContext` to allocate through.\n * @returns {boolean} Whether the LOD's allocations are valid afterwards.\n */\nexport function CreateLodAllocations(geometry, meshIndex, lod, renderContext)\n{\n if (!lod) return false;\n if (lod.allocationsValid) return true;\n\n const mesh = geometry ? geometry.GetPayload()?.meshes?.[meshIndex] : null;\n\n if (!mesh) return false;\n\n const lodIndex = Array.isArray(mesh.lods) ? Math.max(0, mesh.lods.indexOf(lod)) : 0;\n let packed;\n\n try\n {\n packed = PackLodGeometry(mesh, lodIndex);\n }\n catch\n {\n return false;\n }\n\n const shared = SharedGeometryBuffer(renderContext);\n const vertices = shared.Allocate(packed.vertex.stride, packed.vertex.count, packed.vertex.bytes, renderContext);\n\n if (!vertices) return false;\n\n lod.vertexAllocation = vertices;\n\n if (packed.index)\n {\n const stride = packed.index.format === \"uint32\" ? 4 : 2;\n\n lod.indexAllocation = shared.Allocate(stride, packed.index.count, packed.index.bytes, renderContext);\n lod.reversedIndexAllocation = shared.Allocate(stride, packed.index.count, ReversedIndices(packed.index.bytes, packed.index.format), renderContext);\n lod.reversedIndicesValid = lod.reversedIndexAllocation !== null;\n\n if (!lod.indexAllocation) return false;\n }\n else\n {\n lod.indexAllocation = null;\n lod.reversedIndexAllocation = null;\n lod.reversedIndicesValid = false;\n }\n\n // Carbon sets `m_primitiveCount` when it reads the mesh; resolveDrawArguments\n // reads it through `getLodPrimitiveCount`, which falls back to the indices.\n lod.allocationsValid = true;\n\n return true;\n}\n\n\n/**\n * Gives a descriptor-carrying batch its buffers and draw arguments.\n *\n * This is the second half of Carbon's `CreateGeometryBatch`\n * (`Tr2MeshBase.cpp:372-392`): `SetGeometry` from the LOD's allocations, then\n * the draw arguments with the allocations' start indices folded in.\n *\n * @param {object} batch A `Tr2RenderBatch` whose `geometrySource` is set.\n * @param {object} renderContext The `Tr2RenderContext` submitting it.\n * @returns {boolean} Whether the batch now carries buffers.\n */\nexport function RealizeBatchGeometry(batch, renderContext)\n{\n const source = batch.geometrySource;\n\n if (!source || !source.geometry) return false;\n\n const lod = source.lod ?? source.geometry.GetMeshLodByIndex(source.meshIndex, 0);\n\n if (!CreateLodAllocations(source.geometry, source.meshIndex, lod, renderContext)) return false;\n\n batch.SetGeometryFromAllocations(batch.vertexDeclaration, lod.vertexAllocation, lod.indexAllocation);\n\n const draw = Tr2RenderBatch.resolveDrawArguments(lod, source.areaIndex, source.count, source.reversed);\n\n if (draw)\n {\n batch.SetDrawIndexedInstanced(\n draw.indexCountPerInstance,\n draw.instanceCount,\n draw.startIndexLocation,\n draw.baseVertexLocation,\n draw.startInstanceLocation\n );\n }\n\n return true;\n}\n"],"names":["sharedBuffers","WeakMap","SHARED_BUFFER_USAGE","Tr2GpuUsage","VERTEX_BUFFER","INDEX_BUFFER","SHADER_RESOURCE","SharedGeometryBuffer","renderContext","key","GetRenderContextAL","buffer","get","Tr2SuballocatedBuffer","set","ReversedIndices","bytes","format","Typed","Uint32Array","Uint16Array","source","byteOffset","byteLength","BYTES_PER_ELEMENT","reversed","length","index","Uint8Array","CreateLodAllocations","geometry","meshIndex","lod","allocationsValid","mesh","GetPayload","meshes","lodIndex","Array","isArray","lods","Math","max","indexOf","packed","PackLodGeometry","shared","vertices","Allocate","vertex","stride","count","vertexAllocation","indexAllocation","reversedIndexAllocation","reversedIndicesValid","RealizeBatchGeometry","batch","geometrySource","GetMeshLodByIndex","SetGeometryFromAllocations","vertexDeclaration","draw","Tr2RenderBatch","resolveDrawArguments","areaIndex","SetDrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TriGeometryResAllocations.js","sources":["../../../../../src/trinity/core/mesh/TriGeometryResAllocations.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGeometryRes.cpp:33-38, :2019-2140\n// trinity/trinity/Tr2MeshBase.cpp:341-394\n//\n// Carbon's `TriGeometryRes::CreateLodFromCMFMesh`: a LOD's vertex bytes, its\n// indices, and a REVERSED copy of the indices go into the process-wide shared\n// geometry buffer, and the LOD remembers its allocations\n// (`lod->m_vertexAllocation`, `m_indexAllocation`, `m_reversedIndexAllocation`,\n// `m_allocationsValid`). `CreateGeometryBatch` then binds the allocations onto\n// the batch and folds their offsets into the draw arguments.\n//\n// WHERE OURS DIFFERS. Carbon does this at load, inside the resource, through\n// the main-thread context. Our geometry resource lives in a layer that cannot\n// reach a context, so the allocations are made at the FIRST SUBMIT of a batch\n// that needs them, through the submitting context - `Tr2RenderContext.SubmitGeometry`\n// calls `RealizeBatchGeometry`. The LOD object is the payload's own, and the\n// fields set on it are the ones `Tr2RenderBatch.resolveDrawArguments` already\n// reads.\n//\n// The vertex bytes come from `PackLodGeometry`, which interleaves the payload's\n// channels by the declaration (Carbon uploads the file's interleaved view\n// verbatim; our payload is deinterleaved, so the packer is the inverse of the\n// reader) and re-strides to a multiple of four.\nimport { PackLodGeometry } from \"#resource/geometry/pack\";\nimport { Tr2GpuUsage } from \"#consts/render-context\";\nimport { Tr2SuballocatedBuffer } from \"../device/Tr2SuballocatedBuffer/index.js\";\nimport { Tr2RenderBatch } from \"../batch/TriRenderBatch/index.js\";\n\n\n/**\n * Carbon's `g_sharedBuffer`, one per backend rather than one per process:\n * a buffer created through the stub before the device arrived must not be the\n * one a WebGPU frame binds, and a process can hold both.\n */\nconst sharedBuffers = new WeakMap();\n\n/** Carbon's usage for the shared buffer (`TriGeometryRes.cpp:33-36`, the non-DX11 form). */\nconst SHARED_BUFFER_USAGE = Tr2GpuUsage.VERTEX_BUFFER | Tr2GpuUsage.INDEX_BUFFER | Tr2GpuUsage.SHADER_RESOURCE;\n\n\n/**\n * The shared geometry buffer for the context's backend.\n *\n * @param {object} renderContext A `Tr2RenderContext`.\n * @returns {Tr2SuballocatedBuffer} The buffer.\n */\nexport function SharedGeometryBuffer(renderContext)\n{\n const key = renderContext.GetRenderContextAL();\n let buffer = sharedBuffers.get(key);\n\n if (!buffer)\n {\n buffer = new Tr2SuballocatedBuffer(\"TriGeometryRes shared vertex/index buffer\", SHARED_BUFFER_USAGE);\n sharedBuffers.set(key, buffer);\n }\n\n return buffer;\n}\n\n\n/**\n * Reverses an index buffer's bytes, Carbon's `std::reverse` over u16 or u32\n * (`TriGeometryRes.cpp:2055-2076`).\n */\nfunction ReversedIndices(bytes, format)\n{\n const Typed = format === \"uint32\" ? Uint32Array : Uint16Array;\n const source = new Typed(bytes.buffer, bytes.byteOffset, bytes.byteLength / Typed.BYTES_PER_ELEMENT);\n const reversed = new Typed(source.length);\n\n for (let index = 0; index < source.length; index += 1) reversed[index] = source[source.length - 1 - index];\n\n return new Uint8Array(reversed.buffer);\n}\n\n\n/**\n * Makes a LOD's allocations in the shared buffer, once.\n *\n * @param {object} geometry The `TriGeometryRes`.\n * @param {number} meshIndex The mesh.\n * @param {object} lod The LOD object the batch's area belongs to.\n * @param {object} renderContext The `Tr2RenderContext` to allocate through.\n * @returns {boolean} Whether the LOD's allocations are valid afterwards.\n */\nexport function CreateLodAllocations(geometry, meshIndex, lod, renderContext)\n{\n if (!lod) return false;\n if (lod.allocationsValid) return true;\n\n const mesh = geometry ? geometry.GetPayload()?.meshes?.[meshIndex] : null;\n\n if (!mesh) return false;\n\n const lodIndex = Array.isArray(mesh.lods) ? Math.max(0, mesh.lods.indexOf(lod)) : 0;\n let packed;\n\n try\n {\n packed = PackLodGeometry(mesh, lodIndex);\n }\n catch\n {\n return false;\n }\n\n const shared = SharedGeometryBuffer(renderContext);\n const vertices = shared.Allocate(packed.vertex.stride, packed.vertex.count, packed.vertex.bytes, renderContext);\n\n if (!vertices) return false;\n\n lod.vertexAllocation = vertices;\n\n if (packed.index)\n {\n const stride = packed.index.format === \"uint32\" ? 4 : 2;\n\n lod.indexAllocation = shared.Allocate(stride, packed.index.count, packed.index.bytes, renderContext);\n lod.reversedIndexAllocation = shared.Allocate(stride, packed.index.count, ReversedIndices(packed.index.bytes, packed.index.format), renderContext);\n lod.reversedIndicesValid = lod.reversedIndexAllocation !== null;\n\n if (!lod.indexAllocation) return false;\n }\n else\n {\n lod.indexAllocation = null;\n lod.reversedIndexAllocation = null;\n lod.reversedIndicesValid = false;\n }\n\n // Carbon sets `m_primitiveCount` when it reads the mesh; resolveDrawArguments\n // reads it through `getLodPrimitiveCount`, which falls back to the indices.\n lod.allocationsValid = true;\n\n return true;\n}\n\n\n/**\n * Gives a descriptor-carrying batch its buffers and draw arguments.\n *\n * This is the second half of Carbon's `CreateGeometryBatch`\n * (`Tr2MeshBase.cpp:372-392`): `SetGeometry` from the LOD's allocations, then\n * the draw arguments with the allocations' start indices folded in.\n *\n * @param {object} batch A `Tr2RenderBatch` whose `geometrySource` is set.\n * @param {object} renderContext The `Tr2RenderContext` submitting it.\n * @returns {boolean} Whether the batch now carries buffers.\n */\nexport function RealizeBatchGeometry(batch, renderContext)\n{\n const source = batch.geometrySource;\n\n if (!source || !source.geometry) return false;\n\n const lod = source.lod ?? source.geometry.GetMeshLodByIndex(source.meshIndex, 0);\n\n if (!CreateLodAllocations(source.geometry, source.meshIndex, lod, renderContext)) return false;\n\n batch.SetGeometryFromAllocations(batch.vertexDeclaration, lod.vertexAllocation, lod.indexAllocation);\n\n const draw = Tr2RenderBatch.resolveDrawArguments(lod, source.areaIndex, source.count, source.reversed);\n\n if (draw)\n {\n batch.SetDrawIndexedInstanced(\n draw.indexCountPerInstance,\n draw.instanceCount,\n draw.startIndexLocation,\n draw.baseVertexLocation,\n draw.startInstanceLocation\n );\n }\n\n return true;\n}\n"],"names":["sharedBuffers","WeakMap","SHARED_BUFFER_USAGE","Tr2GpuUsage","VERTEX_BUFFER","INDEX_BUFFER","SHADER_RESOURCE","SharedGeometryBuffer","renderContext","key","GetRenderContextAL","buffer","get","Tr2SuballocatedBuffer","set","ReversedIndices","bytes","format","Typed","Uint32Array","Uint16Array","source","byteOffset","byteLength","BYTES_PER_ELEMENT","reversed","length","index","Uint8Array","CreateLodAllocations","geometry","meshIndex","lod","allocationsValid","mesh","GetPayload","meshes","lodIndex","Array","isArray","lods","Math","max","indexOf","packed","PackLodGeometry","shared","vertices","Allocate","vertex","stride","count","vertexAllocation","indexAllocation","reversedIndexAllocation","reversedIndicesValid","RealizeBatchGeometry","batch","geometrySource","GetMeshLodByIndex","SetGeometryFromAllocations","vertexDeclaration","draw","Tr2RenderBatch","resolveDrawArguments","areaIndex","SetDrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation"],"mappings":"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"}
|