@carbonenginejs/runtime 0.1.0-alpha.4 → 0.1.0-alpha.5
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/dist/global/blue/BlueClasses.js +200 -0
- package/dist/global/blue/BlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueClasses.js +79 -0
- package/dist/global/blue/IBlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
- package/dist/global/blue/blue.js +8 -2
- package/dist/global/blue/blue.js.map +1 -1
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -1
- package/dist/global/consts/index.js +0 -1
- package/dist/global/consts/index.js.map +1 -1
- package/dist/global/consts/renderContext/formats.js +26 -25
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
- package/dist/global/imageio/BitmapDimensions.js.map +1 -0
- package/dist/global/imageio/Cutout.js +28 -0
- package/dist/global/imageio/Cutout.js.map +1 -0
- package/dist/global/imageio/HostBitmap.js +1106 -0
- package/dist/global/imageio/HostBitmap.js.map +1 -0
- package/dist/global/imageio/ImageIOResult.js +99 -0
- package/dist/global/imageio/ImageIOResult.js.map +1 -0
- package/dist/global/imageio/ImageUtility.js +205 -0
- package/dist/global/imageio/ImageUtility.js.map +1 -0
- package/dist/global/imageio/LoadParameters.js +86 -0
- package/dist/global/imageio/LoadParameters.js.map +1 -0
- package/dist/global/imageio/Metadata.js +22 -0
- package/dist/global/imageio/Metadata.js.map +1 -0
- package/dist/global/imageio/index.js +8 -0
- package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
- package/dist/global/index.js +2 -1
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/color.js +1 -1
- package/dist/global/math/color.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +8 -0
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsResMan.js +47 -7
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/Tr2LightProfileRes.js +37 -0
- package/dist/resource/Tr2LightProfileRes.js.map +1 -1
- package/dist/resource/format/CjsByteWriter.js +46 -46
- package/dist/resource/format/CjsByteWriter.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +7 -8
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatStore.js +8 -8
- package/dist/resource/format/CjsFormatStore.js.map +1 -1
- package/dist/resource/format/CjsGeometryFormat.js +114 -0
- package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
- package/dist/resource/format/CjsImageFormat.js +282 -0
- package/dist/resource/format/CjsImageFormat.js.map +1 -0
- package/dist/resource/format/CjsResourceProbe.js +12 -48
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/CjsStringTable.js +37 -37
- package/dist/resource/format/CjsStringTable.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +3 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
- package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +1 -3
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/constants.js +1 -2
- package/dist/resource/formats/cmf/core/constants.js.map +1 -1
- package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
- package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
- package/dist/resource/formats/cmf/core/helpers.js +13 -13
- package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/core/writer.js +24 -24
- package/dist/resource/formats/cmf/core/writer.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +125 -40
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
- package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
- package/dist/resource/formats/dxbc/core/decoder.js +2 -2
- package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +3 -3
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
- package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
- package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -12
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
- package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
- package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +3 -5
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
- package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +3 -5
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +3 -5
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +5 -113
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +40 -15
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +4 -6
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/red/CjsRedFormat.js +22 -28
- package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
- package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
- package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +5 -19
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +3 -5
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +3 -5
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
- package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
- package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
- package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
- package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +3 -5
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +35 -35
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -3
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
- package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/resource/imageio/ImageIO.js +142 -0
- package/dist/resource/imageio/ImageIO.js.map +1 -0
- package/dist/resource/imageio/index.js +17 -0
- package/dist/resource/imageio/index.js.map +1 -0
- package/dist/resource/index.js +7 -0
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
- package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
- package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
- package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
- package/dist/resource/texture/Tr2ImageRes.js +100 -68
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/texture/TriTextureRes.js +151 -29
- package/dist/resource/texture/TriTextureRes.js.map +1 -1
- package/dist/resource/texture/index.js +7 -0
- package/dist/resource/texture/index.js.map +1 -1
- package/dist/resource/texture/registerTextureResources.js +83 -0
- package/dist/resource/texture/registerTextureResources.js.map +1 -0
- package/dist/resource/texture/solidColorTexture.js +10 -19
- package/dist/resource/texture/solidColorTexture.js.map +1 -1
- package/dist/sof/EveSOF.js +39 -7
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
- package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
- package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
- package/dist/trinity/core/Tr2RenderUtils.js +1 -1
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
- package/dist/trinity/core/Tr2TextureReference.js +114 -0
- package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
- package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
- package/dist/trinity/core/procedural/gradientTexture.js +10 -13
- package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/eve/EveImpactOverlay.js +102 -50
- package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
- package/dist/trinity/eve/child/EveChildMesh.js +242 -234
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +57 -16
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
- package/dist/trinity/eve/index.js +2 -2
- package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
- package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.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 +3 -3
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
- package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
- package/dist/trinityal/index.js +1 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +1 -0
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/global/reference/classes/README.md +90 -0
- package/docs/resource/concepts/format-capabilities.md +3 -3
- package/docs/resource/formats/README.md +1 -1
- package/docs/resource/reference/classes/core.md +31 -1
- package/docs/resource/reference/classes/formats.md +7 -7
- package/docs/resource/reference/classes/resources.md +76 -16
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
- package/docs/trinityal/reference/classes/README.md +0 -10
- package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
- package/package.json +4 -3
- package/dist/global/consts/webgpu/index.js +0 -2
- package/dist/global/consts/webgpu/textureFormats.js +0 -180
- package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
- package/dist/resource/formats/dxbc/core/container.js.map +0 -1
- package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
- package/dist/resource/formats/dxbc/core/program.js.map +0 -1
- package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
- package/dist/resource/formats/stl/core/targets.js.map +0 -1
- package/dist/resource/formats/webgl/core/errors.js.map +0 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
- package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
- package/dist/resource/texture/texturePipelineBehavior.js +0 -332
- package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
- package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
|
@@ -46,7 +46,6 @@ export { Tr2ReflectionProbe } from './trinityCore/Tr2ReflectionProbe.js';
|
|
|
46
46
|
export { Tr2SSSSS } from './trinityCore/Tr2SSSSS.js';
|
|
47
47
|
export { Tr2TextureAtlas } from './trinityCore/Tr2TextureAtlas.js';
|
|
48
48
|
export { Tr2TextureAtlasMan } from './trinityCore/Tr2TextureAtlasMan.js';
|
|
49
|
-
export { Tr2TextureReference } from './trinityCore/Tr2TextureReference.js';
|
|
50
49
|
export { Tr2TransientTextureReference } from './trinityCore/Tr2TransientTextureReference.js';
|
|
51
50
|
export { RenderBatchSortType, SSAOQuality, ShadowQuality, TR2SHADERMODEL, Tr2DxtCompressionFormat, Tr2DxtCompressionSquishQuality, Tr2RenderReason, Tr2StandardIlluminant, Tr2TransformModifier, Tr2VolumerticQuality, TriFrustumTestResult, TriVariableContentType } from './trinityCore/enums.js';
|
|
52
51
|
export { INPUTTYPE, UIALIGN, UIANCHOR, UIBOX, UICONTROLTYPE, UICURSOR, UID, UIFONTSIZE, UIFONTSTYLE, UIHITAREA, UIINITPOS, UIMESSAGE, UISTATE, UITRAVERSE } from './ui/enums.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -10,7 +10,6 @@ export { Tr2ReflectionProbe } from './Tr2ReflectionProbe.js';
|
|
|
10
10
|
export { Tr2SSSSS } from './Tr2SSSSS.js';
|
|
11
11
|
export { Tr2TextureAtlas } from './Tr2TextureAtlas.js';
|
|
12
12
|
export { Tr2TextureAtlasMan } from './Tr2TextureAtlasMan.js';
|
|
13
|
-
export { Tr2TextureReference } from './Tr2TextureReference.js';
|
|
14
13
|
export { Tr2TransientTextureReference } from './Tr2TransientTextureReference.js';
|
|
15
14
|
export { RenderBatchSortType, SSAOQuality, ShadowQuality, TR2SHADERMODEL, Tr2DxtCompressionFormat, Tr2DxtCompressionSquishQuality, Tr2RenderReason, Tr2StandardIlluminant, Tr2TransformModifier, Tr2VolumerticQuality, TriFrustumTestResult, TriVariableContentType } from './enums.js';
|
|
16
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
package/dist/trinity/index.js
CHANGED
|
@@ -354,13 +354,13 @@ export { EveSpriteSetItem } from './eve/attachment/sprite/EveSpriteSetItem.js';
|
|
|
354
354
|
export { EveTurretAiming } from './eve/attachment/turrets/EveTurretAiming.js';
|
|
355
355
|
export { EveTurretFiringFX } from './eve/attachment/turrets/EveTurretFiringFX.js';
|
|
356
356
|
export { EveTurretSet } from './eve/attachment/turrets/EveTurretSet.js';
|
|
357
|
-
export { EveTurretTarget } from './eve/attachment/turrets/EveTurretTarget.js';
|
|
357
|
+
export { EVE_TURRET_RANDOM_DELAY_MAX, EveTurretTarget } from './eve/attachment/turrets/EveTurretTarget.js';
|
|
358
358
|
export { EveLocator2 } from './eve/locator/EveLocator2.js';
|
|
359
359
|
export { EveGetLocatorPose, EveLocatorSets } from './eve/locator/EveLocatorSets.js';
|
|
360
360
|
export { Locator } from './eve/locator/Locator.js';
|
|
361
361
|
export { LocatorData } from './eve/locator/LocatorData.js';
|
|
362
362
|
export { EveMeshOverlayEffect } from './eve/overlays/EveMeshOverlayEffect.js';
|
|
363
|
-
export { EveDamageOverlay } from './eve/overlays/EveDamageOverlay.js';
|
|
363
|
+
export { EveDamageOverlay, IMPACT_ARMOR_SIZE_FACTOR, IMPACT_ARMOR_SIZE_MAX } from './eve/overlays/EveDamageOverlay.js';
|
|
364
364
|
export { EveParticleDirectForce } from './eve/particles/force/EveParticleDirectForce.js';
|
|
365
365
|
export { EveParticleDragForce } from './eve/particles/force/EveParticleDragForce.js';
|
|
366
366
|
export { EveParticleSpring } from './eve/particles/force/EveParticleSpring.js';
|
|
@@ -655,6 +655,7 @@ export { Tr2VolumetricsRenderer } from './core/volumetrics/Tr2VolumetricsRendere
|
|
|
655
655
|
export { Tr2StreamingBitmapSaver } from './core/Tr2StreamingBitmapSaver.js';
|
|
656
656
|
export { Tr2TextureArrayElement } from './core/Tr2TextureArray/Tr2TextureArrayElement.js';
|
|
657
657
|
export { Tr2TextureArray } from './core/Tr2TextureArray/Tr2TextureArray.js';
|
|
658
|
+
export { Tr2TextureReference } from './core/Tr2TextureReference.js';
|
|
658
659
|
export { Tr2PresentParameters } from './ui/Tr2PresentParameters.js';
|
|
659
660
|
export { Tr2ProjectBoundingBoxBracket } from './ui/Tr2ProjectBoundingBoxBracket.js';
|
|
660
661
|
export { EveCloudEditableVolume } from './generated/eve/child/EveCloudEditableVolume.js';
|
|
@@ -703,7 +704,6 @@ export { Tr2ReflectionProbe } from './generated/trinityCore/Tr2ReflectionProbe.j
|
|
|
703
704
|
export { Tr2SSSSS } from './generated/trinityCore/Tr2SSSSS.js';
|
|
704
705
|
export { Tr2TextureAtlas } from './generated/trinityCore/Tr2TextureAtlas.js';
|
|
705
706
|
export { Tr2TextureAtlasMan } from './generated/trinityCore/Tr2TextureAtlasMan.js';
|
|
706
|
-
export { Tr2TextureReference } from './generated/trinityCore/Tr2TextureReference.js';
|
|
707
707
|
export { Tr2TransientTextureReference } from './generated/trinityCore/Tr2TransientTextureReference.js';
|
|
708
708
|
export { RenderBatchSortType, SSAOQuality, ShadowQuality, TR2SHADERMODEL, Tr2DxtCompressionFormat, Tr2DxtCompressionSquishQuality, Tr2RenderReason, Tr2StandardIlluminant, Tr2TransformModifier, Tr2VolumerticQuality, TriFrustumTestResult, TriVariableContentType } from './generated/trinityCore/enums.js';
|
|
709
709
|
export { INPUTTYPE, UIALIGN, UIANCHOR, UIBOX, UICONTROLTYPE, UICURSOR, UID, UIFONTSIZE, UIFONTSTYLE, UIHITAREA, UIINITPOS, UIMESSAGE, UISTATE, UITRAVERSE } from './generated/ui/enums.js';
|
|
@@ -23,7 +23,7 @@ new class extends _identity {
|
|
|
23
23
|
} = _applyDecs2311(this, [type.define({
|
|
24
24
|
className: "Tr2GpuSharedEmitter",
|
|
25
25
|
family: "particle"
|
|
26
|
-
}), carbon.inherit(ITr2GenericEmitter)], [[[edit, edit.persist, type, type.string], 16, "name"], [[edit, edit.persist, type, type.boolean], 16, "continuousEmitter"], [[edit, edit.persist, type, type.float32], 16, "rate"], [[edit, edit.persist, type, type.float32], 16, "emissionDensity"], [[edit, edit.persist, type, type.float32], 16, "maxEmissionDensity"], [[edit, edit.persist, type, type.float32], 16, "maxDisplacement"], [[edit, edit.persist, type, type.vec3], 16, "position"], [[edit, edit.persist, type, type.vec3], 16, "direction"], [[edit, edit.persist, type, type.float32], 16, "angle"], [[edit, edit.persist, type, type.float32], 16, "innerAngle"], [[edit, edit.persist, type, type.float32], 16, "radius"], [[edit, edit.persist, type, type.float32], 16, "inheritVelocity"], [[edit, edit.persist, type, type.float32], 16, "minSpeed"], [[edit, edit.persist, type, type.float32], 16, "maxSpeed"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "minLifeTime"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "maxLifeTime"], [[edit, edit.notify, edit, edit.persist, type, type.vec3], 16, "sizes"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "sizeVariance"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color0"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color1"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color2"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color3"], [[edit, edit.notify, edit, edit.persist, type, type.uint32], 16, "textureIndex"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "colorMidpoint"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "velocityStretchRotation"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "drag"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "turbulenceAmplitude"], [[edit, edit.notify, edit, edit.persist, type, type.uint32], 16, "turbulenceFrequency"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "gravity"], [[carbon, carbon.method, impl, impl.adapted], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "OnModified"], [[carbon, carbon.method, impl, impl.adapted], 18, "Enable"], [[carbon, carbon.method, impl, impl.adapted], 18, "IsEnabled"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetDirection"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetPosition"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Projects Carbon's setup structs onto the schema-backed editor fields; renderer-only spawn history and transformed parameters remain adapter-owned.")], 18, "Setup"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetRevision"], [[impl, impl.noop], 18, "SetThreadSafeFlag"]], 0, void 0, CjsModel));
|
|
26
|
+
}), carbon.inherit(ITr2GenericEmitter)], [[[edit, edit.persist, type, type.string], 16, "name"], [[edit, edit.persist, type, type.boolean], 16, "continuousEmitter"], [[edit, edit.persist, type, type.float32], 16, "rate"], [[edit, edit.persist, type, type.float32], 16, "emissionDensity"], [[edit, edit.persist, type, type.float32], 16, "maxEmissionDensity"], [[edit, edit.persist, type, type.float32], 16, "maxDisplacement"], [[edit, edit.persist, type, type.vec3], 16, "position"], [[edit, edit.persist, type, type.vec3], 16, "direction"], [[edit, edit.persist, type, type.float32], 16, "angle"], [[edit, edit.persist, type, type.float32], 16, "innerAngle"], [[edit, edit.persist, type, type.float32], 16, "radius"], [[edit, edit.persist, type, type.float32], 16, "inheritVelocity"], [[edit, edit.persist, type, type.float32], 16, "minSpeed"], [[edit, edit.persist, type, type.float32], 16, "maxSpeed"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "minLifeTime"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "maxLifeTime"], [[edit, edit.notify, edit, edit.persist, type, type.vec3], 16, "sizes"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "sizeVariance"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color0"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color1"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color2"], [[edit, edit.notify, edit, edit.persist, type, type.color], 16, "color3"], [[edit, edit.notify, edit, edit.persist, type, type.uint32], 16, "textureIndex"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "colorMidpoint"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "velocityStretchRotation"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "drag"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "turbulenceAmplitude"], [[edit, edit.notify, edit, edit.persist, type, type.uint32], 16, "turbulenceFrequency"], [[edit, edit.notify, edit, edit.persist, type, type.float32], 16, "gravity"], [[carbon, carbon.method, impl, impl.adapted], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "OnModified"], [[carbon, carbon.method, impl, impl.adapted], 18, "Enable"], [[carbon, carbon.method, impl, impl.adapted], 18, "IsEnabled"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetDirection"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetPosition"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "SpawnOnce"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Projects Carbon's setup structs onto the schema-backed editor fields; renderer-only spawn history and transformed parameters remain adapter-owned.")], 18, "Setup"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetRevision"], [[impl, impl.noop], 18, "SetThreadSafeFlag"]], 0, void 0, CjsModel));
|
|
27
27
|
}
|
|
28
28
|
name = (_initProto(this), _init_name(this, ""));
|
|
29
29
|
continuousEmitter = (_init_extra_name(this), _init_continuousEmitter(this, true));
|
|
@@ -100,6 +100,15 @@ new class extends _identity {
|
|
|
100
100
|
vec3.copy(this.position, value || _Tr2GpuSharedEmitter.#zero3);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Emits one scaled burst into the GPU particle system (Carbon
|
|
105
|
+
* Tr2GpuSharedEmitter.cpp:236-276). Requires Tr2GpuParticleSystem.Emit and
|
|
106
|
+
* the parameter hash/ID registry, neither of which is ported.
|
|
107
|
+
*/
|
|
108
|
+
SpawnOnce(_arguments, _velocity, _scale = 1, _rateModifier = 1) {
|
|
109
|
+
throw new Error("Tr2GpuSharedEmitter.SpawnOnce is not implemented in CarbonEngineJS.");
|
|
110
|
+
}
|
|
111
|
+
|
|
103
112
|
/**
|
|
104
113
|
* Projects Carbon's emitter and particle-parameter structs onto the schema-backed fields in one batched, event-free update followed by a single UpdateValues.
|
|
105
114
|
* @param {object} emitterData emission shape and speed range; missing members fall back to the current values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2GpuSharedEmitter.js","sources":["../../../../../src/trinity/particle/emitter/Tr2GpuSharedEmitter.js"],"sourcesContent":["// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter.h\n// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter.cpp\n// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter_Blue.cpp\n// Source: trinity/trinity/Particle/Tr2GpuParticleSystem.h\nimport { color } from \"#math/color\";\nimport { vec3 } from \"#math/vec3\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { ITr2GenericEmitter } from \"../ITr2GenericEmitter/index.js\";\n\n\n/**\n * Authored parameters of a GPU particle emitter: emission cone and rate,\n * particle lifetime and speed range, size and colour ramp, and the drag,\n * turbulence and gravity terms the simulation applies.\n */\n@type.define({ className: \"Tr2GpuSharedEmitter\", family: \"particle\" })\n@carbon.inherit(ITr2GenericEmitter)\nexport class Tr2GpuSharedEmitter extends CjsModel\n{\n @edit.persist\n @type.string\n name = \"\";\n\n @edit.persist\n @type.boolean\n continuousEmitter = true;\n\n @edit.persist\n @type.float32\n rate = 0;\n\n @edit.persist\n @type.float32\n emissionDensity = 0;\n\n @edit.persist\n @type.float32\n maxEmissionDensity = 10000;\n\n @edit.persist\n @type.float32\n maxDisplacement = 1000;\n\n @edit.persist\n @type.vec3\n position = vec3.create();\n\n @edit.persist\n @type.vec3\n direction = vec3.fromValues(0, 1, 0);\n\n @edit.persist\n @type.float32\n angle = 0;\n\n @edit.persist\n @type.float32\n innerAngle = 0;\n\n @edit.persist\n @type.float32\n radius = 0;\n\n @edit.persist\n @type.float32\n inheritVelocity = 1;\n\n @edit.persist\n @type.float32\n minSpeed = 0;\n\n @edit.persist\n @type.float32\n maxSpeed = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n minLifeTime = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n maxLifeTime = 0;\n\n @edit.notify\n @edit.persist\n @type.vec3\n sizes = vec3.create();\n\n @edit.notify\n @edit.persist\n @type.float32\n sizeVariance = 0;\n\n @edit.notify\n @edit.persist\n @type.color\n color0 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color1 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color2 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color3 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.uint32\n textureIndex = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n colorMidpoint = 0.5;\n\n @edit.notify\n @edit.persist\n @type.float32\n velocityStretchRotation = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n drag = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n turbulenceAmplitude = 0;\n\n @edit.notify\n @edit.persist\n @type.uint32\n turbulenceFrequency = 1;\n\n @edit.notify\n @edit.persist\n @type.float32\n gravity = 0;\n\n #enabled = true;\n\n #previousTime = -1;\n\n #revision = 0;\n\n /**\n * Bumps the revision so a renderer holding this emitter rebuilds from it;\n * there are no GPU resources to create here.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n this.#revision++;\n return true;\n }\n\n /**\n * Bumps the revision so a renderer holding this emitter picks up the changed\n * parameters.\n */\n @carbon.method\n @impl.adapted\n OnModified()\n {\n this.#revision++;\n return true;\n }\n\n /**\n * Turns emission on or off; disabling also clears the spawn-time cursor so\n * re-enabling restarts timing instead of catching up on the idle interval.\n */\n @carbon.method\n @impl.adapted\n Enable(value)\n {\n this.#enabled = !!value;\n if (!this.#enabled) this.#previousTime = -1;\n }\n\n /** Reports whether this emitter is currently emitting. */\n @carbon.method\n @impl.adapted\n IsEnabled()\n {\n return this.#enabled;\n }\n\n /** Sets the emission cone axis in place, treating a missing value as zero. */\n @carbon.method\n @impl.adapted\n SetDirection(value)\n {\n vec3.copy(this.direction, value || Tr2GpuSharedEmitter.#zero3);\n }\n\n /** Sets the emitter origin in place, treating a missing value as zero. */\n @carbon.method\n @impl.adapted\n SetPosition(value)\n {\n vec3.copy(this.position, value || Tr2GpuSharedEmitter.#zero3);\n }\n\n /**\n * Projects Carbon's emitter and particle-parameter structs onto the schema-backed fields in one batched, event-free update followed by a single UpdateValues.\n * @param {object} emitterData emission shape and speed range; missing members fall back to the current values\n * @param {object} paramsData per-particle parameters; colors may be supplied either as a colors array or as color0..color3\n * attractorStrength is only forwarded on subclasses that declare it.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Projects Carbon's setup structs onto the schema-backed editor fields; renderer-only spawn history and transformed parameters remain adapter-owned.\")\n Setup(rate, emitterData, paramsData)\n {\n const emitter = emitterData || {};\n const parameters = paramsData || {};\n const colors = parameters.colors || [];\n const values = {\n rate,\n radius: emitter.radius,\n angle: emitter.angle,\n innerAngle: emitter.innerAngle,\n minSpeed: emitter.minSpeed,\n maxSpeed: emitter.maxSpeed,\n minLifeTime: parameters.minLifeTime,\n maxLifeTime: parameters.maxLifeTime,\n textureIndex: parameters.textureIndex,\n colorMidpoint: parameters.colorMidpoint ?? 0.5,\n color0: colors[0] ?? parameters.color0,\n color1: colors[1] ?? parameters.color1,\n color2: colors[2] ?? parameters.color2,\n color3: colors[3] ?? parameters.color3,\n sizes: parameters.sizes,\n sizeVariance: parameters.sizeVariance,\n drag: parameters.drag,\n turbulenceAmplitude: parameters.turbulenceAmplitude,\n turbulenceFrequency: parameters.turbulenceFrequency ?? 1,\n gravity: parameters.gravity,\n velocityStretchRotation: parameters.velocityStretchRotation\n };\n if (\"attractorStrength\" in this)\n {\n values.attractorStrength = parameters.attractorStrength;\n }\n\n this.SetValues(values, { source: this, skipEvents: true, skipUpdate: true });\n this.UpdateValues({ source: this, skipEvents: true });\n }\n\n /**\n * Returns the counter bumped by Initialize and OnModified, which a renderer\n * compares against its own copy to detect parameter changes.\n */\n @carbon.method\n @impl.adapted\n GetRevision()\n {\n return this.#revision;\n }\n\n /** Carbon's GPU emitter thread-safety hook is intentionally empty. */\n @impl.noop\n SetThreadSafeFlag()\n {\n }\n\n static #zero3 = vec3.create();\n}\n"],"names":["_Tr2GpuSharedEmitter","_identity","Tr2GpuSharedEmitter","CjsModel","e","_init_name","_init_extra_name","_init_continuousEmitter","_init_extra_continuousEmitter","_init_rate","_init_extra_rate","_init_emissionDensity","_init_extra_emissionDensity","_init_maxEmissionDensity","_init_extra_maxEmissionDensity","_init_maxDisplacement","_init_extra_maxDisplacement","_init_position","_init_extra_position","_init_direction","_init_extra_direction","_init_angle","_init_extra_angle","_init_innerAngle","_init_extra_innerAngle","_init_radius","_init_extra_radius","_init_inheritVelocity","_init_extra_inheritVelocity","_init_minSpeed","_init_extra_minSpeed","_init_maxSpeed","_init_extra_maxSpeed","_init_minLifeTime","_init_extra_minLifeTime","_init_maxLifeTime","_init_extra_maxLifeTime","_init_sizes","_init_extra_sizes","_init_sizeVariance","_init_extra_sizeVariance","_init_color","_init_extra_color","_init_color2","_init_extra_color2","_init_color3","_init_extra_color3","_init_color4","_init_extra_color4","_init_textureIndex","_init_extra_textureIndex","_init_colorMidpoint","_init_extra_colorMidpoint","_init_velocityStretchRotation","_init_extra_velocityStretchRotation","_init_drag","_init_extra_drag","_init_turbulenceAmplitude","_init_extra_turbulenceAmplitude","_init_turbulenceFrequency","_init_extra_turbulenceFrequency","_init_gravity","_init_extra_gravity","_initProto","c","_initClass","_applyDecs","type","define","className","family","carbon","inherit","ITr2GenericEmitter","edit","persist","string","boolean","float32","vec3","notify","color","uint32","method","impl","adapted","reason","noop","name","continuousEmitter","rate","emissionDensity","maxEmissionDensity","maxDisplacement","position","create","direction","fromValues","angle","innerAngle","radius","inheritVelocity","minSpeed","maxSpeed","minLifeTime","maxLifeTime","sizes","sizeVariance","color0","createLinear","color1","color2","color3","textureIndex","colorMidpoint","velocityStretchRotation","drag","turbulenceAmplitude","turbulenceFrequency","gravity","Initialize","OnModified","Enable","value","IsEnabled","SetDirection","copy","SetPosition","Setup","emitterData","paramsData","emitter","parameters","colors","values","attractorStrength","SetValues","source","skipEvents","skipUpdate","UpdateValues","GetRevision","SetThreadSafeFlag","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2GpuSharedEmitter.js","sources":["../../../../../src/trinity/particle/emitter/Tr2GpuSharedEmitter.js"],"sourcesContent":["// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter.h\n// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter.cpp\n// Source: trinity/trinity/Particle/Tr2GpuSharedEmitter_Blue.cpp\n// Source: trinity/trinity/Particle/Tr2GpuParticleSystem.h\nimport { color } from \"#math/color\";\nimport { vec3 } from \"#math/vec3\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { ITr2GenericEmitter } from \"../ITr2GenericEmitter/index.js\";\n\n\n/**\n * Authored parameters of a GPU particle emitter: emission cone and rate,\n * particle lifetime and speed range, size and colour ramp, and the drag,\n * turbulence and gravity terms the simulation applies.\n */\n@type.define({ className: \"Tr2GpuSharedEmitter\", family: \"particle\" })\n@carbon.inherit(ITr2GenericEmitter)\nexport class Tr2GpuSharedEmitter extends CjsModel\n{\n @edit.persist\n @type.string\n name = \"\";\n\n @edit.persist\n @type.boolean\n continuousEmitter = true;\n\n @edit.persist\n @type.float32\n rate = 0;\n\n @edit.persist\n @type.float32\n emissionDensity = 0;\n\n @edit.persist\n @type.float32\n maxEmissionDensity = 10000;\n\n @edit.persist\n @type.float32\n maxDisplacement = 1000;\n\n @edit.persist\n @type.vec3\n position = vec3.create();\n\n @edit.persist\n @type.vec3\n direction = vec3.fromValues(0, 1, 0);\n\n @edit.persist\n @type.float32\n angle = 0;\n\n @edit.persist\n @type.float32\n innerAngle = 0;\n\n @edit.persist\n @type.float32\n radius = 0;\n\n @edit.persist\n @type.float32\n inheritVelocity = 1;\n\n @edit.persist\n @type.float32\n minSpeed = 0;\n\n @edit.persist\n @type.float32\n maxSpeed = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n minLifeTime = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n maxLifeTime = 0;\n\n @edit.notify\n @edit.persist\n @type.vec3\n sizes = vec3.create();\n\n @edit.notify\n @edit.persist\n @type.float32\n sizeVariance = 0;\n\n @edit.notify\n @edit.persist\n @type.color\n color0 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color1 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color2 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.color\n color3 = color.createLinear();\n\n @edit.notify\n @edit.persist\n @type.uint32\n textureIndex = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n colorMidpoint = 0.5;\n\n @edit.notify\n @edit.persist\n @type.float32\n velocityStretchRotation = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n drag = 0;\n\n @edit.notify\n @edit.persist\n @type.float32\n turbulenceAmplitude = 0;\n\n @edit.notify\n @edit.persist\n @type.uint32\n turbulenceFrequency = 1;\n\n @edit.notify\n @edit.persist\n @type.float32\n gravity = 0;\n\n #enabled = true;\n\n #previousTime = -1;\n\n #revision = 0;\n\n /**\n * Bumps the revision so a renderer holding this emitter rebuilds from it;\n * there are no GPU resources to create here.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n this.#revision++;\n return true;\n }\n\n /**\n * Bumps the revision so a renderer holding this emitter picks up the changed\n * parameters.\n */\n @carbon.method\n @impl.adapted\n OnModified()\n {\n this.#revision++;\n return true;\n }\n\n /**\n * Turns emission on or off; disabling also clears the spawn-time cursor so\n * re-enabling restarts timing instead of catching up on the idle interval.\n */\n @carbon.method\n @impl.adapted\n Enable(value)\n {\n this.#enabled = !!value;\n if (!this.#enabled) this.#previousTime = -1;\n }\n\n /** Reports whether this emitter is currently emitting. */\n @carbon.method\n @impl.adapted\n IsEnabled()\n {\n return this.#enabled;\n }\n\n /** Sets the emission cone axis in place, treating a missing value as zero. */\n @carbon.method\n @impl.adapted\n SetDirection(value)\n {\n vec3.copy(this.direction, value || Tr2GpuSharedEmitter.#zero3);\n }\n\n /** Sets the emitter origin in place, treating a missing value as zero. */\n @carbon.method\n @impl.adapted\n SetPosition(value)\n {\n vec3.copy(this.position, value || Tr2GpuSharedEmitter.#zero3);\n }\n\n /**\n * Emits one scaled burst into the GPU particle system (Carbon\n * Tr2GpuSharedEmitter.cpp:236-276). Requires Tr2GpuParticleSystem.Emit and\n * the parameter hash/ID registry, neither of which is ported.\n */\n @carbon.method\n @impl.notImplemented\n SpawnOnce(_arguments, _velocity, _scale = 1, _rateModifier = 1)\n {\n throw new Error(\"Tr2GpuSharedEmitter.SpawnOnce is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Projects Carbon's emitter and particle-parameter structs onto the schema-backed fields in one batched, event-free update followed by a single UpdateValues.\n * @param {object} emitterData emission shape and speed range; missing members fall back to the current values\n * @param {object} paramsData per-particle parameters; colors may be supplied either as a colors array or as color0..color3\n * attractorStrength is only forwarded on subclasses that declare it.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Projects Carbon's setup structs onto the schema-backed editor fields; renderer-only spawn history and transformed parameters remain adapter-owned.\")\n Setup(rate, emitterData, paramsData)\n {\n const emitter = emitterData || {};\n const parameters = paramsData || {};\n const colors = parameters.colors || [];\n const values = {\n rate,\n radius: emitter.radius,\n angle: emitter.angle,\n innerAngle: emitter.innerAngle,\n minSpeed: emitter.minSpeed,\n maxSpeed: emitter.maxSpeed,\n minLifeTime: parameters.minLifeTime,\n maxLifeTime: parameters.maxLifeTime,\n textureIndex: parameters.textureIndex,\n colorMidpoint: parameters.colorMidpoint ?? 0.5,\n color0: colors[0] ?? parameters.color0,\n color1: colors[1] ?? parameters.color1,\n color2: colors[2] ?? parameters.color2,\n color3: colors[3] ?? parameters.color3,\n sizes: parameters.sizes,\n sizeVariance: parameters.sizeVariance,\n drag: parameters.drag,\n turbulenceAmplitude: parameters.turbulenceAmplitude,\n turbulenceFrequency: parameters.turbulenceFrequency ?? 1,\n gravity: parameters.gravity,\n velocityStretchRotation: parameters.velocityStretchRotation\n };\n if (\"attractorStrength\" in this)\n {\n values.attractorStrength = parameters.attractorStrength;\n }\n\n this.SetValues(values, { source: this, skipEvents: true, skipUpdate: true });\n this.UpdateValues({ source: this, skipEvents: true });\n }\n\n /**\n * Returns the counter bumped by Initialize and OnModified, which a renderer\n * compares against its own copy to detect parameter changes.\n */\n @carbon.method\n @impl.adapted\n GetRevision()\n {\n return this.#revision;\n }\n\n /** Carbon's GPU emitter thread-safety hook is intentionally empty. */\n @impl.noop\n SetThreadSafeFlag()\n {\n }\n\n static #zero3 = vec3.create();\n}\n"],"names":["_Tr2GpuSharedEmitter","_identity","Tr2GpuSharedEmitter","CjsModel","e","_init_name","_init_extra_name","_init_continuousEmitter","_init_extra_continuousEmitter","_init_rate","_init_extra_rate","_init_emissionDensity","_init_extra_emissionDensity","_init_maxEmissionDensity","_init_extra_maxEmissionDensity","_init_maxDisplacement","_init_extra_maxDisplacement","_init_position","_init_extra_position","_init_direction","_init_extra_direction","_init_angle","_init_extra_angle","_init_innerAngle","_init_extra_innerAngle","_init_radius","_init_extra_radius","_init_inheritVelocity","_init_extra_inheritVelocity","_init_minSpeed","_init_extra_minSpeed","_init_maxSpeed","_init_extra_maxSpeed","_init_minLifeTime","_init_extra_minLifeTime","_init_maxLifeTime","_init_extra_maxLifeTime","_init_sizes","_init_extra_sizes","_init_sizeVariance","_init_extra_sizeVariance","_init_color","_init_extra_color","_init_color2","_init_extra_color2","_init_color3","_init_extra_color3","_init_color4","_init_extra_color4","_init_textureIndex","_init_extra_textureIndex","_init_colorMidpoint","_init_extra_colorMidpoint","_init_velocityStretchRotation","_init_extra_velocityStretchRotation","_init_drag","_init_extra_drag","_init_turbulenceAmplitude","_init_extra_turbulenceAmplitude","_init_turbulenceFrequency","_init_extra_turbulenceFrequency","_init_gravity","_init_extra_gravity","_initProto","c","_initClass","_applyDecs","type","define","className","family","carbon","inherit","ITr2GenericEmitter","edit","persist","string","boolean","float32","vec3","notify","color","uint32","method","impl","adapted","notImplemented","reason","noop","name","continuousEmitter","rate","emissionDensity","maxEmissionDensity","maxDisplacement","position","create","direction","fromValues","angle","innerAngle","radius","inheritVelocity","minSpeed","maxSpeed","minLifeTime","maxLifeTime","sizes","sizeVariance","color0","createLinear","color1","color2","color3","textureIndex","colorMidpoint","velocityStretchRotation","drag","turbulenceAmplitude","turbulenceFrequency","gravity","Initialize","OnModified","Enable","value","IsEnabled","SetDirection","copy","SetPosition","SpawnOnce","_arguments","_velocity","_scale","_rateModifier","Error","Setup","emitterData","paramsData","emitter","parameters","colors","values","attractorStrength","SetValues","source","skipEvents","skipUpdate","UpdateValues","GetRevision","SetThreadSafeFlag","constructor"],"mappings":"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"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { applyDecs2311 as _applyDecs2311 } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import { edit, type,
|
|
2
|
+
import { edit, type, impl, carbon } from '#schema';
|
|
3
3
|
import { CjsModel } from '#model';
|
|
4
|
+
import { PixelFormat, Tr2GpuUsage, Tr2CpuUsage } from '#consts/render-context';
|
|
5
|
+
import { BitmapDimensions } from '#imageio';
|
|
6
|
+
import { Succeeded } from '../../trinityal/ALResult.js';
|
|
7
|
+
import { Tr2TextureSubresource } from '../../trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js';
|
|
8
|
+
import { Tr2SubresourceData } from '../../trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js';
|
|
9
|
+
import { Tr2RenderContext_GetMainThreadRenderContext } from '../core/context/Tr2RenderContext.js';
|
|
10
|
+
import { TriDevice as _TriDevice } from '../core/device/TriDevice.js';
|
|
11
|
+
import { Tr2TextureReference as _Tr2TextureReference } from '../core/Tr2TextureReference.js';
|
|
12
|
+
import { Tr2VariableStore as _Tr2VariableStore } from '../core/variable/Tr2VariableStore.js';
|
|
4
13
|
|
|
5
14
|
let _initProto, _initClass, _init_textureWidth, _init_extra_textureWidth, _init_textureHeight, _init_extra_textureHeight, _init_blockDataNextIdx, _init_extra_blockDataNextIdx, _init_maxBlockCount, _init_extra_maxBlockCount, _init_maxPixelCount, _init_extra_maxPixelCount, _init_name, _init_extra_name;
|
|
15
|
+
const IMPACT_SHIELD_DATA_MAP = "ImpactShieldDataMap";
|
|
16
|
+
const VEC4_BYTES = 16;
|
|
6
17
|
|
|
7
|
-
/** Packs shader-readable data blocks into
|
|
18
|
+
/** Packs shader-readable data blocks into the shared impact data texture. */
|
|
8
19
|
let _Tr2DataTextureManage;
|
|
9
20
|
class Tr2DataTextureManager extends CjsModel {
|
|
10
21
|
static {
|
|
@@ -14,7 +25,7 @@ class Tr2DataTextureManager extends CjsModel {
|
|
|
14
25
|
} = _applyDecs2311(this, [type.define({
|
|
15
26
|
className: "Tr2DataTextureManager",
|
|
16
27
|
family: "shader"
|
|
17
|
-
})], [[[edit, edit.read, type, type.uint32], 16, "textureWidth"], [[edit, edit.read, type, type.uint32], 16, "textureHeight"], [[edit, edit.read, type, type.int32], 16, "blockDataNextIdx"], [[edit, edit.read, type, type.uint32], 16, "maxBlockCount"], [[edit, edit.read, type, type.uint32], 16, "maxPixelCount"], [[edit, edit.persist, type, type.string], 16, "name"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "
|
|
28
|
+
})], [[[edit, edit.read, type, type.uint32], 16, "textureWidth"], [[edit, edit.read, type, type.uint32], 16, "textureHeight"], [[edit, edit.read, type, type.int32], 16, "blockDataNextIdx"], [[edit, edit.read, type, type.uint32], 16, "maxBlockCount"], [[edit, edit.read, type, type.uint32], 16, "maxPixelCount"], [[edit, edit.persist, type, type.string], 16, "name"], [[impl, impl.custom, void 0, impl.reason("JavaScript has no destructor, so the owner releases explicitly, as Tr2GpuResourcePool handles do.")], 18, "Release"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon skips creation during a device reset via Tr2Renderer::IsResourceCreationAllowed, which has no JS counterpart; a context with no device refuses Create instead.")], 18, "PrepareResources"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon creates in place on the by-value Tr2TextureAL; JS textures come from the render-context factory and are installed on the reference, which broadcasts.")], 18, "OnPrepareResources"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon resets the by-value texture to an empty Tr2TextureAL; JS destroys the texture and installs null.")], 18, "ReleaseResources"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetVariables"], [[carbon, carbon.method, impl, impl.implemented], 18, "Update"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon reads flat Vector4 arrays; the JS owners keep columns of vec4s, which are copied here into Carbon's flat header-then-data[x*H + y] order.")], 18, "RequestBlockData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTextureOffset"]], 0, void 0, CjsModel));
|
|
18
29
|
}
|
|
19
30
|
/** m_textureWidth (uint32_t) [READ] */
|
|
20
31
|
textureWidth = (_initProto(this), _init_textureWidth(this, 256));
|
|
@@ -33,96 +44,171 @@ class Tr2DataTextureManager extends CjsModel {
|
|
|
33
44
|
|
|
34
45
|
/** m_name (BlueSharedString) [READWRITE, PERSIST] */
|
|
35
46
|
name = (_init_extra_maxPixelCount(this), _init_name(this, ""));
|
|
36
|
-
#blocks = (_init_extra_name(this), new Map());
|
|
37
|
-
#priorities = new Map();
|
|
38
|
-
#offsets = new Map();
|
|
39
|
-
#packedBlocks = [];
|
|
40
47
|
|
|
41
|
-
/**
|
|
48
|
+
/** m_blockData: id -> flat Float32Array, header vec4s then data[x*H + y] vec4s. */
|
|
49
|
+
_blockData = (_init_extra_name(this), new Map());
|
|
50
|
+
|
|
51
|
+
/** m_blockPriority, a std::multimap: [priority, id] pairs in insertion order. */
|
|
52
|
+
_blockPriority = [];
|
|
53
|
+
|
|
54
|
+
/** m_dataTexture */
|
|
55
|
+
_dataTexture = new _Tr2TextureReference();
|
|
56
|
+
|
|
57
|
+
/** m_dataTextureOffsets: id -> pixel offset. */
|
|
58
|
+
_dataTextureOffsets = new Map();
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Registers the data texture as ImpactShieldDataMap and prepares it, as
|
|
62
|
+
* Carbon's constructor does (Tr2DataTextureManager.cpp:8-20); the
|
|
63
|
+
* Tr2DeviceResource base registers with the device first
|
|
64
|
+
* (Tr2DeviceResource.cpp:10-13), so a scene built before the device gets
|
|
65
|
+
* its texture when the device prepares its resources.
|
|
66
|
+
*/
|
|
67
|
+
constructor() {
|
|
68
|
+
super();
|
|
69
|
+
_TriDevice.RegisterResource(this);
|
|
70
|
+
_Tr2VariableStore.GlobalStore().RegisterVariable(IMPACT_SHIELD_DATA_MAP, this._dataTexture);
|
|
71
|
+
this.PrepareResources();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Unregisters the variable and the device resource and drops the texture:
|
|
76
|
+
* the destructor (cpp:22-25) plus the base's unregistration
|
|
77
|
+
* (Tr2DeviceResource.cpp:15-18).
|
|
78
|
+
*/
|
|
79
|
+
Release() {
|
|
80
|
+
_Tr2VariableStore.GlobalStore().UnregisterVariable(IMPACT_SHIELD_DATA_MAP);
|
|
81
|
+
_TriDevice.UnregisterResource(this);
|
|
82
|
+
this.ReleaseResources();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Nothing to do after loading (Carbon cpp:31-34). */
|
|
42
86
|
Initialize() {
|
|
43
87
|
return true;
|
|
44
88
|
}
|
|
45
89
|
|
|
46
90
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
91
|
+
* Prepares the device half (Carbon Tr2DeviceResource::PrepareResources,
|
|
92
|
+
* Tr2DeviceResource.cpp:21-33).
|
|
49
93
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
94
|
+
PrepareResources() {
|
|
95
|
+
return this.OnPrepareResources();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Creates the zero-filled RGBA32F data texture and announces it, whether or
|
|
100
|
+
* not creation succeeded (Carbon cpp:62-77).
|
|
101
|
+
*/
|
|
102
|
+
OnPrepareResources() {
|
|
103
|
+
const renderContext = Tr2RenderContext_GetMainThreadRenderContext();
|
|
104
|
+
const width = this.textureWidth;
|
|
105
|
+
const height = this.textureHeight;
|
|
106
|
+
const zeros = new Float32Array(width * height * 4);
|
|
107
|
+
const previous = this._dataTexture.GetTexture();
|
|
108
|
+
if (previous) previous.Destroy();
|
|
109
|
+
const texture = renderContext.CreateTexture(BitmapDimensions.texture2D(width, height, 1, PixelFormat.PIXEL_FORMAT_R32G32B32A32_FLOAT), {
|
|
110
|
+
gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,
|
|
111
|
+
cpuUsage: Tr2CpuUsage.READ | Tr2CpuUsage.WRITE,
|
|
112
|
+
initialData: [new Tr2SubresourceData(new Uint8Array(zeros.buffer), width * VEC4_BYTES, width * height * VEC4_BYTES)]
|
|
59
113
|
});
|
|
114
|
+
this._dataTexture.SetTexture(texture);
|
|
115
|
+
return texture !== null;
|
|
116
|
+
}
|
|
60
117
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this
|
|
64
|
-
|
|
118
|
+
/** Drops the data texture and announces it (Carbon cpp:40-45). */
|
|
119
|
+
ReleaseResources(_storage) {
|
|
120
|
+
const previous = this._dataTexture.GetTexture();
|
|
121
|
+
if (previous) previous.Destroy();
|
|
122
|
+
this._dataTexture.SetTexture(null);
|
|
65
123
|
}
|
|
66
124
|
|
|
67
|
-
/**
|
|
68
|
-
|
|
69
|
-
|
|
125
|
+
/** Republishes the data texture as ImpactShieldDataMap (Carbon cpp:84-87). */
|
|
126
|
+
SetVariables() {
|
|
127
|
+
_Tr2VariableStore.GlobalStore().RegisterVariable(IMPACT_SHIELD_DATA_MAP, this._dataTexture);
|
|
70
128
|
}
|
|
71
129
|
|
|
72
130
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
131
|
+
* Writes every queued block into the texture by descending priority and
|
|
132
|
+
* records each block's pixel offset (Carbon cpp:93-164). With nothing
|
|
133
|
+
* queued the previous offsets survive, as in Carbon; offsets are recorded
|
|
134
|
+
* only when the texture maps.
|
|
75
135
|
*/
|
|
76
136
|
Update(_updateContext) {
|
|
77
|
-
|
|
78
|
-
this
|
|
137
|
+
const renderContext = Tr2RenderContext_GetMainThreadRenderContext();
|
|
138
|
+
this.maxPixelCount = 0;
|
|
139
|
+
this.maxBlockCount = 0;
|
|
140
|
+
if (this._blockData.size === 0) return;
|
|
79
141
|
let pixelOffset = 0;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
142
|
+
this._dataTextureOffsets.clear();
|
|
143
|
+
const texture = this._dataTexture.GetTexture();
|
|
144
|
+
const mapped = texture ? texture.MapForWriting(Tr2TextureSubresource.ForMipLevel(0), renderContext) : null;
|
|
145
|
+
if (mapped && Succeeded(mapped.result)) {
|
|
146
|
+
const floats = new Float32Array(mapped.data.buffer, mapped.data.byteOffset, mapped.data.byteLength >> 2);
|
|
147
|
+
const rowFloats = mapped.pitch >> 2;
|
|
148
|
+
const height = this.textureHeight;
|
|
149
|
+
|
|
150
|
+
// multimap rbegin->rend: highest priority first, equal priorities in
|
|
151
|
+
// reverse insertion order.
|
|
152
|
+
const ordered = this._blockPriority.slice().sort((left, right) => left[0] - right[0]).reverse();
|
|
153
|
+
for (const [, blockID] of ordered) {
|
|
154
|
+
const block = this._blockData.get(blockID);
|
|
155
|
+
if (!block) continue;
|
|
156
|
+
if (pixelOffset + block.blockLength + 1 >= this.textureWidth) break;
|
|
157
|
+
this._dataTextureOffsets.set(blockID, pixelOffset);
|
|
158
|
+
for (let y = 0; y < height; y++) {
|
|
159
|
+
floats.set(block.values.subarray(y * 4, y * 4 + 4), y * rowFloats + pixelOffset * 4);
|
|
160
|
+
}
|
|
161
|
+
const dataStart = height * 4;
|
|
162
|
+
for (let y = 0; y < height; y++) {
|
|
163
|
+
for (let x = 0; x < block.blockLength; x++) {
|
|
164
|
+
const source = dataStart + (x * height + y) * 4;
|
|
165
|
+
floats.set(block.values.subarray(source, source + 4), y * rowFloats + (pixelOffset + 1 + x) * 4);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
pixelOffset += block.blockLength + 1;
|
|
169
|
+
}
|
|
170
|
+
texture.UnmapForWriting(renderContext);
|
|
93
171
|
}
|
|
94
172
|
this.maxPixelCount = pixelOffset;
|
|
95
|
-
this.maxBlockCount = this
|
|
96
|
-
this
|
|
97
|
-
this
|
|
98
|
-
return this.#packedBlocks;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/** Borrowed packed CPU descriptor list, pending the texture upload port. */
|
|
102
|
-
GetPackedBlocks() {
|
|
103
|
-
return this.#packedBlocks;
|
|
173
|
+
this.maxBlockCount = this._blockData.size;
|
|
174
|
+
this._blockData.clear();
|
|
175
|
+
this._blockPriority.length = 0;
|
|
104
176
|
}
|
|
105
177
|
|
|
106
178
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
179
|
+
* Queues a copy of one block for the next Update and returns its id, or -1
|
|
180
|
+
* for a non-positive priority (Carbon cpp:175-203).
|
|
181
|
+
* @param {Float32Array[]} header - textureHeight vec4s, one per texture row
|
|
182
|
+
* @param {Number} blockLength - data columns, not counting the header
|
|
183
|
+
* @param {Float32Array[][]} data - blockLength columns of textureHeight vec4s
|
|
184
|
+
* @param {Number} priority - higher packs first
|
|
110
185
|
*/
|
|
111
|
-
|
|
186
|
+
RequestBlockData(header, blockLength, data, priority) {
|
|
187
|
+
if (priority <= 0) return -1;
|
|
188
|
+
const height = this.textureHeight;
|
|
189
|
+
const length = Number(blockLength) >>> 0;
|
|
190
|
+
const values = new Float32Array((1 + length) * height * 4);
|
|
191
|
+
for (let y = 0; y < height; y++) values.set(header[y], y * 4);
|
|
192
|
+
for (let x = 0; x < length; x++) {
|
|
193
|
+
for (let y = 0; y < height; y++) values.set(data[x][y], (height + x * height + y) * 4);
|
|
194
|
+
}
|
|
195
|
+
const blockID = this.blockDataNextIdx++;
|
|
196
|
+
this._blockData.set(blockID, {
|
|
197
|
+
blockLength: length,
|
|
198
|
+
values
|
|
199
|
+
});
|
|
200
|
+
this._blockPriority.push([Number(priority), blockID]);
|
|
201
|
+
return blockID;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** Returns a block's pixel offset from the last packing Update, or -1 (Carbon cpp:211-220). */
|
|
205
|
+
GetTextureOffset(blockID) {
|
|
206
|
+
return this._dataTextureOffsets.get(Number(blockID) | 0) ?? -1;
|
|
207
|
+
}
|
|
112
208
|
static {
|
|
113
209
|
_initClass();
|
|
114
210
|
}
|
|
115
211
|
}
|
|
116
|
-
function cloneRows(rows, count) {
|
|
117
|
-
const source = Array.from(rows ?? []);
|
|
118
|
-
return Array.from({
|
|
119
|
-
length: count
|
|
120
|
-
}, (_value, index) => {
|
|
121
|
-
const row = source[index];
|
|
122
|
-
if (Array.isArray(row)) return row.map(value => ArrayBuffer.isView(value) ? new Float32Array(value) : value);
|
|
123
|
-
return ArrayBuffer.isView(row) ? new Float32Array(row) : row;
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
212
|
|
|
127
213
|
export { _Tr2DataTextureManage as Tr2DataTextureManager };
|
|
128
214
|
//# sourceMappingURL=Tr2DataTextureManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2DataTextureManager.js","sources":["../../../../src/trinity/shader/Tr2DataTextureManager.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Utils/Tr2DataTextureManager.h:10-60\n// Hand-maintained from Carbon source.\r\n//\r\n// THE DEVICE HALF IS NOT PORTED YET. Carbon derives this from\r\n// Tr2DeviceResource and implements both halves on the class itself.\r\n//\r\n// PUBLIC, and portable - this is the part that belongs here:\r\n//\r\n// RequestBlockData(header, blockLength, data, priority) -> block id\r\n// GetTextureOffset(blockID) -> offset\r\n// SetVariables() publishes those offsets as shader variables\r\n// Update(updateContext)\r\n//\r\n// PRIVATE, and device-only - this is the part that is missing:\r\n//\r\n// OnPrepareResources() creates the backing texture\r\n// ReleaseResources(s) releases it\r\n//\r\n// So the shape is CjsBatchManager's: a neutral CPU registry that packs blocks,\r\n// hands back ids and offsets, and publishes them, with the texture creation\r\n// and upload currently injected - a gap, not a boundary. 75 donor Trinity\r\n// classes implement OnPrepareResources themselves, EveStarfield\r\n// (Eve/EveStarfield.cpp:110-172) among them.\r\n//\r\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\n\r\n/** Packs shader-readable data blocks into a shared texture; allocating that texture is not ported yet. */\r\n@type.define({ className: \"Tr2DataTextureManager\", family: \"shader\" })\r\nexport class Tr2DataTextureManager extends CjsModel\n{\n\r\n /** m_textureWidth (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n textureWidth = 256;\r\n\r\n /** m_textureHeight (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n textureHeight = 4;\r\n\r\n /** m_blockDataNextIdx (int32_t) [READ] */\r\n @edit.read\r\n @type.int32\r\n blockDataNextIdx = 1;\r\n\r\n /** m_maxBlockCount (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n maxBlockCount = 0;\r\n\r\n /** m_maxPixelCount (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n maxPixelCount = 0;\r\n\r\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.string\n name = \"\";\n\n #blocks = new Map();\n\n #priorities = new Map();\n\n #offsets = new Map();\n\n #packedBlocks = [];\n\n /** Initializes the CPU data-texture block manager. */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n return true;\n }\n\n /**\n * Queues one data-texture block for the next Update. Rows are copied so an\n * owner can keep mutating its live impact data after submission.\n */\n @carbon.method\n @impl.adapted\n RequestBlockData(header, blockLength, data, priority)\n {\n const normalizedPriority = Number(priority);\n if (normalizedPriority <= 0) return -1;\n\n const id = this.blockDataNextIdx++;\n const length = Number(blockLength) >>> 0;\n this.#blocks.set(id, {\n header: cloneRows(header, this.textureHeight),\n blockLength: length,\n data: cloneRows(data, length)\n });\n\n // Carbon's std::map<float, id> gives one block ownership of a duplicate\n // priority. Preserve that exact replacement rule.\n this.#priorities.set(normalizedPriority, id);\n return id;\n }\n\n /** Returns the last packed pixel offset for a submitted block, or -1. */\n @carbon.method\n @impl.implemented\n GetTextureOffset(blockID)\n {\n return this.#offsets.get(Number(blockID) | 0) ?? -1;\n }\n\n /**\n * Packs queued blocks by descending priority. GetPackedBlocks returns the CPU\n * rows; uploading them into a texture is not ported yet.\n */\n @carbon.method\n @impl.adapted\n Update(_updateContext)\n {\n this.#offsets.clear();\n this.#packedBlocks.length = 0;\n\n let pixelOffset = 0;\n const priorities = Array.from(this.#priorities.entries())\n .sort((left, right) => right[0] - left[0]);\n\n for (const [ priority, id ] of priorities)\n {\n const block = this.#blocks.get(id);\n if (!block) continue;\n if (pixelOffset + block.blockLength + 1 >= this.textureWidth) break;\n\n this.#offsets.set(id, pixelOffset);\n this.#packedBlocks.push({ id, priority, offset: pixelOffset, ...block });\n pixelOffset += block.blockLength + 1;\n }\n\n this.maxPixelCount = pixelOffset;\n this.maxBlockCount = this.#blocks.size;\n this.#blocks.clear();\n this.#priorities.clear();\n return this.#packedBlocks;\n }\n\n /** Borrowed packed CPU descriptor list, pending the texture upload port. */\n GetPackedBlocks()\n {\n return this.#packedBlocks;\n }\n\n /**\n * Carbon republishes the texture through the global variable store. There is\n * no texture object here to publish because creating it is not ported yet, so\n * this stays a no-op until it is.\n */\n @carbon.method\n @impl.noop\n SetVariables()\n {\n }\n\n}\n\n\nfunction cloneRows(rows, count)\n{\n const source = Array.from(rows ?? []);\n return Array.from({ length: count }, (_value, index) =>\n {\n const row = source[index];\n if (Array.isArray(row)) return row.map(value => ArrayBuffer.isView(value) ? new Float32Array(value) : value);\n return ArrayBuffer.isView(row) ? new Float32Array(row) : row;\n });\n}\n"],"names":["_Tr2DataTextureManage","Tr2DataTextureManager","CjsModel","e","_init_textureWidth","_init_extra_textureWidth","_init_textureHeight","_init_extra_textureHeight","_init_blockDataNextIdx","_init_extra_blockDataNextIdx","_init_maxBlockCount","_init_extra_maxBlockCount","_init_maxPixelCount","_init_extra_maxPixelCount","_init_name","_init_extra_name","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","read","uint32","int32","persist","string","carbon","method","impl","implemented","adapted","noop","textureWidth","textureHeight","blockDataNextIdx","maxBlockCount","maxPixelCount","name","Map","Initialize","RequestBlockData","header","blockLength","data","priority","normalizedPriority","Number","id","length","set","cloneRows","GetTextureOffset","blockID","get","Update","_updateContext","clear","pixelOffset","priorities","Array","from","entries","sort","left","right","block","push","offset","size","GetPackedBlocks","SetVariables","rows","count","source","_value","index","row","isArray","map","value","ArrayBuffer","isView","Float32Array"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2DataTextureManager.js","sources":["../../../../src/trinity/shader/Tr2DataTextureManager.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Utils/Tr2DataTextureManager.h\n// Source: trinity/trinity/Shader/Utils/Tr2DataTextureManager.cpp\n// Source: trinity/trinity/Shader/Utils/Tr2DataTextureManager_Blue.cpp\n// Hand-maintained from Carbon source.\n//\n// Packs per-object impact blocks into one 256x4 RGBA32F texture, published as\n// the global \"ImpactShieldDataMap\". Each block is a header column followed by\n// blockLength data columns; an owner reads its block through the pixel offset\n// GetTextureOffset returns after the scene's Update.\n//\n// Carbon derives this from Tr2DeviceResource, whose constructor registers it\n// with TriDevice and whose PrepareResources gates OnPrepareResources. There is\n// no JS base, so both halves are on the class, and JavaScript has no\n// destructor, so Release() stands in for ~Tr2DataTextureManager.\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { PixelFormat, Tr2CpuUsage, Tr2GpuUsage } from \"#consts/render-context\";\nimport { BitmapDimensions as Tr2BitmapDimensions } from \"#imageio\";\nimport { Succeeded } from \"../../trinityal/ALResult.js\";\nimport { Tr2TextureSubresource } from \"../../trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js\";\nimport { Tr2SubresourceData } from \"../../trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js\";\nimport { Tr2RenderContext_GetMainThreadRenderContext } from \"../core/context/Tr2RenderContext.js\";\nimport { TriDevice } from \"../core/device/TriDevice.js\";\nimport { Tr2TextureReference } from \"../core/Tr2TextureReference.js\";\nimport { Tr2VariableStore } from \"../core/variable/Tr2VariableStore.js\";\n\nconst IMPACT_SHIELD_DATA_MAP = \"ImpactShieldDataMap\";\nconst VEC4_BYTES = 16;\n\n/** Packs shader-readable data blocks into the shared impact data texture. */\n@type.define({ className: \"Tr2DataTextureManager\", family: \"shader\" })\nexport class Tr2DataTextureManager extends CjsModel\n{\n\n /** m_textureWidth (uint32_t) [READ] */\n @edit.read\n @type.uint32\n textureWidth = 256;\n\n /** m_textureHeight (uint32_t) [READ] */\n @edit.read\n @type.uint32\n textureHeight = 4;\n\n /** m_blockDataNextIdx (int32_t) [READ] */\n @edit.read\n @type.int32\n blockDataNextIdx = 1;\n\n /** m_maxBlockCount (uint32_t) [READ] */\n @edit.read\n @type.uint32\n maxBlockCount = 0;\n\n /** m_maxPixelCount (uint32_t) [READ] */\n @edit.read\n @type.uint32\n maxPixelCount = 0;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @edit.persist\n @type.string\n name = \"\";\n\n /** m_blockData: id -> flat Float32Array, header vec4s then data[x*H + y] vec4s. */\n _blockData = new Map();\n\n /** m_blockPriority, a std::multimap: [priority, id] pairs in insertion order. */\n _blockPriority = [];\n\n /** m_dataTexture */\n _dataTexture = new Tr2TextureReference();\n\n /** m_dataTextureOffsets: id -> pixel offset. */\n _dataTextureOffsets = new Map();\n\n /**\n * Registers the data texture as ImpactShieldDataMap and prepares it, as\n * Carbon's constructor does (Tr2DataTextureManager.cpp:8-20); the\n * Tr2DeviceResource base registers with the device first\n * (Tr2DeviceResource.cpp:10-13), so a scene built before the device gets\n * its texture when the device prepares its resources.\n */\n constructor()\n {\n super();\n TriDevice.RegisterResource(this);\n Tr2VariableStore.GlobalStore().RegisterVariable(IMPACT_SHIELD_DATA_MAP, this._dataTexture);\n this.PrepareResources();\n }\n\n /**\n * Unregisters the variable and the device resource and drops the texture:\n * the destructor (cpp:22-25) plus the base's unregistration\n * (Tr2DeviceResource.cpp:15-18).\n */\n @impl.custom\n @impl.reason(\"JavaScript has no destructor, so the owner releases explicitly, as Tr2GpuResourcePool handles do.\")\n Release()\n {\n Tr2VariableStore.GlobalStore().UnregisterVariable(IMPACT_SHIELD_DATA_MAP);\n TriDevice.UnregisterResource(this);\n this.ReleaseResources();\n }\n\n /** Nothing to do after loading (Carbon cpp:31-34). */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n return true;\n }\n\n /**\n * Prepares the device half (Carbon Tr2DeviceResource::PrepareResources,\n * Tr2DeviceResource.cpp:21-33).\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon skips creation during a device reset via Tr2Renderer::IsResourceCreationAllowed, which has no JS counterpart; a context with no device refuses Create instead.\")\n PrepareResources()\n {\n return this.OnPrepareResources();\n }\n\n /**\n * Creates the zero-filled RGBA32F data texture and announces it, whether or\n * not creation succeeded (Carbon cpp:62-77).\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon creates in place on the by-value Tr2TextureAL; JS textures come from the render-context factory and are installed on the reference, which broadcasts.\")\n OnPrepareResources()\n {\n const renderContext = Tr2RenderContext_GetMainThreadRenderContext();\n const width = this.textureWidth;\n const height = this.textureHeight;\n const zeros = new Float32Array(width * height * 4);\n const previous = this._dataTexture.GetTexture();\n if (previous) previous.Destroy();\n const texture = renderContext.CreateTexture(\n Tr2BitmapDimensions.texture2D(width, height, 1, PixelFormat.PIXEL_FORMAT_R32G32B32A32_FLOAT),\n {\n gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,\n cpuUsage: Tr2CpuUsage.READ | Tr2CpuUsage.WRITE,\n initialData: [ new Tr2SubresourceData(new Uint8Array(zeros.buffer), width * VEC4_BYTES, width * height * VEC4_BYTES) ]\n }\n );\n this._dataTexture.SetTexture(texture);\n return texture !== null;\n }\n\n /** Drops the data texture and announces it (Carbon cpp:40-45). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon resets the by-value texture to an empty Tr2TextureAL; JS destroys the texture and installs null.\")\n ReleaseResources(_storage)\n {\n const previous = this._dataTexture.GetTexture();\n if (previous) previous.Destroy();\n this._dataTexture.SetTexture(null);\n }\n\n /** Republishes the data texture as ImpactShieldDataMap (Carbon cpp:84-87). */\n @carbon.method\n @impl.implemented\n SetVariables()\n {\n Tr2VariableStore.GlobalStore().RegisterVariable(IMPACT_SHIELD_DATA_MAP, this._dataTexture);\n }\n\n /**\n * Writes every queued block into the texture by descending priority and\n * records each block's pixel offset (Carbon cpp:93-164). With nothing\n * queued the previous offsets survive, as in Carbon; offsets are recorded\n * only when the texture maps.\n */\n @carbon.method\n @impl.implemented\n Update(_updateContext)\n {\n const renderContext = Tr2RenderContext_GetMainThreadRenderContext();\n\n this.maxPixelCount = 0;\n this.maxBlockCount = 0;\n if (this._blockData.size === 0) return;\n\n let pixelOffset = 0;\n this._dataTextureOffsets.clear();\n const texture = this._dataTexture.GetTexture();\n const mapped = texture ? texture.MapForWriting(Tr2TextureSubresource.ForMipLevel(0), renderContext) : null;\n if (mapped && Succeeded(mapped.result))\n {\n const floats = new Float32Array(mapped.data.buffer, mapped.data.byteOffset, mapped.data.byteLength >> 2);\n const rowFloats = mapped.pitch >> 2;\n const height = this.textureHeight;\n\n // multimap rbegin->rend: highest priority first, equal priorities in\n // reverse insertion order.\n const ordered = this._blockPriority.slice().sort((left, right) => left[0] - right[0]).reverse();\n for (const [ , blockID ] of ordered)\n {\n const block = this._blockData.get(blockID);\n if (!block) continue;\n if (pixelOffset + block.blockLength + 1 >= this.textureWidth) break;\n\n this._dataTextureOffsets.set(blockID, pixelOffset);\n for (let y = 0; y < height; y++)\n {\n floats.set(block.values.subarray(y * 4, y * 4 + 4), y * rowFloats + pixelOffset * 4);\n }\n const dataStart = height * 4;\n for (let y = 0; y < height; y++)\n {\n for (let x = 0; x < block.blockLength; x++)\n {\n const source = dataStart + (x * height + y) * 4;\n floats.set(block.values.subarray(source, source + 4), y * rowFloats + (pixelOffset + 1 + x) * 4);\n }\n }\n pixelOffset += block.blockLength + 1;\n }\n texture.UnmapForWriting(renderContext);\n }\n\n this.maxPixelCount = pixelOffset;\n this.maxBlockCount = this._blockData.size;\n this._blockData.clear();\n this._blockPriority.length = 0;\n }\n\n /**\n * Queues a copy of one block for the next Update and returns its id, or -1\n * for a non-positive priority (Carbon cpp:175-203).\n * @param {Float32Array[]} header - textureHeight vec4s, one per texture row\n * @param {Number} blockLength - data columns, not counting the header\n * @param {Float32Array[][]} data - blockLength columns of textureHeight vec4s\n * @param {Number} priority - higher packs first\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads flat Vector4 arrays; the JS owners keep columns of vec4s, which are copied here into Carbon's flat header-then-data[x*H + y] order.\")\n RequestBlockData(header, blockLength, data, priority)\n {\n if (priority <= 0) return -1;\n\n const height = this.textureHeight;\n const length = Number(blockLength) >>> 0;\n const values = new Float32Array((1 + length) * height * 4);\n for (let y = 0; y < height; y++) values.set(header[y], y * 4);\n for (let x = 0; x < length; x++)\n {\n for (let y = 0; y < height; y++) values.set(data[x][y], (height + x * height + y) * 4);\n }\n\n const blockID = this.blockDataNextIdx++;\n this._blockData.set(blockID, { blockLength: length, values });\n this._blockPriority.push([ Number(priority), blockID ]);\n return blockID;\n }\n\n /** Returns a block's pixel offset from the last packing Update, or -1 (Carbon cpp:211-220). */\n @carbon.method\n @impl.implemented\n GetTextureOffset(blockID)\n {\n return this._dataTextureOffsets.get(Number(blockID) | 0) ?? -1;\n }\n\n}\n"],"names":["IMPACT_SHIELD_DATA_MAP","VEC4_BYTES","_Tr2DataTextureManage","Tr2DataTextureManager","CjsModel","e","_init_textureWidth","_init_extra_textureWidth","_init_textureHeight","_init_extra_textureHeight","_init_blockDataNextIdx","_init_extra_blockDataNextIdx","_init_maxBlockCount","_init_extra_maxBlockCount","_init_maxPixelCount","_init_extra_maxPixelCount","_init_name","_init_extra_name","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","read","uint32","int32","persist","string","impl","custom","reason","carbon","method","implemented","adapted","textureWidth","textureHeight","blockDataNextIdx","maxBlockCount","maxPixelCount","name","_blockData","Map","_blockPriority","_dataTexture","Tr2TextureReference","_dataTextureOffsets","constructor","TriDevice","RegisterResource","Tr2VariableStore","GlobalStore","RegisterVariable","PrepareResources","Release","UnregisterVariable","UnregisterResource","ReleaseResources","Initialize","OnPrepareResources","renderContext","Tr2RenderContext_GetMainThreadRenderContext","width","height","zeros","Float32Array","previous","GetTexture","Destroy","texture","CreateTexture","Tr2BitmapDimensions","texture2D","PixelFormat","PIXEL_FORMAT_R32G32B32A32_FLOAT","gpuUsage","Tr2GpuUsage","SHADER_RESOURCE","cpuUsage","Tr2CpuUsage","READ","WRITE","initialData","Tr2SubresourceData","Uint8Array","buffer","SetTexture","_storage","SetVariables","Update","_updateContext","size","pixelOffset","clear","mapped","MapForWriting","Tr2TextureSubresource","ForMipLevel","Succeeded","result","floats","data","byteOffset","byteLength","rowFloats","pitch","ordered","slice","sort","left","right","reverse","blockID","block","get","blockLength","set","y","values","subarray","dataStart","x","source","UnmapForWriting","length","RequestBlockData","header","priority","Number","push","GetTextureOffset"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { Tr2Shader } from '#resource/shader';
|
|
|
5
5
|
import { ShaderType, CompareFunc } from '#consts/render-context';
|
|
6
6
|
import { hashFnv1Floats, FNV1_INITIAL } from '../../global/utils/hash.js';
|
|
7
7
|
import { Failed } from '../../trinityal/ALResult.js';
|
|
8
|
-
import '
|
|
8
|
+
import '#imageio';
|
|
9
9
|
import '../../global/consts/renderContext/formats.js';
|
|
10
10
|
import '../../global/consts/renderContext/pipeline.js';
|
|
11
11
|
import '../../trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js';
|
|
@@ -167,7 +167,7 @@ class Tr2TextureSubresource {
|
|
|
167
167
|
/**
|
|
168
168
|
* Clamps the range to a texture, filling in a box if there was none.
|
|
169
169
|
*
|
|
170
|
-
* @param {import("
|
|
170
|
+
* @param {import("#imageio").BitmapDimensions} texture The texture to clamp against.
|
|
171
171
|
*/
|
|
172
172
|
ClampToTexture(texture) {
|
|
173
173
|
const arraySize = Math.max(texture.GetArraySize(), 1);
|
|
@@ -204,7 +204,7 @@ class Tr2TextureSubresource {
|
|
|
204
204
|
/**
|
|
205
205
|
* Whether the range covers the entire texture.
|
|
206
206
|
*
|
|
207
|
-
* @param {import("
|
|
207
|
+
* @param {import("#imageio").BitmapDimensions} texture The texture to check against.
|
|
208
208
|
* @returns {boolean} True when nothing is left out.
|
|
209
209
|
*/
|
|
210
210
|
IsSubresourceFull(texture) {
|
|
@@ -224,7 +224,7 @@ class Tr2TextureSubresource {
|
|
|
224
224
|
/**
|
|
225
225
|
* Whether the range fits inside a texture.
|
|
226
226
|
*
|
|
227
|
-
* @param {import("
|
|
227
|
+
* @param {import("#imageio").BitmapDimensions} bitmap The texture to check against.
|
|
228
228
|
* @returns {boolean} True when it fits.
|
|
229
229
|
*/
|
|
230
230
|
IsValidForBitmap(bitmap) {
|
|
@@ -271,9 +271,9 @@ class Tr2TextureSubresource {
|
|
|
271
271
|
* pass catches a box the shrink pushed back out of range.
|
|
272
272
|
*
|
|
273
273
|
* @param {Tr2TextureSubresource} sourceSR Source region; mutated in place.
|
|
274
|
-
* @param {import("
|
|
274
|
+
* @param {import("#imageio").BitmapDimensions} sourceBD Source texture.
|
|
275
275
|
* @param {Tr2TextureSubresource} destSR Destination region; mutated in place.
|
|
276
|
-
* @param {import("
|
|
276
|
+
* @param {import("#imageio").BitmapDimensions} destBD Destination texture.
|
|
277
277
|
* @returns {boolean} True when a copy would make sense.
|
|
278
278
|
*/
|
|
279
279
|
function Crop(sourceSR, sourceBD, destSR, destBD) {
|