@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,91 +1,91 @@
|
|
|
1
|
-
import { DxbcReadError } from './errors.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Program type names indexed by the SM4/SM5 version-token program-type field.
|
|
5
|
-
*/
|
|
6
|
-
const DxbcProgramTypeNames = Object.freeze(["pixel", "vertex", "geometry", "hull", "domain", "compute"]);
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* DXBC shader program chunk reader for `SHEX`/`SHDR` token streams.
|
|
10
|
-
*
|
|
11
|
-
* Decodes the version header and exposes the raw instruction tokens for the
|
|
12
|
-
* translator stages that follow. Token interpretation stays out of this class
|
|
13
|
-
* so container inspection never depends on opcode coverage.
|
|
14
|
-
*/
|
|
15
|
-
class DxbcShaderProgram {
|
|
16
|
-
/**
|
|
17
|
-
* Creates an empty shader program; call a read entry point to populate its version, stage, and instructions.
|
|
18
|
-
*/
|
|
19
|
-
constructor() {
|
|
20
|
-
this.fourCC = "";
|
|
21
|
-
this.majorVersion = 0;
|
|
22
|
-
this.minorVersion = 0;
|
|
23
|
-
this.programType = 0;
|
|
24
|
-
this.programTypeName = "unknown";
|
|
25
|
-
this.lengthDwords = 0;
|
|
26
|
-
this.tokens = new Uint32Array(0);
|
|
27
|
-
this.source = "memory";
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Reads the program version header and copies the aligned token stream.
|
|
32
|
-
*
|
|
33
|
-
* @param {{fourCC:string,bytes:Uint8Array}} chunk Chunk record from `DxbcContainer`.
|
|
34
|
-
* @param {object} [options] Read options.
|
|
35
|
-
* @param {string} [options.source] Source name used in error details.
|
|
36
|
-
* @returns {DxbcShaderProgram} This program.
|
|
37
|
-
*/
|
|
38
|
-
Read(chunk, options = {}) {
|
|
39
|
-
this.fourCC = chunk.fourCC;
|
|
40
|
-
this.source = options.source || "memory";
|
|
41
|
-
const bytes = chunk.bytes;
|
|
42
|
-
if (bytes.length < 8) {
|
|
43
|
-
throw new DxbcReadError("DXBC shader chunk is smaller than the program header", {
|
|
44
|
-
source: this.source,
|
|
45
|
-
fourCC: this.fourCC,
|
|
46
|
-
chunkSize: bytes.length
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
50
|
-
const versionToken = view.getUint32(0, true);
|
|
51
|
-
this.minorVersion = versionToken & 0xf;
|
|
52
|
-
this.majorVersion = versionToken >>> 4 & 0xf;
|
|
53
|
-
this.programType = versionToken >>> 16 & 0xffff;
|
|
54
|
-
this.programTypeName = DxbcProgramTypeNames[this.programType] || "unknown";
|
|
55
|
-
this.lengthDwords = view.getUint32(4, true);
|
|
56
|
-
if (this.lengthDwords < 2 || this.lengthDwords * 4 > bytes.length) {
|
|
57
|
-
throw new DxbcReadError("DXBC program length disagrees with the chunk size", {
|
|
58
|
-
source: this.source,
|
|
59
|
-
fourCC: this.fourCC,
|
|
60
|
-
lengthDwords: this.lengthDwords,
|
|
61
|
-
chunkSize: bytes.length
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Copy through DataView so unaligned subarrays and big-endian hosts both decode correctly.
|
|
66
|
-
this.tokens = new Uint32Array(this.lengthDwords);
|
|
67
|
-
for (let index = 0; index < this.lengthDwords; index += 1) {
|
|
68
|
-
this.tokens[index] = view.getUint32(index * 4, true);
|
|
69
|
-
}
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Returns serializable program metadata while omitting the token stream.
|
|
75
|
-
*
|
|
76
|
-
* @returns {object} JSON-safe program summary.
|
|
77
|
-
*/
|
|
78
|
-
toJSON() {
|
|
79
|
-
return {
|
|
80
|
-
fourCC: this.fourCC,
|
|
81
|
-
majorVersion: this.majorVersion,
|
|
82
|
-
minorVersion: this.minorVersion,
|
|
83
|
-
programType: this.programType,
|
|
84
|
-
programTypeName: this.programTypeName,
|
|
85
|
-
lengthDwords: this.lengthDwords
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export { DxbcProgramTypeNames, DxbcShaderProgram };
|
|
91
|
-
//# sourceMappingURL=program.js.map
|
|
1
|
+
import { DxbcReadError } from './errors.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Program type names indexed by the SM4/SM5 version-token program-type field.
|
|
5
|
+
*/
|
|
6
|
+
const DxbcProgramTypeNames = Object.freeze(["pixel", "vertex", "geometry", "hull", "domain", "compute"]);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* DXBC shader program chunk reader for `SHEX`/`SHDR` token streams.
|
|
10
|
+
*
|
|
11
|
+
* Decodes the version header and exposes the raw instruction tokens for the
|
|
12
|
+
* translator stages that follow. Token interpretation stays out of this class
|
|
13
|
+
* so container inspection never depends on opcode coverage.
|
|
14
|
+
*/
|
|
15
|
+
class DxbcShaderProgram {
|
|
16
|
+
/**
|
|
17
|
+
* Creates an empty shader program; call a read entry point to populate its version, stage, and instructions.
|
|
18
|
+
*/
|
|
19
|
+
constructor() {
|
|
20
|
+
this.fourCC = "";
|
|
21
|
+
this.majorVersion = 0;
|
|
22
|
+
this.minorVersion = 0;
|
|
23
|
+
this.programType = 0;
|
|
24
|
+
this.programTypeName = "unknown";
|
|
25
|
+
this.lengthDwords = 0;
|
|
26
|
+
this.tokens = new Uint32Array(0);
|
|
27
|
+
this.source = "memory";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Reads the program version header and copies the aligned token stream.
|
|
32
|
+
*
|
|
33
|
+
* @param {{fourCC:string,bytes:Uint8Array}} chunk Chunk record from `DxbcContainer`.
|
|
34
|
+
* @param {object} [options] Read options.
|
|
35
|
+
* @param {string} [options.source] Source name used in error details.
|
|
36
|
+
* @returns {DxbcShaderProgram} This program.
|
|
37
|
+
*/
|
|
38
|
+
Read(chunk, options = {}) {
|
|
39
|
+
this.fourCC = chunk.fourCC;
|
|
40
|
+
this.source = options.source || "memory";
|
|
41
|
+
const bytes = chunk.bytes;
|
|
42
|
+
if (bytes.length < 8) {
|
|
43
|
+
throw new DxbcReadError("DXBC shader chunk is smaller than the program header", {
|
|
44
|
+
source: this.source,
|
|
45
|
+
fourCC: this.fourCC,
|
|
46
|
+
chunkSize: bytes.length
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
50
|
+
const versionToken = view.getUint32(0, true);
|
|
51
|
+
this.minorVersion = versionToken & 0xf;
|
|
52
|
+
this.majorVersion = versionToken >>> 4 & 0xf;
|
|
53
|
+
this.programType = versionToken >>> 16 & 0xffff;
|
|
54
|
+
this.programTypeName = DxbcProgramTypeNames[this.programType] || "unknown";
|
|
55
|
+
this.lengthDwords = view.getUint32(4, true);
|
|
56
|
+
if (this.lengthDwords < 2 || this.lengthDwords * 4 > bytes.length) {
|
|
57
|
+
throw new DxbcReadError("DXBC program length disagrees with the chunk size", {
|
|
58
|
+
source: this.source,
|
|
59
|
+
fourCC: this.fourCC,
|
|
60
|
+
lengthDwords: this.lengthDwords,
|
|
61
|
+
chunkSize: bytes.length
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Copy through DataView so unaligned subarrays and big-endian hosts both decode correctly.
|
|
66
|
+
this.tokens = new Uint32Array(this.lengthDwords);
|
|
67
|
+
for (let index = 0; index < this.lengthDwords; index += 1) {
|
|
68
|
+
this.tokens[index] = view.getUint32(index * 4, true);
|
|
69
|
+
}
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Returns serializable program metadata while omitting the token stream.
|
|
75
|
+
*
|
|
76
|
+
* @returns {object} JSON-safe program summary.
|
|
77
|
+
*/
|
|
78
|
+
toJSON() {
|
|
79
|
+
return {
|
|
80
|
+
fourCC: this.fourCC,
|
|
81
|
+
majorVersion: this.majorVersion,
|
|
82
|
+
minorVersion: this.minorVersion,
|
|
83
|
+
programType: this.programType,
|
|
84
|
+
programTypeName: this.programTypeName,
|
|
85
|
+
lengthDwords: this.lengthDwords
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { DxbcProgramTypeNames, DxbcShaderProgram };
|
|
91
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
import { DxbcReader } from './DxbcReader.js';
|
|
2
|
-
import { DxbcReadError } from './errors.js';
|
|
3
|
-
|
|
4
|
-
const SIGNATURE_TABLE_HEADER_SIZE = 8;
|
|
5
|
-
const semanticNameDecoder = new TextDecoder("latin1");
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Per-fourCC signature element layouts.
|
|
9
|
-
*
|
|
10
|
-
* `ISGN`/`OSGN`/`PCSG` use the 24-byte Shader Model 4 layout. `OSG5` prefixes
|
|
11
|
-
* a stream index. `ISG1`/`OSG1`/`PSG1` prefix a stream index and append a
|
|
12
|
-
* minimum-precision field.
|
|
13
|
-
*/
|
|
14
|
-
const SIGNATURE_ELEMENT_LAYOUTS = Object.freeze({
|
|
15
|
-
ISGN: {
|
|
16
|
-
stride: 24,
|
|
17
|
-
hasStream: false,
|
|
18
|
-
hasMinPrecision: false
|
|
19
|
-
},
|
|
20
|
-
OSGN: {
|
|
21
|
-
stride: 24,
|
|
22
|
-
hasStream: false,
|
|
23
|
-
hasMinPrecision: false
|
|
24
|
-
},
|
|
25
|
-
PCSG: {
|
|
26
|
-
stride: 24,
|
|
27
|
-
hasStream: false,
|
|
28
|
-
hasMinPrecision: false
|
|
29
|
-
},
|
|
30
|
-
OSG5: {
|
|
31
|
-
stride: 28,
|
|
32
|
-
hasStream: true,
|
|
33
|
-
hasMinPrecision: false
|
|
34
|
-
},
|
|
35
|
-
ISG1: {
|
|
36
|
-
stride: 32,
|
|
37
|
-
hasStream: true,
|
|
38
|
-
hasMinPrecision: true
|
|
39
|
-
},
|
|
40
|
-
OSG1: {
|
|
41
|
-
stride: 32,
|
|
42
|
-
hasStream: true,
|
|
43
|
-
hasMinPrecision: true
|
|
44
|
-
},
|
|
45
|
-
PSG1: {
|
|
46
|
-
stride: 32,
|
|
47
|
-
hasStream: true,
|
|
48
|
-
hasMinPrecision: true
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Register component type names indexed by DXBC signature component-type ids.
|
|
54
|
-
*/
|
|
55
|
-
const DxbcComponentTypeNames = Object.freeze(["unknown", "uint32", "int32", "float32"]);
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* DXBC input/output signature chunk reader for `ISGN`-family chunks.
|
|
59
|
-
*/
|
|
60
|
-
class DxbcSignatureChunk {
|
|
61
|
-
/**
|
|
62
|
-
* Creates an empty signature chunk; call a read entry point to populate its parameter records.
|
|
63
|
-
*/
|
|
64
|
-
constructor() {
|
|
65
|
-
this.fourCC = "";
|
|
66
|
-
this.elements = [];
|
|
67
|
-
this.source = "memory";
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Reads a signature chunk payload into semantic/register element records.
|
|
72
|
-
*
|
|
73
|
-
* @param {{fourCC:string,bytes:Uint8Array}} chunk Chunk record from `DxbcContainer`.
|
|
74
|
-
* @param {object} [options] Read options.
|
|
75
|
-
* @param {string} [options.source] Source name used in error details.
|
|
76
|
-
* @returns {DxbcSignatureChunk} This signature.
|
|
77
|
-
*/
|
|
78
|
-
Read(chunk, options = {}) {
|
|
79
|
-
this.fourCC = chunk.fourCC;
|
|
80
|
-
this.source = options.source || "memory";
|
|
81
|
-
const layout = SIGNATURE_ELEMENT_LAYOUTS[this.fourCC];
|
|
82
|
-
if (!layout) {
|
|
83
|
-
throw new DxbcReadError("Unsupported DXBC signature chunk", {
|
|
84
|
-
source: this.source,
|
|
85
|
-
fourCC: this.fourCC
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
const bytes = chunk.bytes;
|
|
89
|
-
const reader = new DxbcReader(bytes, {
|
|
90
|
-
source: this.source
|
|
91
|
-
});
|
|
92
|
-
const elementCount = reader.readUint32();
|
|
93
|
-
const elementOffset = reader.readUint32() || SIGNATURE_TABLE_HEADER_SIZE;
|
|
94
|
-
if (elementOffset + elementCount * layout.stride > bytes.length) {
|
|
95
|
-
throw new DxbcReadError("DXBC signature elements lie outside the chunk", {
|
|
96
|
-
source: this.source,
|
|
97
|
-
fourCC: this.fourCC,
|
|
98
|
-
elementCount,
|
|
99
|
-
elementOffset,
|
|
100
|
-
chunkSize: bytes.length
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
this.elements = [];
|
|
104
|
-
reader.offset = elementOffset;
|
|
105
|
-
for (let index = 0; index < elementCount; index += 1) {
|
|
106
|
-
const stream = layout.hasStream ? reader.readUint32() : 0;
|
|
107
|
-
const semanticNameOffset = reader.readUint32();
|
|
108
|
-
const semanticIndex = reader.readUint32();
|
|
109
|
-
const systemValueType = reader.readUint32();
|
|
110
|
-
const componentType = reader.readUint32();
|
|
111
|
-
const registerIndex = reader.readUint32();
|
|
112
|
-
const mask = reader.readUint8();
|
|
113
|
-
const readWriteMask = reader.readUint8();
|
|
114
|
-
reader.Skip(2);
|
|
115
|
-
const minPrecision = layout.hasMinPrecision ? reader.readUint32() : 0;
|
|
116
|
-
this.elements.push({
|
|
117
|
-
semanticName: this._readSemanticName(bytes, semanticNameOffset, index),
|
|
118
|
-
semanticIndex,
|
|
119
|
-
systemValueType,
|
|
120
|
-
componentType,
|
|
121
|
-
componentTypeName: DxbcComponentTypeNames[componentType] || "unknown",
|
|
122
|
-
registerIndex,
|
|
123
|
-
mask,
|
|
124
|
-
readWriteMask,
|
|
125
|
-
stream,
|
|
126
|
-
minPrecision
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
return this;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Finds a signature element by semantic name and index.
|
|
134
|
-
*
|
|
135
|
-
* @param {string} semanticName Case-insensitive semantic name such as `"TEXCOORD"`.
|
|
136
|
-
* @param {number} [semanticIndex] Semantic index, defaulting to 0.
|
|
137
|
-
* @returns {object|null} Element record or null.
|
|
138
|
-
*/
|
|
139
|
-
findElement(semanticName, semanticIndex = 0) {
|
|
140
|
-
const wanted = String(semanticName).toUpperCase();
|
|
141
|
-
return this.elements.find(element => element.semanticName.toUpperCase() === wanted && element.semanticIndex === semanticIndex) || null;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Resolves a null-terminated semantic name inside the chunk payload.
|
|
146
|
-
*
|
|
147
|
-
* @param {Uint8Array} bytes Chunk payload.
|
|
148
|
-
* @param {number} offset Name offset relative to the chunk payload start.
|
|
149
|
-
* @param {number} index Element index used in error details.
|
|
150
|
-
* @returns {string} Decoded semantic name.
|
|
151
|
-
* @private
|
|
152
|
-
*/
|
|
153
|
-
_readSemanticName(bytes, offset, index) {
|
|
154
|
-
if (offset >= bytes.length) {
|
|
155
|
-
throw new DxbcReadError("DXBC signature semantic name lies outside the chunk", {
|
|
156
|
-
source: this.source,
|
|
157
|
-
fourCC: this.fourCC,
|
|
158
|
-
elementIndex: index,
|
|
159
|
-
offset,
|
|
160
|
-
chunkSize: bytes.length
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
let end = offset;
|
|
164
|
-
while (end < bytes.length && bytes[end] !== 0) {
|
|
165
|
-
end += 1;
|
|
166
|
-
}
|
|
167
|
-
return semanticNameDecoder.decode(bytes.subarray(offset, end));
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
export { DxbcComponentTypeNames, DxbcSignatureChunk };
|
|
172
|
-
//# sourceMappingURL=signature.js.map
|
|
1
|
+
import { DxbcReader } from './DxbcReader.js';
|
|
2
|
+
import { DxbcReadError } from './errors.js';
|
|
3
|
+
|
|
4
|
+
const SIGNATURE_TABLE_HEADER_SIZE = 8;
|
|
5
|
+
const semanticNameDecoder = new TextDecoder("latin1");
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Per-fourCC signature element layouts.
|
|
9
|
+
*
|
|
10
|
+
* `ISGN`/`OSGN`/`PCSG` use the 24-byte Shader Model 4 layout. `OSG5` prefixes
|
|
11
|
+
* a stream index. `ISG1`/`OSG1`/`PSG1` prefix a stream index and append a
|
|
12
|
+
* minimum-precision field.
|
|
13
|
+
*/
|
|
14
|
+
const SIGNATURE_ELEMENT_LAYOUTS = Object.freeze({
|
|
15
|
+
ISGN: {
|
|
16
|
+
stride: 24,
|
|
17
|
+
hasStream: false,
|
|
18
|
+
hasMinPrecision: false
|
|
19
|
+
},
|
|
20
|
+
OSGN: {
|
|
21
|
+
stride: 24,
|
|
22
|
+
hasStream: false,
|
|
23
|
+
hasMinPrecision: false
|
|
24
|
+
},
|
|
25
|
+
PCSG: {
|
|
26
|
+
stride: 24,
|
|
27
|
+
hasStream: false,
|
|
28
|
+
hasMinPrecision: false
|
|
29
|
+
},
|
|
30
|
+
OSG5: {
|
|
31
|
+
stride: 28,
|
|
32
|
+
hasStream: true,
|
|
33
|
+
hasMinPrecision: false
|
|
34
|
+
},
|
|
35
|
+
ISG1: {
|
|
36
|
+
stride: 32,
|
|
37
|
+
hasStream: true,
|
|
38
|
+
hasMinPrecision: true
|
|
39
|
+
},
|
|
40
|
+
OSG1: {
|
|
41
|
+
stride: 32,
|
|
42
|
+
hasStream: true,
|
|
43
|
+
hasMinPrecision: true
|
|
44
|
+
},
|
|
45
|
+
PSG1: {
|
|
46
|
+
stride: 32,
|
|
47
|
+
hasStream: true,
|
|
48
|
+
hasMinPrecision: true
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Register component type names indexed by DXBC signature component-type ids.
|
|
54
|
+
*/
|
|
55
|
+
const DxbcComponentTypeNames = Object.freeze(["unknown", "uint32", "int32", "float32"]);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* DXBC input/output signature chunk reader for `ISGN`-family chunks.
|
|
59
|
+
*/
|
|
60
|
+
class DxbcSignatureChunk {
|
|
61
|
+
/**
|
|
62
|
+
* Creates an empty signature chunk; call a read entry point to populate its parameter records.
|
|
63
|
+
*/
|
|
64
|
+
constructor() {
|
|
65
|
+
this.fourCC = "";
|
|
66
|
+
this.elements = [];
|
|
67
|
+
this.source = "memory";
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Reads a signature chunk payload into semantic/register element records.
|
|
72
|
+
*
|
|
73
|
+
* @param {{fourCC:string,bytes:Uint8Array}} chunk Chunk record from `DxbcContainer`.
|
|
74
|
+
* @param {object} [options] Read options.
|
|
75
|
+
* @param {string} [options.source] Source name used in error details.
|
|
76
|
+
* @returns {DxbcSignatureChunk} This signature.
|
|
77
|
+
*/
|
|
78
|
+
Read(chunk, options = {}) {
|
|
79
|
+
this.fourCC = chunk.fourCC;
|
|
80
|
+
this.source = options.source || "memory";
|
|
81
|
+
const layout = SIGNATURE_ELEMENT_LAYOUTS[this.fourCC];
|
|
82
|
+
if (!layout) {
|
|
83
|
+
throw new DxbcReadError("Unsupported DXBC signature chunk", {
|
|
84
|
+
source: this.source,
|
|
85
|
+
fourCC: this.fourCC
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
const bytes = chunk.bytes;
|
|
89
|
+
const reader = new DxbcReader(bytes, {
|
|
90
|
+
source: this.source
|
|
91
|
+
});
|
|
92
|
+
const elementCount = reader.readUint32();
|
|
93
|
+
const elementOffset = reader.readUint32() || SIGNATURE_TABLE_HEADER_SIZE;
|
|
94
|
+
if (elementOffset + elementCount * layout.stride > bytes.length) {
|
|
95
|
+
throw new DxbcReadError("DXBC signature elements lie outside the chunk", {
|
|
96
|
+
source: this.source,
|
|
97
|
+
fourCC: this.fourCC,
|
|
98
|
+
elementCount,
|
|
99
|
+
elementOffset,
|
|
100
|
+
chunkSize: bytes.length
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
this.elements = [];
|
|
104
|
+
reader.offset = elementOffset;
|
|
105
|
+
for (let index = 0; index < elementCount; index += 1) {
|
|
106
|
+
const stream = layout.hasStream ? reader.readUint32() : 0;
|
|
107
|
+
const semanticNameOffset = reader.readUint32();
|
|
108
|
+
const semanticIndex = reader.readUint32();
|
|
109
|
+
const systemValueType = reader.readUint32();
|
|
110
|
+
const componentType = reader.readUint32();
|
|
111
|
+
const registerIndex = reader.readUint32();
|
|
112
|
+
const mask = reader.readUint8();
|
|
113
|
+
const readWriteMask = reader.readUint8();
|
|
114
|
+
reader.Skip(2);
|
|
115
|
+
const minPrecision = layout.hasMinPrecision ? reader.readUint32() : 0;
|
|
116
|
+
this.elements.push({
|
|
117
|
+
semanticName: this._readSemanticName(bytes, semanticNameOffset, index),
|
|
118
|
+
semanticIndex,
|
|
119
|
+
systemValueType,
|
|
120
|
+
componentType,
|
|
121
|
+
componentTypeName: DxbcComponentTypeNames[componentType] || "unknown",
|
|
122
|
+
registerIndex,
|
|
123
|
+
mask,
|
|
124
|
+
readWriteMask,
|
|
125
|
+
stream,
|
|
126
|
+
minPrecision
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return this;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Finds a signature element by semantic name and index.
|
|
134
|
+
*
|
|
135
|
+
* @param {string} semanticName Case-insensitive semantic name such as `"TEXCOORD"`.
|
|
136
|
+
* @param {number} [semanticIndex] Semantic index, defaulting to 0.
|
|
137
|
+
* @returns {object|null} Element record or null.
|
|
138
|
+
*/
|
|
139
|
+
findElement(semanticName, semanticIndex = 0) {
|
|
140
|
+
const wanted = String(semanticName).toUpperCase();
|
|
141
|
+
return this.elements.find(element => element.semanticName.toUpperCase() === wanted && element.semanticIndex === semanticIndex) || null;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Resolves a null-terminated semantic name inside the chunk payload.
|
|
146
|
+
*
|
|
147
|
+
* @param {Uint8Array} bytes Chunk payload.
|
|
148
|
+
* @param {number} offset Name offset relative to the chunk payload start.
|
|
149
|
+
* @param {number} index Element index used in error details.
|
|
150
|
+
* @returns {string} Decoded semantic name.
|
|
151
|
+
* @private
|
|
152
|
+
*/
|
|
153
|
+
_readSemanticName(bytes, offset, index) {
|
|
154
|
+
if (offset >= bytes.length) {
|
|
155
|
+
throw new DxbcReadError("DXBC signature semantic name lies outside the chunk", {
|
|
156
|
+
source: this.source,
|
|
157
|
+
fourCC: this.fourCC,
|
|
158
|
+
elementIndex: index,
|
|
159
|
+
offset,
|
|
160
|
+
chunkSize: bytes.length
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
let end = offset;
|
|
164
|
+
while (end < bytes.length && bytes[end] !== 0) {
|
|
165
|
+
end += 1;
|
|
166
|
+
}
|
|
167
|
+
return semanticNameDecoder.decode(bytes.subarray(offset, end));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export { DxbcComponentTypeNames, DxbcSignatureChunk };
|
|
172
|
+
//# sourceMappingURL=signature.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { CjsDxbcFormat, CjsDxbcFormat as default } from './CjsDxbcFormat.js';
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { CjsDxbcFormat, CjsDxbcFormat as default } from './CjsDxbcFormat.js';
|
|
2
|
+
//# sourceMappingURL=index.js.map
|