@carbonenginejs/runtime-resource 0.13.0 → 0.15.0
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/LICENSE +21 -21
- package/NOTICE +32 -32
- package/README.md +129 -129
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3858
- package/dist/CjsResManFetchProvider.js +94 -94
- package/dist/CjsResManWorkQueue.js +301 -301
- package/dist/_virtual/_rollupPluginBabelHelpers.js +150 -150
- package/dist/format/CjsBlueReader.js +358 -358
- package/dist/format/CjsByteReader.js +310 -310
- package/dist/format/CjsByteWriter.js +242 -242
- package/dist/format/CjsFormat.js +223 -223
- package/dist/format/CjsFormatError.js +41 -41
- package/dist/format/CjsReader.js +22 -22
- package/dist/format/CjsResourceProbe.js +279 -279
- package/dist/format/CjsStringTable.js +268 -268
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js +265 -265
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -182
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -321
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -1147
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -197
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -146
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- package/dist/format/effect/sha256.js +114 -114
- package/dist/format/index.js +11 -11
- package/dist/format/payloadContract.js +193 -193
- package/dist/formats/black/CjsBlackFormat.js +310 -310
- package/dist/formats/black/core/CjsBlackBinaryReader.js +260 -260
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +448 -448
- package/dist/formats/black/core/CjsBlackReader.js +764 -764
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +540 -540
- package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -4
- package/dist/formats/black/core/blackConstants.js +7 -7
- package/dist/formats/black/core/blackDefinitions.js +10 -10
- package/dist/formats/black/core/blackEnums.js +6 -6
- package/dist/formats/black/core/blackSchema.js +3 -3
- package/dist/formats/black/core/blackVersion.js +22 -22
- package/dist/formats/black/core/helpers.js +199 -199
- package/dist/formats/black/core/schema.js +4 -4
- package/dist/formats/black/index.js +2 -2
- package/dist/formats/bnk/CjsBnkFormat.js +175 -175
- package/dist/formats/bnk/core/busNodes.js +252 -252
- package/dist/formats/bnk/core/effectNodes.js +147 -147
- package/dist/formats/bnk/core/eventAction.js +416 -416
- package/dist/formats/bnk/core/globalSettings.js +215 -215
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -512
- package/dist/formats/bnk/core/musicNodes.js +540 -540
- package/dist/formats/bnk/core/nodeBase.js +553 -553
- package/dist/formats/bnk/core/sfxNodes.js +632 -632
- package/dist/formats/bnk/core/soundbanksInfo.js +209 -209
- package/dist/formats/bnk/index.js +2 -2
- package/dist/formats/cmf/CjsCmfFormat.js +497 -497
- package/dist/formats/cmf/core/binary.js +194 -194
- package/dist/formats/cmf/core/buffers.js +237 -237
- package/dist/formats/cmf/core/constants.js +47 -47
- package/dist/formats/cmf/core/gr2Anim.js +453 -453
- package/dist/formats/cmf/core/helpers.js +318 -318
- package/dist/formats/cmf/core/pack.js +276 -276
- package/dist/formats/cmf/core/schema.js +374 -374
- package/dist/formats/cmf/core/shared.js +277 -277
- package/dist/formats/cmf/core/writer.js +571 -571
- package/dist/formats/cmf/index.js +2 -2
- package/dist/formats/dds/CjsDdsFormat.js +200 -200
- package/dist/formats/dds/core/bc6h.js +298 -298
- package/dist/formats/dds/core/bc7.js +272 -272
- package/dist/formats/dds/core/helpers.js +901 -862
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +187 -142
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/formats/dxbc/core/DxbcReader.js +266 -266
- package/dist/formats/dxbc/core/container.js +169 -169
- package/dist/formats/dxbc/core/decoder.js +789 -789
- package/dist/formats/dxbc/core/disassemble.js +240 -0
- package/dist/formats/dxbc/core/disassemble.js.map +1 -0
- package/dist/formats/dxbc/core/errors.js +19 -19
- package/dist/formats/dxbc/core/helpers.js +220 -220
- package/dist/formats/dxbc/core/opcodes.js +45 -45
- package/dist/formats/dxbc/core/program.js +91 -91
- package/dist/formats/dxbc/core/signature.js +172 -172
- package/dist/formats/dxbc/index.js +2 -2
- package/dist/formats/fbx/CjsFbxFormat.js +266 -266
- package/dist/formats/fbx/core/helpers.js +3932 -3932
- package/dist/formats/fbx/index.js +2 -2
- package/dist/formats/flac/CjsFlacFormat.js +142 -142
- package/dist/formats/flac/core/helpers.js +315 -315
- package/dist/formats/flac/index.js +2 -2
- package/dist/formats/gif/CjsGifFormat.js +141 -141
- package/dist/formats/gif/core/helpers.js +380 -380
- package/dist/formats/gif/index.js +2 -2
- package/dist/formats/gltf/CjsGltfFormat.js +252 -290
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +287 -307
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/json.js +79 -79
- package/dist/formats/gltf/core/parser.js +679 -679
- package/dist/formats/gltf/core/targets.js +173 -173
- package/dist/formats/gltf/index.js +2 -2
- package/dist/formats/gr2/CjsGr2Format.js +289 -289
- package/dist/formats/gr2/core/bitknit2.js +282 -282
- package/dist/formats/gr2/core/curves.js +1047 -1047
- package/dist/formats/gr2/core/gsf.js +72 -72
- package/dist/formats/gr2/core/helpers.js +352 -352
- package/dist/formats/gr2/core/json.js +622 -622
- package/dist/formats/gr2/core/oodle1.js +388 -388
- package/dist/formats/gr2/core/tangents.js +48 -48
- package/dist/formats/gr2/core/targets.js +361 -361
- package/dist/formats/gr2/index.js +2 -2
- package/dist/formats/hlsl/CjsHlslFormat.js +233 -254
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -15
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -19
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -130
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -37
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -94
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -44
- package/dist/formats/hlsl/core/analysis.js +51 -51
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +850 -850
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -128
- package/dist/formats/hlsl/core/helpers.js +270 -270
- package/dist/formats/hlsl/core/json.js +284 -284
- package/dist/formats/hlsl/core/localLightFamily.js +133 -133
- package/dist/formats/hlsl/core/metadata.js +327 -327
- package/dist/formats/hlsl/core/render-states.js +280 -280
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -43
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +320 -320
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +423 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -62
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -52
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -38
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -50
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -86
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -31
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -42
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -55
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -29
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -220
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -30
- package/dist/formats/hlsl/index.js +3 -3
- package/dist/formats/index.js +33 -33
- package/dist/formats/jpeg/CjsJpegFormat.js +212 -212
- package/dist/formats/jpeg/core/helpers.js +402 -402
- package/dist/formats/jpeg/core/jpeg.js +480 -480
- package/dist/formats/jpeg/index.js +2 -2
- package/dist/formats/mp3/CjsMp3Format.js +197 -197
- package/dist/formats/mp3/core/helpers.js +375 -375
- package/dist/formats/mp3/index.js +2 -2
- package/dist/formats/mp4/CjsMp4Format.js +197 -197
- package/dist/formats/mp4/core/helpers.js +484 -484
- package/dist/formats/mp4/index.js +2 -2
- package/dist/formats/obj/CjsObjFormat.js +232 -253
- package/dist/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/formats/obj/core/helpers.js +553 -573
- package/dist/formats/obj/core/helpers.js.map +1 -1
- package/dist/formats/obj/core/json.js +64 -64
- package/dist/formats/obj/core/parser.js +321 -321
- package/dist/formats/obj/index.js +2 -2
- package/dist/formats/ogg/CjsOggFormat.js +143 -143
- package/dist/formats/ogg/core/helpers.js +410 -410
- package/dist/formats/ogg/core/imdct.js +178 -178
- package/dist/formats/ogg/core/vorbis.js +1017 -1017
- package/dist/formats/ogg/index.js +2 -2
- package/dist/formats/pickle/CjsPickleFormat.js +214 -214
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -551
- package/dist/formats/pickle/index.js +2 -2
- package/dist/formats/png/CjsPngFormat.js +201 -201
- package/dist/formats/png/core/helpers.js +635 -635
- package/dist/formats/png/index.js +2 -2
- package/dist/formats/red/CjsRedFormat.js +263 -263
- package/dist/formats/red/core/CjsRedReader.js +246 -246
- package/dist/formats/red/core/blackDefinitions.js +3 -3
- package/dist/formats/red/core/helpers.js +158 -158
- package/dist/formats/red/core/redGraph.js +71 -71
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +320 -365
- package/dist/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/formats/stl/core/helpers.js +241 -261
- package/dist/formats/stl/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/json.js +51 -51
- package/dist/formats/stl/core/stl.js +642 -642
- package/dist/formats/stl/core/targets.js +173 -173
- package/dist/formats/stl/index.js +2 -2
- package/dist/formats/tga/CjsTgaFormat.js +197 -197
- package/dist/formats/tga/core/helpers.js +493 -493
- package/dist/formats/tga/index.js +2 -2
- package/dist/formats/wav/CjsWavFormat.js +198 -198
- package/dist/formats/wav/core/helpers.js +365 -365
- package/dist/formats/wav/index.js +2 -2
- package/dist/formats/webgl/CjsWebglFormat.js +199 -199
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -70
- package/dist/formats/webgl/core/effectPackage.js +900 -900
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2820
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -486
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -98
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -552
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -243
- package/dist/formats/webgl/core/glslEffectCompleteness.js +85 -85
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -1
- package/dist/formats/webgl/core/helpers.js +167 -167
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -122
- package/dist/formats/webgl/core/readGlslEffectContainer.js +202 -256
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -89
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js +354 -354
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +306 -306
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/helpers.js +443 -443
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +212 -212
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -220
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -137
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +449 -449
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -494
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -177
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -61
- package/dist/formats/webgpu/core/packageEffect.js +381 -381
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- package/dist/formats/webgpu/core/packageMetadata.js +17 -17
- package/dist/formats/webgpu/core/schema.js +4 -4
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +263 -263
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +325 -325
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -356
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -77
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -451
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +735 -735
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -457
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -1572
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -659
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -734
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -583
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -621
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -824
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -697
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -559
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -1328
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -110
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -55
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +717 -717
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -78
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -196
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -37
- package/dist/formats/webgpu/index.js +2 -2
- package/dist/formats/webm/CjsWebmFormat.js +197 -197
- package/dist/formats/webm/core/helpers.js +572 -572
- package/dist/formats/webm/index.js +2 -2
- package/dist/formats/webp/CjsWebpFormat.js +140 -140
- package/dist/formats/webp/core/helpers.js +237 -237
- package/dist/formats/webp/index.js +2 -2
- package/dist/formats/wem/CjsWemFormat.js +250 -250
- package/dist/formats/wem/core/bitStream.js +261 -261
- package/dist/formats/wem/core/codebookLibrary.js +164 -164
- package/dist/formats/wem/core/helpers.js +437 -437
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
- package/dist/formats/wem/core/ptadpcm.js +77 -77
- package/dist/formats/wem/core/resolve.js +121 -121
- package/dist/formats/wem/core/wemToOgg.js +485 -485
- package/dist/formats/wem/index.js +2 -2
- package/dist/formats/yaml/CjsYamlFormat.js +134 -134
- package/dist/formats/yaml/core/CjsYamlReader.js +400 -400
- package/dist/formats/yaml/core/helpers.js +196 -196
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -64
- package/dist/resource/CjsLoadingObject.js +19 -19
- package/dist/resource/CjsResource.js +801 -801
- package/dist/resource/ResourceHandlerMode.js +14 -14
- package/dist/resource/Tr2LightProfileRes.js +32 -32
- package/dist/resource/audio/AudioGeometryResData.js +47 -47
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -86
- package/dist/resource/audio/CjsAudioRes.js +213 -213
- package/dist/resource/audio/index.js +4 -4
- package/dist/resource/geometry/MeshDecalData.js +37 -37
- package/dist/resource/geometry/MeshDecalLodData.js +34 -34
- package/dist/resource/geometry/TriGeometryRes.js +570 -467
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +59 -59
- package/dist/resource/geometry/TriGeometryResJointData.js +38 -38
- package/dist/resource/geometry/TriGeometryResLodData.js +88 -88
- package/dist/resource/geometry/TriGeometryResMeshData.js +63 -63
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +34 -34
- package/dist/resource/geometry/TriJointBinding.js +38 -38
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +46 -46
- package/dist/resource/geometry/TriRtGeometryConstants.js +88 -88
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +31 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +60 -60
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +36 -36
- package/dist/resource/geometry/granny/TriGrannyRes.js +35 -35
- package/dist/resource/geometry/granny/enums.js +10 -10
- package/dist/resource/geometry/granny/index.js +6 -6
- package/dist/resource/geometry/index.js +17 -17
- package/dist/resource/index.js +54 -54
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -336
- package/dist/resource/shader/Tr2MaterialArea.js +31 -31
- package/dist/resource/shader/Tr2MaterialMesh.js +27 -27
- package/dist/resource/shader/Tr2MaterialRes.js +31 -31
- package/dist/resource/shader/Tr2Shader.js +283 -283
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -143
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -114
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -168
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -125
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -120
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -372
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -78
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -168
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -159
- package/dist/resource/shader/reflection/shaderStage.js +22 -22
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -135
- package/dist/resource/texture/CjsTextureArrayRes.js +472 -472
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js +179 -179
- package/dist/resource/texture/Tr2ImageRes.js +120 -120
- package/dist/resource/texture/Tr2TextureLodManager.js +82 -82
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +37 -37
- package/dist/resource/texture/Tr2TexturePackChannel.js +37 -37
- package/dist/resource/texture/Tr2TexturePipeline.js +54 -54
- package/dist/resource/texture/Tr2TexturePipelineParams.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +40 -40
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +22 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +31 -31
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +43 -43
- package/dist/resource/texture/TriTextureRes.js +359 -359
- package/dist/resource/texture/index.js +15 -15
- package/dist/resource/texture/texturePipelineBehavior.js +308 -308
- package/dist/worker/CjsResManMainThreadLoader.js +89 -89
- package/dist/worker/CjsResManWorker.js +218 -218
- package/dist/worker/CjsResManWorkerLoader.js +437 -437
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -118
- package/docs/concepts/resource-lifecycle.md +226 -226
- package/docs/concepts/shader-resource-model.md +111 -111
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -138
- package/docs/formats/carbon-effect-container.md +553 -553
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +105 -77
- package/docs/formats/dxbc/reference/classes/README.md +9 -9
- package/docs/formats/dxbc/reference/decoded-output.md +122 -122
- package/docs/formats/gr2.md +160 -160
- package/docs/formats/hlsl/README.md +54 -54
- package/docs/formats/hlsl/architecture.md +66 -65
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -60
- package/docs/formats/hlsl/guides/reading-effects.md +68 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -61
- package/docs/formats/hlsl/reference/api.md +91 -92
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -97
- package/docs/formats/pickle.md +82 -82
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -115
- package/docs/formats/webgl/architecture.md +69 -69
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -326
- package/docs/formats/webgl/decl-io.md +1234 -1234
- package/docs/formats/webgl/memory-structured.md +890 -890
- package/docs/formats/webgl/reference/classes/README.md +9 -9
- package/docs/formats/webgl/texture-sample.md +964 -964
- package/docs/formats/webgpu/README.md +84 -84
- package/docs/formats/webgpu/architecture.md +95 -95
- package/docs/formats/webgpu/formats/carbon-webgpu.md +215 -215
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -189
- package/docs/formats/webgpu/reference/api.md +196 -196
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1546
- package/docs/formats/wwise.md +146 -146
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -216
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -944
- package/docs/reference/classes/resources.md +456 -456
- package/docs/reference/classes/texture.md +26 -26
- package/docs/reference/events.md +117 -117
- package/docs/reference/motherlode-cache.md +275 -275
- package/docs/reference/queues.md +194 -194
- package/docs/reference/reload.md +107 -107
- package/docs/reference/texture-arrays.md +113 -113
- package/docs/reference/texture-pipeline.md +53 -53
- package/docs/reference/workers.md +142 -142
- package/docs/roadmap.md +150 -150
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +21 -21
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/dxbc/LICENSE +21 -21
- package/format-notices/dxbc/NOTICE +20 -20
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/gr2/LICENSE +21 -21
- package/format-notices/gr2/NOTICE +60 -60
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -93
- package/format-notices/hlsl/LICENSE +21 -21
- package/format-notices/hlsl/NOTICE +25 -25
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webgl/LICENSE +21 -21
- package/format-notices/webgl/NOTICE +35 -35
- package/format-notices/webgpu/LICENSE +21 -21
- package/format-notices/webgpu/NOTICE +31 -31
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +63 -63
|
@@ -1,359 +1,359 @@
|
|
|
1
|
-
import { CjsSchema, carbon, impl, type, io } from '@carbonenginejs/runtime-utils/schema';
|
|
2
|
-
import { CjsResource } from '../CjsResource.js';
|
|
3
|
-
import { validateVideoPayload, validateTexturePayload, validateRgbaPayload, ResourcePayloadType } from '../../format/payloadContract.js';
|
|
4
|
-
import { resourcePayloadError, validateResourcePayload, resourceBoundaryError } from '../resourceBoundary.js';
|
|
5
|
-
|
|
6
|
-
// Source: trinity/trinity/Resources/TriTextureRes.h
|
|
7
|
-
// Source: trinity/trinity/Resources/TriTextureRes.cpp
|
|
8
|
-
// Source: trinity/trinity/Resources/TriTextureRes_Blue.cpp
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Resource record that owns Carbon-style texture identity and validated
|
|
12
|
-
* texture, RGBA, or video payload facts with mirrored dimension/format
|
|
13
|
-
* metadata, while engine packages decide what those facts become on a device.
|
|
14
|
-
*
|
|
15
|
-
* The resource never creates or retains a backend texture.
|
|
16
|
-
*/
|
|
17
|
-
class TriTextureRes extends CjsResource {
|
|
18
|
-
format = null;
|
|
19
|
-
type = null;
|
|
20
|
-
averageColor = [0, 0, 0, 0];
|
|
21
|
-
depth = 0;
|
|
22
|
-
cutoutHeight = 1;
|
|
23
|
-
height = 0;
|
|
24
|
-
lodEnabled = false;
|
|
25
|
-
hadLodRequests = false;
|
|
26
|
-
cpuMip = 0;
|
|
27
|
-
gpuMip = 0;
|
|
28
|
-
wrappedRenderTarget = null;
|
|
29
|
-
originalResolution = 0;
|
|
30
|
-
originalMemoryUsage = 0;
|
|
31
|
-
name = "";
|
|
32
|
-
arraySize = 0;
|
|
33
|
-
cutoutWidth = 1;
|
|
34
|
-
width = 0;
|
|
35
|
-
cutoutX = 0;
|
|
36
|
-
cutoutY = 0;
|
|
37
|
-
|
|
38
|
-
/** Creates a TriTextureRes with caller-provided initial state. */
|
|
39
|
-
constructor(values = null) {
|
|
40
|
-
super();
|
|
41
|
-
this.SetValues(values || {}, {
|
|
42
|
-
markDirty: false,
|
|
43
|
-
skipUpdate: true,
|
|
44
|
-
skipEvents: true
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Attach a plain texture, RGBA, or video payload and mirror Carbon-exposed
|
|
50
|
-
* metadata. Invalid payloads are rejected before replacing the current one.
|
|
51
|
-
*
|
|
52
|
-
* @param {object|null} payload
|
|
53
|
-
* @param {object|null} options
|
|
54
|
-
* @returns {TriTextureRes}
|
|
55
|
-
*/
|
|
56
|
-
SetPayload(payload = null, options = null) {
|
|
57
|
-
if (payload === null) {
|
|
58
|
-
super.SetPayload(null);
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
const validator = {
|
|
62
|
-
[ResourcePayloadType.RGBA]: validateRgbaPayload,
|
|
63
|
-
[ResourcePayloadType.TEXTURE]: validateTexturePayload,
|
|
64
|
-
[ResourcePayloadType.VIDEO]: validateVideoPayload
|
|
65
|
-
}[payload?.payloadType];
|
|
66
|
-
if (!validator) {
|
|
67
|
-
throw resourcePayloadError("TriTextureRes", 'Expected payloadType "rgba", "texture", or "video".', "payloadType");
|
|
68
|
-
}
|
|
69
|
-
validateResourcePayload("TriTextureRes", payload, validator);
|
|
70
|
-
const values = {
|
|
71
|
-
...(options || {})
|
|
72
|
-
};
|
|
73
|
-
if (payload.pixelFormat !== undefined || payload.format !== undefined) values.format = payload.pixelFormat || payload.format;
|
|
74
|
-
if (payload.width !== undefined) values.width = payload.width;
|
|
75
|
-
if (payload.height !== undefined) values.height = payload.height;
|
|
76
|
-
if (payload.depth !== undefined) values.depth = payload.depth;
|
|
77
|
-
if (payload.arraySize !== undefined) values.arraySize = payload.arraySize;else if (Array.isArray(payload.faces)) values.arraySize = payload.faces.length;
|
|
78
|
-
if (payload.mipCount !== undefined) values.cpuMip = payload.mipCount;else if (payload.payloadType === ResourcePayloadType.RGBA) values.cpuMip = 1;
|
|
79
|
-
if (payload.hadLodRequests !== undefined) values.hadLodRequests = !!payload.hadLodRequests;
|
|
80
|
-
values.originalMemoryUsage = getPayloadMemoryUsage(payload);
|
|
81
|
-
values.originalResolution = Math.max(payload.width || 0, payload.height || 0, this.originalResolution || 0);
|
|
82
|
-
super.SetPayload(payload);
|
|
83
|
-
this.SetValues(values);
|
|
84
|
-
return this;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Return the number of mip levels known to this texture resource.
|
|
89
|
-
*
|
|
90
|
-
* @returns {number}
|
|
91
|
-
*/
|
|
92
|
-
GetMipCount() {
|
|
93
|
-
return this.GetPayload()?.mipCount || this.cpuMip || 0;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Return the multisample type for this texture.
|
|
98
|
-
*
|
|
99
|
-
* @returns {number}
|
|
100
|
-
*/
|
|
101
|
-
GetMsaaType() {
|
|
102
|
-
const payload = this.GetPayload();
|
|
103
|
-
return payload?.multiSampleType ?? payload?.msaaType ?? payload?.samples ?? 1;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Return the multisample quality for this texture.
|
|
108
|
-
*
|
|
109
|
-
* @returns {number}
|
|
110
|
-
*/
|
|
111
|
-
GetMsaaQuality() {
|
|
112
|
-
const payload = this.GetPayload();
|
|
113
|
-
return payload?.multiSampleQuality ?? payload?.msaaQuality ?? 0;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Return true if this texture has received LOD requests.
|
|
118
|
-
*
|
|
119
|
-
* @returns {boolean}
|
|
120
|
-
*/
|
|
121
|
-
HadLodRequests() {
|
|
122
|
-
return this.hadLodRequests;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Return the shader-resource-view heap index when a backend owns one.
|
|
127
|
-
*
|
|
128
|
-
* @returns {number}
|
|
129
|
-
*/
|
|
130
|
-
GetSrvIndexInHeap() {
|
|
131
|
-
throw resourceBoundaryError("TriTextureRes", "GetSrvIndexInHeap", "Runtime-resource does not own descriptor heaps.");
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Save this texture asynchronously.
|
|
136
|
-
*
|
|
137
|
-
* @param {string} path
|
|
138
|
-
* @returns {boolean}
|
|
139
|
-
*/
|
|
140
|
-
SaveAsync(path = "") {
|
|
141
|
-
throw resourceBoundaryError("TriTextureRes", "SaveAsync", `Use a format writer and caller-owned destination to save texture payloads${path ? ` (${path})` : ""}.`);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Save this texture synchronously.
|
|
146
|
-
*
|
|
147
|
-
* @param {string} path
|
|
148
|
-
* @returns {boolean}
|
|
149
|
-
*/
|
|
150
|
-
Save(path = "") {
|
|
151
|
-
throw resourceBoundaryError("TriTextureRes", "Save", `Use a format writer and caller-owned destination to save texture payloads${path ? ` (${path})` : ""}.`);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Return true if an asynchronous save is active.
|
|
156
|
-
*
|
|
157
|
-
* @returns {boolean}
|
|
158
|
-
*/
|
|
159
|
-
IsSaving() {
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Return true if the asynchronous save operation has completed.
|
|
165
|
-
*
|
|
166
|
-
* @returns {boolean}
|
|
167
|
-
*/
|
|
168
|
-
IsSaveCompleted() {
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Return true if the asynchronous save operation succeeded.
|
|
174
|
-
*
|
|
175
|
-
* @returns {boolean}
|
|
176
|
-
*/
|
|
177
|
-
IsSaveSucceeded() {
|
|
178
|
-
return false;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Wait for an asynchronous save operation.
|
|
183
|
-
*
|
|
184
|
-
* @returns {boolean}
|
|
185
|
-
*/
|
|
186
|
-
WaitForSave() {
|
|
187
|
-
return this.IsSaveCompleted();
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Device texture allocation belongs to engine-gpu.
|
|
192
|
-
*
|
|
193
|
-
* @throws {Error}
|
|
194
|
-
*/
|
|
195
|
-
CreateEmptyTexture() {
|
|
196
|
-
throw resourceBoundaryError("TriTextureRes", "CreateEmptyTexture", "Use engine-gpu to allocate device textures.");
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Render-target wrapping belongs to engine-gpu.
|
|
201
|
-
*
|
|
202
|
-
* @throws {Error}
|
|
203
|
-
*/
|
|
204
|
-
SetFromRenderTarget() {
|
|
205
|
-
throw resourceBoundaryError("TriTextureRes", "SetFromRenderTarget", "Runtime-resource does not own render targets.");
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Create a texture copy from a render target.
|
|
210
|
-
*
|
|
211
|
-
* @throws {Error}
|
|
212
|
-
*/
|
|
213
|
-
CreateAndCopyFromRenderTarget() {
|
|
214
|
-
throw resourceBoundaryError("TriTextureRes", "CreateAndCopyFromRenderTarget", "Runtime-resource does not own render targets.");
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Create a device texture from a host bitmap.
|
|
219
|
-
*
|
|
220
|
-
* @throws {Error}
|
|
221
|
-
*/
|
|
222
|
-
CreateFromHostBitmap() {
|
|
223
|
-
throw resourceBoundaryError("TriTextureRes", "CreateFromHostBitmap", "Use engine-gpu to allocate and upload texture data.");
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Create this texture from another texture resource.
|
|
228
|
-
*
|
|
229
|
-
* @throws {Error}
|
|
230
|
-
*/
|
|
231
|
-
CreateFromTexture() {
|
|
232
|
-
throw resourceBoundaryError("TriTextureRes", "CreateFromTexture", "Use engine-gpu to copy device textures.");
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Return true if this texture owns a backend allocation object.
|
|
237
|
-
*
|
|
238
|
-
* @param {string|number} type
|
|
239
|
-
* @param {string|number} object
|
|
240
|
-
* @returns {boolean}
|
|
241
|
-
*/
|
|
242
|
-
HasALObject(type, object) {
|
|
243
|
-
return this.HasAdapterResource(`${type}:${object}`);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Return an engine-owned texture pipeline object when attached.
|
|
248
|
-
*
|
|
249
|
-
* @returns {*}
|
|
250
|
-
*/
|
|
251
|
-
GetPipeline() {
|
|
252
|
-
return this.GetAdapterResource("pipeline");
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Return memory size for the original non-LODed texture.
|
|
257
|
-
*
|
|
258
|
-
* @returns {number}
|
|
259
|
-
*/
|
|
260
|
-
GetOriginalMemoryUsage() {
|
|
261
|
-
return this.originalMemoryUsage || getPayloadMemoryUsage(this.GetPayload());
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* Store the average color reported by decoded texture data.
|
|
266
|
-
*
|
|
267
|
-
* @param {number} red
|
|
268
|
-
* @param {number} green
|
|
269
|
-
* @param {number} blue
|
|
270
|
-
* @param {number} alpha
|
|
271
|
-
* @returns {TriTextureRes}
|
|
272
|
-
*/
|
|
273
|
-
SetAverageColor(red = 0, green = 0, blue = 0, alpha = 0) {
|
|
274
|
-
this.averageColor = [red, green, blue, alpha];
|
|
275
|
-
return this;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Update a texture subresource.
|
|
280
|
-
*
|
|
281
|
-
* @throws {Error}
|
|
282
|
-
*/
|
|
283
|
-
UpdateSubresource() {
|
|
284
|
-
throw resourceBoundaryError("TriTextureRes", "UpdateSubresource", "Use engine-gpu to upload texture bytes.");
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Resource preparation does not decide device upload policy.
|
|
289
|
-
*
|
|
290
|
-
* @returns {boolean}
|
|
291
|
-
*/
|
|
292
|
-
PrepareResources() {
|
|
293
|
-
return this.IsPrepared();
|
|
294
|
-
}
|
|
295
|
-
static payload = "texture";
|
|
296
|
-
}
|
|
297
|
-
function getPayloadMemoryUsage(payload) {
|
|
298
|
-
if (!payload || typeof payload !== "object") return 0;
|
|
299
|
-
if (Number.isSafeInteger(payload.originalMemoryUsage) && payload.originalMemoryUsage >= 0) {
|
|
300
|
-
return payload.originalMemoryUsage;
|
|
301
|
-
}
|
|
302
|
-
return ArrayBuffer.isView(payload.data) || payload.data instanceof ArrayBuffer ? payload.data.byteLength : 0;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// Declared as data rather than with decorators, so the resource tree loads from
|
|
306
|
-
// source without a transform. Field order is key order, and GetValues() exports
|
|
307
|
-
// in that order.
|
|
308
|
-
CjsSchema.define(TriTextureRes, {
|
|
309
|
-
className: "TriTextureRes",
|
|
310
|
-
family: "resources",
|
|
311
|
-
fields: {
|
|
312
|
-
format: [type.unknown, io.read],
|
|
313
|
-
type: [type.unknown, io.persist],
|
|
314
|
-
averageColor: [type.color, io.read],
|
|
315
|
-
depth: [type.uint32, io.read],
|
|
316
|
-
cutoutHeight: [type.float32, io.readwrite],
|
|
317
|
-
height: [type.uint32, io.read],
|
|
318
|
-
lodEnabled: [type.boolean, io.read],
|
|
319
|
-
hadLodRequests: [type.boolean, io.read],
|
|
320
|
-
cpuMip: [type.uint32, io.read],
|
|
321
|
-
gpuMip: [type.uint32, io.read],
|
|
322
|
-
wrappedRenderTarget: [type.unknown, io.read],
|
|
323
|
-
originalResolution: [type.uint32, io.read],
|
|
324
|
-
originalMemoryUsage: [type.uint64, io.read],
|
|
325
|
-
name: [type.string, io.readwrite],
|
|
326
|
-
arraySize: [type.uint32, io.read],
|
|
327
|
-
cutoutWidth: [type.float32, io.readwrite],
|
|
328
|
-
width: [type.uint32, io.read],
|
|
329
|
-
cutoutX: [type.float32, io.readwrite],
|
|
330
|
-
cutoutY: [type.float32, io.readwrite]
|
|
331
|
-
},
|
|
332
|
-
methods: {
|
|
333
|
-
GetMipCount: [carbon.method, impl.adapted],
|
|
334
|
-
GetMsaaType: [carbon.method, impl.adapted],
|
|
335
|
-
GetMsaaQuality: [carbon.method, impl.adapted],
|
|
336
|
-
HadLodRequests: [carbon.method, impl.adapted],
|
|
337
|
-
GetSrvIndexInHeap: [carbon.method, impl.notSupported],
|
|
338
|
-
SaveAsync: [carbon.method, impl.notSupported],
|
|
339
|
-
Save: [carbon.method, impl.notSupported],
|
|
340
|
-
IsSaving: [carbon.method, impl.noop],
|
|
341
|
-
IsSaveCompleted: [carbon.method, impl.noop],
|
|
342
|
-
IsSaveSucceeded: [carbon.method, impl.noop],
|
|
343
|
-
WaitForSave: [carbon.method, impl.noop],
|
|
344
|
-
CreateEmptyTexture: [carbon.method, impl.notSupported],
|
|
345
|
-
SetFromRenderTarget: [carbon.method, impl.notSupported],
|
|
346
|
-
CreateAndCopyFromRenderTarget: [carbon.method, impl.notSupported],
|
|
347
|
-
CreateFromHostBitmap: [carbon.method, impl.notSupported],
|
|
348
|
-
CreateFromTexture: [carbon.method, impl.notSupported],
|
|
349
|
-
HasALObject: [carbon.method, impl.adapted],
|
|
350
|
-
GetPipeline: [carbon.method, impl.adapted],
|
|
351
|
-
GetOriginalMemoryUsage: [carbon.method, impl.adapted],
|
|
352
|
-
SetAverageColor: [carbon.method, impl.adapted],
|
|
353
|
-
UpdateSubresource: [carbon.method, impl.notSupported],
|
|
354
|
-
PrepareResources: [carbon.method, impl.adapted]
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
|
|
358
|
-
export { TriTextureRes };
|
|
359
|
-
//# sourceMappingURL=TriTextureRes.js.map
|
|
1
|
+
import { CjsSchema, carbon, impl, type, io } from '@carbonenginejs/runtime-utils/schema';
|
|
2
|
+
import { CjsResource } from '../CjsResource.js';
|
|
3
|
+
import { validateVideoPayload, validateTexturePayload, validateRgbaPayload, ResourcePayloadType } from '../../format/payloadContract.js';
|
|
4
|
+
import { resourcePayloadError, validateResourcePayload, resourceBoundaryError } from '../resourceBoundary.js';
|
|
5
|
+
|
|
6
|
+
// Source: trinity/trinity/Resources/TriTextureRes.h
|
|
7
|
+
// Source: trinity/trinity/Resources/TriTextureRes.cpp
|
|
8
|
+
// Source: trinity/trinity/Resources/TriTextureRes_Blue.cpp
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Resource record that owns Carbon-style texture identity and validated
|
|
12
|
+
* texture, RGBA, or video payload facts with mirrored dimension/format
|
|
13
|
+
* metadata, while engine packages decide what those facts become on a device.
|
|
14
|
+
*
|
|
15
|
+
* The resource never creates or retains a backend texture.
|
|
16
|
+
*/
|
|
17
|
+
class TriTextureRes extends CjsResource {
|
|
18
|
+
format = null;
|
|
19
|
+
type = null;
|
|
20
|
+
averageColor = [0, 0, 0, 0];
|
|
21
|
+
depth = 0;
|
|
22
|
+
cutoutHeight = 1;
|
|
23
|
+
height = 0;
|
|
24
|
+
lodEnabled = false;
|
|
25
|
+
hadLodRequests = false;
|
|
26
|
+
cpuMip = 0;
|
|
27
|
+
gpuMip = 0;
|
|
28
|
+
wrappedRenderTarget = null;
|
|
29
|
+
originalResolution = 0;
|
|
30
|
+
originalMemoryUsage = 0;
|
|
31
|
+
name = "";
|
|
32
|
+
arraySize = 0;
|
|
33
|
+
cutoutWidth = 1;
|
|
34
|
+
width = 0;
|
|
35
|
+
cutoutX = 0;
|
|
36
|
+
cutoutY = 0;
|
|
37
|
+
|
|
38
|
+
/** Creates a TriTextureRes with caller-provided initial state. */
|
|
39
|
+
constructor(values = null) {
|
|
40
|
+
super();
|
|
41
|
+
this.SetValues(values || {}, {
|
|
42
|
+
markDirty: false,
|
|
43
|
+
skipUpdate: true,
|
|
44
|
+
skipEvents: true
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Attach a plain texture, RGBA, or video payload and mirror Carbon-exposed
|
|
50
|
+
* metadata. Invalid payloads are rejected before replacing the current one.
|
|
51
|
+
*
|
|
52
|
+
* @param {object|null} payload
|
|
53
|
+
* @param {object|null} options
|
|
54
|
+
* @returns {TriTextureRes}
|
|
55
|
+
*/
|
|
56
|
+
SetPayload(payload = null, options = null) {
|
|
57
|
+
if (payload === null) {
|
|
58
|
+
super.SetPayload(null);
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
const validator = {
|
|
62
|
+
[ResourcePayloadType.RGBA]: validateRgbaPayload,
|
|
63
|
+
[ResourcePayloadType.TEXTURE]: validateTexturePayload,
|
|
64
|
+
[ResourcePayloadType.VIDEO]: validateVideoPayload
|
|
65
|
+
}[payload?.payloadType];
|
|
66
|
+
if (!validator) {
|
|
67
|
+
throw resourcePayloadError("TriTextureRes", 'Expected payloadType "rgba", "texture", or "video".', "payloadType");
|
|
68
|
+
}
|
|
69
|
+
validateResourcePayload("TriTextureRes", payload, validator);
|
|
70
|
+
const values = {
|
|
71
|
+
...(options || {})
|
|
72
|
+
};
|
|
73
|
+
if (payload.pixelFormat !== undefined || payload.format !== undefined) values.format = payload.pixelFormat || payload.format;
|
|
74
|
+
if (payload.width !== undefined) values.width = payload.width;
|
|
75
|
+
if (payload.height !== undefined) values.height = payload.height;
|
|
76
|
+
if (payload.depth !== undefined) values.depth = payload.depth;
|
|
77
|
+
if (payload.arraySize !== undefined) values.arraySize = payload.arraySize;else if (Array.isArray(payload.faces)) values.arraySize = payload.faces.length;
|
|
78
|
+
if (payload.mipCount !== undefined) values.cpuMip = payload.mipCount;else if (payload.payloadType === ResourcePayloadType.RGBA) values.cpuMip = 1;
|
|
79
|
+
if (payload.hadLodRequests !== undefined) values.hadLodRequests = !!payload.hadLodRequests;
|
|
80
|
+
values.originalMemoryUsage = getPayloadMemoryUsage(payload);
|
|
81
|
+
values.originalResolution = Math.max(payload.width || 0, payload.height || 0, this.originalResolution || 0);
|
|
82
|
+
super.SetPayload(payload);
|
|
83
|
+
this.SetValues(values);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Return the number of mip levels known to this texture resource.
|
|
89
|
+
*
|
|
90
|
+
* @returns {number}
|
|
91
|
+
*/
|
|
92
|
+
GetMipCount() {
|
|
93
|
+
return this.GetPayload()?.mipCount || this.cpuMip || 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Return the multisample type for this texture.
|
|
98
|
+
*
|
|
99
|
+
* @returns {number}
|
|
100
|
+
*/
|
|
101
|
+
GetMsaaType() {
|
|
102
|
+
const payload = this.GetPayload();
|
|
103
|
+
return payload?.multiSampleType ?? payload?.msaaType ?? payload?.samples ?? 1;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Return the multisample quality for this texture.
|
|
108
|
+
*
|
|
109
|
+
* @returns {number}
|
|
110
|
+
*/
|
|
111
|
+
GetMsaaQuality() {
|
|
112
|
+
const payload = this.GetPayload();
|
|
113
|
+
return payload?.multiSampleQuality ?? payload?.msaaQuality ?? 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Return true if this texture has received LOD requests.
|
|
118
|
+
*
|
|
119
|
+
* @returns {boolean}
|
|
120
|
+
*/
|
|
121
|
+
HadLodRequests() {
|
|
122
|
+
return this.hadLodRequests;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Return the shader-resource-view heap index when a backend owns one.
|
|
127
|
+
*
|
|
128
|
+
* @returns {number}
|
|
129
|
+
*/
|
|
130
|
+
GetSrvIndexInHeap() {
|
|
131
|
+
throw resourceBoundaryError("TriTextureRes", "GetSrvIndexInHeap", "Runtime-resource does not own descriptor heaps.");
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Save this texture asynchronously.
|
|
136
|
+
*
|
|
137
|
+
* @param {string} path
|
|
138
|
+
* @returns {boolean}
|
|
139
|
+
*/
|
|
140
|
+
SaveAsync(path = "") {
|
|
141
|
+
throw resourceBoundaryError("TriTextureRes", "SaveAsync", `Use a format writer and caller-owned destination to save texture payloads${path ? ` (${path})` : ""}.`);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Save this texture synchronously.
|
|
146
|
+
*
|
|
147
|
+
* @param {string} path
|
|
148
|
+
* @returns {boolean}
|
|
149
|
+
*/
|
|
150
|
+
Save(path = "") {
|
|
151
|
+
throw resourceBoundaryError("TriTextureRes", "Save", `Use a format writer and caller-owned destination to save texture payloads${path ? ` (${path})` : ""}.`);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Return true if an asynchronous save is active.
|
|
156
|
+
*
|
|
157
|
+
* @returns {boolean}
|
|
158
|
+
*/
|
|
159
|
+
IsSaving() {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Return true if the asynchronous save operation has completed.
|
|
165
|
+
*
|
|
166
|
+
* @returns {boolean}
|
|
167
|
+
*/
|
|
168
|
+
IsSaveCompleted() {
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Return true if the asynchronous save operation succeeded.
|
|
174
|
+
*
|
|
175
|
+
* @returns {boolean}
|
|
176
|
+
*/
|
|
177
|
+
IsSaveSucceeded() {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Wait for an asynchronous save operation.
|
|
183
|
+
*
|
|
184
|
+
* @returns {boolean}
|
|
185
|
+
*/
|
|
186
|
+
WaitForSave() {
|
|
187
|
+
return this.IsSaveCompleted();
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Device texture allocation belongs to engine-gpu.
|
|
192
|
+
*
|
|
193
|
+
* @throws {Error}
|
|
194
|
+
*/
|
|
195
|
+
CreateEmptyTexture() {
|
|
196
|
+
throw resourceBoundaryError("TriTextureRes", "CreateEmptyTexture", "Use engine-gpu to allocate device textures.");
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Render-target wrapping belongs to engine-gpu.
|
|
201
|
+
*
|
|
202
|
+
* @throws {Error}
|
|
203
|
+
*/
|
|
204
|
+
SetFromRenderTarget() {
|
|
205
|
+
throw resourceBoundaryError("TriTextureRes", "SetFromRenderTarget", "Runtime-resource does not own render targets.");
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Create a texture copy from a render target.
|
|
210
|
+
*
|
|
211
|
+
* @throws {Error}
|
|
212
|
+
*/
|
|
213
|
+
CreateAndCopyFromRenderTarget() {
|
|
214
|
+
throw resourceBoundaryError("TriTextureRes", "CreateAndCopyFromRenderTarget", "Runtime-resource does not own render targets.");
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Create a device texture from a host bitmap.
|
|
219
|
+
*
|
|
220
|
+
* @throws {Error}
|
|
221
|
+
*/
|
|
222
|
+
CreateFromHostBitmap() {
|
|
223
|
+
throw resourceBoundaryError("TriTextureRes", "CreateFromHostBitmap", "Use engine-gpu to allocate and upload texture data.");
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Create this texture from another texture resource.
|
|
228
|
+
*
|
|
229
|
+
* @throws {Error}
|
|
230
|
+
*/
|
|
231
|
+
CreateFromTexture() {
|
|
232
|
+
throw resourceBoundaryError("TriTextureRes", "CreateFromTexture", "Use engine-gpu to copy device textures.");
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Return true if this texture owns a backend allocation object.
|
|
237
|
+
*
|
|
238
|
+
* @param {string|number} type
|
|
239
|
+
* @param {string|number} object
|
|
240
|
+
* @returns {boolean}
|
|
241
|
+
*/
|
|
242
|
+
HasALObject(type, object) {
|
|
243
|
+
return this.HasAdapterResource(`${type}:${object}`);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Return an engine-owned texture pipeline object when attached.
|
|
248
|
+
*
|
|
249
|
+
* @returns {*}
|
|
250
|
+
*/
|
|
251
|
+
GetPipeline() {
|
|
252
|
+
return this.GetAdapterResource("pipeline");
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Return memory size for the original non-LODed texture.
|
|
257
|
+
*
|
|
258
|
+
* @returns {number}
|
|
259
|
+
*/
|
|
260
|
+
GetOriginalMemoryUsage() {
|
|
261
|
+
return this.originalMemoryUsage || getPayloadMemoryUsage(this.GetPayload());
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Store the average color reported by decoded texture data.
|
|
266
|
+
*
|
|
267
|
+
* @param {number} red
|
|
268
|
+
* @param {number} green
|
|
269
|
+
* @param {number} blue
|
|
270
|
+
* @param {number} alpha
|
|
271
|
+
* @returns {TriTextureRes}
|
|
272
|
+
*/
|
|
273
|
+
SetAverageColor(red = 0, green = 0, blue = 0, alpha = 0) {
|
|
274
|
+
this.averageColor = [red, green, blue, alpha];
|
|
275
|
+
return this;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Update a texture subresource.
|
|
280
|
+
*
|
|
281
|
+
* @throws {Error}
|
|
282
|
+
*/
|
|
283
|
+
UpdateSubresource() {
|
|
284
|
+
throw resourceBoundaryError("TriTextureRes", "UpdateSubresource", "Use engine-gpu to upload texture bytes.");
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Resource preparation does not decide device upload policy.
|
|
289
|
+
*
|
|
290
|
+
* @returns {boolean}
|
|
291
|
+
*/
|
|
292
|
+
PrepareResources() {
|
|
293
|
+
return this.IsPrepared();
|
|
294
|
+
}
|
|
295
|
+
static payload = "texture";
|
|
296
|
+
}
|
|
297
|
+
function getPayloadMemoryUsage(payload) {
|
|
298
|
+
if (!payload || typeof payload !== "object") return 0;
|
|
299
|
+
if (Number.isSafeInteger(payload.originalMemoryUsage) && payload.originalMemoryUsage >= 0) {
|
|
300
|
+
return payload.originalMemoryUsage;
|
|
301
|
+
}
|
|
302
|
+
return ArrayBuffer.isView(payload.data) || payload.data instanceof ArrayBuffer ? payload.data.byteLength : 0;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Declared as data rather than with decorators, so the resource tree loads from
|
|
306
|
+
// source without a transform. Field order is key order, and GetValues() exports
|
|
307
|
+
// in that order.
|
|
308
|
+
CjsSchema.define(TriTextureRes, {
|
|
309
|
+
className: "TriTextureRes",
|
|
310
|
+
family: "resources",
|
|
311
|
+
fields: {
|
|
312
|
+
format: [type.unknown, io.read],
|
|
313
|
+
type: [type.unknown, io.persist],
|
|
314
|
+
averageColor: [type.color, io.read],
|
|
315
|
+
depth: [type.uint32, io.read],
|
|
316
|
+
cutoutHeight: [type.float32, io.readwrite],
|
|
317
|
+
height: [type.uint32, io.read],
|
|
318
|
+
lodEnabled: [type.boolean, io.read],
|
|
319
|
+
hadLodRequests: [type.boolean, io.read],
|
|
320
|
+
cpuMip: [type.uint32, io.read],
|
|
321
|
+
gpuMip: [type.uint32, io.read],
|
|
322
|
+
wrappedRenderTarget: [type.unknown, io.read],
|
|
323
|
+
originalResolution: [type.uint32, io.read],
|
|
324
|
+
originalMemoryUsage: [type.uint64, io.read],
|
|
325
|
+
name: [type.string, io.readwrite],
|
|
326
|
+
arraySize: [type.uint32, io.read],
|
|
327
|
+
cutoutWidth: [type.float32, io.readwrite],
|
|
328
|
+
width: [type.uint32, io.read],
|
|
329
|
+
cutoutX: [type.float32, io.readwrite],
|
|
330
|
+
cutoutY: [type.float32, io.readwrite]
|
|
331
|
+
},
|
|
332
|
+
methods: {
|
|
333
|
+
GetMipCount: [carbon.method, impl.adapted],
|
|
334
|
+
GetMsaaType: [carbon.method, impl.adapted],
|
|
335
|
+
GetMsaaQuality: [carbon.method, impl.adapted],
|
|
336
|
+
HadLodRequests: [carbon.method, impl.adapted],
|
|
337
|
+
GetSrvIndexInHeap: [carbon.method, impl.notSupported],
|
|
338
|
+
SaveAsync: [carbon.method, impl.notSupported],
|
|
339
|
+
Save: [carbon.method, impl.notSupported],
|
|
340
|
+
IsSaving: [carbon.method, impl.noop],
|
|
341
|
+
IsSaveCompleted: [carbon.method, impl.noop],
|
|
342
|
+
IsSaveSucceeded: [carbon.method, impl.noop],
|
|
343
|
+
WaitForSave: [carbon.method, impl.noop],
|
|
344
|
+
CreateEmptyTexture: [carbon.method, impl.notSupported],
|
|
345
|
+
SetFromRenderTarget: [carbon.method, impl.notSupported],
|
|
346
|
+
CreateAndCopyFromRenderTarget: [carbon.method, impl.notSupported],
|
|
347
|
+
CreateFromHostBitmap: [carbon.method, impl.notSupported],
|
|
348
|
+
CreateFromTexture: [carbon.method, impl.notSupported],
|
|
349
|
+
HasALObject: [carbon.method, impl.adapted],
|
|
350
|
+
GetPipeline: [carbon.method, impl.adapted],
|
|
351
|
+
GetOriginalMemoryUsage: [carbon.method, impl.adapted],
|
|
352
|
+
SetAverageColor: [carbon.method, impl.adapted],
|
|
353
|
+
UpdateSubresource: [carbon.method, impl.notSupported],
|
|
354
|
+
PrepareResources: [carbon.method, impl.adapted]
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
export { TriTextureRes };
|
|
359
|
+
//# sourceMappingURL=TriTextureRes.js.map
|