@carbonenginejs/runtime-resource 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/NOTICE +32 -32
- package/README.md +129 -129
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3858
- package/dist/CjsResManFetchProvider.js +94 -94
- package/dist/CjsResManWorkQueue.js +301 -301
- package/dist/_virtual/_rollupPluginBabelHelpers.js +150 -150
- package/dist/format/CjsBlueReader.js +358 -358
- package/dist/format/CjsByteReader.js +310 -310
- package/dist/format/CjsByteWriter.js +242 -242
- package/dist/format/CjsFormat.js +223 -223
- package/dist/format/CjsFormatError.js +41 -41
- package/dist/format/CjsReader.js +22 -22
- package/dist/format/CjsResourceProbe.js +279 -279
- package/dist/format/CjsStringTable.js +268 -268
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js +265 -265
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -182
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -321
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -1147
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -197
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -146
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- package/dist/format/effect/sha256.js +114 -114
- package/dist/format/index.js +11 -11
- package/dist/format/payloadContract.js +193 -193
- package/dist/formats/black/CjsBlackFormat.js +310 -310
- package/dist/formats/black/core/CjsBlackBinaryReader.js +260 -260
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +448 -448
- package/dist/formats/black/core/CjsBlackReader.js +764 -764
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +540 -540
- package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -4
- package/dist/formats/black/core/blackConstants.js +7 -7
- package/dist/formats/black/core/blackDefinitions.js +10 -10
- package/dist/formats/black/core/blackEnums.js +6 -6
- package/dist/formats/black/core/blackSchema.js +3 -3
- package/dist/formats/black/core/blackVersion.js +22 -22
- package/dist/formats/black/core/helpers.js +199 -199
- package/dist/formats/black/core/schema.js +4 -4
- package/dist/formats/black/index.js +2 -2
- package/dist/formats/bnk/CjsBnkFormat.js +175 -175
- package/dist/formats/bnk/core/busNodes.js +252 -252
- package/dist/formats/bnk/core/effectNodes.js +147 -147
- package/dist/formats/bnk/core/eventAction.js +416 -416
- package/dist/formats/bnk/core/globalSettings.js +215 -215
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -512
- package/dist/formats/bnk/core/musicNodes.js +540 -540
- package/dist/formats/bnk/core/nodeBase.js +553 -553
- package/dist/formats/bnk/core/sfxNodes.js +632 -632
- package/dist/formats/bnk/core/soundbanksInfo.js +209 -209
- package/dist/formats/bnk/index.js +2 -2
- package/dist/formats/cmf/CjsCmfFormat.js +497 -497
- package/dist/formats/cmf/core/binary.js +194 -194
- package/dist/formats/cmf/core/buffers.js +237 -237
- package/dist/formats/cmf/core/constants.js +47 -47
- package/dist/formats/cmf/core/gr2Anim.js +453 -453
- package/dist/formats/cmf/core/helpers.js +318 -318
- package/dist/formats/cmf/core/pack.js +276 -276
- package/dist/formats/cmf/core/schema.js +374 -374
- package/dist/formats/cmf/core/shared.js +277 -277
- package/dist/formats/cmf/core/writer.js +571 -571
- package/dist/formats/cmf/index.js +2 -2
- package/dist/formats/dds/CjsDdsFormat.js +200 -200
- package/dist/formats/dds/core/bc6h.js +298 -298
- package/dist/formats/dds/core/bc7.js +272 -272
- package/dist/formats/dds/core/helpers.js +901 -862
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +187 -142
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/formats/dxbc/core/DxbcReader.js +266 -266
- package/dist/formats/dxbc/core/container.js +169 -169
- package/dist/formats/dxbc/core/decoder.js +789 -789
- package/dist/formats/dxbc/core/disassemble.js +240 -0
- package/dist/formats/dxbc/core/disassemble.js.map +1 -0
- package/dist/formats/dxbc/core/errors.js +19 -19
- package/dist/formats/dxbc/core/helpers.js +220 -220
- package/dist/formats/dxbc/core/opcodes.js +45 -45
- package/dist/formats/dxbc/core/program.js +91 -91
- package/dist/formats/dxbc/core/signature.js +172 -172
- package/dist/formats/dxbc/index.js +2 -2
- package/dist/formats/fbx/CjsFbxFormat.js +266 -266
- package/dist/formats/fbx/core/helpers.js +3932 -3932
- package/dist/formats/fbx/index.js +2 -2
- package/dist/formats/flac/CjsFlacFormat.js +142 -142
- package/dist/formats/flac/core/helpers.js +315 -315
- package/dist/formats/flac/index.js +2 -2
- package/dist/formats/gif/CjsGifFormat.js +141 -141
- package/dist/formats/gif/core/helpers.js +380 -380
- package/dist/formats/gif/index.js +2 -2
- package/dist/formats/gltf/CjsGltfFormat.js +252 -290
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +287 -307
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/json.js +79 -79
- package/dist/formats/gltf/core/parser.js +679 -679
- package/dist/formats/gltf/core/targets.js +173 -173
- package/dist/formats/gltf/index.js +2 -2
- package/dist/formats/gr2/CjsGr2Format.js +289 -289
- package/dist/formats/gr2/core/bitknit2.js +282 -282
- package/dist/formats/gr2/core/curves.js +1047 -1047
- package/dist/formats/gr2/core/gsf.js +72 -72
- package/dist/formats/gr2/core/helpers.js +352 -352
- package/dist/formats/gr2/core/json.js +622 -622
- package/dist/formats/gr2/core/oodle1.js +388 -388
- package/dist/formats/gr2/core/tangents.js +48 -48
- package/dist/formats/gr2/core/targets.js +361 -361
- package/dist/formats/gr2/index.js +2 -2
- package/dist/formats/hlsl/CjsHlslFormat.js +233 -254
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -15
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -19
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -130
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -37
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -94
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -44
- package/dist/formats/hlsl/core/analysis.js +51 -51
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +850 -850
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -128
- package/dist/formats/hlsl/core/helpers.js +270 -270
- package/dist/formats/hlsl/core/json.js +284 -284
- package/dist/formats/hlsl/core/localLightFamily.js +133 -133
- package/dist/formats/hlsl/core/metadata.js +327 -327
- package/dist/formats/hlsl/core/render-states.js +280 -280
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -43
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +320 -320
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +423 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -62
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -52
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -38
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -50
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -86
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -31
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -42
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -55
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -29
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -220
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -30
- package/dist/formats/hlsl/index.js +3 -3
- package/dist/formats/index.js +33 -33
- package/dist/formats/jpeg/CjsJpegFormat.js +212 -212
- package/dist/formats/jpeg/core/helpers.js +402 -402
- package/dist/formats/jpeg/core/jpeg.js +480 -480
- package/dist/formats/jpeg/index.js +2 -2
- package/dist/formats/mp3/CjsMp3Format.js +197 -197
- package/dist/formats/mp3/core/helpers.js +375 -375
- package/dist/formats/mp3/index.js +2 -2
- package/dist/formats/mp4/CjsMp4Format.js +197 -197
- package/dist/formats/mp4/core/helpers.js +484 -484
- package/dist/formats/mp4/index.js +2 -2
- package/dist/formats/obj/CjsObjFormat.js +232 -253
- package/dist/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/formats/obj/core/helpers.js +553 -573
- package/dist/formats/obj/core/helpers.js.map +1 -1
- package/dist/formats/obj/core/json.js +64 -64
- package/dist/formats/obj/core/parser.js +321 -321
- package/dist/formats/obj/index.js +2 -2
- package/dist/formats/ogg/CjsOggFormat.js +143 -143
- package/dist/formats/ogg/core/helpers.js +410 -410
- package/dist/formats/ogg/core/imdct.js +178 -178
- package/dist/formats/ogg/core/vorbis.js +1017 -1017
- package/dist/formats/ogg/index.js +2 -2
- package/dist/formats/pickle/CjsPickleFormat.js +214 -214
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -551
- package/dist/formats/pickle/index.js +2 -2
- package/dist/formats/png/CjsPngFormat.js +201 -201
- package/dist/formats/png/core/helpers.js +635 -635
- package/dist/formats/png/index.js +2 -2
- package/dist/formats/red/CjsRedFormat.js +263 -263
- package/dist/formats/red/core/CjsRedReader.js +246 -246
- package/dist/formats/red/core/blackDefinitions.js +3 -3
- package/dist/formats/red/core/helpers.js +158 -158
- package/dist/formats/red/core/redGraph.js +71 -71
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +320 -365
- package/dist/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/formats/stl/core/helpers.js +241 -261
- package/dist/formats/stl/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/json.js +51 -51
- package/dist/formats/stl/core/stl.js +642 -642
- package/dist/formats/stl/core/targets.js +173 -173
- package/dist/formats/stl/index.js +2 -2
- package/dist/formats/tga/CjsTgaFormat.js +197 -197
- package/dist/formats/tga/core/helpers.js +493 -493
- package/dist/formats/tga/index.js +2 -2
- package/dist/formats/wav/CjsWavFormat.js +198 -198
- package/dist/formats/wav/core/helpers.js +365 -365
- package/dist/formats/wav/index.js +2 -2
- package/dist/formats/webgl/CjsWebglFormat.js +199 -199
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -70
- package/dist/formats/webgl/core/effectPackage.js +900 -900
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2820
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -486
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -98
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -552
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -243
- package/dist/formats/webgl/core/glslEffectCompleteness.js +85 -85
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -1
- package/dist/formats/webgl/core/helpers.js +167 -167
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -122
- package/dist/formats/webgl/core/readGlslEffectContainer.js +202 -256
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -89
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js +354 -354
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +306 -306
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/helpers.js +443 -443
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +212 -212
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -220
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -137
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +449 -449
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -494
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -177
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -61
- package/dist/formats/webgpu/core/packageEffect.js +381 -381
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- package/dist/formats/webgpu/core/packageMetadata.js +17 -17
- package/dist/formats/webgpu/core/schema.js +4 -4
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +263 -263
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +325 -325
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -356
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -77
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -451
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +735 -735
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -457
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -1572
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -659
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -734
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -583
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -621
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -824
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -697
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -559
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -1328
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -110
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -55
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +717 -717
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -78
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -196
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -37
- package/dist/formats/webgpu/index.js +2 -2
- package/dist/formats/webm/CjsWebmFormat.js +197 -197
- package/dist/formats/webm/core/helpers.js +572 -572
- package/dist/formats/webm/index.js +2 -2
- package/dist/formats/webp/CjsWebpFormat.js +140 -140
- package/dist/formats/webp/core/helpers.js +237 -237
- package/dist/formats/webp/index.js +2 -2
- package/dist/formats/wem/CjsWemFormat.js +250 -250
- package/dist/formats/wem/core/bitStream.js +261 -261
- package/dist/formats/wem/core/codebookLibrary.js +164 -164
- package/dist/formats/wem/core/helpers.js +437 -437
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
- package/dist/formats/wem/core/ptadpcm.js +77 -77
- package/dist/formats/wem/core/resolve.js +121 -121
- package/dist/formats/wem/core/wemToOgg.js +485 -485
- package/dist/formats/wem/index.js +2 -2
- package/dist/formats/yaml/CjsYamlFormat.js +134 -134
- package/dist/formats/yaml/core/CjsYamlReader.js +400 -400
- package/dist/formats/yaml/core/helpers.js +196 -196
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -64
- package/dist/resource/CjsLoadingObject.js +19 -19
- package/dist/resource/CjsResource.js +801 -801
- package/dist/resource/ResourceHandlerMode.js +14 -14
- package/dist/resource/Tr2LightProfileRes.js +32 -32
- package/dist/resource/audio/AudioGeometryResData.js +47 -47
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -86
- package/dist/resource/audio/CjsAudioRes.js +213 -213
- package/dist/resource/audio/index.js +4 -4
- package/dist/resource/geometry/MeshDecalData.js +37 -37
- package/dist/resource/geometry/MeshDecalLodData.js +34 -34
- package/dist/resource/geometry/TriGeometryRes.js +570 -467
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +59 -59
- package/dist/resource/geometry/TriGeometryResJointData.js +38 -38
- package/dist/resource/geometry/TriGeometryResLodData.js +88 -88
- package/dist/resource/geometry/TriGeometryResMeshData.js +63 -63
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +34 -34
- package/dist/resource/geometry/TriJointBinding.js +38 -38
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +46 -46
- package/dist/resource/geometry/TriRtGeometryConstants.js +88 -88
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +31 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +60 -60
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +36 -36
- package/dist/resource/geometry/granny/TriGrannyRes.js +35 -35
- package/dist/resource/geometry/granny/enums.js +10 -10
- package/dist/resource/geometry/granny/index.js +6 -6
- package/dist/resource/geometry/index.js +17 -17
- package/dist/resource/index.js +54 -54
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -336
- package/dist/resource/shader/Tr2MaterialArea.js +31 -31
- package/dist/resource/shader/Tr2MaterialMesh.js +27 -27
- package/dist/resource/shader/Tr2MaterialRes.js +31 -31
- package/dist/resource/shader/Tr2Shader.js +283 -283
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -143
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -114
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -168
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -125
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -120
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -372
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -78
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -168
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -159
- package/dist/resource/shader/reflection/shaderStage.js +22 -22
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -135
- package/dist/resource/texture/CjsTextureArrayRes.js +472 -472
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js +179 -179
- package/dist/resource/texture/Tr2ImageRes.js +120 -120
- package/dist/resource/texture/Tr2TextureLodManager.js +82 -82
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +37 -37
- package/dist/resource/texture/Tr2TexturePackChannel.js +37 -37
- package/dist/resource/texture/Tr2TexturePipeline.js +54 -54
- package/dist/resource/texture/Tr2TexturePipelineParams.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +40 -40
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +22 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +31 -31
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +43 -43
- package/dist/resource/texture/TriTextureRes.js +359 -359
- package/dist/resource/texture/index.js +15 -15
- package/dist/resource/texture/texturePipelineBehavior.js +308 -308
- package/dist/worker/CjsResManMainThreadLoader.js +89 -89
- package/dist/worker/CjsResManWorker.js +218 -218
- package/dist/worker/CjsResManWorkerLoader.js +437 -437
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -118
- package/docs/concepts/resource-lifecycle.md +226 -226
- package/docs/concepts/shader-resource-model.md +111 -111
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -138
- package/docs/formats/carbon-effect-container.md +553 -553
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +105 -77
- package/docs/formats/dxbc/reference/classes/README.md +9 -9
- package/docs/formats/dxbc/reference/decoded-output.md +122 -122
- package/docs/formats/gr2.md +160 -160
- package/docs/formats/hlsl/README.md +54 -54
- package/docs/formats/hlsl/architecture.md +66 -65
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -60
- package/docs/formats/hlsl/guides/reading-effects.md +68 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -61
- package/docs/formats/hlsl/reference/api.md +91 -92
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -97
- package/docs/formats/pickle.md +82 -82
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -115
- package/docs/formats/webgl/architecture.md +69 -69
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -326
- package/docs/formats/webgl/decl-io.md +1234 -1234
- package/docs/formats/webgl/memory-structured.md +890 -890
- package/docs/formats/webgl/reference/classes/README.md +9 -9
- package/docs/formats/webgl/texture-sample.md +964 -964
- package/docs/formats/webgpu/README.md +84 -84
- package/docs/formats/webgpu/architecture.md +95 -95
- package/docs/formats/webgpu/formats/carbon-webgpu.md +215 -215
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -189
- package/docs/formats/webgpu/reference/api.md +196 -196
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1546
- package/docs/formats/wwise.md +146 -146
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -216
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -944
- package/docs/reference/classes/resources.md +456 -456
- package/docs/reference/classes/texture.md +26 -26
- package/docs/reference/events.md +117 -117
- package/docs/reference/motherlode-cache.md +275 -275
- package/docs/reference/queues.md +194 -194
- package/docs/reference/reload.md +107 -107
- package/docs/reference/texture-arrays.md +113 -113
- package/docs/reference/texture-pipeline.md +53 -53
- package/docs/reference/workers.md +142 -142
- package/docs/roadmap.md +150 -150
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +21 -21
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/dxbc/LICENSE +21 -21
- package/format-notices/dxbc/NOTICE +20 -20
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/gr2/LICENSE +21 -21
- package/format-notices/gr2/NOTICE +60 -60
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -93
- package/format-notices/hlsl/LICENSE +21 -21
- package/format-notices/hlsl/NOTICE +25 -25
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webgl/LICENSE +21 -21
- package/format-notices/webgl/NOTICE +35 -35
- package/format-notices/webgpu/LICENSE +21 -21
- package/format-notices/webgpu/NOTICE +31 -31
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +63 -63
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
import { WebgpuReadError } from '../errors.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Structural validation for a loaded WebGPU effect container.
|
|
5
|
-
*
|
|
6
|
-
* This replaces `validateEffectPackageEnvelope`, which was 1762 lines. Most of
|
|
7
|
-
* that is **deleted rather than translated**, and the reason matters: those
|
|
8
|
-
* checks were not format invariants. The chunk container shattered one logical
|
|
9
|
-
* tree into flat string-keyed arrays across `INFO`, `META`, `ANLS`, `WGSL`,
|
|
10
|
-
* `PGRF` and `WGSB`, each holding a projection of the same effect, and roughly
|
|
11
|
-
* 600 lines asserted that the projections still agreed with each other. A record
|
|
12
|
-
* layout makes that question unaskable: containment replaces reference, position
|
|
13
|
-
* replaces key, and the count word before an array replaces `Array.isArray`.
|
|
14
|
-
*
|
|
15
|
-
* What is deliberately **not** re-checked here, because phase 1 already enforces
|
|
16
|
-
* it and checking twice means two places to keep correct:
|
|
17
|
-
*
|
|
18
|
-
* - count caps, arena containment, offset-table density and positional indexing,
|
|
19
|
-
* and the version range — `CjsCarbonEffectReader`;
|
|
20
|
-
* - every sized record parsing to exactly its declared end — Rule 1, in the
|
|
21
|
-
* record codec and the block codec;
|
|
22
|
-
* - duplicate stage type within a pass, and stage-type range — the shape adapter
|
|
23
|
-
* fails closed on both, which is where a runtime description is built.
|
|
24
|
-
*
|
|
25
|
-
* What remains is the one thing that is genuinely this layer's: the container
|
|
26
|
-
* admits all six of Carbon's stage types by design, and WebGPU can express three.
|
|
27
|
-
* That restriction belongs to the backend, not to the container — the Carbon
|
|
28
|
-
* region is backend-invariant, and a container that admitted only three would not
|
|
29
|
-
* be Carbon's container.
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
/** Stage types WebGPU can express, by Carbon's `InputStageType` numbering. */
|
|
33
|
-
const WEBGPU_STAGE_TYPES = new Set([0, 1, 2]);
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Validates a loaded container for WebGPU consumption.
|
|
37
|
-
*
|
|
38
|
-
* @param {object} container Loaded `CarbonWebgpuContainer`.
|
|
39
|
-
* @param {object} [options] Validation options.
|
|
40
|
-
* @param {string} [options.source] Source label for diagnostics.
|
|
41
|
-
* @throws {WebgpuReadError} When the container cannot serve WebGPU.
|
|
42
|
-
*/
|
|
43
|
-
function validateEffectContainer(container, options = {}) {
|
|
44
|
-
const source = options.source || container.sourcePath || "memory";
|
|
45
|
-
if (!container?.IsGood()) {
|
|
46
|
-
throw new WebgpuReadError("Carbon WebGPU container is not readable", {
|
|
47
|
-
source,
|
|
48
|
-
cause: container?.readError ?? null
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
if (!container.carbon.records.length) {
|
|
52
|
-
throw new WebgpuReadError("Carbon WebGPU container declares no permutation bodies", {
|
|
53
|
-
source
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// One check per distinct stored body. Aliased rows share a blob, so checking
|
|
58
|
-
// per permutation would re-check identical bytes up to twenty times over on
|
|
59
|
-
// the effects that alias hardest.
|
|
60
|
-
const checked = new Set();
|
|
61
|
-
for (let index = 0; index < container.carbon.records.length; index += 1) {
|
|
62
|
-
const offset = container.carbon.records[index].offset;
|
|
63
|
-
if (checked.has(offset)) continue;
|
|
64
|
-
checked.add(offset);
|
|
65
|
-
const description = container.GetDescription(index);
|
|
66
|
-
for (const technique of description.techniques) {
|
|
67
|
-
for (const [passIndex, pass] of technique.passes.entries()) {
|
|
68
|
-
for (const stage of pass.stages) {
|
|
69
|
-
// A stage carrying no program is reflection-only: the body
|
|
70
|
-
// is known, the translation is not, and the emitter says so
|
|
71
|
-
// with a zero-length payload. Those are legitimate — 107
|
|
72
|
-
// shipped body-passes carry a geometry stage — so the rule
|
|
73
|
-
// is about stages with a program, not about stages.
|
|
74
|
-
if (stage.shaderData.size === 0) continue;
|
|
75
|
-
if (!WEBGPU_STAGE_TYPES.has(stage.type)) {
|
|
76
|
-
throw new WebgpuReadError(`Carbon WebGPU container carries a program for stage type ${stage.type}, ` + "which WebGPU cannot express", {
|
|
77
|
-
source,
|
|
78
|
-
permutationIndex: index,
|
|
79
|
-
pass: `${technique.name.value}.pass${passIndex}`,
|
|
80
|
-
stageType: stage.type
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export { validateEffectContainer };
|
|
90
|
-
//# sourceMappingURL=validateContainer.js.map
|
|
1
|
+
import { WebgpuReadError } from '../errors.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Structural validation for a loaded WebGPU effect container.
|
|
5
|
+
*
|
|
6
|
+
* This replaces `validateEffectPackageEnvelope`, which was 1762 lines. Most of
|
|
7
|
+
* that is **deleted rather than translated**, and the reason matters: those
|
|
8
|
+
* checks were not format invariants. The chunk container shattered one logical
|
|
9
|
+
* tree into flat string-keyed arrays across `INFO`, `META`, `ANLS`, `WGSL`,
|
|
10
|
+
* `PGRF` and `WGSB`, each holding a projection of the same effect, and roughly
|
|
11
|
+
* 600 lines asserted that the projections still agreed with each other. A record
|
|
12
|
+
* layout makes that question unaskable: containment replaces reference, position
|
|
13
|
+
* replaces key, and the count word before an array replaces `Array.isArray`.
|
|
14
|
+
*
|
|
15
|
+
* What is deliberately **not** re-checked here, because phase 1 already enforces
|
|
16
|
+
* it and checking twice means two places to keep correct:
|
|
17
|
+
*
|
|
18
|
+
* - count caps, arena containment, offset-table density and positional indexing,
|
|
19
|
+
* and the version range — `CjsCarbonEffectReader`;
|
|
20
|
+
* - every sized record parsing to exactly its declared end — Rule 1, in the
|
|
21
|
+
* record codec and the block codec;
|
|
22
|
+
* - duplicate stage type within a pass, and stage-type range — the shape adapter
|
|
23
|
+
* fails closed on both, which is where a runtime description is built.
|
|
24
|
+
*
|
|
25
|
+
* What remains is the one thing that is genuinely this layer's: the container
|
|
26
|
+
* admits all six of Carbon's stage types by design, and WebGPU can express three.
|
|
27
|
+
* That restriction belongs to the backend, not to the container — the Carbon
|
|
28
|
+
* region is backend-invariant, and a container that admitted only three would not
|
|
29
|
+
* be Carbon's container.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/** Stage types WebGPU can express, by Carbon's `InputStageType` numbering. */
|
|
33
|
+
const WEBGPU_STAGE_TYPES = new Set([0, 1, 2]);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Validates a loaded container for WebGPU consumption.
|
|
37
|
+
*
|
|
38
|
+
* @param {object} container Loaded `CarbonWebgpuContainer`.
|
|
39
|
+
* @param {object} [options] Validation options.
|
|
40
|
+
* @param {string} [options.source] Source label for diagnostics.
|
|
41
|
+
* @throws {WebgpuReadError} When the container cannot serve WebGPU.
|
|
42
|
+
*/
|
|
43
|
+
function validateEffectContainer(container, options = {}) {
|
|
44
|
+
const source = options.source || container.sourcePath || "memory";
|
|
45
|
+
if (!container?.IsGood()) {
|
|
46
|
+
throw new WebgpuReadError("Carbon WebGPU container is not readable", {
|
|
47
|
+
source,
|
|
48
|
+
cause: container?.readError ?? null
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (!container.carbon.records.length) {
|
|
52
|
+
throw new WebgpuReadError("Carbon WebGPU container declares no permutation bodies", {
|
|
53
|
+
source
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// One check per distinct stored body. Aliased rows share a blob, so checking
|
|
58
|
+
// per permutation would re-check identical bytes up to twenty times over on
|
|
59
|
+
// the effects that alias hardest.
|
|
60
|
+
const checked = new Set();
|
|
61
|
+
for (let index = 0; index < container.carbon.records.length; index += 1) {
|
|
62
|
+
const offset = container.carbon.records[index].offset;
|
|
63
|
+
if (checked.has(offset)) continue;
|
|
64
|
+
checked.add(offset);
|
|
65
|
+
const description = container.GetDescription(index);
|
|
66
|
+
for (const technique of description.techniques) {
|
|
67
|
+
for (const [passIndex, pass] of technique.passes.entries()) {
|
|
68
|
+
for (const stage of pass.stages) {
|
|
69
|
+
// A stage carrying no program is reflection-only: the body
|
|
70
|
+
// is known, the translation is not, and the emitter says so
|
|
71
|
+
// with a zero-length payload. Those are legitimate — 107
|
|
72
|
+
// shipped body-passes carry a geometry stage — so the rule
|
|
73
|
+
// is about stages with a program, not about stages.
|
|
74
|
+
if (stage.shaderData.size === 0) continue;
|
|
75
|
+
if (!WEBGPU_STAGE_TYPES.has(stage.type)) {
|
|
76
|
+
throw new WebgpuReadError(`Carbon WebGPU container carries a program for stage type ${stage.type}, ` + "which WebGPU cannot express", {
|
|
77
|
+
source,
|
|
78
|
+
permutationIndex: index,
|
|
79
|
+
pass: `${technique.name.value}.pass${passIndex}`,
|
|
80
|
+
stageType: stage.type
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { validateEffectContainer };
|
|
90
|
+
//# sourceMappingURL=validateContainer.js.map
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
import { readEffectAnalysis as readEffectAnalysis$1 } from '../../hlsl/core/analysis.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Copy supported byte containers into an independent active byte view.
|
|
5
|
-
*
|
|
6
|
-
* @param {Array|ArrayBuffer|ArrayBufferView|null|undefined} value Byte source.
|
|
7
|
-
* @param {string} context Error context.
|
|
8
|
-
* @returns {Uint8Array|null} Copied bytes, or null when absent.
|
|
9
|
-
*/
|
|
10
|
-
function normalizeBytecodeBytes(value, context) {
|
|
11
|
-
if (value === undefined || value === null) return null;
|
|
12
|
-
if (Array.isArray(value)) {
|
|
13
|
-
for (let index = 0; index < value.length; index++) {
|
|
14
|
-
if (!Object.prototype.hasOwnProperty.call(value, index) || !Number.isInteger(value[index]) || value[index] < 0 || value[index] > 255) {
|
|
15
|
-
throw new TypeError(`${context} must contain only byte values`);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return Uint8Array.from(value);
|
|
19
|
-
}
|
|
20
|
-
if (value instanceof Uint8Array) return Uint8Array.from(value);
|
|
21
|
-
if (value instanceof ArrayBuffer) return new Uint8Array(value.slice(0));
|
|
22
|
-
if (ArrayBuffer.isView(value)) {
|
|
23
|
-
return Uint8Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
|
|
24
|
-
}
|
|
25
|
-
throw new TypeError(`${context} must be an array or byte view`);
|
|
26
|
-
}
|
|
27
|
-
function collectStageBytecodeByKey(effectDescription) {
|
|
28
|
-
const bytecodeByKey = new Map();
|
|
29
|
-
for (const technique of effectDescription?.techniques ?? []) {
|
|
30
|
-
for (let passIndex = 0; passIndex < technique.passes.length; passIndex++) {
|
|
31
|
-
const stageInputs = technique.passes[passIndex].stageInputs;
|
|
32
|
-
for (let stageType = 0; stageType < stageInputs.length; stageType++) {
|
|
33
|
-
const stage = stageInputs[stageType];
|
|
34
|
-
if (!stage?.m_exists) continue;
|
|
35
|
-
const stageName = stage.cjsShaderBytecode?.stageName;
|
|
36
|
-
const bytecodeStageType = stage.cjsShaderBytecode?.stageType;
|
|
37
|
-
const value = stage.cjsShaderBytecode?.bytes;
|
|
38
|
-
if (!stageName || value === undefined || value === null) continue;
|
|
39
|
-
if (!Number.isInteger(bytecodeStageType) || bytecodeStageType !== stageType) {
|
|
40
|
-
throw new Error(`${technique.name}.pass${passIndex}.${stageName} stage type metadata is inconsistent`);
|
|
41
|
-
}
|
|
42
|
-
const key = `${technique.name}.pass${passIndex}.${stageName}`;
|
|
43
|
-
if (bytecodeByKey.has(key)) {
|
|
44
|
-
throw new Error(`Resolved effect contains duplicate stage bytecode ${key}`);
|
|
45
|
-
}
|
|
46
|
-
const bytes = normalizeBytecodeBytes(value, `${key} stage bytecode`);
|
|
47
|
-
if (!bytes?.length) {
|
|
48
|
-
throw new TypeError(`${key} stage bytecode must be a non-empty byte view`);
|
|
49
|
-
}
|
|
50
|
-
bytecodeByKey.set(key, {
|
|
51
|
-
techniqueName: technique.name,
|
|
52
|
-
passIndex,
|
|
53
|
-
stageType,
|
|
54
|
-
stageName,
|
|
55
|
-
bytes
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return bytecodeByKey;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Resolve one compiled-effect permutation for WebGPU packaging.
|
|
65
|
-
*
|
|
66
|
-
* format-hlsl owns source parsing, selected-permutation resolution, and the
|
|
67
|
-
* binding manifest. This adapter adds only a validated transient byte index.
|
|
68
|
-
*
|
|
69
|
-
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect bytes.
|
|
70
|
-
* @param {object} [options] Source and permutation options.
|
|
71
|
-
* @returns {object} Resolved raw effect, selection, reflection, and transient stage bytes.
|
|
72
|
-
*/
|
|
73
|
-
function readEffectAnalysis(input, options = {}) {
|
|
74
|
-
const resolved = readEffectAnalysis$1(input, options);
|
|
75
|
-
return {
|
|
76
|
-
...resolved,
|
|
77
|
-
stageBytecodeByKey: collectStageBytecodeByKey(resolved.effectDescription)
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export { normalizeBytecodeBytes, readEffectAnalysis };
|
|
82
|
-
//# sourceMappingURL=effectAnalysis.js.map
|
|
1
|
+
import { readEffectAnalysis as readEffectAnalysis$1 } from '../../hlsl/core/analysis.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Copy supported byte containers into an independent active byte view.
|
|
5
|
+
*
|
|
6
|
+
* @param {Array|ArrayBuffer|ArrayBufferView|null|undefined} value Byte source.
|
|
7
|
+
* @param {string} context Error context.
|
|
8
|
+
* @returns {Uint8Array|null} Copied bytes, or null when absent.
|
|
9
|
+
*/
|
|
10
|
+
function normalizeBytecodeBytes(value, context) {
|
|
11
|
+
if (value === undefined || value === null) return null;
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
for (let index = 0; index < value.length; index++) {
|
|
14
|
+
if (!Object.prototype.hasOwnProperty.call(value, index) || !Number.isInteger(value[index]) || value[index] < 0 || value[index] > 255) {
|
|
15
|
+
throw new TypeError(`${context} must contain only byte values`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return Uint8Array.from(value);
|
|
19
|
+
}
|
|
20
|
+
if (value instanceof Uint8Array) return Uint8Array.from(value);
|
|
21
|
+
if (value instanceof ArrayBuffer) return new Uint8Array(value.slice(0));
|
|
22
|
+
if (ArrayBuffer.isView(value)) {
|
|
23
|
+
return Uint8Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
|
|
24
|
+
}
|
|
25
|
+
throw new TypeError(`${context} must be an array or byte view`);
|
|
26
|
+
}
|
|
27
|
+
function collectStageBytecodeByKey(effectDescription) {
|
|
28
|
+
const bytecodeByKey = new Map();
|
|
29
|
+
for (const technique of effectDescription?.techniques ?? []) {
|
|
30
|
+
for (let passIndex = 0; passIndex < technique.passes.length; passIndex++) {
|
|
31
|
+
const stageInputs = technique.passes[passIndex].stageInputs;
|
|
32
|
+
for (let stageType = 0; stageType < stageInputs.length; stageType++) {
|
|
33
|
+
const stage = stageInputs[stageType];
|
|
34
|
+
if (!stage?.m_exists) continue;
|
|
35
|
+
const stageName = stage.cjsShaderBytecode?.stageName;
|
|
36
|
+
const bytecodeStageType = stage.cjsShaderBytecode?.stageType;
|
|
37
|
+
const value = stage.cjsShaderBytecode?.bytes;
|
|
38
|
+
if (!stageName || value === undefined || value === null) continue;
|
|
39
|
+
if (!Number.isInteger(bytecodeStageType) || bytecodeStageType !== stageType) {
|
|
40
|
+
throw new Error(`${technique.name}.pass${passIndex}.${stageName} stage type metadata is inconsistent`);
|
|
41
|
+
}
|
|
42
|
+
const key = `${technique.name}.pass${passIndex}.${stageName}`;
|
|
43
|
+
if (bytecodeByKey.has(key)) {
|
|
44
|
+
throw new Error(`Resolved effect contains duplicate stage bytecode ${key}`);
|
|
45
|
+
}
|
|
46
|
+
const bytes = normalizeBytecodeBytes(value, `${key} stage bytecode`);
|
|
47
|
+
if (!bytes?.length) {
|
|
48
|
+
throw new TypeError(`${key} stage bytecode must be a non-empty byte view`);
|
|
49
|
+
}
|
|
50
|
+
bytecodeByKey.set(key, {
|
|
51
|
+
techniqueName: technique.name,
|
|
52
|
+
passIndex,
|
|
53
|
+
stageType,
|
|
54
|
+
stageName,
|
|
55
|
+
bytes
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return bytecodeByKey;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Resolve one compiled-effect permutation for WebGPU packaging.
|
|
65
|
+
*
|
|
66
|
+
* format-hlsl owns source parsing, selected-permutation resolution, and the
|
|
67
|
+
* binding manifest. This adapter adds only a validated transient byte index.
|
|
68
|
+
*
|
|
69
|
+
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect bytes.
|
|
70
|
+
* @param {object} [options] Source and permutation options.
|
|
71
|
+
* @returns {object} Resolved raw effect, selection, reflection, and transient stage bytes.
|
|
72
|
+
*/
|
|
73
|
+
function readEffectAnalysis(input, options = {}) {
|
|
74
|
+
const resolved = readEffectAnalysis$1(input, options);
|
|
75
|
+
return {
|
|
76
|
+
...resolved,
|
|
77
|
+
stageBytecodeByKey: collectStageBytecodeByKey(resolved.effectDescription)
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { normalizeBytecodeBytes, readEffectAnalysis };
|
|
82
|
+
//# sourceMappingURL=effectAnalysis.js.map
|