@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +20 -2
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/global/schema/hydration.js +14 -0
- package/dist/global/schema/hydration.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +69 -9
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +158 -345
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +92 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
package/dist/global/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import * as arrays from './utils/arrays.js';
|
|
|
5
5
|
export { arrays };
|
|
6
6
|
import * as bytes from './utils/bytes.js';
|
|
7
7
|
export { bytes };
|
|
8
|
-
export { asUint8Array, copyBytes, float32FromBits, hasBytePrefix, readFourCc, readU16BE, readU16LE, readU24BE, readU24LE, readU32BE, readU32LE, toArrayBuffer } from './utils/bytes.js';
|
|
8
|
+
export { asUint8Array, copyBytes, float32FromBits, float32ToBits, hasBytePrefix, readFourCc, readU16BE, readU16LE, readU24BE, readU24LE, readU32BE, readU32LE, toArrayBuffer } from './utils/bytes.js';
|
|
9
9
|
import * as compression from './utils/compression.js';
|
|
10
10
|
export { compression };
|
|
11
11
|
export { decompressBytes, decompressGzip, decompressGzipIfNeeded, isGzip } from './utils/compression.js';
|
|
@@ -33,9 +33,9 @@ export { CjsBackendCandidate } from './contracts/CjsBackendCandidate.js';
|
|
|
33
33
|
export { CjsConstantPayload } from './contracts/CjsConstantPayload.js';
|
|
34
34
|
export { CjsFrameLifecycle } from './contracts/CjsFrameLifecycle.js';
|
|
35
35
|
export { CjsInstancedMeshManager } from './contracts/CjsInstancedMeshManager.js';
|
|
36
|
-
export { CjsScriptCallback } from './contracts/CjsScriptCallback.js';
|
|
37
36
|
export { ITr2BoundingBox, withITr2BoundingBox } from './contracts/ITr2BoundingBox.js';
|
|
38
37
|
export { ITr2RenderNode, withITr2RenderNode } from './contracts/ITr2RenderNode.js';
|
|
38
|
+
export { CjsScriptCallback } from './blue/CjsScriptCallback.js';
|
|
39
39
|
import * as index from './consts/index.js';
|
|
40
40
|
export { index as constants };
|
|
41
41
|
import * as num from './math/num.js';
|
|
@@ -86,8 +86,9 @@ import * as tangent from './math/tangent.js';
|
|
|
86
86
|
export { tangent };
|
|
87
87
|
export { isResFileAddressFor, parseResFileAddress, resFileAddress } from './utils/resFile.js';
|
|
88
88
|
export { AudioChannelLayout, AudioSampleFormat, normalizeAudioSampleFormat } from './consts/audio/audioFormats.js';
|
|
89
|
-
export { CJS_OPERATION_CANCELLED, CjsCancellationError
|
|
89
|
+
export { CJS_OPERATION_CANCELLED, CjsCancellationError } from './utils/errors/CjsCancellationError.js';
|
|
90
90
|
export { CarbonPixelFormatToWebGpu, DxgiFormatToPixelFormat, GpuTextureFormat, PixelFormatToWebGpu, SrgbSiblingOf, dxgiToPixelFormat, toWebGpuTextureFormat } from './consts/webgpu/textureFormats.js';
|
|
91
|
+
export { CjsError } from './utils/errors/CjsError.js';
|
|
91
92
|
export { ColorSpace, normalizeColorSpace } from './consts/graphics/colorSpaces.js';
|
|
92
93
|
export { D3dPrimitiveTopology } from './consts/d3d/primitiveTopology.js';
|
|
93
94
|
export { DxgiFormat, normalizeDxgiFormat } from './consts/d3d/dxgiFormats.js';
|
package/dist/global/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -31,6 +31,8 @@ import * as pool from './pool.js';
|
|
|
31
31
|
export { pool };
|
|
32
32
|
import * as noise from './noise.js';
|
|
33
33
|
export { noise };
|
|
34
|
+
import * as random from './random.js';
|
|
35
|
+
export { random };
|
|
34
36
|
import * as curve from './curve.js';
|
|
35
37
|
export { curve };
|
|
36
38
|
import * as index from './geometry/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/global/math/mesh.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalize, cross, length } from 'gl-matrix/esm/vec3.js';
|
|
2
|
+
import './vec3.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Small mesh rebuild helpers for shared CarbonEngineJS mesh JSON.
|
|
@@ -156,6 +157,12 @@ function computeBoundsFromTriangles(triangles) {
|
|
|
156
157
|
};
|
|
157
158
|
}
|
|
158
159
|
|
|
160
|
+
// Double-precision scratch for generateNormals. Plain Arrays deliberately: see
|
|
161
|
+
// the note at their use for why the element type is not the math namespace's.
|
|
162
|
+
const NORMAL_SCRATCH = [0, 0, 0];
|
|
163
|
+
const EDGE_B_SCRATCH = [0, 0, 0];
|
|
164
|
+
const EDGE_C_SCRATCH = [0, 0, 0];
|
|
165
|
+
|
|
159
166
|
/**
|
|
160
167
|
* Generate area-weighted vertex normals from positions and triangle indices.
|
|
161
168
|
*
|
|
@@ -168,20 +175,53 @@ function generateNormals(positions, indices) {
|
|
|
168
175
|
validateIndices(indices, positions.length / 3);
|
|
169
176
|
const vertexCount = positions.length / 3,
|
|
170
177
|
normals = new Float32Array(positions.length);
|
|
178
|
+
|
|
179
|
+
// Module scratch, not pooled, and the element type is the point. The
|
|
180
|
+
// previous form cost FOUR array literals per triangle; these cost none. But
|
|
181
|
+
// vec3.alloc() would hand back a Float32Array, and the literals it replaced
|
|
182
|
+
// were plain Arrays - float64. Rounding each edge vector and face normal to
|
|
183
|
+
// f32 BEFORE accumulating changes the result: ~1e-7 relative at world scale,
|
|
184
|
+
// and far worse wherever a cross product nearly cancels.
|
|
185
|
+
//
|
|
186
|
+
// THE RULE: a scratch's element type follows its DESTINATION, not whatever
|
|
187
|
+
// the math namespace hands out. Here the arithmetic is double and only the
|
|
188
|
+
// final store is f32, so the scratch is double.
|
|
189
|
+
//
|
|
190
|
+
// Reused across calls, which is safe because this runs to completion without
|
|
191
|
+
// yielding and never re-enters. Every component is written before it is read:
|
|
192
|
+
// `cross` fills its whole destination and only reads its operands.
|
|
193
|
+
const faceNormal = NORMAL_SCRATCH,
|
|
194
|
+
edgeB = EDGE_B_SCRATCH,
|
|
195
|
+
edgeC = EDGE_C_SCRATCH;
|
|
171
196
|
for (let t = 0; t < indices.length; t += 3) {
|
|
172
197
|
const ia = indices[t] * 3,
|
|
173
198
|
ib = indices[t + 1] * 3,
|
|
174
199
|
ic = indices[t + 2] * 3,
|
|
175
200
|
ax = positions[ia],
|
|
176
201
|
ay = positions[ia + 1],
|
|
177
|
-
az = positions[ia + 2]
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
202
|
+
az = positions[ia + 2];
|
|
203
|
+
edgeB[0] = positions[ib] - ax;
|
|
204
|
+
edgeB[1] = positions[ib + 1] - ay;
|
|
205
|
+
edgeB[2] = positions[ib + 2] - az;
|
|
206
|
+
edgeC[0] = positions[ic] - ax;
|
|
207
|
+
edgeC[1] = positions[ic + 1] - ay;
|
|
208
|
+
edgeC[2] = positions[ic + 2] - az;
|
|
209
|
+
cross(faceNormal, edgeB, edgeC);
|
|
210
|
+
const nx = faceNormal[0],
|
|
211
|
+
ny = faceNormal[1],
|
|
212
|
+
nz = faceNormal[2];
|
|
213
|
+
|
|
214
|
+
// Unrolled over the triangle's three vertices, which is what the
|
|
215
|
+
// `for (const offset of [ ia, ib, ic ])` form allocated for.
|
|
216
|
+
normals[ia] += nx;
|
|
217
|
+
normals[ia + 1] += ny;
|
|
218
|
+
normals[ia + 2] += nz;
|
|
219
|
+
normals[ib] += nx;
|
|
220
|
+
normals[ib + 1] += ny;
|
|
221
|
+
normals[ib + 2] += nz;
|
|
222
|
+
normals[ic] += nx;
|
|
223
|
+
normals[ic + 1] += ny;
|
|
224
|
+
normals[ic + 2] += nz;
|
|
185
225
|
}
|
|
186
226
|
for (let i = 0; i < vertexCount; i++) {
|
|
187
227
|
const offset = i * 3,
|
|
@@ -239,14 +279,28 @@ function generateTangents(positions, normals, uvs, indices) {
|
|
|
239
279
|
tx = (s1 * x2 - s2 * x1) * scale,
|
|
240
280
|
ty = (s1 * y2 - s2 * y1) * scale,
|
|
241
281
|
tz = (s1 * z2 - s2 * z1) * scale;
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
282
|
+
|
|
283
|
+
// Unrolled over the triangle's three vertices: the
|
|
284
|
+
// `for (const offset of [ p0, p1, p2 ])` form allocated an array literal
|
|
285
|
+
// and an iterator per triangle.
|
|
286
|
+
tan1[p0] += sx;
|
|
287
|
+
tan1[p0 + 1] += sy;
|
|
288
|
+
tan1[p0 + 2] += sz;
|
|
289
|
+
tan2[p0] += tx;
|
|
290
|
+
tan2[p0 + 1] += ty;
|
|
291
|
+
tan2[p0 + 2] += tz;
|
|
292
|
+
tan1[p1] += sx;
|
|
293
|
+
tan1[p1 + 1] += sy;
|
|
294
|
+
tan1[p1 + 2] += sz;
|
|
295
|
+
tan2[p1] += tx;
|
|
296
|
+
tan2[p1 + 1] += ty;
|
|
297
|
+
tan2[p1 + 2] += tz;
|
|
298
|
+
tan1[p2] += sx;
|
|
299
|
+
tan1[p2 + 1] += sy;
|
|
300
|
+
tan1[p2 + 2] += sz;
|
|
301
|
+
tan2[p2] += tx;
|
|
302
|
+
tan2[p2 + 1] += ty;
|
|
303
|
+
tan2[p2 + 2] += tz;
|
|
250
304
|
}
|
|
251
305
|
const tangents = new Float32Array(vertexCount * 3),
|
|
252
306
|
handedness = new Float32Array(vertexCount);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh.js","sources":["../../../../src/global/math/mesh.js"],"sourcesContent":["/**\r\n * Small mesh rebuild helpers for shared CarbonEngineJS mesh JSON.\r\n *\r\n * These helpers are deliberately framework-free and browser-safe. They accept\r\n * plain arrays or typed arrays and return plain arrays unless otherwise noted.\r\n */\r\n\r\nimport {\r\n cross,\r\n length as vec3Length,\r\n normalize\r\n} from \"gl-matrix/esm/vec3.js\";\r\n\r\nfunction validatePositions(positions)\r\n{\r\n if (!positions || positions.length % 3 !== 0)\r\n {\r\n throw new Error(\"Positions must contain complete xyz vertices\");\r\n }\r\n}\r\n\r\nfunction validateIndices(indices, vertexCount)\r\n{\r\n if (!indices || indices.length % 3 !== 0)\r\n {\r\n throw new Error(\"Indices must contain complete triangles\");\r\n }\r\n\r\n for (let i = 0; i < indices.length; i++)\r\n {\r\n if (!Number.isInteger(indices[i]) || indices[i] < 0 || indices[i] >= vertexCount)\r\n {\r\n throw new Error(`Invalid vertex index at ${i}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Calculate the unit face normal for a triangle.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {number[]} Unit triangle normal.\r\n */\r\nexport function triangleNormal(a, b, c)\r\n{\r\n return triangleNormalTo([ 0, 0, 0 ], a, b, c);\r\n}\r\n\r\n/**\r\n * Calculate a unit face normal into caller-owned storage.\r\n *\r\n * @param {ArrayLike<number>} out Receiving xyz vector.\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {ArrayLike<number>} The receiving vector.\r\n */\r\nexport function triangleNormalTo(out, a, b, c)\r\n{\r\n const\r\n abX = b[0] - a[0],\r\n abY = b[1] - a[1],\r\n abZ = b[2] - a[2],\r\n acX = c[0] - a[0],\r\n acY = c[1] - a[1],\r\n acZ = c[2] - a[2];\r\n\r\n out[0] = abY * acZ - abZ * acY;\r\n out[1] = abZ * acX - abX * acZ;\r\n out[2] = abX * acY - abY * acX;\r\n\r\n const length = Math.hypot(out[0], out[1], out[2]);\r\n\r\n if (length > 0)\r\n {\r\n out[0] /= length;\r\n out[1] /= length;\r\n out[2] /= length;\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Twice the area of a triangle.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {number} Twice the triangle area.\r\n */\r\nexport function triangleArea2(a, b, c)\r\n{\r\n const normal = [ 0, 0, 0 ];\r\n cross(\r\n normal,\r\n [ b[0] - a[0], b[1] - a[1], b[2] - a[2] ],\r\n [ c[0] - a[0], c[1] - a[1], c[2] - a[2] ]\r\n );\r\n return vec3Length(normal);\r\n}\r\n\r\n/**\r\n * Whether a triangle is degenerate.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @param {number} [epsilon] Area epsilon.\r\n * @returns {boolean} True when the triangle has no useful area.\r\n */\r\nexport function isDegenerateTriangle(a, b, c, epsilon = 1e-12)\r\n{\r\n return triangleArea2(a, b, c) <= epsilon;\r\n}\r\n\r\n/**\r\n * Compute axis-aligned bounds from flat xyz positions.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @returns {{minBounds: number[], maxBounds: number[]}} Bounds.\r\n */\r\nexport function computeBoundsFromPositions(positions)\r\n{\r\n validatePositions(positions);\r\n\r\n if (!positions.length)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n const\r\n minBounds = [ positions[0], positions[1], positions[2] ],\r\n maxBounds = [ positions[0], positions[1], positions[2] ];\r\n\r\n for (let i = 3; i < positions.length; i += 3)\r\n {\r\n for (let c = 0; c < 3; c++)\r\n {\r\n const value = positions[i + c];\r\n if (value < minBounds[c]) minBounds[c] = value;\r\n if (value > maxBounds[c]) maxBounds[c] = value;\r\n }\r\n }\r\n\r\n return { minBounds, maxBounds };\r\n}\r\n\r\n/**\r\n * Compute axis-aligned bounds from `{ vertices: [[x,y,z], ...] }` triangles.\r\n *\r\n * @param {Array<{vertices: Array<ArrayLike<number>>}>} triangles Triangle records.\r\n * @returns {{minBounds: number[], maxBounds: number[]}} Bounds.\r\n */\r\nexport function computeBoundsFromTriangles(triangles)\r\n{\r\n if (!triangles.length)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n const\r\n minBounds = [ Infinity, Infinity, Infinity ],\r\n maxBounds = [ -Infinity, -Infinity, -Infinity ];\r\n\r\n let hasVertex = false;\r\n for (const triangle of triangles)\r\n {\r\n for (const vertex of triangle.vertices)\r\n {\r\n hasVertex = true;\r\n for (let c = 0; c < 3; c++)\r\n {\r\n if (vertex[c] < minBounds[c]) minBounds[c] = vertex[c];\r\n if (vertex[c] > maxBounds[c]) maxBounds[c] = vertex[c];\r\n }\r\n }\r\n }\r\n\r\n if (!hasVertex)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n return { minBounds, maxBounds };\r\n}\r\n\r\n/**\r\n * Generate area-weighted vertex normals from positions and triangle indices.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @returns {Float32Array} Flat xyz normals.\r\n */\r\nexport function generateNormals(positions, indices)\r\n{\r\n validatePositions(positions);\r\n validateIndices(indices, positions.length / 3);\r\n\r\n const\r\n vertexCount = positions.length / 3,\r\n normals = new Float32Array(positions.length);\r\n\r\n for (let t = 0; t < indices.length; t += 3)\r\n {\r\n const\r\n ia = indices[t] * 3,\r\n ib = indices[t + 1] * 3,\r\n ic = indices[t + 2] * 3,\r\n ax = positions[ia],\r\n ay = positions[ia + 1],\r\n az = positions[ia + 2],\r\n faceNormal = [ 0, 0, 0 ];\r\n\r\n cross(\r\n faceNormal,\r\n [ positions[ib] - ax, positions[ib + 1] - ay, positions[ib + 2] - az ],\r\n [ positions[ic] - ax, positions[ic + 1] - ay, positions[ic + 2] - az ]\r\n );\r\n\r\n for (const offset of [ ia, ib, ic ])\r\n {\r\n normals[offset] += faceNormal[0];\r\n normals[offset + 1] += faceNormal[1];\r\n normals[offset + 2] += faceNormal[2];\r\n }\r\n }\r\n\r\n for (let i = 0; i < vertexCount; i++)\r\n {\r\n const\r\n offset = i * 3,\r\n length = Math.hypot(normals[offset], normals[offset + 1], normals[offset + 2]) || 1;\r\n\r\n normals[offset] /= length;\r\n normals[offset + 1] /= length;\r\n normals[offset + 2] /= length;\r\n }\r\n\r\n return normals;\r\n}\r\n\r\n/**\r\n * Generate per-vertex tangents from positions, normals, UVs and indices.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} uvs Flat uv coordinates.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @returns {Float32Array} Flat xyz tangents.\r\n */\r\nexport function generateTangents(positions, normals, uvs, indices)\r\n{\r\n validatePositions(positions);\r\n\r\n const\r\n vertexCount = positions.length / 3,\r\n tan1 = new Float32Array(vertexCount * 3),\r\n tan2 = new Float32Array(vertexCount * 3);\r\n\r\n if (!normals || normals.length !== positions.length ||\r\n !uvs || uvs.length !== vertexCount * 2)\r\n {\r\n throw new Error(\"Tangent channels do not match the vertex count\");\r\n }\r\n validateIndices(indices, vertexCount);\r\n\r\n for (let t = 0; t < indices.length; t += 3)\r\n {\r\n const\r\n i0 = indices[t],\r\n i1 = indices[t + 1],\r\n i2 = indices[t + 2],\r\n p0 = i0 * 3,\r\n p1 = i1 * 3,\r\n p2 = i2 * 3,\r\n t0 = i0 * 2,\r\n t1 = i1 * 2,\r\n t2 = i2 * 2,\r\n x1 = positions[p1] - positions[p0],\r\n y1 = positions[p1 + 1] - positions[p0 + 1],\r\n z1 = positions[p1 + 2] - positions[p0 + 2],\r\n x2 = positions[p2] - positions[p0],\r\n y2 = positions[p2 + 1] - positions[p0 + 1],\r\n z2 = positions[p2 + 2] - positions[p0 + 2],\r\n s1 = uvs[t1] - uvs[t0],\r\n v1 = uvs[t1 + 1] - uvs[t0 + 1],\r\n s2 = uvs[t2] - uvs[t0],\r\n v2 = uvs[t2 + 1] - uvs[t0 + 1],\r\n divisor = s1 * v2 - s2 * v1,\r\n scale = divisor ? 1 / divisor : 0,\r\n sx = (v2 * x1 - v1 * x2) * scale,\r\n sy = (v2 * y1 - v1 * y2) * scale,\r\n sz = (v2 * z1 - v1 * z2) * scale,\r\n tx = (s1 * x2 - s2 * x1) * scale,\r\n ty = (s1 * y2 - s2 * y1) * scale,\r\n tz = (s1 * z2 - s2 * z1) * scale;\r\n\r\n for (const offset of [ p0, p1, p2 ])\r\n {\r\n tan1[offset] += sx;\r\n tan1[offset + 1] += sy;\r\n tan1[offset + 2] += sz;\r\n tan2[offset] += tx;\r\n tan2[offset + 1] += ty;\r\n tan2[offset + 2] += tz;\r\n }\r\n }\r\n\r\n const\r\n tangents = new Float32Array(vertexCount * 3),\r\n handedness = new Float32Array(vertexCount);\r\n\r\n for (let i = 0; i < vertexCount; i++)\r\n {\r\n const\r\n offset = i * 3,\r\n nx = normals[offset],\r\n ny = normals[offset + 1],\r\n nz = normals[offset + 2],\r\n tx = tan1[offset],\r\n ty = tan1[offset + 1],\r\n tz = tan1[offset + 2],\r\n normalDotTangent = nx * tx + ny * ty + nz * tz;\r\n\r\n let ox = tx - nx * normalDotTangent,\r\n oy = ty - ny * normalDotTangent,\r\n oz = tz - nz * normalDotTangent;\r\n\r\n const length = Math.hypot(ox, oy, oz) || 1;\r\n\r\n ox /= length;\r\n oy /= length;\r\n oz /= length;\r\n\r\n tangents[offset] = ox;\r\n tangents[offset + 1] = oy;\r\n tangents[offset + 2] = oz;\r\n handedness[i] = (\r\n (ny * oz - nz * oy) * tan2[offset] +\r\n (nz * ox - nx * oz) * tan2[offset + 1] +\r\n (nx * oy - ny * ox) * tan2[offset + 2]\r\n ) < 0 ? -1 : 1;\r\n }\r\n\r\n Object.defineProperty(tangents, \"handedness\", { value: handedness });\r\n return tangents;\r\n}\r\n\r\n/**\r\n * Generate a complete tangent frame while preserving per-vertex UV handedness.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} uvs Flat uv coordinates.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @param {object} [options] Generation options.\r\n * @returns {{tangents: Float32Array, binormals: number[], handedness: Float32Array}}\r\n */\r\nexport function generateTangentFrames(positions, normals, uvs, indices, options)\r\n{\r\n const\r\n tangents = generateTangents(positions, normals, uvs, indices),\r\n handedness = tangents.handedness,\r\n binormals = generateBiNormals(normals, tangents, { ...options, handedness });\r\n\r\n return { tangents, binormals, handedness };\r\n}\r\n\r\n/**\r\n * Generate binormals as normalized `normal x tangent`.\r\n *\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} tangents Flat xyz tangents.\r\n * @param {object} [options] Generation options.\r\n * @param {\"right\"|\"left\"} [options.uvHandedness] Handedness of generated basis.\r\n * @returns {number[]} Flat xyz binormals.\r\n */\r\nexport function generateBiNormals(normals, tangents, options = {})\r\n{\r\n if (normals.length !== tangents.length || normals.length % 3 !== 0)\r\n {\r\n throw new Error(\"generateBiNormals requires matching complete xyz channels\");\r\n }\r\n\r\n const\r\n conventionSign = options.uvHandedness === \"left\" ? -1 : 1,\r\n binormals = new Array(normals.length);\r\n\r\n for (let i = 0; i < normals.length; i += 3)\r\n {\r\n const\r\n vertexSign = options.handedness?.[i / 3] ?? tangents.handedness?.[i / 3] ?? 1,\r\n sign = conventionSign * vertexSign;\r\n const b = normalize(\r\n [ 0, 0, 0 ],\r\n [\r\n normals[i + 1] * tangents[i + 2] - normals[i + 2] * tangents[i + 1],\r\n normals[i + 2] * tangents[i] - normals[i] * tangents[i + 2],\r\n normals[i] * tangents[i + 1] - normals[i + 1] * tangents[i]\r\n ]\r\n );\r\n binormals[i] = b[0] * sign;\r\n binormals[i + 1] = b[1] * sign;\r\n binormals[i + 2] = b[2] * sign;\r\n }\r\n\r\n return binormals;\r\n}\r\n\r\nexport const mesh = Object.freeze({\r\n triangleNormal,\r\n triangleNormalTo,\r\n triangleArea2,\r\n isDegenerateTriangle,\r\n computeBoundsFromPositions,\r\n computeBoundsFromTriangles,\r\n generateNormals,\r\n generateTangents,\r\n generateTangentFrames,\r\n generateBiNormals\r\n});\r\n"],"names":["validatePositions","positions","length","Error","validateIndices","indices","vertexCount","i","Number","isInteger","triangleNormal","a","b","c","triangleNormalTo","out","abX","abY","abZ","acX","acY","acZ","Math","hypot","triangleArea2","normal","cross","vec3Length","isDegenerateTriangle","epsilon","computeBoundsFromPositions","minBounds","maxBounds","value","computeBoundsFromTriangles","triangles","Infinity","hasVertex","triangle","vertex","vertices","generateNormals","normals","Float32Array","t","ia","ib","ic","ax","ay","az","faceNormal","offset","generateTangents","uvs","tan1","tan2","i0","i1","i2","p0","p1","p2","t0","t1","t2","x1","y1","z1","x2","y2","z2","s1","v1","s2","v2","divisor","scale","sx","sy","sz","tx","ty","tz","tangents","handedness","nx","ny","nz","normalDotTangent","ox","oy","oz","Object","defineProperty","generateTangentFrames","options","binormals","generateBiNormals","conventionSign","uvHandedness","Array","vertexSign","sign","normalize","mesh","freeze"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mesh.js","sources":["../../../../src/global/math/mesh.js"],"sourcesContent":["/**\r\n * Small mesh rebuild helpers for shared CarbonEngineJS mesh JSON.\r\n *\r\n * These helpers are deliberately framework-free and browser-safe. They accept\r\n * plain arrays or typed arrays and return plain arrays unless otherwise noted.\r\n */\r\n\r\nimport {\r\n cross,\r\n length as vec3Length,\r\n normalize\r\n} from \"gl-matrix/esm/vec3.js\";\r\n\r\nimport { vec3 } from \"./vec3.js\";\r\n\r\nfunction validatePositions(positions)\r\n{\r\n if (!positions || positions.length % 3 !== 0)\r\n {\r\n throw new Error(\"Positions must contain complete xyz vertices\");\r\n }\r\n}\r\n\r\nfunction validateIndices(indices, vertexCount)\r\n{\r\n if (!indices || indices.length % 3 !== 0)\r\n {\r\n throw new Error(\"Indices must contain complete triangles\");\r\n }\r\n\r\n for (let i = 0; i < indices.length; i++)\r\n {\r\n if (!Number.isInteger(indices[i]) || indices[i] < 0 || indices[i] >= vertexCount)\r\n {\r\n throw new Error(`Invalid vertex index at ${i}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Calculate the unit face normal for a triangle.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {number[]} Unit triangle normal.\r\n */\r\nexport function triangleNormal(a, b, c)\r\n{\r\n return triangleNormalTo([ 0, 0, 0 ], a, b, c);\r\n}\r\n\r\n/**\r\n * Calculate a unit face normal into caller-owned storage.\r\n *\r\n * @param {ArrayLike<number>} out Receiving xyz vector.\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {ArrayLike<number>} The receiving vector.\r\n */\r\nexport function triangleNormalTo(out, a, b, c)\r\n{\r\n const\r\n abX = b[0] - a[0],\r\n abY = b[1] - a[1],\r\n abZ = b[2] - a[2],\r\n acX = c[0] - a[0],\r\n acY = c[1] - a[1],\r\n acZ = c[2] - a[2];\r\n\r\n out[0] = abY * acZ - abZ * acY;\r\n out[1] = abZ * acX - abX * acZ;\r\n out[2] = abX * acY - abY * acX;\r\n\r\n const length = Math.hypot(out[0], out[1], out[2]);\r\n\r\n if (length > 0)\r\n {\r\n out[0] /= length;\r\n out[1] /= length;\r\n out[2] /= length;\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Twice the area of a triangle.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @returns {number} Twice the triangle area.\r\n */\r\nexport function triangleArea2(a, b, c)\r\n{\r\n const normal = [ 0, 0, 0 ];\r\n cross(\r\n normal,\r\n [ b[0] - a[0], b[1] - a[1], b[2] - a[2] ],\r\n [ c[0] - a[0], c[1] - a[1], c[2] - a[2] ]\r\n );\r\n return vec3Length(normal);\r\n}\r\n\r\n/**\r\n * Whether a triangle is degenerate.\r\n *\r\n * @param {ArrayLike<number>} a First xyz vertex.\r\n * @param {ArrayLike<number>} b Second xyz vertex.\r\n * @param {ArrayLike<number>} c Third xyz vertex.\r\n * @param {number} [epsilon] Area epsilon.\r\n * @returns {boolean} True when the triangle has no useful area.\r\n */\r\nexport function isDegenerateTriangle(a, b, c, epsilon = 1e-12)\r\n{\r\n return triangleArea2(a, b, c) <= epsilon;\r\n}\r\n\r\n/**\r\n * Compute axis-aligned bounds from flat xyz positions.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @returns {{minBounds: number[], maxBounds: number[]}} Bounds.\r\n */\r\nexport function computeBoundsFromPositions(positions)\r\n{\r\n validatePositions(positions);\r\n\r\n if (!positions.length)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n const\r\n minBounds = [ positions[0], positions[1], positions[2] ],\r\n maxBounds = [ positions[0], positions[1], positions[2] ];\r\n\r\n for (let i = 3; i < positions.length; i += 3)\r\n {\r\n for (let c = 0; c < 3; c++)\r\n {\r\n const value = positions[i + c];\r\n if (value < minBounds[c]) minBounds[c] = value;\r\n if (value > maxBounds[c]) maxBounds[c] = value;\r\n }\r\n }\r\n\r\n return { minBounds, maxBounds };\r\n}\r\n\r\n/**\r\n * Compute axis-aligned bounds from `{ vertices: [[x,y,z], ...] }` triangles.\r\n *\r\n * @param {Array<{vertices: Array<ArrayLike<number>>}>} triangles Triangle records.\r\n * @returns {{minBounds: number[], maxBounds: number[]}} Bounds.\r\n */\r\nexport function computeBoundsFromTriangles(triangles)\r\n{\r\n if (!triangles.length)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n const\r\n minBounds = [ Infinity, Infinity, Infinity ],\r\n maxBounds = [ -Infinity, -Infinity, -Infinity ];\r\n\r\n let hasVertex = false;\r\n for (const triangle of triangles)\r\n {\r\n for (const vertex of triangle.vertices)\r\n {\r\n hasVertex = true;\r\n for (let c = 0; c < 3; c++)\r\n {\r\n if (vertex[c] < minBounds[c]) minBounds[c] = vertex[c];\r\n if (vertex[c] > maxBounds[c]) maxBounds[c] = vertex[c];\r\n }\r\n }\r\n }\r\n\r\n if (!hasVertex)\r\n {\r\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\r\n }\r\n\r\n return { minBounds, maxBounds };\r\n}\r\n\r\n// Double-precision scratch for generateNormals. Plain Arrays deliberately: see\r\n// the note at their use for why the element type is not the math namespace's.\r\nconst NORMAL_SCRATCH = [ 0, 0, 0 ];\r\nconst EDGE_B_SCRATCH = [ 0, 0, 0 ];\r\nconst EDGE_C_SCRATCH = [ 0, 0, 0 ];\r\n\r\n/**\r\n * Generate area-weighted vertex normals from positions and triangle indices.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @returns {Float32Array} Flat xyz normals.\r\n */\r\nexport function generateNormals(positions, indices)\r\n{\r\n validatePositions(positions);\r\n validateIndices(indices, positions.length / 3);\r\n\r\n const\r\n vertexCount = positions.length / 3,\r\n normals = new Float32Array(positions.length);\r\n\r\n // Module scratch, not pooled, and the element type is the point. The\r\n // previous form cost FOUR array literals per triangle; these cost none. But\r\n // vec3.alloc() would hand back a Float32Array, and the literals it replaced\r\n // were plain Arrays - float64. Rounding each edge vector and face normal to\r\n // f32 BEFORE accumulating changes the result: ~1e-7 relative at world scale,\r\n // and far worse wherever a cross product nearly cancels.\r\n //\r\n // THE RULE: a scratch's element type follows its DESTINATION, not whatever\r\n // the math namespace hands out. Here the arithmetic is double and only the\r\n // final store is f32, so the scratch is double.\r\n //\r\n // Reused across calls, which is safe because this runs to completion without\r\n // yielding and never re-enters. Every component is written before it is read:\r\n // `cross` fills its whole destination and only reads its operands.\r\n const faceNormal = NORMAL_SCRATCH,\r\n edgeB = EDGE_B_SCRATCH,\r\n edgeC = EDGE_C_SCRATCH;\r\n\r\n for (let t = 0; t < indices.length; t += 3)\r\n {\r\n const\r\n ia = indices[t] * 3,\r\n ib = indices[t + 1] * 3,\r\n ic = indices[t + 2] * 3,\r\n ax = positions[ia],\r\n ay = positions[ia + 1],\r\n az = positions[ia + 2];\r\n\r\n edgeB[0] = positions[ib] - ax;\r\n edgeB[1] = positions[ib + 1] - ay;\r\n edgeB[2] = positions[ib + 2] - az;\r\n\r\n edgeC[0] = positions[ic] - ax;\r\n edgeC[1] = positions[ic + 1] - ay;\r\n edgeC[2] = positions[ic + 2] - az;\r\n\r\n cross(faceNormal, edgeB, edgeC);\r\n\r\n const\r\n nx = faceNormal[0],\r\n ny = faceNormal[1],\r\n nz = faceNormal[2];\r\n\r\n // Unrolled over the triangle's three vertices, which is what the\r\n // `for (const offset of [ ia, ib, ic ])` form allocated for.\r\n normals[ia] += nx;\r\n normals[ia + 1] += ny;\r\n normals[ia + 2] += nz;\r\n normals[ib] += nx;\r\n normals[ib + 1] += ny;\r\n normals[ib + 2] += nz;\r\n normals[ic] += nx;\r\n normals[ic + 1] += ny;\r\n normals[ic + 2] += nz;\r\n }\r\n\r\n\r\n for (let i = 0; i < vertexCount; i++)\r\n {\r\n const\r\n offset = i * 3,\r\n length = Math.hypot(normals[offset], normals[offset + 1], normals[offset + 2]) || 1;\r\n\r\n normals[offset] /= length;\r\n normals[offset + 1] /= length;\r\n normals[offset + 2] /= length;\r\n }\r\n\r\n return normals;\r\n}\r\n\r\n/**\r\n * Generate per-vertex tangents from positions, normals, UVs and indices.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} uvs Flat uv coordinates.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @returns {Float32Array} Flat xyz tangents.\r\n */\r\nexport function generateTangents(positions, normals, uvs, indices)\r\n{\r\n validatePositions(positions);\r\n\r\n const\r\n vertexCount = positions.length / 3,\r\n tan1 = new Float32Array(vertexCount * 3),\r\n tan2 = new Float32Array(vertexCount * 3);\r\n\r\n if (!normals || normals.length !== positions.length ||\r\n !uvs || uvs.length !== vertexCount * 2)\r\n {\r\n throw new Error(\"Tangent channels do not match the vertex count\");\r\n }\r\n validateIndices(indices, vertexCount);\r\n\r\n for (let t = 0; t < indices.length; t += 3)\r\n {\r\n const\r\n i0 = indices[t],\r\n i1 = indices[t + 1],\r\n i2 = indices[t + 2],\r\n p0 = i0 * 3,\r\n p1 = i1 * 3,\r\n p2 = i2 * 3,\r\n t0 = i0 * 2,\r\n t1 = i1 * 2,\r\n t2 = i2 * 2,\r\n x1 = positions[p1] - positions[p0],\r\n y1 = positions[p1 + 1] - positions[p0 + 1],\r\n z1 = positions[p1 + 2] - positions[p0 + 2],\r\n x2 = positions[p2] - positions[p0],\r\n y2 = positions[p2 + 1] - positions[p0 + 1],\r\n z2 = positions[p2 + 2] - positions[p0 + 2],\r\n s1 = uvs[t1] - uvs[t0],\r\n v1 = uvs[t1 + 1] - uvs[t0 + 1],\r\n s2 = uvs[t2] - uvs[t0],\r\n v2 = uvs[t2 + 1] - uvs[t0 + 1],\r\n divisor = s1 * v2 - s2 * v1,\r\n scale = divisor ? 1 / divisor : 0,\r\n sx = (v2 * x1 - v1 * x2) * scale,\r\n sy = (v2 * y1 - v1 * y2) * scale,\r\n sz = (v2 * z1 - v1 * z2) * scale,\r\n tx = (s1 * x2 - s2 * x1) * scale,\r\n ty = (s1 * y2 - s2 * y1) * scale,\r\n tz = (s1 * z2 - s2 * z1) * scale;\r\n\r\n // Unrolled over the triangle's three vertices: the\r\n // `for (const offset of [ p0, p1, p2 ])` form allocated an array literal\r\n // and an iterator per triangle.\r\n tan1[p0] += sx;\r\n tan1[p0 + 1] += sy;\r\n tan1[p0 + 2] += sz;\r\n tan2[p0] += tx;\r\n tan2[p0 + 1] += ty;\r\n tan2[p0 + 2] += tz;\r\n tan1[p1] += sx;\r\n tan1[p1 + 1] += sy;\r\n tan1[p1 + 2] += sz;\r\n tan2[p1] += tx;\r\n tan2[p1 + 1] += ty;\r\n tan2[p1 + 2] += tz;\r\n tan1[p2] += sx;\r\n tan1[p2 + 1] += sy;\r\n tan1[p2 + 2] += sz;\r\n tan2[p2] += tx;\r\n tan2[p2 + 1] += ty;\r\n tan2[p2 + 2] += tz;\r\n }\r\n\r\n const\r\n tangents = new Float32Array(vertexCount * 3),\r\n handedness = new Float32Array(vertexCount);\r\n\r\n for (let i = 0; i < vertexCount; i++)\r\n {\r\n const\r\n offset = i * 3,\r\n nx = normals[offset],\r\n ny = normals[offset + 1],\r\n nz = normals[offset + 2],\r\n tx = tan1[offset],\r\n ty = tan1[offset + 1],\r\n tz = tan1[offset + 2],\r\n normalDotTangent = nx * tx + ny * ty + nz * tz;\r\n\r\n let ox = tx - nx * normalDotTangent,\r\n oy = ty - ny * normalDotTangent,\r\n oz = tz - nz * normalDotTangent;\r\n\r\n const length = Math.hypot(ox, oy, oz) || 1;\r\n\r\n ox /= length;\r\n oy /= length;\r\n oz /= length;\r\n\r\n tangents[offset] = ox;\r\n tangents[offset + 1] = oy;\r\n tangents[offset + 2] = oz;\r\n handedness[i] = (\r\n (ny * oz - nz * oy) * tan2[offset] +\r\n (nz * ox - nx * oz) * tan2[offset + 1] +\r\n (nx * oy - ny * ox) * tan2[offset + 2]\r\n ) < 0 ? -1 : 1;\r\n }\r\n\r\n Object.defineProperty(tangents, \"handedness\", { value: handedness });\r\n return tangents;\r\n}\r\n\r\n/**\r\n * Generate a complete tangent frame while preserving per-vertex UV handedness.\r\n *\r\n * @param {ArrayLike<number>} positions Flat xyz positions.\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} uvs Flat uv coordinates.\r\n * @param {ArrayLike<number>} indices Flat triangle indices.\r\n * @param {object} [options] Generation options.\r\n * @returns {{tangents: Float32Array, binormals: number[], handedness: Float32Array}}\r\n */\r\nexport function generateTangentFrames(positions, normals, uvs, indices, options)\r\n{\r\n const\r\n tangents = generateTangents(positions, normals, uvs, indices),\r\n handedness = tangents.handedness,\r\n binormals = generateBiNormals(normals, tangents, { ...options, handedness });\r\n\r\n return { tangents, binormals, handedness };\r\n}\r\n\r\n/**\r\n * Generate binormals as normalized `normal x tangent`.\r\n *\r\n * @param {ArrayLike<number>} normals Flat xyz normals.\r\n * @param {ArrayLike<number>} tangents Flat xyz tangents.\r\n * @param {object} [options] Generation options.\r\n * @param {\"right\"|\"left\"} [options.uvHandedness] Handedness of generated basis.\r\n * @returns {number[]} Flat xyz binormals.\r\n */\r\nexport function generateBiNormals(normals, tangents, options = {})\r\n{\r\n if (normals.length !== tangents.length || normals.length % 3 !== 0)\r\n {\r\n throw new Error(\"generateBiNormals requires matching complete xyz channels\");\r\n }\r\n\r\n const\r\n conventionSign = options.uvHandedness === \"left\" ? -1 : 1,\r\n binormals = new Array(normals.length);\r\n\r\n for (let i = 0; i < normals.length; i += 3)\r\n {\r\n const\r\n vertexSign = options.handedness?.[i / 3] ?? tangents.handedness?.[i / 3] ?? 1,\r\n sign = conventionSign * vertexSign;\r\n const b = normalize(\r\n [ 0, 0, 0 ],\r\n [\r\n normals[i + 1] * tangents[i + 2] - normals[i + 2] * tangents[i + 1],\r\n normals[i + 2] * tangents[i] - normals[i] * tangents[i + 2],\r\n normals[i] * tangents[i + 1] - normals[i + 1] * tangents[i]\r\n ]\r\n );\r\n binormals[i] = b[0] * sign;\r\n binormals[i + 1] = b[1] * sign;\r\n binormals[i + 2] = b[2] * sign;\r\n }\r\n\r\n return binormals;\r\n}\r\n\r\nexport const mesh = Object.freeze({\r\n triangleNormal,\r\n triangleNormalTo,\r\n triangleArea2,\r\n isDegenerateTriangle,\r\n computeBoundsFromPositions,\r\n computeBoundsFromTriangles,\r\n generateNormals,\r\n generateTangents,\r\n generateTangentFrames,\r\n generateBiNormals\r\n});\r\n"],"names":["validatePositions","positions","length","Error","validateIndices","indices","vertexCount","i","Number","isInteger","triangleNormal","a","b","c","triangleNormalTo","out","abX","abY","abZ","acX","acY","acZ","Math","hypot","triangleArea2","normal","cross","vec3Length","isDegenerateTriangle","epsilon","computeBoundsFromPositions","minBounds","maxBounds","value","computeBoundsFromTriangles","triangles","Infinity","hasVertex","triangle","vertex","vertices","NORMAL_SCRATCH","EDGE_B_SCRATCH","EDGE_C_SCRATCH","generateNormals","normals","Float32Array","faceNormal","edgeB","edgeC","t","ia","ib","ic","ax","ay","az","nx","ny","nz","offset","generateTangents","uvs","tan1","tan2","i0","i1","i2","p0","p1","p2","t0","t1","t2","x1","y1","z1","x2","y2","z2","s1","v1","s2","v2","divisor","scale","sx","sy","sz","tx","ty","tz","tangents","handedness","normalDotTangent","ox","oy","oz","Object","defineProperty","generateTangentFrames","options","binormals","generateBiNormals","conventionSign","uvHandedness","Array","vertexSign","sign","normalize","mesh","freeze"],"mappings":"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"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
import { random } from './random.js';
|
|
1
2
|
import { vec3 } from './vec3.js';
|
|
2
3
|
import { vec4 } from './vec4.js';
|
|
3
4
|
|
|
4
5
|
const noise = {};
|
|
5
6
|
|
|
6
|
-
/**
|
|
7
|
-
* Generates turbulent noise
|
|
8
|
-
*
|
|
9
|
-
* @param {vec4} out
|
|
10
|
-
* @param {number} pos_0
|
|
11
|
-
* @param {number} pos_1
|
|
12
|
-
* @param {number} pos_2
|
|
13
|
-
* @param {number} pos_3
|
|
14
|
-
* @param {number} power
|
|
15
|
-
* @returns {vec4} out
|
|
7
|
+
/**
|
|
8
|
+
* Generates turbulent noise
|
|
9
|
+
*
|
|
10
|
+
* @param {vec4} out
|
|
11
|
+
* @param {number} pos_0
|
|
12
|
+
* @param {number} pos_1
|
|
13
|
+
* @param {number} pos_2
|
|
14
|
+
* @param {number} pos_3
|
|
15
|
+
* @param {number} power
|
|
16
|
+
* @returns {vec4} out
|
|
16
17
|
*/
|
|
17
18
|
noise.turbulence = function () {
|
|
18
19
|
const s_noiseLookup = [],
|
|
@@ -20,8 +21,8 @@ noise.turbulence = function () {
|
|
|
20
21
|
s_globalNoiseTemps = [];
|
|
21
22
|
let s_initialized = false;
|
|
22
23
|
|
|
23
|
-
/**
|
|
24
|
-
* Initializes noise
|
|
24
|
+
/**
|
|
25
|
+
* Initializes noise
|
|
25
26
|
*/
|
|
26
27
|
function initialize() {
|
|
27
28
|
for (let i = 0; i < 256; i++) {
|
|
@@ -95,40 +96,18 @@ noise.turbulence = function () {
|
|
|
95
96
|
};
|
|
96
97
|
}();
|
|
97
98
|
|
|
98
|
-
/**
|
|
99
|
-
* Creates Carbon's seeded one-dimensional Perlin-noise utility.
|
|
100
|
-
*
|
|
101
|
-
* This ports `TriPerlinNoise` from `TriMath.cpp`: gradients are generated by
|
|
102
|
-
* `std::mt19937`, sampling uses Carbon's cubic S-curve, and the returned
|
|
103
|
-
* object owns the native class's otherwise-private gradient table.
|
|
104
|
-
*
|
|
105
|
-
* @param {number} [seed]
|
|
106
|
-
* @returns {{ sample: (x: number) => number, fractalSum: (x: number, octaves: number, amplitudeScale?: number, frequencyScale?: number) => number }}
|
|
99
|
+
/**
|
|
100
|
+
* Creates Carbon's seeded one-dimensional Perlin-noise utility.
|
|
101
|
+
*
|
|
102
|
+
* This ports `TriPerlinNoise` from `TriMath.cpp`: gradients are generated by
|
|
103
|
+
* `std::mt19937`, sampling uses Carbon's cubic S-curve, and the returned
|
|
104
|
+
* object owns the native class's otherwise-private gradient table.
|
|
105
|
+
*
|
|
106
|
+
* @param {number} [seed]
|
|
107
|
+
* @returns {{ sample: (x: number) => number, fractalSum: (x: number, octaves: number, amplitudeScale?: number, frequencyScale?: number) => number }}
|
|
107
108
|
*/
|
|
108
109
|
noise.createPerlinNoise1D = function (seed = Math.floor(Math.random() * 0x100000000)) {
|
|
109
|
-
const
|
|
110
|
-
state[0] = Number(seed) >>> 0;
|
|
111
|
-
for (let index = 1; index < state.length; index++) {
|
|
112
|
-
const previous = state[index - 1] ^ state[index - 1] >>> 30;
|
|
113
|
-
state[index] = Math.imul(1812433253, previous) + index >>> 0;
|
|
114
|
-
}
|
|
115
|
-
let cursor = state.length;
|
|
116
|
-
const twist = () => {
|
|
117
|
-
for (let index = 0; index < state.length; index++) {
|
|
118
|
-
const bits = state[index] & 0x80000000 | state[(index + 1) % state.length] & 0x7fffffff;
|
|
119
|
-
state[index] = state[(index + 397) % state.length] ^ bits >>> 1 ^ (bits & 1 ? 0x9908b0df : 0);
|
|
120
|
-
}
|
|
121
|
-
cursor = 0;
|
|
122
|
-
};
|
|
123
|
-
const next = () => {
|
|
124
|
-
if (cursor >= state.length) twist();
|
|
125
|
-
let value = state[cursor++];
|
|
126
|
-
value ^= value >>> 11;
|
|
127
|
-
value ^= value << 7 & 0x9d2c5680;
|
|
128
|
-
value ^= value << 15 & 0xefc60000;
|
|
129
|
-
value ^= value >>> 18;
|
|
130
|
-
return value >>> 0;
|
|
131
|
-
};
|
|
110
|
+
const next = random.mt19937(seed);
|
|
132
111
|
const gradients = Float64Array.from({
|
|
133
112
|
length: 256
|
|
134
113
|
}, () => (next() % 512 - 256) / 256);
|
|
@@ -161,27 +140,27 @@ noise.createPerlinNoise1D = function (seed = Math.floor(Math.random() * 0x100000
|
|
|
161
140
|
};
|
|
162
141
|
const s_fixedPerlinNoise1D = noise.createPerlinNoise1D(0);
|
|
163
142
|
|
|
164
|
-
/**
|
|
165
|
-
* Evaluates Carbon's global fixed-seed `PerlinNoise1D` function.
|
|
166
|
-
*
|
|
167
|
-
* @param {number} x
|
|
168
|
-
* @param {number} inverseAmplitude
|
|
169
|
-
* @param {number} frequency
|
|
170
|
-
* @param {number} octaves
|
|
171
|
-
* @returns {number}
|
|
143
|
+
/**
|
|
144
|
+
* Evaluates Carbon's global fixed-seed `PerlinNoise1D` function.
|
|
145
|
+
*
|
|
146
|
+
* @param {number} x
|
|
147
|
+
* @param {number} inverseAmplitude
|
|
148
|
+
* @param {number} frequency
|
|
149
|
+
* @param {number} octaves
|
|
150
|
+
* @returns {number}
|
|
172
151
|
*/
|
|
173
152
|
noise.carbonPerlin1D = function (x, inverseAmplitude, frequency, octaves) {
|
|
174
153
|
return s_fixedPerlinNoise1D.fractalSum(x, octaves, 1 / inverseAmplitude, frequency);
|
|
175
154
|
};
|
|
176
155
|
|
|
177
|
-
/**
|
|
178
|
-
* Legacy ccpwgl `Perlin_noise1` helper.
|
|
179
|
-
*
|
|
180
|
-
* This intentionally remains separate from Carbon's fixed-seed
|
|
181
|
-
* `TriPerlinNoise` implementation above.
|
|
182
|
-
*
|
|
183
|
-
* @param {number} a
|
|
184
|
-
* @returns {number}
|
|
156
|
+
/**
|
|
157
|
+
* Legacy ccpwgl `Perlin_noise1` helper.
|
|
158
|
+
*
|
|
159
|
+
* This intentionally remains separate from Carbon's fixed-seed
|
|
160
|
+
* `TriPerlinNoise` implementation above.
|
|
161
|
+
*
|
|
162
|
+
* @param {number} a
|
|
163
|
+
* @returns {number}
|
|
185
164
|
*/
|
|
186
165
|
noise.perlin1 = function () {
|
|
187
166
|
let initialized = false,
|
|
@@ -221,14 +200,14 @@ noise.perlin1 = function () {
|
|
|
221
200
|
};
|
|
222
201
|
}();
|
|
223
202
|
|
|
224
|
-
/**
|
|
225
|
-
* Legacy ccpwgl fractal sum built on randomized `perlin1`.
|
|
226
|
-
*
|
|
227
|
-
* @param {number} x
|
|
228
|
-
* @param {number} alpha
|
|
229
|
-
* @param {number} beta
|
|
230
|
-
* @param {number} octaves
|
|
231
|
-
* @returns {number}
|
|
203
|
+
/**
|
|
204
|
+
* Legacy ccpwgl fractal sum built on randomized `perlin1`.
|
|
205
|
+
*
|
|
206
|
+
* @param {number} x
|
|
207
|
+
* @param {number} alpha
|
|
208
|
+
* @param {number} beta
|
|
209
|
+
* @param {number} octaves
|
|
210
|
+
* @returns {number}
|
|
232
211
|
*/
|
|
233
212
|
noise.perlin1D = function (x, alpha, beta, octaves) {
|
|
234
213
|
let sum = 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noise.js","sources":["../../../../src/global/math/noise.js"],"sourcesContent":["import { vec3 } from \"./vec3.js\";\nimport { vec4 } from \"./vec4.js\";\n\nexport const noise = {};\n\n/**\n * Generates turbulent noise\n *\n * @param {vec4} out\n * @param {number} pos_0\n * @param {number} pos_1\n * @param {number} pos_2\n * @param {number} pos_3\n * @param {number} power\n * @returns {vec4} out\n */\nnoise.turbulence = (function()\n{\n const\n s_noiseLookup = [],\n s_permutations = [],\n s_globalNoiseTemps = [];\n\n let s_initialized = false;\n\n /**\n * Initializes noise\n */\n function initialize()\n {\n for (let i = 0; i < 256; i++)\n {\n s_noiseLookup[i] = vec4.fromValues(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);\n s_permutations[i] = i;\n }\n\n let i = 256;\n while (--i)\n {\n const\n tmp = s_permutations[i],\n index = Math.floor(Math.random() * 256);\n\n s_permutations[i] = s_permutations[index];\n s_permutations[index] = tmp;\n }\n\n for (let i = 0; i < 256; i++)\n {\n s_permutations[256 + i] = s_permutations[i];\n s_noiseLookup[256 + i] = s_noiseLookup[i];\n s_noiseLookup[256 * 2 + i] = s_noiseLookup[i];\n }\n\n for (let i = 0; i < 15; ++i)\n {\n s_globalNoiseTemps[i] = vec3.create();\n }\n\n s_initialized = true;\n }\n\n return function turbulence(out, pos_0, pos_1, pos_2, pos_3, power)\n {\n if (!s_initialized) initialize();\n\n pos_0 += 4096;\n pos_1 += 4096;\n pos_2 += 4096;\n pos_3 += 4096;\n\n let a_0 = Math.floor(pos_0),\n a_1 = Math.floor(pos_1),\n a_2 = Math.floor(pos_2),\n a_3 = Math.floor(pos_3);\n\n const\n t_0 = pos_0 - a_0,\n t_1 = pos_1 - a_1,\n t_2 = pos_2 - a_2,\n t_3 = pos_3 - a_3;\n\n a_0 &= 255;\n a_1 &= 255;\n a_2 &= 255;\n a_3 &= 255;\n\n const\n b_0 = a_0 + 1,\n b_1 = a_1 + 1,\n b_2 = a_2 + 1,\n b_3 = a_3 + 1;\n\n const\n i = s_permutations[a_0],\n j = s_permutations[b_0];\n\n const\n b00 = s_permutations[i + a_1],\n b10 = s_permutations[j + a_1],\n b01 = s_permutations[i + b_1],\n b11 = s_permutations[j + b_1];\n\n let c00 = vec3.lerp(s_globalNoiseTemps[0], s_noiseLookup[b00 + a_2 + a_3], s_noiseLookup[b10 + a_2 + a_3], t_0);\n let c10 = vec3.lerp(s_globalNoiseTemps[1], s_noiseLookup[b01 + a_2 + a_3], s_noiseLookup[b11 + a_2 + a_3], t_0);\n let c01 = vec3.lerp(s_globalNoiseTemps[2], s_noiseLookup[b00 + b_2 + a_3], s_noiseLookup[b10 + b_2 + a_3], t_0);\n let c11 = vec3.lerp(s_globalNoiseTemps[3], s_noiseLookup[b01 + b_2 + a_3], s_noiseLookup[b11 + b_2 + a_3], t_0); // Carbon Noise4D: b01/b11 corners (fixed 2026-07-23)\n let c0 = vec3.lerp(s_globalNoiseTemps[4], c00, c10, t_1);\n let c1 = vec3.lerp(s_globalNoiseTemps[5], c01, c11, t_1);\n const c = vec3.lerp(s_globalNoiseTemps[6], c0, c1, t_2);\n\n c00 = vec3.lerp(s_globalNoiseTemps[7], s_noiseLookup[b00 + a_2 + b_3], s_noiseLookup[b10 + a_2 + b_3], t_0);\n c10 = vec3.lerp(s_globalNoiseTemps[8], s_noiseLookup[b01 + a_2 + b_3], s_noiseLookup[b11 + a_2 + b_3], t_0);\n c01 = vec3.lerp(s_globalNoiseTemps[9], s_noiseLookup[b00 + b_2 + b_3], s_noiseLookup[b10 + b_2 + b_3], t_0);\n c11 = vec3.lerp(s_globalNoiseTemps[10], s_noiseLookup[b01 + b_2 + b_3], s_noiseLookup[b11 + b_2 + b_3], t_0); // Carbon Noise4D: b01/b11 corners (fixed 2026-07-23)\n c0 = vec3.lerp(s_globalNoiseTemps[11], c00, c10, t_1);\n c1 = vec3.lerp(s_globalNoiseTemps[12], c01, c11, t_1);\n const d = vec3.lerp(s_globalNoiseTemps[13], c0, c1, t_2);\n const r = vec3.lerp(s_globalNoiseTemps[14], c, d, t_3);\n\n out[0] += r[0] * power;\n out[1] += r[1] * power;\n out[2] += r[2] * power;\n return out;\n };\n})();\n\n/**\n * Creates Carbon's seeded one-dimensional Perlin-noise utility.\n *\n * This ports `TriPerlinNoise` from `TriMath.cpp`: gradients are generated by\n * `std::mt19937`, sampling uses Carbon's cubic S-curve, and the returned\n * object owns the native class's otherwise-private gradient table.\n *\n * @param {number} [seed]\n * @returns {{ sample: (x: number) => number, fractalSum: (x: number, octaves: number, amplitudeScale?: number, frequencyScale?: number) => number }}\n */\nnoise.createPerlinNoise1D = function(seed = Math.floor(Math.random() * 0x100000000))\n{\n const state = new Uint32Array(624);\n state[0] = Number(seed) >>> 0;\n for (let index = 1; index < state.length; index++)\n {\n const previous = state[index - 1] ^ (state[index - 1] >>> 30);\n state[index] = (Math.imul(1812433253, previous) + index) >>> 0;\n }\n\n let cursor = state.length;\n const twist = () =>\n {\n for (let index = 0; index < state.length; index++)\n {\n const bits = (state[index] & 0x80000000) | (state[(index + 1) % state.length] & 0x7fffffff);\n state[index] = state[(index + 397) % state.length] ^ (bits >>> 1) ^ (bits & 1 ? 0x9908b0df : 0);\n }\n cursor = 0;\n };\n const next = () =>\n {\n if (cursor >= state.length) twist();\n let value = state[cursor++];\n value ^= value >>> 11;\n value ^= (value << 7) & 0x9d2c5680;\n value ^= (value << 15) & 0xefc60000;\n value ^= value >>> 18;\n return value >>> 0;\n };\n const gradients = Float64Array.from(\n { length: 256 },\n () => ((next() % 512) - 256) / 256\n );\n\n const sample = x =>\n {\n const floor = Math.floor(x),\n first = floor & 255,\n second = (first + 1) & 255,\n x0 = x - floor,\n x1 = x0 - 1,\n value0 = x0 * gradients[first],\n value1 = x1 * gradients[second],\n curve = x0 * x0 * (3 - 2 * x0);\n\n return value0 + curve * (value1 - value0);\n };\n const fractalSum = (x, octaves, amplitudeScale = 0.5, frequencyScale = 2) =>\n {\n let sum = 0,\n scale = 1;\n const count = Number.isFinite(octaves) ? Math.max(0, Math.trunc(octaves)) : 0;\n\n for (let index = 0; index < count; index++)\n {\n sum += sample(x) * scale;\n scale *= amplitudeScale;\n x *= frequencyScale;\n }\n return sum;\n };\n\n return { sample, fractalSum };\n};\n\nconst s_fixedPerlinNoise1D = noise.createPerlinNoise1D(0);\n\n/**\n * Evaluates Carbon's global fixed-seed `PerlinNoise1D` function.\n *\n * @param {number} x\n * @param {number} inverseAmplitude\n * @param {number} frequency\n * @param {number} octaves\n * @returns {number}\n */\nnoise.carbonPerlin1D = function(x, inverseAmplitude, frequency, octaves)\n{\n return s_fixedPerlinNoise1D.fractalSum(x, octaves, 1 / inverseAmplitude, frequency);\n};\n\n/**\n * Legacy ccpwgl `Perlin_noise1` helper.\n *\n * This intentionally remains separate from Carbon's fixed-seed\n * `TriPerlinNoise` implementation above.\n *\n * @param {number} a\n * @returns {number}\n */\nnoise.perlin1 = (function()\n{\n let initialized = false,\n permutations = null,\n gradients = null;\n\n function initialize()\n {\n permutations = new Array(514);\n gradients = new Array(514);\n let index = 0;\n\n for (; index < 256; index++)\n {\n permutations[index] = index;\n gradients[index] = Math.random() * 2 - 1;\n }\n\n while (--index)\n {\n const value = permutations[index],\n randomIndex = Math.floor(Math.random() * 256);\n permutations[index] = permutations[randomIndex];\n permutations[randomIndex] = value;\n }\n\n for (index = 0; index < 258; index++)\n {\n permutations[256 + index] = permutations[index];\n gradients[256 + index] = gradients[index];\n }\n initialized = true;\n }\n\n return function perlin1(a)\n {\n if (!initialized) initialize();\n\n const position = a + 4096,\n first = Math.floor(position) & 255,\n second = (first + 1) & 255,\n x0 = position - Math.floor(position),\n x1 = x0 - 1,\n curve = x0 * x0 * (3 - 2 * x0),\n value0 = x0 * gradients[permutations[first]],\n value1 = x1 * gradients[permutations[second]];\n\n return value0 + curve * (value1 - value0);\n };\n})();\n\n/**\n * Legacy ccpwgl fractal sum built on randomized `perlin1`.\n *\n * @param {number} x\n * @param {number} alpha\n * @param {number} beta\n * @param {number} octaves\n * @returns {number}\n */\nnoise.perlin1D = function(x, alpha, beta, octaves)\n{\n let sum = 0,\n position = x,\n scale = 1;\n\n for (let index = 0; index < octaves; index++)\n {\n sum += noise.perlin1(position) / scale;\n scale *= alpha;\n position *= beta;\n }\n return sum;\n};\n\nexport const {\n turbulence,\n createPerlinNoise1D,\n carbonPerlin1D,\n perlin1,\n perlin1D\n} = noise;\n"],"names":["noise","turbulence","s_noiseLookup","s_permutations","s_globalNoiseTemps","s_initialized","initialize","i","vec4","fromValues","Math","random","tmp","index","floor","vec3","create","out","pos_0","pos_1","pos_2","pos_3","power","a_0","a_1","a_2","a_3","t_0","t_1","t_2","t_3","b_0","b_1","b_2","b_3","j","b00","b10","b01","b11","c00","lerp","c10","c01","c11","c0","c1","c","d","r","createPerlinNoise1D","seed","state","Uint32Array","Number","length","previous","imul","cursor","twist","bits","next","value","gradients","Float64Array","from","sample","x","first","second","x0","x1","value0","value1","curve","fractalSum","octaves","amplitudeScale","frequencyScale","sum","scale","count","isFinite","max","trunc","s_fixedPerlinNoise1D","carbonPerlin1D","inverseAmplitude","frequency","perlin1","initialized","permutations","Array","randomIndex","a","position","perlin1D","alpha","beta"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"noise.js","sources":["../../../../src/global/math/noise.js"],"sourcesContent":["import { random } from \"./random.js\";\r\nimport { vec3 } from \"./vec3.js\";\r\nimport { vec4 } from \"./vec4.js\";\r\n\r\nexport const noise = {};\r\n\r\n/**\r\n * Generates turbulent noise\r\n *\r\n * @param {vec4} out\r\n * @param {number} pos_0\r\n * @param {number} pos_1\r\n * @param {number} pos_2\r\n * @param {number} pos_3\r\n * @param {number} power\r\n * @returns {vec4} out\r\n */\r\nnoise.turbulence = (function()\r\n{\r\n const\r\n s_noiseLookup = [],\r\n s_permutations = [],\r\n s_globalNoiseTemps = [];\r\n\r\n let s_initialized = false;\r\n\r\n /**\r\n * Initializes noise\r\n */\r\n function initialize()\r\n {\r\n for (let i = 0; i < 256; i++)\r\n {\r\n s_noiseLookup[i] = vec4.fromValues(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);\r\n s_permutations[i] = i;\r\n }\r\n\r\n let i = 256;\r\n while (--i)\r\n {\r\n const\r\n tmp = s_permutations[i],\r\n index = Math.floor(Math.random() * 256);\r\n\r\n s_permutations[i] = s_permutations[index];\r\n s_permutations[index] = tmp;\r\n }\r\n\r\n for (let i = 0; i < 256; i++)\r\n {\r\n s_permutations[256 + i] = s_permutations[i];\r\n s_noiseLookup[256 + i] = s_noiseLookup[i];\r\n s_noiseLookup[256 * 2 + i] = s_noiseLookup[i];\r\n }\r\n\r\n for (let i = 0; i < 15; ++i)\r\n {\r\n s_globalNoiseTemps[i] = vec3.create();\r\n }\r\n\r\n s_initialized = true;\r\n }\r\n\r\n return function turbulence(out, pos_0, pos_1, pos_2, pos_3, power)\r\n {\r\n if (!s_initialized) initialize();\r\n\r\n pos_0 += 4096;\r\n pos_1 += 4096;\r\n pos_2 += 4096;\r\n pos_3 += 4096;\r\n\r\n let a_0 = Math.floor(pos_0),\r\n a_1 = Math.floor(pos_1),\r\n a_2 = Math.floor(pos_2),\r\n a_3 = Math.floor(pos_3);\r\n\r\n const\r\n t_0 = pos_0 - a_0,\r\n t_1 = pos_1 - a_1,\r\n t_2 = pos_2 - a_2,\r\n t_3 = pos_3 - a_3;\r\n\r\n a_0 &= 255;\r\n a_1 &= 255;\r\n a_2 &= 255;\r\n a_3 &= 255;\r\n\r\n const\r\n b_0 = a_0 + 1,\r\n b_1 = a_1 + 1,\r\n b_2 = a_2 + 1,\r\n b_3 = a_3 + 1;\r\n\r\n const\r\n i = s_permutations[a_0],\r\n j = s_permutations[b_0];\r\n\r\n const\r\n b00 = s_permutations[i + a_1],\r\n b10 = s_permutations[j + a_1],\r\n b01 = s_permutations[i + b_1],\r\n b11 = s_permutations[j + b_1];\r\n\r\n let c00 = vec3.lerp(s_globalNoiseTemps[0], s_noiseLookup[b00 + a_2 + a_3], s_noiseLookup[b10 + a_2 + a_3], t_0);\r\n let c10 = vec3.lerp(s_globalNoiseTemps[1], s_noiseLookup[b01 + a_2 + a_3], s_noiseLookup[b11 + a_2 + a_3], t_0);\r\n let c01 = vec3.lerp(s_globalNoiseTemps[2], s_noiseLookup[b00 + b_2 + a_3], s_noiseLookup[b10 + b_2 + a_3], t_0);\r\n let c11 = vec3.lerp(s_globalNoiseTemps[3], s_noiseLookup[b01 + b_2 + a_3], s_noiseLookup[b11 + b_2 + a_3], t_0); // Carbon Noise4D: b01/b11 corners (fixed 2026-07-23)\r\n let c0 = vec3.lerp(s_globalNoiseTemps[4], c00, c10, t_1);\r\n let c1 = vec3.lerp(s_globalNoiseTemps[5], c01, c11, t_1);\r\n const c = vec3.lerp(s_globalNoiseTemps[6], c0, c1, t_2);\r\n\r\n c00 = vec3.lerp(s_globalNoiseTemps[7], s_noiseLookup[b00 + a_2 + b_3], s_noiseLookup[b10 + a_2 + b_3], t_0);\r\n c10 = vec3.lerp(s_globalNoiseTemps[8], s_noiseLookup[b01 + a_2 + b_3], s_noiseLookup[b11 + a_2 + b_3], t_0);\r\n c01 = vec3.lerp(s_globalNoiseTemps[9], s_noiseLookup[b00 + b_2 + b_3], s_noiseLookup[b10 + b_2 + b_3], t_0);\r\n c11 = vec3.lerp(s_globalNoiseTemps[10], s_noiseLookup[b01 + b_2 + b_3], s_noiseLookup[b11 + b_2 + b_3], t_0); // Carbon Noise4D: b01/b11 corners (fixed 2026-07-23)\r\n c0 = vec3.lerp(s_globalNoiseTemps[11], c00, c10, t_1);\r\n c1 = vec3.lerp(s_globalNoiseTemps[12], c01, c11, t_1);\r\n const d = vec3.lerp(s_globalNoiseTemps[13], c0, c1, t_2);\r\n const r = vec3.lerp(s_globalNoiseTemps[14], c, d, t_3);\r\n\r\n out[0] += r[0] * power;\r\n out[1] += r[1] * power;\r\n out[2] += r[2] * power;\r\n return out;\r\n };\r\n})();\r\n\r\n/**\r\n * Creates Carbon's seeded one-dimensional Perlin-noise utility.\r\n *\r\n * This ports `TriPerlinNoise` from `TriMath.cpp`: gradients are generated by\r\n * `std::mt19937`, sampling uses Carbon's cubic S-curve, and the returned\r\n * object owns the native class's otherwise-private gradient table.\r\n *\r\n * @param {number} [seed]\r\n * @returns {{ sample: (x: number) => number, fractalSum: (x: number, octaves: number, amplitudeScale?: number, frequencyScale?: number) => number }}\r\n */\r\nnoise.createPerlinNoise1D = function(seed = Math.floor(Math.random() * 0x100000000))\r\n{\r\n const next = random.mt19937(seed);\r\n const gradients = Float64Array.from(\r\n { length: 256 },\r\n () => ((next() % 512) - 256) / 256\r\n );\r\n\r\n const sample = x =>\r\n {\r\n const floor = Math.floor(x),\r\n first = floor & 255,\r\n second = (first + 1) & 255,\r\n x0 = x - floor,\r\n x1 = x0 - 1,\r\n value0 = x0 * gradients[first],\r\n value1 = x1 * gradients[second],\r\n curve = x0 * x0 * (3 - 2 * x0);\r\n\r\n return value0 + curve * (value1 - value0);\r\n };\r\n const fractalSum = (x, octaves, amplitudeScale = 0.5, frequencyScale = 2) =>\r\n {\r\n let sum = 0,\r\n scale = 1;\r\n const count = Number.isFinite(octaves) ? Math.max(0, Math.trunc(octaves)) : 0;\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n sum += sample(x) * scale;\r\n scale *= amplitudeScale;\r\n x *= frequencyScale;\r\n }\r\n return sum;\r\n };\r\n\r\n return { sample, fractalSum };\r\n};\r\n\r\nconst s_fixedPerlinNoise1D = noise.createPerlinNoise1D(0);\r\n\r\n/**\r\n * Evaluates Carbon's global fixed-seed `PerlinNoise1D` function.\r\n *\r\n * @param {number} x\r\n * @param {number} inverseAmplitude\r\n * @param {number} frequency\r\n * @param {number} octaves\r\n * @returns {number}\r\n */\r\nnoise.carbonPerlin1D = function(x, inverseAmplitude, frequency, octaves)\r\n{\r\n return s_fixedPerlinNoise1D.fractalSum(x, octaves, 1 / inverseAmplitude, frequency);\r\n};\r\n\r\n/**\r\n * Legacy ccpwgl `Perlin_noise1` helper.\r\n *\r\n * This intentionally remains separate from Carbon's fixed-seed\r\n * `TriPerlinNoise` implementation above.\r\n *\r\n * @param {number} a\r\n * @returns {number}\r\n */\r\nnoise.perlin1 = (function()\r\n{\r\n let initialized = false,\r\n permutations = null,\r\n gradients = null;\r\n\r\n function initialize()\r\n {\r\n permutations = new Array(514);\r\n gradients = new Array(514);\r\n let index = 0;\r\n\r\n for (; index < 256; index++)\r\n {\r\n permutations[index] = index;\r\n gradients[index] = Math.random() * 2 - 1;\r\n }\r\n\r\n while (--index)\r\n {\r\n const value = permutations[index],\r\n randomIndex = Math.floor(Math.random() * 256);\r\n permutations[index] = permutations[randomIndex];\r\n permutations[randomIndex] = value;\r\n }\r\n\r\n for (index = 0; index < 258; index++)\r\n {\r\n permutations[256 + index] = permutations[index];\r\n gradients[256 + index] = gradients[index];\r\n }\r\n initialized = true;\r\n }\r\n\r\n return function perlin1(a)\r\n {\r\n if (!initialized) initialize();\r\n\r\n const position = a + 4096,\r\n first = Math.floor(position) & 255,\r\n second = (first + 1) & 255,\r\n x0 = position - Math.floor(position),\r\n x1 = x0 - 1,\r\n curve = x0 * x0 * (3 - 2 * x0),\r\n value0 = x0 * gradients[permutations[first]],\r\n value1 = x1 * gradients[permutations[second]];\r\n\r\n return value0 + curve * (value1 - value0);\r\n };\r\n})();\r\n\r\n/**\r\n * Legacy ccpwgl fractal sum built on randomized `perlin1`.\r\n *\r\n * @param {number} x\r\n * @param {number} alpha\r\n * @param {number} beta\r\n * @param {number} octaves\r\n * @returns {number}\r\n */\r\nnoise.perlin1D = function(x, alpha, beta, octaves)\r\n{\r\n let sum = 0,\r\n position = x,\r\n scale = 1;\r\n\r\n for (let index = 0; index < octaves; index++)\r\n {\r\n sum += noise.perlin1(position) / scale;\r\n scale *= alpha;\r\n position *= beta;\r\n }\r\n return sum;\r\n};\r\n\r\nexport const {\r\n turbulence,\r\n createPerlinNoise1D,\r\n carbonPerlin1D,\r\n perlin1,\r\n perlin1D\r\n} = noise;\r\n"],"names":["noise","turbulence","s_noiseLookup","s_permutations","s_globalNoiseTemps","s_initialized","initialize","i","vec4","fromValues","Math","random","tmp","index","floor","vec3","create","out","pos_0","pos_1","pos_2","pos_3","power","a_0","a_1","a_2","a_3","t_0","t_1","t_2","t_3","b_0","b_1","b_2","b_3","j","b00","b10","b01","b11","c00","lerp","c10","c01","c11","c0","c1","c","d","r","createPerlinNoise1D","seed","next","mt19937","gradients","Float64Array","from","length","sample","x","first","second","x0","x1","value0","value1","curve","fractalSum","octaves","amplitudeScale","frequencyScale","sum","scale","count","Number","isFinite","max","trunc","s_fixedPerlinNoise1D","carbonPerlin1D","inverseAmplitude","frequency","perlin1","initialized","permutations","Array","value","randomIndex","a","position","perlin1D","alpha","beta"],"mappings":"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"}
|
package/dist/global/math/pool.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GL_FLOAT, GL_UNSIGNED_INT, GL_INT, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_BYTE, GL_BYTE } from '../consts/constants.js';
|
|
2
|
+
import { ARRAY_TYPE } from 'gl-matrix/esm/common.js';
|
|
2
3
|
|
|
3
4
|
function loop(n, f) {
|
|
4
5
|
const result = Array(n);
|
|
@@ -43,12 +44,26 @@ function createPool() {
|
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
/**
|
|
46
|
-
* Shortcut to allocating
|
|
47
|
+
* Shortcut to allocating an array of gl-matrix's own scalar type.
|
|
48
|
+
*
|
|
49
|
+
* The name says F32 and in every environment we ship it IS Float32Array,
|
|
50
|
+
* because that is what `glMatrix.ARRAY_TYPE` defaults to. But gl-matrix owns
|
|
51
|
+
* that choice and exposes `setMatrixArrayType` to change it, so hardcoding
|
|
52
|
+
* the type here is a real defect: `vec3.alloc()` would hand back a narrower
|
|
53
|
+
* array than `vec3.create()` the moment anything overrode it, and every
|
|
54
|
+
* pooled temporary in the math tree would silently round. Following
|
|
55
|
+
* `ARRAY_TYPE` is what makes a pooled vector interchangeable with a created
|
|
56
|
+
* one. Inherited from ccpwgl, where the same hardcoding is still present.
|
|
57
|
+
*
|
|
47
58
|
* @param {Number} length
|
|
48
|
-
* @returns {Float32Array}
|
|
59
|
+
* @returns {Float32Array|Float64Array} gl-matrix's scalar type.
|
|
49
60
|
*/
|
|
50
61
|
function allocF32(length) {
|
|
51
|
-
|
|
62
|
+
// gl-matrix falls back to plain `Array` only where Float32Array does not
|
|
63
|
+
// exist, which cannot happen anywhere this runs; the pool hands out views
|
|
64
|
+
// over a shared ArrayBuffer, so it needs a real typed array either way.
|
|
65
|
+
const ScalarArray = ARRAY_TYPE.BYTES_PER_ELEMENT ? ARRAY_TYPE : Float32Array,
|
|
66
|
+
result = new ScalarArray(alloc(ScalarArray.BYTES_PER_ELEMENT * length), 0, length);
|
|
52
67
|
return result.length !== length ? result.subarray(0, length) : result;
|
|
53
68
|
}
|
|
54
69
|
|