@carbonenginejs/runtime-resource 0.12.1 → 0.13.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 -108
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3494
- package/dist/CjsResMan.js.map +1 -1
- 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 +408 -361
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -0
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js.map +1 -0
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -427
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -955
- package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -0
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -0
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -0
- package/dist/format/effect/effectBodyInventory.js.map +1 -0
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- package/dist/format/effect/effectPermutationGraph.js.map +1 -1
- 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 -292
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- 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 -156
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/busNodes.js +252 -0
- package/dist/formats/bnk/core/busNodes.js.map +1 -0
- package/dist/formats/bnk/core/effectNodes.js +147 -0
- package/dist/formats/bnk/core/effectNodes.js.map +1 -0
- package/dist/formats/bnk/core/eventAction.js +416 -305
- package/dist/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/formats/bnk/core/globalSettings.js +215 -0
- package/dist/formats/bnk/core/globalSettings.js.map +1 -0
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -480
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +533 -509
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/nodeBase.js +553 -532
- package/dist/formats/bnk/core/nodeBase.js.map +1 -1
- 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 +862 -862
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +142 -142
- 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/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 +290 -290
- package/dist/formats/gltf/core/helpers.js +307 -307
- 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 +254 -254
- 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 -781
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -0
- package/dist/formats/hlsl/core/detailMapFamily.js.map +1 -0
- 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 -0
- package/dist/formats/hlsl/core/localLightFamily.js.map +1 -0
- 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 -314
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -742
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -1
- 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 -31
- package/dist/formats/index.js.map +1 -1
- 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 +253 -253
- package/dist/formats/obj/core/helpers.js +573 -573
- 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 -0
- package/dist/formats/pickle/CjsPickleFormat.js.map +1 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -0
- package/dist/formats/pickle/index.js +2 -0
- package/dist/formats/pickle/index.js.map +1 -0
- 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 -68
- package/dist/formats/red/core/redGraph.js.map +1 -1
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +365 -365
- package/dist/formats/stl/core/helpers.js +261 -261
- 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 -221
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -0
- package/dist/formats/webgl/core/buildGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +900 -792
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/errors.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2678
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -428
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -0
- package/dist/formats/webgl/core/glsl/packedLightFixups.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -0
- package/dist/formats/webgl/core/glslBackendBlock.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js.map +1 -0
- package/dist/formats/webgl/core/{cewgCompleteness.js → glslEffectCompleteness.js} +85 -81
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +167 -306
- package/dist/formats/webgl/core/helpers.js.map +1 -1
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -0
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js +303 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -197
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -1
- package/dist/formats/webgpu/core/{cewgpu/CewgpuContainer.js → carbonWebgpu/CarbonWebgpuContainer.js} +354 -368
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -0
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +289 -289
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/errors.js.map +1 -1
- package/dist/formats/webgpu/core/helpers.js +443 -443
- package/dist/formats/webgpu/core/helpers.js.map +1 -1
- 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 -385
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -1
- 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/buildResourceTransformPlan.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +320 -320
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- 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/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +400 -402
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +196 -170
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -62
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsLoadingObject.js +19 -0
- package/dist/resource/CjsLoadingObject.js.map +1 -0
- package/dist/resource/CjsResource.js +801 -797
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/ResourceHandlerMode.js +14 -0
- package/dist/resource/ResourceHandlerMode.js.map +1 -0
- 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 +675 -675
- 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 -52
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -431
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- 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 -261
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -135
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -109
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -147
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -105
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -86
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -241
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -68
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -111
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -0
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -0
- package/dist/resource/shader/reflection/shaderStage.js +22 -0
- package/dist/resource/shader/reflection/shaderStage.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -77
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- 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 -87
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/worker/CjsResManWorker.js +218 -217
- package/dist/worker/CjsResManWorker.js.map +1 -1
- package/dist/worker/CjsResManWorkerLoader.js +437 -434
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -109
- package/docs/concepts/resource-lifecycle.md +226 -225
- package/docs/concepts/shader-resource-model.md +111 -114
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -136
- package/docs/formats/carbon-effect-container.md +553 -452
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +77 -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 +65 -67
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -62
- package/docs/formats/hlsl/guides/reading-effects.md +64 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -66
- package/docs/formats/hlsl/reference/api.md +92 -98
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -100
- package/docs/formats/pickle.md +82 -0
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -57
- package/docs/formats/webgl/architecture.md +69 -70
- 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 -871
- 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 -96
- package/docs/formats/webgpu/formats/{cewgpu.md → carbon-webgpu.md} +215 -216
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -191
- package/docs/formats/webgpu/reference/api.md +196 -197
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1543
- package/docs/formats/wwise.md +146 -85
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -206
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -952
- 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 -110
- 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 -135
- 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
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +0 -372
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +0 -1
- package/dist/format/effect/effectReflectionPackage.js +0 -636
- package/dist/format/effect/effectReflectionPackage.js.map +0 -1
- package/dist/formats/hlsl/core/HlslReader.js +0 -16
- package/dist/formats/hlsl/core/HlslReader.js.map +0 -1
- package/dist/formats/hlsl/core/portableReflection.js +0 -848
- package/dist/formats/hlsl/core/portableReflection.js.map +0 -1
- package/dist/formats/hlsl/portable.js +0 -2
- package/dist/formats/hlsl/portable.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackage.js +0 -340
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +0 -104
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +0 -1
- package/dist/formats/webgl/core/cewg/binary.js +0 -19
- package/dist/formats/webgl/core/cewg/binary.js.map +0 -1
- package/dist/formats/webgl/core/cewgCompleteness.js.map +0 -1
- package/dist/formats/webgl/core/effectPackageValidation.js +0 -331
- package/dist/formats/webgl/core/effectPackageValidation.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +0 -1
- package/dist/resource/shader/portable.js +0 -33
- package/dist/resource/shader/portable.js.map +0 -1
- package/docs/formats/hlsl/reference/portable-reflection.md +0 -141
- package/docs/formats/webgl/effect-reflection.md +0 -127
|
@@ -1,284 +1,284 @@
|
|
|
1
|
-
import { hlslShaderStageName } from './tr2/HlslRenderContextEnum.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Tr2 effect JSON emitter.
|
|
5
|
-
*
|
|
6
|
-
* Converts the internal HlslEffectRes/HlslShader graph (src/core/tr2, internal
|
|
7
|
-
* parsing machinery — not part of this package's public surface) into the
|
|
8
|
-
* plain, documented JSON shape that IS the public contract of this reader.
|
|
9
|
-
*
|
|
10
|
-
* `emitEffectJson(effect, shader, options)` returns a plain object whose key
|
|
11
|
-
* order mirrors the reader schema below. When `options.classes` is given,
|
|
12
|
-
* matching node kinds are instantiated and populated as class instances
|
|
13
|
-
* instead of plain object literals — an opt-in alternative to walking the
|
|
14
|
-
* returned JSON into application-specific classes by hand.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Node keys accepted by {@link emitEffectJson}'s `options.classes` map.
|
|
20
|
-
*
|
|
21
|
-
* Each key names one node shape in the emitted effect graph; the mapped
|
|
22
|
-
* constructor is instantiated with `new` and populated with that node's
|
|
23
|
-
* usual fields instead of a plain object literal.
|
|
24
|
-
*
|
|
25
|
-
* This is a first-pass hydration surface: it covers the top-level effect
|
|
26
|
-
* graph (the header, the default-permutation effect description, its
|
|
27
|
-
* techniques/passes/stage inputs, and per-stage constants/resources/
|
|
28
|
-
* samplers/bytecode). Nested detail that has no dedicated class key yet
|
|
29
|
-
* (shader libraries, parameter annotations, pipeline-input/register
|
|
30
|
-
* signatures) is still emitted as plain, JSON-compatible data.
|
|
31
|
-
*/
|
|
32
|
-
const CLASS_KEYS = Object.freeze(["Root", "Permutation", "EffectDescription", "Technique", "Pass", "StageInput", "Constant", "Resource", "Sampler", "ShaderBytecode"]);
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Instantiate and populate a node class, or return the plain props unchanged.
|
|
36
|
-
*
|
|
37
|
-
* @param {object} classes Opt-in node class map.
|
|
38
|
-
* @param {string} key Node key to look up in `classes`.
|
|
39
|
-
* @param {object} props Fields to populate onto the instance.
|
|
40
|
-
* @returns {object} A populated class instance, or `props` when no
|
|
41
|
-
* constructor is registered for `key`.
|
|
42
|
-
*/
|
|
43
|
-
function build(classes, key, props) {
|
|
44
|
-
const Ctor = classes[key];
|
|
45
|
-
return Ctor ? Object.assign(new Ctor(), props) : props;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Emit one HlslShaderPermutation node.
|
|
50
|
-
*
|
|
51
|
-
* @param {object} permutation Decoded permutation axis.
|
|
52
|
-
* @param {object} classes Opt-in node class map.
|
|
53
|
-
* @returns {object} Emitted permutation record.
|
|
54
|
-
*/
|
|
55
|
-
function emitPermutation(permutation, classes) {
|
|
56
|
-
return build(classes, "Permutation", {
|
|
57
|
-
name: permutation.name,
|
|
58
|
-
options: permutation.options.slice(),
|
|
59
|
-
defaultOption: permutation.defaultOption,
|
|
60
|
-
description: permutation.description,
|
|
61
|
-
type: permutation.type
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Emit one HlslShaderBytecode node. Bytes are included as a plain number
|
|
67
|
-
* array (opaque payload; this package does not decode DXBC/HLSL bytecode).
|
|
68
|
-
*
|
|
69
|
-
* @param {object|null} bytecode Captured shader bytecode, or null.
|
|
70
|
-
* @param {object} classes Opt-in node class map.
|
|
71
|
-
* @returns {object|null} Emitted bytecode record, or null.
|
|
72
|
-
*/
|
|
73
|
-
function emitShaderBytecode(bytecode, classes) {
|
|
74
|
-
if (!bytecode) return null;
|
|
75
|
-
return build(classes, "ShaderBytecode", {
|
|
76
|
-
stageType: bytecode.stageType,
|
|
77
|
-
stageName: bytecode.stageName,
|
|
78
|
-
shaderSize: bytecode.shaderSize,
|
|
79
|
-
stringTableOffset: bytecode.stringTableOffset,
|
|
80
|
-
effectName: bytecode.effectName,
|
|
81
|
-
bytes: Array.from(bytecode.bytes)
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Emit one HlslEffectConstant node.
|
|
87
|
-
*
|
|
88
|
-
* @param {object} constant Decoded constant-buffer field metadata.
|
|
89
|
-
* @param {object} classes Opt-in node class map.
|
|
90
|
-
* @returns {object} Emitted constant record.
|
|
91
|
-
*/
|
|
92
|
-
function emitConstant(constant, classes) {
|
|
93
|
-
return build(classes, "Constant", {
|
|
94
|
-
name: constant.name,
|
|
95
|
-
offset: constant.offset,
|
|
96
|
-
size: constant.size,
|
|
97
|
-
type: constant.type,
|
|
98
|
-
dimension: constant.dimension,
|
|
99
|
-
elements: constant.elements,
|
|
100
|
-
isSRGB: constant.isSRGB,
|
|
101
|
-
isAutoregister: constant.isAutoregister
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Emit one HlslEffectResource (SRV or UAV) node.
|
|
107
|
-
*
|
|
108
|
-
* @param {number} registerIndex Shader register index.
|
|
109
|
-
* @param {object} resource Decoded resource metadata.
|
|
110
|
-
* @param {object} classes Opt-in node class map.
|
|
111
|
-
* @returns {object} Emitted resource record.
|
|
112
|
-
*/
|
|
113
|
-
function emitResource(registerIndex, resource, classes) {
|
|
114
|
-
return build(classes, "Resource", {
|
|
115
|
-
registerIndex,
|
|
116
|
-
name: resource.name,
|
|
117
|
-
type: resource.type,
|
|
118
|
-
arrayElements: resource.arrayElements,
|
|
119
|
-
isSRGB: resource.isSRGB,
|
|
120
|
-
isAutoregister: resource.isAutoregister
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Emit one HlslSamplerSetup node.
|
|
126
|
-
*
|
|
127
|
-
* @param {number} registerIndex Shader register index.
|
|
128
|
-
* @param {object} samplerSetup Decoded sampler setup (name + descriptor).
|
|
129
|
-
* @param {object} classes Opt-in node class map.
|
|
130
|
-
* @returns {object} Emitted sampler record.
|
|
131
|
-
*/
|
|
132
|
-
function emitSampler(registerIndex, samplerSetup, classes) {
|
|
133
|
-
const sampler = samplerSetup.sampler || {};
|
|
134
|
-
return build(classes, "Sampler", {
|
|
135
|
-
registerIndex,
|
|
136
|
-
name: samplerSetup.name,
|
|
137
|
-
isDynamic: !!sampler.isDynamic,
|
|
138
|
-
comparison: !!sampler.comparison,
|
|
139
|
-
minFilter: sampler.minFilter,
|
|
140
|
-
magFilter: sampler.magFilter,
|
|
141
|
-
mipFilter: sampler.mipFilter,
|
|
142
|
-
addressU: sampler.addressU,
|
|
143
|
-
addressV: sampler.addressV,
|
|
144
|
-
addressW: sampler.addressW,
|
|
145
|
-
mipLODBias: sampler.mipLODBias,
|
|
146
|
-
maxAnisotropy: sampler.maxAnisotropy,
|
|
147
|
-
comparisonFunc: sampler.comparisonFunc,
|
|
148
|
-
borderColor: (sampler.borderColor || []).slice(),
|
|
149
|
-
minLOD: sampler.minLOD,
|
|
150
|
-
maxLOD: sampler.maxLOD
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Emit one HlslEffectStageInput node, or null for stages absent from a pass.
|
|
156
|
-
*
|
|
157
|
-
* @param {object|undefined} stageInput Decoded stage input, if present.
|
|
158
|
-
* @param {number} stageType Trinity shader stage enum value.
|
|
159
|
-
* @param {object} classes Opt-in node class map.
|
|
160
|
-
* @returns {object|null} Emitted stage-input record, or null.
|
|
161
|
-
*/
|
|
162
|
-
function emitStageInput(stageInput, stageType, classes) {
|
|
163
|
-
if (!stageInput || !stageInput.m_exists) return null;
|
|
164
|
-
const signature = stageInput.signature || {};
|
|
165
|
-
return build(classes, "StageInput", {
|
|
166
|
-
stageType,
|
|
167
|
-
stageName: hlslShaderStageName(stageType),
|
|
168
|
-
constants: (stageInput.constants || []).map(constant => emitConstant(constant, classes)),
|
|
169
|
-
resources: Array.from(stageInput.resources || [], ([registerIndex, resource]) => emitResource(registerIndex, resource, classes)),
|
|
170
|
-
samplers: Array.from(stageInput.samplers || [], ([registerIndex, sampler]) => emitSampler(registerIndex, sampler, classes)),
|
|
171
|
-
uavs: Array.from(stageInput.uavs || [], ([registerIndex, resource]) => emitResource(registerIndex, resource, classes)),
|
|
172
|
-
bytecode: emitShaderBytecode(stageInput.cjsShaderBytecode, classes),
|
|
173
|
-
signature: {
|
|
174
|
-
pipelineInputs: (signature.pipelineInputs || []).map(entry => ({
|
|
175
|
-
...entry
|
|
176
|
-
})),
|
|
177
|
-
registers: (signature.registers || []).map(entry => ({
|
|
178
|
-
...entry
|
|
179
|
-
})),
|
|
180
|
-
threadGroupSize: signature.threadGroupSize ? {
|
|
181
|
-
...signature.threadGroupSize
|
|
182
|
-
} : null
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Emit one HlslPass node.
|
|
189
|
-
*
|
|
190
|
-
* @param {object} pass Decoded technique pass.
|
|
191
|
-
* @param {object} classes Opt-in node class map.
|
|
192
|
-
* @returns {object} Emitted pass record.
|
|
193
|
-
*/
|
|
194
|
-
function emitPass(pass, classes) {
|
|
195
|
-
return build(classes, "Pass", {
|
|
196
|
-
shaderTypeMask: pass.shaderTypeMask,
|
|
197
|
-
stageInputs: pass.stageInputs.map((stageInput, stageType) => emitStageInput(stageInput, stageType, classes)),
|
|
198
|
-
renderStates: pass.cjsRenderStateSetup ? pass.cjsRenderStateSetup.toJSON() : []
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Emit one HlslEffectTechnique node.
|
|
204
|
-
*
|
|
205
|
-
* @param {object} technique Decoded technique.
|
|
206
|
-
* @param {object} classes Opt-in node class map.
|
|
207
|
-
* @returns {object} Emitted technique record.
|
|
208
|
-
*/
|
|
209
|
-
function emitTechnique(technique, classes) {
|
|
210
|
-
return build(classes, "Technique", {
|
|
211
|
-
name: technique.name,
|
|
212
|
-
shaderTypeMask: technique.shaderTypeMask,
|
|
213
|
-
passes: technique.passes.map(pass => emitPass(pass, classes)),
|
|
214
|
-
// Shader-library (v14+ ray tracing) metadata has no dedicated class
|
|
215
|
-
// key yet; emitted as plain, JSON-compatible data.
|
|
216
|
-
libraries: technique.libraries.map(library => library?.toJSON?.() ?? library)
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Serializes a map of parameter names to annotation arrays as plain data.
|
|
222
|
-
*
|
|
223
|
-
* @param {Map<string, object[]>} annotations Annotation map.
|
|
224
|
-
* @returns {object[]} JSON-safe annotation groups.
|
|
225
|
-
*/
|
|
226
|
-
function emitAnnotations(annotations) {
|
|
227
|
-
return Array.from(annotations.entries(), ([name, entries]) => ({
|
|
228
|
-
name,
|
|
229
|
-
annotations: entries.map(entry => entry?.toJSON?.() ?? entry)
|
|
230
|
-
}));
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Emit one HlslEffectDescription node: one resolved permutation's decoded
|
|
235
|
-
* techniques, passes, and stage metadata.
|
|
236
|
-
*
|
|
237
|
-
* @param {object} description Decoded effect description (`HlslShader.GetEffectDescription()`).
|
|
238
|
-
* @param {object} classes Opt-in node class map.
|
|
239
|
-
* @returns {object} Emitted effect-description record.
|
|
240
|
-
*/
|
|
241
|
-
function emitEffectDescription(description, classes) {
|
|
242
|
-
return build(classes, "EffectDescription", {
|
|
243
|
-
version: description.version,
|
|
244
|
-
effectName: description.effectName,
|
|
245
|
-
techniques: description.techniques.map(technique => emitTechnique(technique, classes)),
|
|
246
|
-
annotations: emitAnnotations(description.annotations),
|
|
247
|
-
readError: description.readError ? {
|
|
248
|
-
name: description.readError.name,
|
|
249
|
-
message: description.readError.message
|
|
250
|
-
} : null
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Convert a loaded HlslEffectRes (and, when resolvable, its default- or
|
|
256
|
-
* selected-permutation HlslShader) into the documented plain JSON shape.
|
|
257
|
-
*
|
|
258
|
-
* @param {object} effect Loaded HlslEffectRes instance.
|
|
259
|
-
* @param {object|null} shader Resolved HlslShader for one permutation, or null.
|
|
260
|
-
* @param {object} [options] Emission options.
|
|
261
|
-
* @param {object} [options.classes] Opt-in node class map. See {@link CLASS_KEYS}.
|
|
262
|
-
* @returns {object} Plain JSON-compatible effect graph, or a populated
|
|
263
|
-
* `classes.Root` instance when provided.
|
|
264
|
-
*/
|
|
265
|
-
function emitEffectJson(effect, shader, options = {}) {
|
|
266
|
-
const {
|
|
267
|
-
classes = {}
|
|
268
|
-
} = options;
|
|
269
|
-
return build(classes, "Root", {
|
|
270
|
-
version: effect.m_version,
|
|
271
|
-
compilerVersion: effect.m_compilerVersion,
|
|
272
|
-
sourcePath: effect.sourcePath,
|
|
273
|
-
bodyCount: effect.m_offsetCount,
|
|
274
|
-
permutations: effect.m_permutations.map(permutation => emitPermutation(permutation, classes)),
|
|
275
|
-
effect: shader ? emitEffectDescription(shader.GetEffectDescription(), classes) : null,
|
|
276
|
-
loadError: effect.loadError ? {
|
|
277
|
-
name: effect.loadError.name,
|
|
278
|
-
message: effect.loadError.message
|
|
279
|
-
} : null
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
export { CLASS_KEYS, emitEffectJson };
|
|
284
|
-
//# sourceMappingURL=json.js.map
|
|
1
|
+
import { hlslShaderStageName } from './tr2/HlslRenderContextEnum.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tr2 effect JSON emitter.
|
|
5
|
+
*
|
|
6
|
+
* Converts the internal HlslEffectRes/HlslShader graph (src/core/tr2, internal
|
|
7
|
+
* parsing machinery — not part of this package's public surface) into the
|
|
8
|
+
* plain, documented JSON shape that IS the public contract of this reader.
|
|
9
|
+
*
|
|
10
|
+
* `emitEffectJson(effect, shader, options)` returns a plain object whose key
|
|
11
|
+
* order mirrors the reader schema below. When `options.classes` is given,
|
|
12
|
+
* matching node kinds are instantiated and populated as class instances
|
|
13
|
+
* instead of plain object literals — an opt-in alternative to walking the
|
|
14
|
+
* returned JSON into application-specific classes by hand.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Node keys accepted by {@link emitEffectJson}'s `options.classes` map.
|
|
20
|
+
*
|
|
21
|
+
* Each key names one node shape in the emitted effect graph; the mapped
|
|
22
|
+
* constructor is instantiated with `new` and populated with that node's
|
|
23
|
+
* usual fields instead of a plain object literal.
|
|
24
|
+
*
|
|
25
|
+
* This is a first-pass hydration surface: it covers the top-level effect
|
|
26
|
+
* graph (the header, the default-permutation effect description, its
|
|
27
|
+
* techniques/passes/stage inputs, and per-stage constants/resources/
|
|
28
|
+
* samplers/bytecode). Nested detail that has no dedicated class key yet
|
|
29
|
+
* (shader libraries, parameter annotations, pipeline-input/register
|
|
30
|
+
* signatures) is still emitted as plain, JSON-compatible data.
|
|
31
|
+
*/
|
|
32
|
+
const CLASS_KEYS = Object.freeze(["Root", "Permutation", "EffectDescription", "Technique", "Pass", "StageInput", "Constant", "Resource", "Sampler", "ShaderBytecode"]);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Instantiate and populate a node class, or return the plain props unchanged.
|
|
36
|
+
*
|
|
37
|
+
* @param {object} classes Opt-in node class map.
|
|
38
|
+
* @param {string} key Node key to look up in `classes`.
|
|
39
|
+
* @param {object} props Fields to populate onto the instance.
|
|
40
|
+
* @returns {object} A populated class instance, or `props` when no
|
|
41
|
+
* constructor is registered for `key`.
|
|
42
|
+
*/
|
|
43
|
+
function build(classes, key, props) {
|
|
44
|
+
const Ctor = classes[key];
|
|
45
|
+
return Ctor ? Object.assign(new Ctor(), props) : props;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Emit one HlslShaderPermutation node.
|
|
50
|
+
*
|
|
51
|
+
* @param {object} permutation Decoded permutation axis.
|
|
52
|
+
* @param {object} classes Opt-in node class map.
|
|
53
|
+
* @returns {object} Emitted permutation record.
|
|
54
|
+
*/
|
|
55
|
+
function emitPermutation(permutation, classes) {
|
|
56
|
+
return build(classes, "Permutation", {
|
|
57
|
+
name: permutation.name,
|
|
58
|
+
options: permutation.options.slice(),
|
|
59
|
+
defaultOption: permutation.defaultOption,
|
|
60
|
+
description: permutation.description,
|
|
61
|
+
type: permutation.type
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Emit one HlslShaderBytecode node. Bytes are included as a plain number
|
|
67
|
+
* array (opaque payload; this package does not decode DXBC/HLSL bytecode).
|
|
68
|
+
*
|
|
69
|
+
* @param {object|null} bytecode Captured shader bytecode, or null.
|
|
70
|
+
* @param {object} classes Opt-in node class map.
|
|
71
|
+
* @returns {object|null} Emitted bytecode record, or null.
|
|
72
|
+
*/
|
|
73
|
+
function emitShaderBytecode(bytecode, classes) {
|
|
74
|
+
if (!bytecode) return null;
|
|
75
|
+
return build(classes, "ShaderBytecode", {
|
|
76
|
+
stageType: bytecode.stageType,
|
|
77
|
+
stageName: bytecode.stageName,
|
|
78
|
+
shaderSize: bytecode.shaderSize,
|
|
79
|
+
stringTableOffset: bytecode.stringTableOffset,
|
|
80
|
+
effectName: bytecode.effectName,
|
|
81
|
+
bytes: Array.from(bytecode.bytes)
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Emit one HlslEffectConstant node.
|
|
87
|
+
*
|
|
88
|
+
* @param {object} constant Decoded constant-buffer field metadata.
|
|
89
|
+
* @param {object} classes Opt-in node class map.
|
|
90
|
+
* @returns {object} Emitted constant record.
|
|
91
|
+
*/
|
|
92
|
+
function emitConstant(constant, classes) {
|
|
93
|
+
return build(classes, "Constant", {
|
|
94
|
+
name: constant.name,
|
|
95
|
+
offset: constant.offset,
|
|
96
|
+
size: constant.size,
|
|
97
|
+
type: constant.type,
|
|
98
|
+
dimension: constant.dimension,
|
|
99
|
+
elements: constant.elements,
|
|
100
|
+
isSRGB: constant.isSRGB,
|
|
101
|
+
isAutoregister: constant.isAutoregister
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Emit one HlslEffectResource (SRV or UAV) node.
|
|
107
|
+
*
|
|
108
|
+
* @param {number} registerIndex Shader register index.
|
|
109
|
+
* @param {object} resource Decoded resource metadata.
|
|
110
|
+
* @param {object} classes Opt-in node class map.
|
|
111
|
+
* @returns {object} Emitted resource record.
|
|
112
|
+
*/
|
|
113
|
+
function emitResource(registerIndex, resource, classes) {
|
|
114
|
+
return build(classes, "Resource", {
|
|
115
|
+
registerIndex,
|
|
116
|
+
name: resource.name,
|
|
117
|
+
type: resource.type,
|
|
118
|
+
arrayElements: resource.arrayElements,
|
|
119
|
+
isSRGB: resource.isSRGB,
|
|
120
|
+
isAutoregister: resource.isAutoregister
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Emit one HlslSamplerSetup node.
|
|
126
|
+
*
|
|
127
|
+
* @param {number} registerIndex Shader register index.
|
|
128
|
+
* @param {object} samplerSetup Decoded sampler setup (name + descriptor).
|
|
129
|
+
* @param {object} classes Opt-in node class map.
|
|
130
|
+
* @returns {object} Emitted sampler record.
|
|
131
|
+
*/
|
|
132
|
+
function emitSampler(registerIndex, samplerSetup, classes) {
|
|
133
|
+
const sampler = samplerSetup.sampler || {};
|
|
134
|
+
return build(classes, "Sampler", {
|
|
135
|
+
registerIndex,
|
|
136
|
+
name: samplerSetup.name,
|
|
137
|
+
isDynamic: !!sampler.isDynamic,
|
|
138
|
+
comparison: !!sampler.comparison,
|
|
139
|
+
minFilter: sampler.minFilter,
|
|
140
|
+
magFilter: sampler.magFilter,
|
|
141
|
+
mipFilter: sampler.mipFilter,
|
|
142
|
+
addressU: sampler.addressU,
|
|
143
|
+
addressV: sampler.addressV,
|
|
144
|
+
addressW: sampler.addressW,
|
|
145
|
+
mipLODBias: sampler.mipLODBias,
|
|
146
|
+
maxAnisotropy: sampler.maxAnisotropy,
|
|
147
|
+
comparisonFunc: sampler.comparisonFunc,
|
|
148
|
+
borderColor: (sampler.borderColor || []).slice(),
|
|
149
|
+
minLOD: sampler.minLOD,
|
|
150
|
+
maxLOD: sampler.maxLOD
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Emit one HlslEffectStageInput node, or null for stages absent from a pass.
|
|
156
|
+
*
|
|
157
|
+
* @param {object|undefined} stageInput Decoded stage input, if present.
|
|
158
|
+
* @param {number} stageType Trinity shader stage enum value.
|
|
159
|
+
* @param {object} classes Opt-in node class map.
|
|
160
|
+
* @returns {object|null} Emitted stage-input record, or null.
|
|
161
|
+
*/
|
|
162
|
+
function emitStageInput(stageInput, stageType, classes) {
|
|
163
|
+
if (!stageInput || !stageInput.m_exists) return null;
|
|
164
|
+
const signature = stageInput.signature || {};
|
|
165
|
+
return build(classes, "StageInput", {
|
|
166
|
+
stageType,
|
|
167
|
+
stageName: hlslShaderStageName(stageType),
|
|
168
|
+
constants: (stageInput.constants || []).map(constant => emitConstant(constant, classes)),
|
|
169
|
+
resources: Array.from(stageInput.resources || [], ([registerIndex, resource]) => emitResource(registerIndex, resource, classes)),
|
|
170
|
+
samplers: Array.from(stageInput.samplers || [], ([registerIndex, sampler]) => emitSampler(registerIndex, sampler, classes)),
|
|
171
|
+
uavs: Array.from(stageInput.uavs || [], ([registerIndex, resource]) => emitResource(registerIndex, resource, classes)),
|
|
172
|
+
bytecode: emitShaderBytecode(stageInput.cjsShaderBytecode, classes),
|
|
173
|
+
signature: {
|
|
174
|
+
pipelineInputs: (signature.pipelineInputs || []).map(entry => ({
|
|
175
|
+
...entry
|
|
176
|
+
})),
|
|
177
|
+
registers: (signature.registers || []).map(entry => ({
|
|
178
|
+
...entry
|
|
179
|
+
})),
|
|
180
|
+
threadGroupSize: signature.threadGroupSize ? {
|
|
181
|
+
...signature.threadGroupSize
|
|
182
|
+
} : null
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Emit one HlslPass node.
|
|
189
|
+
*
|
|
190
|
+
* @param {object} pass Decoded technique pass.
|
|
191
|
+
* @param {object} classes Opt-in node class map.
|
|
192
|
+
* @returns {object} Emitted pass record.
|
|
193
|
+
*/
|
|
194
|
+
function emitPass(pass, classes) {
|
|
195
|
+
return build(classes, "Pass", {
|
|
196
|
+
shaderTypeMask: pass.shaderTypeMask,
|
|
197
|
+
stageInputs: pass.stageInputs.map((stageInput, stageType) => emitStageInput(stageInput, stageType, classes)),
|
|
198
|
+
renderStates: pass.cjsRenderStateSetup ? pass.cjsRenderStateSetup.toJSON() : []
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Emit one HlslEffectTechnique node.
|
|
204
|
+
*
|
|
205
|
+
* @param {object} technique Decoded technique.
|
|
206
|
+
* @param {object} classes Opt-in node class map.
|
|
207
|
+
* @returns {object} Emitted technique record.
|
|
208
|
+
*/
|
|
209
|
+
function emitTechnique(technique, classes) {
|
|
210
|
+
return build(classes, "Technique", {
|
|
211
|
+
name: technique.name,
|
|
212
|
+
shaderTypeMask: technique.shaderTypeMask,
|
|
213
|
+
passes: technique.passes.map(pass => emitPass(pass, classes)),
|
|
214
|
+
// Shader-library (v14+ ray tracing) metadata has no dedicated class
|
|
215
|
+
// key yet; emitted as plain, JSON-compatible data.
|
|
216
|
+
libraries: technique.libraries.map(library => library?.toJSON?.() ?? library)
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Serializes a map of parameter names to annotation arrays as plain data.
|
|
222
|
+
*
|
|
223
|
+
* @param {Map<string, object[]>} annotations Annotation map.
|
|
224
|
+
* @returns {object[]} JSON-safe annotation groups.
|
|
225
|
+
*/
|
|
226
|
+
function emitAnnotations(annotations) {
|
|
227
|
+
return Array.from(annotations.entries(), ([name, entries]) => ({
|
|
228
|
+
name,
|
|
229
|
+
annotations: entries.map(entry => entry?.toJSON?.() ?? entry)
|
|
230
|
+
}));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Emit one HlslEffectDescription node: one resolved permutation's decoded
|
|
235
|
+
* techniques, passes, and stage metadata.
|
|
236
|
+
*
|
|
237
|
+
* @param {object} description Decoded effect description (`HlslShader.GetEffectDescription()`).
|
|
238
|
+
* @param {object} classes Opt-in node class map.
|
|
239
|
+
* @returns {object} Emitted effect-description record.
|
|
240
|
+
*/
|
|
241
|
+
function emitEffectDescription(description, classes) {
|
|
242
|
+
return build(classes, "EffectDescription", {
|
|
243
|
+
version: description.version,
|
|
244
|
+
effectName: description.effectName,
|
|
245
|
+
techniques: description.techniques.map(technique => emitTechnique(technique, classes)),
|
|
246
|
+
annotations: emitAnnotations(description.annotations),
|
|
247
|
+
readError: description.readError ? {
|
|
248
|
+
name: description.readError.name,
|
|
249
|
+
message: description.readError.message
|
|
250
|
+
} : null
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Convert a loaded HlslEffectRes (and, when resolvable, its default- or
|
|
256
|
+
* selected-permutation HlslShader) into the documented plain JSON shape.
|
|
257
|
+
*
|
|
258
|
+
* @param {object} effect Loaded HlslEffectRes instance.
|
|
259
|
+
* @param {object|null} shader Resolved HlslShader for one permutation, or null.
|
|
260
|
+
* @param {object} [options] Emission options.
|
|
261
|
+
* @param {object} [options.classes] Opt-in node class map. See {@link CLASS_KEYS}.
|
|
262
|
+
* @returns {object} Plain JSON-compatible effect graph, or a populated
|
|
263
|
+
* `classes.Root` instance when provided.
|
|
264
|
+
*/
|
|
265
|
+
function emitEffectJson(effect, shader, options = {}) {
|
|
266
|
+
const {
|
|
267
|
+
classes = {}
|
|
268
|
+
} = options;
|
|
269
|
+
return build(classes, "Root", {
|
|
270
|
+
version: effect.m_version,
|
|
271
|
+
compilerVersion: effect.m_compilerVersion,
|
|
272
|
+
sourcePath: effect.sourcePath,
|
|
273
|
+
bodyCount: effect.m_offsetCount,
|
|
274
|
+
permutations: effect.m_permutations.map(permutation => emitPermutation(permutation, classes)),
|
|
275
|
+
effect: shader ? emitEffectDescription(shader.GetEffectDescription(), classes) : null,
|
|
276
|
+
loadError: effect.loadError ? {
|
|
277
|
+
name: effect.loadError.name,
|
|
278
|
+
message: effect.loadError.message
|
|
279
|
+
} : null
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export { CLASS_KEYS, emitEffectJson };
|
|
284
|
+
//# sourceMappingURL=json.js.map
|