@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,2 +1,2 @@
|
|
|
1
|
-
export { CjsGr2Format, CjsGr2Format as default } from './CjsGr2Format.js';
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { CjsGr2Format, CjsGr2Format as default } from './CjsGr2Format.js';
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1,254 +1,233 @@
|
|
|
1
|
-
import { HlslEffectRes } from './core/tr2/resources/HlslEffectRes.js';
|
|
2
|
-
import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readWithValues, inspectWithValues, toJsonValue, toBytes, OUTPUT_JSON, OUTPUT_METADATA, OUTPUT_RAW } from './core/helpers.js';
|
|
3
|
-
import { CLASS_KEYS } from './core/json.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Exposed CarbonEngineJS-facing Tr2 effect container format class.
|
|
7
|
-
*
|
|
8
|
-
* Keep this file small and reviewable: the Tr2 effect graph parser lives
|
|
9
|
-
* under src/core/tr2 (internal parsing machinery, not part of this
|
|
10
|
-
* package's public surface); input/option normalization, the shared read
|
|
11
|
-
* path, and the JSON emitters live under src/core.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
const FORMAT_NAME = "CjsHlslFormat";
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* CarbonEngineJS-facing reader for CCP's Tr2 compiled effect container
|
|
18
|
-
* format (`.sm_hi` / `.sm_lo` / `.sm_depth` bodies).
|
|
19
|
-
*
|
|
20
|
-
* The Cjs prefix marks this as a JavaScript format/construction boundary.
|
|
21
|
-
* This format profile has no dependency on any DXBC/shader-bytecode decoder: shader
|
|
22
|
-
* bodies stay as opaque bytes in the emitted graph. The public contract is
|
|
23
|
-
* plain JSON data (`emit: "json"`, the default) — the documented effect
|
|
24
|
-
* graph shape described in `docs/reference/json-graph.md`. `emit: "raw"`
|
|
25
|
-
* exposes the internal
|
|
26
|
-
* HlslEffectRes graph directly; treat it as unstable, not schema-guaranteed
|
|
27
|
-
* internals, useful mainly for resolving multiple permutations by hand.
|
|
28
|
-
*
|
|
29
|
-
* The `classes` option lets a caller register constructors for specific
|
|
30
|
-
* node kinds in the emitted JSON graph (see `CjsHlslFormat.CLASS_KEYS`);
|
|
31
|
-
* class registration does not depend on importing internal graph classes.
|
|
32
|
-
*/
|
|
33
|
-
class CjsHlslFormat {
|
|
34
|
-
#emit = DEFAULT_VALUES.emit;
|
|
35
|
-
#source = DEFAULT_VALUES.source;
|
|
36
|
-
#permutation = DEFAULT_VALUES.permutation;
|
|
37
|
-
#classes = DEFAULT_VALUES.classes;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Create a reusable format profile.
|
|
41
|
-
*
|
|
42
|
-
* @param {object} [options] Default format values.
|
|
43
|
-
*/
|
|
44
|
-
constructor(options = {}) {
|
|
45
|
-
this.SetValues(options);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Set format values for this reusable profile.
|
|
50
|
-
*
|
|
51
|
-
* @param {object} [options] Values to merge into the profile.
|
|
52
|
-
* @returns {CjsHlslFormat} This format profile.
|
|
53
|
-
*/
|
|
54
|
-
SetValues(options = {}) {
|
|
55
|
-
const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);
|
|
56
|
-
this.#emit = values.emit;
|
|
57
|
-
this.#source = values.source;
|
|
58
|
-
this.#permutation = values.permutation;
|
|
59
|
-
this.#classes = values.classes;
|
|
60
|
-
return this;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Get this profile's current values, optionally with per-call overrides.
|
|
65
|
-
*
|
|
66
|
-
* @param {object} [options] Optional values to merge into a copy.
|
|
67
|
-
* @returns {object} A copy of the effective values.
|
|
68
|
-
*/
|
|
69
|
-
GetValues(options = {}) {
|
|
70
|
-
return normalizeValues({
|
|
71
|
-
emit: this.#emit,
|
|
72
|
-
source: this.#source,
|
|
73
|
-
permutation: this.#permutation,
|
|
74
|
-
classes: this.#classes
|
|
75
|
-
}, options, FORMAT_NAME);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Set multiple node-class constructors for this profile.
|
|
80
|
-
*
|
|
81
|
-
* @param {object} [classes] Map of node class keys to constructors. See {@link CjsHlslFormat.CLASS_KEYS}.
|
|
82
|
-
* @returns {CjsHlslFormat} This format profile.
|
|
83
|
-
*/
|
|
84
|
-
SetClasses(classes = {}) {
|
|
85
|
-
return this.SetValues({
|
|
86
|
-
classes
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Set one node-class constructor for this profile.
|
|
92
|
-
*
|
|
93
|
-
* @param {string} type Node class key.
|
|
94
|
-
* @param {Function|null|undefined} Class Constructor to use, or nullish to delete.
|
|
95
|
-
* @returns {CjsHlslFormat} This format profile.
|
|
96
|
-
*/
|
|
97
|
-
SetClass(type, Class) {
|
|
98
|
-
if (Class === null || Class === undefined) {
|
|
99
|
-
validateClassKey(type, FORMAT_NAME);
|
|
100
|
-
const classes = {
|
|
101
|
-
...this.#classes
|
|
102
|
-
};
|
|
103
|
-
delete classes[type];
|
|
104
|
-
this.#classes = classes;
|
|
105
|
-
return this;
|
|
106
|
-
}
|
|
107
|
-
validateClass(type, Class, FORMAT_NAME);
|
|
108
|
-
return this.SetValues({
|
|
109
|
-
classes: {
|
|
110
|
-
[type]: Class
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Get a configured node-class constructor.
|
|
117
|
-
*
|
|
118
|
-
* @param {string} type Node class key.
|
|
119
|
-
* @returns {Function|undefined} The registered constructor, if any.
|
|
120
|
-
*/
|
|
121
|
-
GetClass(type) {
|
|
122
|
-
validateClassKey(type, FORMAT_NAME);
|
|
123
|
-
return this.#classes[type];
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Whether this reader has a constructor registered for a node class key.
|
|
128
|
-
*
|
|
129
|
-
* @param {string} type Node class key.
|
|
130
|
-
* @returns {boolean} True when a constructor is registered.
|
|
131
|
-
*/
|
|
132
|
-
HasClass(type) {
|
|
133
|
-
return !!this.GetClass(type);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Read a Tr2 effect payload with this profile's values.
|
|
138
|
-
*
|
|
139
|
-
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.
|
|
140
|
-
* @param {object} [options] Per-call value overrides.
|
|
141
|
-
* @returns {HlslEffectRes|object} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.
|
|
142
|
-
*/
|
|
143
|
-
Read(input, options = {}) {
|
|
144
|
-
return readWithValues(input, this.GetValues(options));
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Inspect a Tr2 effect payload: header facts plus the default (or
|
|
149
|
-
* selected) permutation's technique names and stage counts.
|
|
150
|
-
*
|
|
151
|
-
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.
|
|
152
|
-
* @param {object} [options] Per-call value overrides.
|
|
153
|
-
* @returns {object} Plain summary data.
|
|
154
|
-
*/
|
|
155
|
-
Inspect(input, options = {}) {
|
|
156
|
-
return inspectWithValues(input, this.GetValues(options));
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Convert format output to JSON-compatible data.
|
|
161
|
-
*
|
|
162
|
-
* @param {any} value Format output to convert.
|
|
163
|
-
* @returns {any} Plain JSON-compatible data.
|
|
164
|
-
*/
|
|
165
|
-
ToJSON(value) {
|
|
166
|
-
return toJsonValue(value);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Static payload sniff. Static methods use camelCase by convention.
|
|
171
|
-
*
|
|
172
|
-
* The Tr2 effect container has no magic number, so this attempts a
|
|
173
|
-
* cheap header-only load (version, string table, permutation axes and
|
|
174
|
-
* body offsets — no shader bodies) and reports whether it succeeded.
|
|
175
|
-
*
|
|
176
|
-
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Candidate bytes.
|
|
177
|
-
* @returns {boolean} True when the payload's header decodes as a supported Tr2 effect.
|
|
178
|
-
*/
|
|
179
|
-
static isSupported(input) {
|
|
180
|
-
try {
|
|
181
|
-
const bytes = toBytes(input);
|
|
182
|
-
return new HlslEffectRes().DoLoad(bytes, {
|
|
183
|
-
source: "isSupported"
|
|
184
|
-
});
|
|
185
|
-
} catch {
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Static one-shot read.
|
|
192
|
-
*
|
|
193
|
-
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.
|
|
194
|
-
* @param {object} [options] Format values.
|
|
195
|
-
* @returns {HlslEffectRes|object} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.
|
|
196
|
-
*/
|
|
197
|
-
static read(input, options = {}) {
|
|
198
|
-
return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Static one-shot inspection.
|
|
203
|
-
*
|
|
204
|
-
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.
|
|
205
|
-
* @param {object} [options] Format values.
|
|
206
|
-
* @returns {object} Plain summary data.
|
|
207
|
-
*/
|
|
208
|
-
static inspect(input, options = {}) {
|
|
209
|
-
return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Static JSON-compatible conversion.
|
|
214
|
-
*
|
|
215
|
-
* @param {any} value Format output to convert.
|
|
216
|
-
* @returns {any} Plain JSON-compatible data.
|
|
217
|
-
*/
|
|
218
|
-
static toJSON(value) {
|
|
219
|
-
return toJsonValue(value);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
static
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
readFile
|
|
235
|
-
} = await import('node:fs/promises');
|
|
236
|
-
const input = await readFile(path);
|
|
237
|
-
return readWithValues(input, normalizeValues(DEFAULT_VALUES, {
|
|
238
|
-
source: path,
|
|
239
|
-
...options
|
|
240
|
-
}, FORMAT_NAME));
|
|
241
|
-
}
|
|
242
|
-
static OUTPUT_JSON = OUTPUT_JSON;
|
|
243
|
-
static OUTPUT_METADATA = OUTPUT_METADATA;
|
|
244
|
-
static OUTPUT_RAW = OUTPUT_RAW;
|
|
245
|
-
static CLASS_KEYS = CLASS_KEYS;
|
|
246
|
-
static type = Object.freeze(["shader"]);
|
|
247
|
-
static mediaTypes = Object.freeze(["shader"]);
|
|
248
|
-
static inputTypes = Object.freeze(["sm_hi", "sm_lo", "sm_depth"]);
|
|
249
|
-
static outputTypes = Object.freeze([OUTPUT_JSON, OUTPUT_METADATA]);
|
|
250
|
-
static debugOutputTypes = Object.freeze([OUTPUT_RAW]);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
export { CjsHlslFormat, CjsHlslFormat as default };
|
|
254
|
-
//# sourceMappingURL=CjsHlslFormat.js.map
|
|
1
|
+
import { HlslEffectRes } from './core/tr2/resources/HlslEffectRes.js';
|
|
2
|
+
import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readWithValues, inspectWithValues, toJsonValue, toBytes, OUTPUT_JSON, OUTPUT_METADATA, OUTPUT_RAW } from './core/helpers.js';
|
|
3
|
+
import { CLASS_KEYS } from './core/json.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Exposed CarbonEngineJS-facing Tr2 effect container format class.
|
|
7
|
+
*
|
|
8
|
+
* Keep this file small and reviewable: the Tr2 effect graph parser lives
|
|
9
|
+
* under src/core/tr2 (internal parsing machinery, not part of this
|
|
10
|
+
* package's public surface); input/option normalization, the shared read
|
|
11
|
+
* path, and the JSON emitters live under src/core.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const FORMAT_NAME = "CjsHlslFormat";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* CarbonEngineJS-facing reader for CCP's Tr2 compiled effect container
|
|
18
|
+
* format (`.sm_hi` / `.sm_lo` / `.sm_depth` bodies).
|
|
19
|
+
*
|
|
20
|
+
* The Cjs prefix marks this as a JavaScript format/construction boundary.
|
|
21
|
+
* This format profile has no dependency on any DXBC/shader-bytecode decoder: shader
|
|
22
|
+
* bodies stay as opaque bytes in the emitted graph. The public contract is
|
|
23
|
+
* plain JSON data (`emit: "json"`, the default) — the documented effect
|
|
24
|
+
* graph shape described in `docs/reference/json-graph.md`. `emit: "raw"`
|
|
25
|
+
* exposes the internal
|
|
26
|
+
* HlslEffectRes graph directly; treat it as unstable, not schema-guaranteed
|
|
27
|
+
* internals, useful mainly for resolving multiple permutations by hand.
|
|
28
|
+
*
|
|
29
|
+
* The `classes` option lets a caller register constructors for specific
|
|
30
|
+
* node kinds in the emitted JSON graph (see `CjsHlslFormat.CLASS_KEYS`);
|
|
31
|
+
* class registration does not depend on importing internal graph classes.
|
|
32
|
+
*/
|
|
33
|
+
class CjsHlslFormat {
|
|
34
|
+
#emit = DEFAULT_VALUES.emit;
|
|
35
|
+
#source = DEFAULT_VALUES.source;
|
|
36
|
+
#permutation = DEFAULT_VALUES.permutation;
|
|
37
|
+
#classes = DEFAULT_VALUES.classes;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Create a reusable format profile.
|
|
41
|
+
*
|
|
42
|
+
* @param {object} [options] Default format values.
|
|
43
|
+
*/
|
|
44
|
+
constructor(options = {}) {
|
|
45
|
+
this.SetValues(options);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Set format values for this reusable profile.
|
|
50
|
+
*
|
|
51
|
+
* @param {object} [options] Values to merge into the profile.
|
|
52
|
+
* @returns {CjsHlslFormat} This format profile.
|
|
53
|
+
*/
|
|
54
|
+
SetValues(options = {}) {
|
|
55
|
+
const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);
|
|
56
|
+
this.#emit = values.emit;
|
|
57
|
+
this.#source = values.source;
|
|
58
|
+
this.#permutation = values.permutation;
|
|
59
|
+
this.#classes = values.classes;
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Get this profile's current values, optionally with per-call overrides.
|
|
65
|
+
*
|
|
66
|
+
* @param {object} [options] Optional values to merge into a copy.
|
|
67
|
+
* @returns {object} A copy of the effective values.
|
|
68
|
+
*/
|
|
69
|
+
GetValues(options = {}) {
|
|
70
|
+
return normalizeValues({
|
|
71
|
+
emit: this.#emit,
|
|
72
|
+
source: this.#source,
|
|
73
|
+
permutation: this.#permutation,
|
|
74
|
+
classes: this.#classes
|
|
75
|
+
}, options, FORMAT_NAME);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Set multiple node-class constructors for this profile.
|
|
80
|
+
*
|
|
81
|
+
* @param {object} [classes] Map of node class keys to constructors. See {@link CjsHlslFormat.CLASS_KEYS}.
|
|
82
|
+
* @returns {CjsHlslFormat} This format profile.
|
|
83
|
+
*/
|
|
84
|
+
SetClasses(classes = {}) {
|
|
85
|
+
return this.SetValues({
|
|
86
|
+
classes
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Set one node-class constructor for this profile.
|
|
92
|
+
*
|
|
93
|
+
* @param {string} type Node class key.
|
|
94
|
+
* @param {Function|null|undefined} Class Constructor to use, or nullish to delete.
|
|
95
|
+
* @returns {CjsHlslFormat} This format profile.
|
|
96
|
+
*/
|
|
97
|
+
SetClass(type, Class) {
|
|
98
|
+
if (Class === null || Class === undefined) {
|
|
99
|
+
validateClassKey(type, FORMAT_NAME);
|
|
100
|
+
const classes = {
|
|
101
|
+
...this.#classes
|
|
102
|
+
};
|
|
103
|
+
delete classes[type];
|
|
104
|
+
this.#classes = classes;
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
validateClass(type, Class, FORMAT_NAME);
|
|
108
|
+
return this.SetValues({
|
|
109
|
+
classes: {
|
|
110
|
+
[type]: Class
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Get a configured node-class constructor.
|
|
117
|
+
*
|
|
118
|
+
* @param {string} type Node class key.
|
|
119
|
+
* @returns {Function|undefined} The registered constructor, if any.
|
|
120
|
+
*/
|
|
121
|
+
GetClass(type) {
|
|
122
|
+
validateClassKey(type, FORMAT_NAME);
|
|
123
|
+
return this.#classes[type];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Whether this reader has a constructor registered for a node class key.
|
|
128
|
+
*
|
|
129
|
+
* @param {string} type Node class key.
|
|
130
|
+
* @returns {boolean} True when a constructor is registered.
|
|
131
|
+
*/
|
|
132
|
+
HasClass(type) {
|
|
133
|
+
return !!this.GetClass(type);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Read a Tr2 effect payload with this profile's values.
|
|
138
|
+
*
|
|
139
|
+
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.
|
|
140
|
+
* @param {object} [options] Per-call value overrides.
|
|
141
|
+
* @returns {HlslEffectRes|object} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.
|
|
142
|
+
*/
|
|
143
|
+
Read(input, options = {}) {
|
|
144
|
+
return readWithValues(input, this.GetValues(options));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Inspect a Tr2 effect payload: header facts plus the default (or
|
|
149
|
+
* selected) permutation's technique names and stage counts.
|
|
150
|
+
*
|
|
151
|
+
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.
|
|
152
|
+
* @param {object} [options] Per-call value overrides.
|
|
153
|
+
* @returns {object} Plain summary data.
|
|
154
|
+
*/
|
|
155
|
+
Inspect(input, options = {}) {
|
|
156
|
+
return inspectWithValues(input, this.GetValues(options));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Convert format output to JSON-compatible data.
|
|
161
|
+
*
|
|
162
|
+
* @param {any} value Format output to convert.
|
|
163
|
+
* @returns {any} Plain JSON-compatible data.
|
|
164
|
+
*/
|
|
165
|
+
ToJSON(value) {
|
|
166
|
+
return toJsonValue(value);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Static payload sniff. Static methods use camelCase by convention.
|
|
171
|
+
*
|
|
172
|
+
* The Tr2 effect container has no magic number, so this attempts a
|
|
173
|
+
* cheap header-only load (version, string table, permutation axes and
|
|
174
|
+
* body offsets — no shader bodies) and reports whether it succeeded.
|
|
175
|
+
*
|
|
176
|
+
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Candidate bytes.
|
|
177
|
+
* @returns {boolean} True when the payload's header decodes as a supported Tr2 effect.
|
|
178
|
+
*/
|
|
179
|
+
static isSupported(input) {
|
|
180
|
+
try {
|
|
181
|
+
const bytes = toBytes(input);
|
|
182
|
+
return new HlslEffectRes().DoLoad(bytes, {
|
|
183
|
+
source: "isSupported"
|
|
184
|
+
});
|
|
185
|
+
} catch {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Static one-shot read.
|
|
192
|
+
*
|
|
193
|
+
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.
|
|
194
|
+
* @param {object} [options] Format values.
|
|
195
|
+
* @returns {HlslEffectRes|object} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.
|
|
196
|
+
*/
|
|
197
|
+
static read(input, options = {}) {
|
|
198
|
+
return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Static one-shot inspection.
|
|
203
|
+
*
|
|
204
|
+
* @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.
|
|
205
|
+
* @param {object} [options] Format values.
|
|
206
|
+
* @returns {object} Plain summary data.
|
|
207
|
+
*/
|
|
208
|
+
static inspect(input, options = {}) {
|
|
209
|
+
return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Static JSON-compatible conversion.
|
|
214
|
+
*
|
|
215
|
+
* @param {any} value Format output to convert.
|
|
216
|
+
* @returns {any} Plain JSON-compatible data.
|
|
217
|
+
*/
|
|
218
|
+
static toJSON(value) {
|
|
219
|
+
return toJsonValue(value);
|
|
220
|
+
}
|
|
221
|
+
static OUTPUT_JSON = OUTPUT_JSON;
|
|
222
|
+
static OUTPUT_METADATA = OUTPUT_METADATA;
|
|
223
|
+
static OUTPUT_RAW = OUTPUT_RAW;
|
|
224
|
+
static CLASS_KEYS = CLASS_KEYS;
|
|
225
|
+
static type = Object.freeze(["shader"]);
|
|
226
|
+
static mediaTypes = Object.freeze(["shader"]);
|
|
227
|
+
static inputTypes = Object.freeze(["sm_hi", "sm_lo", "sm_depth"]);
|
|
228
|
+
static outputTypes = Object.freeze([OUTPUT_JSON, OUTPUT_METADATA]);
|
|
229
|
+
static debugOutputTypes = Object.freeze([OUTPUT_RAW]);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export { CjsHlslFormat, CjsHlslFormat as default };
|
|
233
|
+
//# sourceMappingURL=CjsHlslFormat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsHlslFormat.js","sources":["../../../../src/formats/hlsl/CjsHlslFormat.js"],"sourcesContent":["/**\n * Exposed CarbonEngineJS-facing Tr2 effect container format class.\n *\n * Keep this file small and reviewable: the Tr2 effect graph parser lives\n * under src/core/tr2 (internal parsing machinery, not part of this\n * package's public surface); input/option normalization, the shared read\n * path, and the JSON emitters live under src/core.\n */\n\nimport { HlslEffectRes } from \"./core/tr2/resources/HlslEffectRes.js\";\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_JSON,\n OUTPUT_METADATA,\n OUTPUT_RAW,\n inspectWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsHlslFormat\";\n\n/**\n * CarbonEngineJS-facing reader for CCP's Tr2 compiled effect container\n * format (`.sm_hi` / `.sm_lo` / `.sm_depth` bodies).\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary.\n * This format profile has no dependency on any DXBC/shader-bytecode decoder: shader\n * bodies stay as opaque bytes in the emitted graph. The public contract is\n * plain JSON data (`emit: \"json\"`, the default) — the documented effect\n * graph shape described in `docs/reference/json-graph.md`. `emit: \"raw\"`\n * exposes the internal\n * HlslEffectRes graph directly; treat it as unstable, not schema-guaranteed\n * internals, useful mainly for resolving multiple permutations by hand.\n *\n * The `classes` option lets a caller register constructors for specific\n * node kinds in the emitted JSON graph (see `CjsHlslFormat.CLASS_KEYS`);\n * class registration does not depend on importing internal graph classes.\n */\nexport class CjsHlslFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #source = DEFAULT_VALUES.source;\n #permutation = DEFAULT_VALUES.permutation;\n #classes = DEFAULT_VALUES.classes;\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsHlslFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);\n\n this.#emit = values.emit;\n this.#source = values.source;\n this.#permutation = values.permutation;\n this.#classes = values.classes;\n\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n source: this.#source,\n permutation: this.#permutation,\n classes: this.#classes\n }, options, FORMAT_NAME);\n }\n\n /**\n * Set multiple node-class constructors for this profile.\n *\n * @param {object} [classes] Map of node class keys to constructors. See {@link CjsHlslFormat.CLASS_KEYS}.\n * @returns {CjsHlslFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Node class key.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsHlslFormat} This format profile.\n */\n SetClass(type, Class)\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(type, FORMAT_NAME);\n const classes = { ...this.#classes };\n delete classes[type];\n this.#classes = classes;\n return this;\n }\n\n validateClass(type, Class, FORMAT_NAME);\n return this.SetValues({ classes: { [type]: Class } });\n }\n\n /**\n * Get a configured node-class constructor.\n *\n * @param {string} type Node class key.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this reader has a constructor registered for a node class key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read a Tr2 effect payload with this profile's values.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {HlslEffectRes|object} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Inspect a Tr2 effect payload: header facts plus the default (or\n * selected) permutation's technique names and stage counts.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static payload sniff. Static methods use camelCase by convention.\n *\n * The Tr2 effect container has no magic number, so this attempts a\n * cheap header-only load (version, string table, permutation axes and\n * body offsets — no shader bodies) and reports whether it succeeded.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the payload's header decodes as a supported Tr2 effect.\n */\n static isSupported(input)\n {\n try\n {\n const bytes = toBytes(input);\n return new HlslEffectRes().DoLoad(bytes, { source: \"isSupported\" });\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Static one-shot read.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.\n * @param {object} [options] Format values.\n * @returns {HlslEffectRes|object} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Node-only convenience: reads a compiled Tr2 effect file from disk.\n *\n * @param {string} path Path to a compiled Carbon effect file (`.sm_hi` etc.).\n * @param {object} [options] Format values.\n * @returns {Promise<HlslEffectRes|object>} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.\n */\n static async readFile(path, options = {})\n {\n if (typeof path !== \"string\" || !path)\n {\n throw new TypeError(`${FORMAT_NAME}: readFile path must be a non-empty string`);\n }\n\n const { readFile } = await import(\"node:fs/promises\");\n const input = await readFile(path);\n\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { source: path, ...options }, FORMAT_NAME));\n }\n\n static OUTPUT_JSON = OUTPUT_JSON;\n static OUTPUT_METADATA = OUTPUT_METADATA;\n static OUTPUT_RAW = OUTPUT_RAW;\n static CLASS_KEYS = CLASS_KEYS;\n static type = Object.freeze([ \"shader\" ]);\n static mediaTypes = Object.freeze([ \"shader\" ]);\n static inputTypes = Object.freeze([ \"sm_hi\", \"sm_lo\", \"sm_depth\" ]);\n static outputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_METADATA ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_RAW ]);\n\n}\n\nexport default CjsHlslFormat;\n"],"names":["FORMAT_NAME","CjsHlslFormat","DEFAULT_VALUES","emit","source","permutation","classes","constructor","options","SetValues","values","normalizeValues","GetValues","SetClasses","SetClass","type","Class","undefined","validateClassKey","validateClass","GetClass","HasClass","Read","input","readWithValues","Inspect","inspectWithValues","ToJSON","value","toJsonValue","isSupported","bytes","toBytes","HlslEffectRes","DoLoad","read","inspect","toJSON","readFile","path","TypeError","OUTPUT_JSON","OUTPUT_METADATA","OUTPUT_RAW","CLASS_KEYS","Object","freeze","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsHlslFormat.js","sources":["../../../../src/formats/hlsl/CjsHlslFormat.js"],"sourcesContent":["/**\n * Exposed CarbonEngineJS-facing Tr2 effect container format class.\n *\n * Keep this file small and reviewable: the Tr2 effect graph parser lives\n * under src/core/tr2 (internal parsing machinery, not part of this\n * package's public surface); input/option normalization, the shared read\n * path, and the JSON emitters live under src/core.\n */\n\nimport { HlslEffectRes } from \"./core/tr2/resources/HlslEffectRes.js\";\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_JSON,\n OUTPUT_METADATA,\n OUTPUT_RAW,\n inspectWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsHlslFormat\";\n\n/**\n * CarbonEngineJS-facing reader for CCP's Tr2 compiled effect container\n * format (`.sm_hi` / `.sm_lo` / `.sm_depth` bodies).\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary.\n * This format profile has no dependency on any DXBC/shader-bytecode decoder: shader\n * bodies stay as opaque bytes in the emitted graph. The public contract is\n * plain JSON data (`emit: \"json\"`, the default) — the documented effect\n * graph shape described in `docs/reference/json-graph.md`. `emit: \"raw\"`\n * exposes the internal\n * HlslEffectRes graph directly; treat it as unstable, not schema-guaranteed\n * internals, useful mainly for resolving multiple permutations by hand.\n *\n * The `classes` option lets a caller register constructors for specific\n * node kinds in the emitted JSON graph (see `CjsHlslFormat.CLASS_KEYS`);\n * class registration does not depend on importing internal graph classes.\n */\nexport class CjsHlslFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #source = DEFAULT_VALUES.source;\n #permutation = DEFAULT_VALUES.permutation;\n #classes = DEFAULT_VALUES.classes;\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsHlslFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);\n\n this.#emit = values.emit;\n this.#source = values.source;\n this.#permutation = values.permutation;\n this.#classes = values.classes;\n\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n source: this.#source,\n permutation: this.#permutation,\n classes: this.#classes\n }, options, FORMAT_NAME);\n }\n\n /**\n * Set multiple node-class constructors for this profile.\n *\n * @param {object} [classes] Map of node class keys to constructors. See {@link CjsHlslFormat.CLASS_KEYS}.\n * @returns {CjsHlslFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Node class key.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsHlslFormat} This format profile.\n */\n SetClass(type, Class)\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(type, FORMAT_NAME);\n const classes = { ...this.#classes };\n delete classes[type];\n this.#classes = classes;\n return this;\n }\n\n validateClass(type, Class, FORMAT_NAME);\n return this.SetValues({ classes: { [type]: Class } });\n }\n\n /**\n * Get a configured node-class constructor.\n *\n * @param {string} type Node class key.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this reader has a constructor registered for a node class key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read a Tr2 effect payload with this profile's values.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {HlslEffectRes|object} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Inspect a Tr2 effect payload: header facts plus the default (or\n * selected) permutation's technique names and stage counts.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static payload sniff. Static methods use camelCase by convention.\n *\n * The Tr2 effect container has no magic number, so this attempts a\n * cheap header-only load (version, string table, permutation axes and\n * body offsets — no shader bodies) and reports whether it succeeded.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the payload's header decodes as a supported Tr2 effect.\n */\n static isSupported(input)\n {\n try\n {\n const bytes = toBytes(input);\n return new HlslEffectRes().DoLoad(bytes, { source: \"isSupported\" });\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Static one-shot read.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.\n * @param {object} [options] Format values.\n * @returns {HlslEffectRes|object} The raw HlslEffectRes instance, compact metadata, or the documented JSON graph.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect container bytes.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n static OUTPUT_JSON = OUTPUT_JSON;\n static OUTPUT_METADATA = OUTPUT_METADATA;\n static OUTPUT_RAW = OUTPUT_RAW;\n static CLASS_KEYS = CLASS_KEYS;\n static type = Object.freeze([ \"shader\" ]);\n static mediaTypes = Object.freeze([ \"shader\" ]);\n static inputTypes = Object.freeze([ \"sm_hi\", \"sm_lo\", \"sm_depth\" ]);\n static outputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_METADATA ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_RAW ]);\n\n}\n\nexport default CjsHlslFormat;\n"],"names":["FORMAT_NAME","CjsHlslFormat","DEFAULT_VALUES","emit","source","permutation","classes","constructor","options","SetValues","values","normalizeValues","GetValues","SetClasses","SetClass","type","Class","undefined","validateClassKey","validateClass","GetClass","HasClass","Read","input","readWithValues","Inspect","inspectWithValues","ToJSON","value","toJsonValue","isSupported","bytes","toBytes","HlslEffectRes","DoLoad","read","inspect","toJSON","OUTPUT_JSON","OUTPUT_METADATA","OUTPUT_RAW","CLASS_KEYS","Object","freeze","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reinterprets a little-endian uint32 annotation payload as a float32.
|
|
3
|
-
*
|
|
4
|
-
* @param {number} value Unsigned 32-bit integer containing float bits.
|
|
5
|
-
* @returns {number} Float value represented by the same bits.
|
|
6
|
-
*/
|
|
7
|
-
function cjsUint32ToFloat32(value) {
|
|
8
|
-
const bytes = new Uint8Array(4);
|
|
9
|
-
const view = new DataView(bytes.buffer);
|
|
10
|
-
view.setUint32(0, value >>> 0, true);
|
|
11
|
-
return view.getFloat32(0, true);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export { cjsUint32ToFloat32 };
|
|
15
|
-
//# sourceMappingURL=HlslBinaryUtils.js.map
|
|
1
|
+
/**
|
|
2
|
+
* Reinterprets a little-endian uint32 annotation payload as a float32.
|
|
3
|
+
*
|
|
4
|
+
* @param {number} value Unsigned 32-bit integer containing float bits.
|
|
5
|
+
* @returns {number} Float value represented by the same bits.
|
|
6
|
+
*/
|
|
7
|
+
function cjsUint32ToFloat32(value) {
|
|
8
|
+
const bytes = new Uint8Array(4);
|
|
9
|
+
const view = new DataView(bytes.buffer);
|
|
10
|
+
view.setUint32(0, value >>> 0, true);
|
|
11
|
+
return view.getFloat32(0, true);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { cjsUint32ToFloat32 };
|
|
15
|
+
//# sourceMappingURL=HlslBinaryUtils.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error raised when a Carbon/Trinity effect payload cannot be decoded safely.
|
|
3
|
-
*/
|
|
4
|
-
class HlslEffectReadError extends Error {
|
|
5
|
-
/**
|
|
6
|
-
* Creates an effect-read error with structured location details.
|
|
7
|
-
*
|
|
8
|
-
* @param {string} message Human-readable failure reason.
|
|
9
|
-
* @param {object} [details] Extra reader state such as source, offset, or size.
|
|
10
|
-
*/
|
|
11
|
-
constructor(message, details = {}) {
|
|
12
|
-
super(message);
|
|
13
|
-
this.name = "HlslEffectReadError";
|
|
14
|
-
this.details = details;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export { HlslEffectReadError };
|
|
19
|
-
//# sourceMappingURL=HlslEffectReadError.js.map
|
|
1
|
+
/**
|
|
2
|
+
* Error raised when a Carbon/Trinity effect payload cannot be decoded safely.
|
|
3
|
+
*/
|
|
4
|
+
class HlslEffectReadError extends Error {
|
|
5
|
+
/**
|
|
6
|
+
* Creates an effect-read error with structured location details.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} message Human-readable failure reason.
|
|
9
|
+
* @param {object} [details] Extra reader state such as source, offset, or size.
|
|
10
|
+
*/
|
|
11
|
+
constructor(message, details = {}) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "HlslEffectReadError";
|
|
14
|
+
this.details = details;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { HlslEffectReadError };
|
|
19
|
+
//# sourceMappingURL=HlslEffectReadError.js.map
|