@carbonenginejs/runtime-resource 0.12.2 → 0.14.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/README.md +21 -0
- package/dist/CjsResMan.js +393 -29
- package/dist/CjsResMan.js.map +1 -1
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js +165 -118
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -0
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js.map +1 -0
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +7 -113
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectRecords.js +258 -66
- package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -0
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -0
- package/dist/format/effect/effectBodyInventory.js +146 -0
- package/dist/format/effect/effectBodyInventory.js.map +1 -0
- package/dist/format/effect/effectPermutationGraph.js +13 -13
- package/dist/format/effect/effectPermutationGraph.js.map +1 -1
- package/dist/format/index.js +4 -4
- package/dist/formats/black/CjsBlackFormat.js +19 -1
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/bnk/CjsBnkFormat.js +28 -9
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/busNodes.js +252 -0
- package/dist/formats/bnk/core/busNodes.js.map +1 -0
- package/dist/formats/bnk/core/effectNodes.js +147 -0
- package/dist/formats/bnk/core/effectNodes.js.map +1 -0
- package/dist/formats/bnk/core/eventAction.js +135 -24
- package/dist/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/formats/bnk/core/globalSettings.js +215 -0
- package/dist/formats/bnk/core/globalSettings.js.map +1 -0
- package/dist/formats/bnk/core/helpers.js +37 -5
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +43 -19
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/nodeBase.js +28 -7
- package/dist/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/formats/dds/core/helpers.js +40 -1
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dxbc/CjsDxbcFormat.js +45 -0
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/formats/dxbc/core/disassemble.js +240 -0
- package/dist/formats/dxbc/core/disassemble.js.map +1 -0
- package/dist/formats/gltf/CjsGltfFormat.js +1 -39
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +1 -21
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/hlsl/CjsHlslFormat.js +0 -21
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +118 -49
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -0
- package/dist/formats/hlsl/core/detailMapFamily.js.map +1 -0
- package/dist/formats/hlsl/core/localLightFamily.js +133 -0
- package/dist/formats/hlsl/core/localLightFamily.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +79 -73
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +8 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +11 -691
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -1
- package/dist/formats/index.js +4 -2
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/obj/CjsObjFormat.js +1 -22
- package/dist/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/formats/obj/core/helpers.js +1 -21
- package/dist/formats/obj/core/helpers.js.map +1 -1
- package/dist/formats/pickle/CjsPickleFormat.js +214 -0
- package/dist/formats/pickle/CjsPickleFormat.js.map +1 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -0
- package/dist/formats/pickle/index.js +2 -0
- package/dist/formats/pickle/index.js.map +1 -0
- package/dist/formats/red/core/redGraph.js +11 -8
- package/dist/formats/red/core/redGraph.js.map +1 -1
- package/dist/formats/stl/CjsStlFormat.js +1 -46
- package/dist/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/formats/stl/core/helpers.js +1 -21
- package/dist/formats/stl/core/helpers.js.map +1 -1
- package/dist/formats/webgl/CjsWebglFormat.js +33 -55
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -0
- package/dist/formats/webgl/core/buildGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +216 -108
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/errors.js +1 -1
- package/dist/formats/webgl/core/errors.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +166 -24
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +63 -5
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -0
- package/dist/formats/webgl/core/glsl/packedLightFixups.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -0
- package/dist/formats/webgl/core/glslBackendBlock.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js.map +1 -0
- package/dist/formats/webgl/core/{cewgCompleteness.js → glslEffectCompleteness.js} +12 -8
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +33 -172
- package/dist/formats/webgl/core/helpers.js.map +1 -1
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -0
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js +249 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js +15 -15
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +37 -145
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -1
- package/dist/formats/webgpu/core/{cewgpu/CewgpuContainer.js → carbonWebgpu/CarbonWebgpuContainer.js} +13 -27
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/containerViews.js +1 -1
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/validateContainer.js +4 -4
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js +18 -18
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/formats/webgpu/core/errors.js +1 -1
- package/dist/formats/webgpu/core/errors.js.map +1 -1
- package/dist/formats/webgpu/core/helpers.js +22 -22
- package/dist/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/formats/webgpu/core/packageEffect.js +11 -15
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/formats/webgpu/core/packageEffectSelection.js +1 -1
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +23 -23
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +6 -6
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/formats/yaml/CjsYamlFormat.js +3 -3
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +4 -6
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +27 -1
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsLoadingObject.js +19 -0
- package/dist/resource/CjsLoadingObject.js.map +1 -0
- package/dist/resource/CjsResource.js +4 -0
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/ResourceHandlerMode.js +14 -0
- package/dist/resource/ResourceHandlerMode.js.map +1 -0
- package/dist/resource/index.js +2 -0
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/shader/Tr2EffectRes.js +118 -213
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- package/dist/resource/shader/Tr2Shader.js +37 -15
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +37 -29
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +39 -34
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +51 -30
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +45 -25
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +51 -17
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +219 -88
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +28 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +96 -39
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -0
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -0
- package/dist/resource/shader/reflection/shaderStage.js +22 -0
- package/dist/resource/shader/reflection/shaderStage.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +68 -10
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/worker/CjsResManMainThreadLoader.js +9 -7
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/worker/CjsResManWorker.js +5 -4
- package/dist/worker/CjsResManWorker.js.map +1 -1
- package/dist/worker/CjsResManWorkerLoader.js +9 -6
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -1
- package/docs/README.md +2 -2
- package/docs/architecture.md +12 -3
- package/docs/concepts/resource-lifecycle.md +9 -8
- package/docs/concepts/shader-resource-model.md +14 -17
- package/docs/concepts/writing-an-engine-adapter.md +1 -1
- package/docs/formats/README.md +4 -2
- package/docs/formats/carbon-effect-container.md +127 -26
- package/docs/formats/dxbc/architecture.md +1 -1
- package/docs/formats/dxbc/reference/api.md +28 -0
- package/docs/formats/hlsl/README.md +3 -3
- package/docs/formats/hlsl/architecture.md +8 -9
- package/docs/formats/hlsl/guides/hydrating-json-output.md +3 -5
- package/docs/formats/hlsl/guides/reading-effects.md +5 -1
- package/docs/formats/hlsl/reference/advanced-analysis.md +20 -25
- package/docs/formats/hlsl/reference/api.md +0 -7
- package/docs/formats/hlsl/reference/json-graph.md +1 -4
- package/docs/formats/pickle.md +82 -0
- package/docs/formats/webgl/README.md +71 -13
- package/docs/formats/webgl/architecture.md +16 -17
- package/docs/formats/webgl/carbon-constant-layouts.md +3 -3
- package/docs/formats/webgl/decl-io.md +3 -3
- package/docs/formats/webgl/memory-structured.md +27 -8
- package/docs/formats/webgl/texture-sample.md +1 -1
- package/docs/formats/webgpu/README.md +3 -3
- package/docs/formats/webgpu/architecture.md +5 -6
- package/docs/formats/webgpu/formats/{cewgpu.md → carbon-webgpu.md} +10 -11
- package/docs/formats/webgpu/guides/effect-packaging.md +6 -8
- package/docs/formats/webgpu/reference/api.md +11 -12
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +11 -8
- package/docs/formats/wwise.md +63 -2
- package/docs/reference/classes/core.md +10 -0
- package/docs/reference/classes/formats.md +40 -48
- package/docs/reference/classes/resources.md +2 -2
- package/docs/reference/queues.md +88 -4
- package/docs/reference/workers.md +7 -0
- package/package.json +61 -61
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +0 -372
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +0 -1
- package/dist/format/effect/effectReflectionPackage.js +0 -636
- package/dist/format/effect/effectReflectionPackage.js.map +0 -1
- package/dist/formats/hlsl/core/HlslReader.js +0 -16
- package/dist/formats/hlsl/core/HlslReader.js.map +0 -1
- package/dist/formats/hlsl/core/portableReflection.js +0 -848
- package/dist/formats/hlsl/core/portableReflection.js.map +0 -1
- package/dist/formats/hlsl/portable.js +0 -2
- package/dist/formats/hlsl/portable.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackage.js +0 -340
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +0 -104
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +0 -1
- package/dist/formats/webgl/core/cewg/binary.js +0 -19
- package/dist/formats/webgl/core/cewg/binary.js.map +0 -1
- package/dist/formats/webgl/core/cewgCompleteness.js.map +0 -1
- package/dist/formats/webgl/core/effectPackageValidation.js +0 -331
- package/dist/formats/webgl/core/effectPackageValidation.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +0 -1
- package/dist/resource/shader/portable.js +0 -33
- package/dist/resource/shader/portable.js.map +0 -1
- package/docs/formats/hlsl/reference/portable-reflection.md +0 -141
- package/docs/formats/webgl/effect-reflection.md +0 -127
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"effectReflectionPackage.js","sources":["../../../../src/format/effect/effectReflectionPackage.js"],"sourcesContent":["import {\n buildEffectBodyReflection,\n EFFECT_BODY_REFLECTION_FORMAT,\n EFFECT_BODY_REFLECTION_VERSION,\n enumerateUniqueEffectBodies,\n validateEffectBodyReflection\n} from \"../../formats/hlsl/portable.js\";\n\nimport { sha256Bytes, sha256Utf8 } from \"./sha256.js\";\n\nexport const EFFECT_REFLECTION_CHUNK = \"RFLX\";\nexport const EFFECT_REFLECTION_BLOB_CHUNK = \"RBLB\";\nexport const EFFECT_REFLECTION_FORMAT = \"CJS_EFFECT_REFLECTION\";\nexport const EFFECT_REFLECTION_VERSION = 2;\n\nconst SHA256 = /^[0-9a-f]{64}$/u;\nconst SELECTED_EFFECT_REFLECTION_VERSION = 1;\n\n/**\n * Build selected-body source reflection plus its deduplicated binary store.\n *\n * @param {object} effectRes Loaded format-hlsl Tr2EffectRes.\n * @param {number} permutationIndex Exact selected permutation-table index.\n * @param {object} permutationGraph Complete source PGRF document.\n * @param {object} options Source identity and diagnostic label.\n * @param {object} options.sourceIdentity Canonical INFO source identity.\n * @param {string} options.sourcePath Diagnostic INFO/META/ANLS source label.\n * @returns {{reflection:object,blobBytes:Uint8Array,pointer:object,counts:object}}\n * Frozen reflection documents and owned blob bytes.\n */\nexport function buildSelectedEffectReflection(\n effectRes,\n permutationIndex,\n permutationGraph,\n options\n)\n{\n const portable = buildEffectBodyReflection(effectRes, permutationIndex);\n const portableCounts = validateEffectBodyReflection(portable);\n const sourceBytes = effectRes.m_data;\n if (!(sourceBytes instanceof Uint8Array)\n || options?.sourceIdentity?.byteLength !== sourceBytes.byteLength\n || options?.sourceIdentity?.sha256 !== sha256Bytes(sourceBytes))\n {\n throw new Error(\n \"Selected effect reflection source identity disagrees with exact source bytes\"\n );\n }\n const store = new ReflectionBlobStore();\n const source = {\n label: portable.source.label,\n effectVersion: portable.source.effectVersion,\n compilerVersion: portable.source.compilerVersion,\n nativeHash: store.add(portable.source.nativeHash),\n stringTableByteLength: portable.source.stringTableByteLength,\n byteLength: portable.source.byteLength,\n sha256: options?.sourceIdentity?.sha256\n };\n const effect = packByteArrays(portable.effect, store);\n const blobBytes = store.finish();\n const variant = selectedVariant(permutationGraph, permutationIndex);\n const body = selectedBody(permutationGraph, variant.bodyKey);\n const exactBodyBytes = sourceBytes.subarray(\n portable.sourceRecord.offset,\n portable.sourceRecord.offset + portable.sourceRecord.byteLength\n );\n if (body.byteLength !== exactBodyBytes.byteLength\n || body.sha256 !== sha256Bytes(exactBodyBytes))\n {\n throw new Error(\n \"Selected effect reflection PGRF body identity disagrees with exact source bytes\"\n );\n }\n const reflection = {\n format: EFFECT_REFLECTION_FORMAT,\n formatVersion: SELECTED_EFFECT_REFLECTION_VERSION,\n portableFormat: EFFECT_BODY_REFLECTION_FORMAT,\n portableFormatVersion: EFFECT_BODY_REFLECTION_VERSION,\n keyScope: portable.keyScope,\n coverage: {\n bodies: \"selected\",\n reflection: \"complete-for-listed\",\n sourcePrograms: \"complete-for-listed\",\n constantDefaults: \"exact-for-listed\"\n },\n selectedBody: {\n permutationIndex,\n bodyKey: variant.bodyKey,\n sourceRecord: {\n offset: portable.sourceRecord.offset,\n byteLength: portable.sourceRecord.byteLength\n },\n byteLength: body.byteLength,\n sha256: body.sha256\n },\n source,\n effect,\n blobStore: {\n chunk: EFFECT_REFLECTION_BLOB_CHUNK,\n byteLength: blobBytes.byteLength,\n sha256: sha256Bytes(blobBytes),\n blobCount: store.entries.length,\n blobs: store.entries.map((entry) => ({ ...entry }))\n }\n };\n const counts = validateSelectedEffectReflection(\n reflection,\n blobBytes,\n {\n permutationGraph,\n permutationIndex,\n sourceIdentity: options?.sourceIdentity,\n sourcePath: options?.sourcePath\n }\n );\n if (counts.sourceProgramCount !== portableCounts.sourceProgramCount)\n {\n throw new Error(\n \"Selected effect reflection source-program count changed while packing\"\n );\n }\n const pointer = {\n chunk: EFFECT_REFLECTION_CHUNK,\n format: EFFECT_REFLECTION_FORMAT,\n formatVersion: SELECTED_EFFECT_REFLECTION_VERSION,\n blobChunk: EFFECT_REFLECTION_BLOB_CHUNK,\n bodyCount: 1,\n sourceProgramCount: counts.sourceProgramCount,\n blobCount: counts.blobCount,\n blobByteLength: counts.blobByteLength\n };\n\n return Object.freeze({\n reflection: deepFreeze(reflection),\n blobBytes,\n pointer: Object.freeze(pointer),\n counts\n });\n}\n\n/**\n * Build complete unique-body source reflection plus one deduplicated byte\n * arena while retaining body-local portable keys.\n *\n * @param {object} effectRes Loaded format-hlsl Tr2EffectRes.\n * @param {object} permutationGraph Complete source PGRF document.\n * @param {object} options Source identity and diagnostic label.\n * @param {object} options.sourceIdentity Canonical INFO source identity.\n * @param {string} options.sourcePath Diagnostic INFO/META/ANLS source label.\n * @returns {{reflection:object,blobBytes:Uint8Array,pointer:object,counts:object}}\n * Frozen all-unique reflection documents and owned blob bytes.\n */\nexport function buildCompleteEffectReflection(\n effectRes,\n permutationGraph,\n options\n)\n{\n const sourceBytes = effectRes?.m_data;\n if (!(sourceBytes instanceof Uint8Array)\n || options?.sourceIdentity?.byteLength !== sourceBytes.byteLength\n || options?.sourceIdentity?.sha256 !== sha256Bytes(sourceBytes))\n {\n throw new Error(\n \"Complete effect reflection source identity disagrees with exact source bytes\"\n );\n }\n\n const inventory = enumerateUniqueEffectBodies(effectRes);\n if (inventory.length !== permutationGraph?.bodies?.length)\n {\n throw new Error(\n \"Complete effect reflection body inventory disagrees with PGRF\"\n );\n }\n\n const store = new ReflectionBlobStore();\n let source = null;\n const bodies = inventory.map((group, bodyIndex) =>\n {\n const graphBody = permutationGraph.bodies[bodyIndex];\n const representative = selectedVariant(\n permutationGraph,\n group.permutationIndex\n );\n if (representative.bodyKey !== graphBody?.key\n || group.variants.some((variant) =>\n {\n const graphVariant = selectedVariant(\n permutationGraph,\n variant.permutationIndex\n );\n return graphVariant.bodyKey !== graphBody.key\n || graphVariant.sourceRecord.offset\n !== variant.sourceRecord.offset\n || graphVariant.sourceRecord.byteLength\n !== variant.sourceRecord.byteLength;\n }))\n {\n throw new Error(\n `Complete effect reflection body ${bodyIndex} aliases disagree with PGRF`\n );\n }\n\n const portable = buildEffectBodyReflection(\n effectRes,\n group.permutationIndex\n );\n if (portable.sourceRecord.offset !== group.sourceRecord.offset\n || portable.sourceRecord.byteLength !== group.sourceRecord.byteLength)\n {\n throw new Error(\n `Complete effect reflection body ${bodyIndex} source record changed`\n );\n }\n if (!source)\n {\n source = {\n label: portable.source.label,\n effectVersion: portable.source.effectVersion,\n compilerVersion: portable.source.compilerVersion,\n nativeHash: store.add(portable.source.nativeHash),\n stringTableByteLength: portable.source.stringTableByteLength,\n byteLength: portable.source.byteLength,\n sha256: options.sourceIdentity.sha256\n };\n }\n else if (!samePortableSource(source, portable.source, store))\n {\n throw new Error(\n `Complete effect reflection body ${bodyIndex} source envelope changed`\n );\n }\n\n const exactBodyBytes = sourceBytes.subarray(\n portable.sourceRecord.offset,\n portable.sourceRecord.offset + portable.sourceRecord.byteLength\n );\n if (graphBody.byteLength !== exactBodyBytes.byteLength\n || graphBody.sha256 !== sha256Bytes(exactBodyBytes))\n {\n throw new Error(\n `Complete effect reflection body ${bodyIndex} identity disagrees with PGRF`\n );\n }\n return {\n bodyKey: graphBody.key,\n representativePermutationIndex: group.permutationIndex,\n byteLength: graphBody.byteLength,\n sha256: graphBody.sha256,\n effect: packByteArrays(portable.effect, store)\n };\n });\n const blobBytes = store.finish();\n const reflection = {\n format: EFFECT_REFLECTION_FORMAT,\n formatVersion: EFFECT_REFLECTION_VERSION,\n portableFormat: EFFECT_BODY_REFLECTION_FORMAT,\n portableFormatVersion: EFFECT_BODY_REFLECTION_VERSION,\n keyScope: \"body-local\",\n coverage: {\n bodies: \"all-unique\",\n reflection: \"complete-for-listed\",\n sourcePrograms: \"complete-for-listed\",\n constantDefaults: \"exact-for-listed\"\n },\n source,\n bodies,\n blobStore: {\n chunk: EFFECT_REFLECTION_BLOB_CHUNK,\n byteLength: blobBytes.byteLength,\n sha256: sha256Bytes(blobBytes),\n blobCount: store.entries.length,\n blobs: store.entries.map((entry) => ({ ...entry }))\n }\n };\n const counts = validateCompleteEffectReflection(\n reflection,\n blobBytes,\n {\n permutationGraph,\n sourceIdentity: options.sourceIdentity,\n sourcePath: options.sourcePath\n }\n );\n const pointer = {\n chunk: EFFECT_REFLECTION_CHUNK,\n format: EFFECT_REFLECTION_FORMAT,\n formatVersion: EFFECT_REFLECTION_VERSION,\n blobChunk: EFFECT_REFLECTION_BLOB_CHUNK,\n sha256: sha256Utf8(`${JSON.stringify(reflection)}\\n`),\n coverage: \"all-unique\",\n permutationCount: permutationGraph.variants.length,\n bodyCount: counts.bodyCount,\n sourceProgramCount: counts.sourceProgramCount,\n blobCount: counts.blobCount,\n blobByteLength: counts.blobByteLength\n };\n\n return Object.freeze({\n reflection: deepFreeze(reflection),\n blobBytes,\n pointer: Object.freeze(pointer),\n counts\n });\n}\n\n/**\n * Validate selected-body reflection against its binary store, PGRF, and INFO\n * source identity.\n *\n * @param {object} reflection Parsed RFLX document.\n * @param {Uint8Array} blobBytes Raw RBLB chunk bytes.\n * @param {object} options Reconciliation context.\n * @param {object} options.permutationGraph Validated complete PGRF document.\n * @param {number} options.permutationIndex Package-selected permutation index.\n * @param {object} options.sourceIdentity Validated INFO source identity.\n * @param {string} options.sourcePath Validated INFO source label.\n * @returns {{bodyCount:number,sourceProgramCount:number,blobCount:number,blobByteLength:number}}\n * Validated selected reflection counts.\n */\nexport function validateSelectedEffectReflection(\n reflection,\n blobBytes,\n options\n)\n{\n requireExactKeys(reflection, [\n \"format\",\n \"formatVersion\",\n \"portableFormat\",\n \"portableFormatVersion\",\n \"keyScope\",\n \"coverage\",\n \"selectedBody\",\n \"source\",\n \"effect\",\n \"blobStore\"\n ], \"CEWGPU RFLX\");\n requireExactKeys(reflection.coverage, [\n \"bodies\",\n \"reflection\",\n \"sourcePrograms\",\n \"constantDefaults\"\n ], \"CEWGPU RFLX.coverage\");\n if (reflection.format !== EFFECT_REFLECTION_FORMAT\n || reflection.formatVersion !== SELECTED_EFFECT_REFLECTION_VERSION\n || reflection.portableFormat !== EFFECT_BODY_REFLECTION_FORMAT\n || reflection.portableFormatVersion !== EFFECT_BODY_REFLECTION_VERSION\n || reflection.keyScope !== \"body-local\"\n || reflection.coverage.bodies !== \"selected\"\n || reflection.coverage.reflection !== \"complete-for-listed\"\n || reflection.coverage.sourcePrograms !== \"complete-for-listed\"\n || reflection.coverage.constantDefaults !== \"exact-for-listed\")\n {\n throw new Error(\"CEWGPU RFLX schema or coverage is unsupported\");\n }\n\n const graph = requireRecord(\n options?.permutationGraph,\n \"CEWGPU RFLX permutation graph\"\n );\n const sourceIdentity = requireRecord(\n options?.sourceIdentity,\n \"CEWGPU RFLX source identity\"\n );\n const sourcePath = requireString(\n options?.sourcePath,\n \"CEWGPU RFLX sourcePath\"\n );\n const selected = requireRecord(\n reflection.selectedBody,\n \"CEWGPU RFLX.selectedBody\"\n );\n requireExactKeys(selected, [\n \"permutationIndex\",\n \"bodyKey\",\n \"sourceRecord\",\n \"byteLength\",\n \"sha256\"\n ], \"CEWGPU RFLX.selectedBody\");\n requireUint(selected.permutationIndex, \"CEWGPU RFLX selected permutationIndex\");\n if (selected.permutationIndex !== options?.permutationIndex)\n {\n throw new Error(\"CEWGPU RFLX selected body disagrees with META\");\n }\n requireString(selected.bodyKey, \"CEWGPU RFLX selected bodyKey\");\n requireUint(selected.byteLength, \"CEWGPU RFLX selected byteLength\", true);\n requireSha256(selected.sha256, \"CEWGPU RFLX selected sha256\");\n const sourceRecord = requireRecord(\n selected.sourceRecord,\n \"CEWGPU RFLX selected sourceRecord\"\n );\n requireExactKeys(\n sourceRecord,\n [ \"offset\", \"byteLength\" ],\n \"CEWGPU RFLX selected sourceRecord\"\n );\n requireUint(sourceRecord.offset, \"CEWGPU RFLX selected sourceRecord offset\");\n requireUint(\n sourceRecord.byteLength,\n \"CEWGPU RFLX selected sourceRecord byteLength\",\n true\n );\n\n const variant = selectedVariant(graph, selected.permutationIndex);\n const body = selectedBody(graph, selected.bodyKey);\n if (variant.bodyKey !== selected.bodyKey\n || variant.sourceRecord.offset !== sourceRecord.offset\n || variant.sourceRecord.byteLength !== sourceRecord.byteLength\n || selected.byteLength !== body.byteLength\n || sourceRecord.byteLength !== body.byteLength\n || selected.sha256 !== body.sha256)\n {\n throw new Error(\"CEWGPU RFLX selected body disagrees with PGRF\");\n }\n\n const source = requireRecord(reflection.source, \"CEWGPU RFLX.source\");\n requireExactKeys(source, [\n \"label\",\n \"effectVersion\",\n \"compilerVersion\",\n \"nativeHash\",\n \"stringTableByteLength\",\n \"byteLength\",\n \"sha256\"\n ], \"CEWGPU RFLX.source\");\n if (source.label !== sourcePath\n || source.byteLength !== sourceIdentity.byteLength\n || source.sha256 !== sourceIdentity.sha256)\n {\n throw new Error(\"CEWGPU RFLX source identity disagrees with INFO\");\n }\n requireSha256(source.sha256, \"CEWGPU RFLX source sha256\");\n\n const blobInventory = validateBlobStore(reflection.blobStore, blobBytes);\n const usedBlobKeys = new Set();\n const portable = {\n format: reflection.portableFormat,\n formatVersion: reflection.portableFormatVersion,\n mode: \"single-body\",\n keyScope: reflection.keyScope,\n coverage: {\n bodies: \"single\",\n reflection: \"complete\",\n sourcePrograms: \"complete\",\n constantDefaults: \"exact\"\n },\n source: {\n label: source.label,\n effectVersion: source.effectVersion,\n compilerVersion: source.compilerVersion,\n nativeHash: unpackBlobReference(\n source.nativeHash,\n blobInventory,\n blobBytes,\n usedBlobKeys\n ),\n stringTableByteLength: source.stringTableByteLength,\n byteLength: source.byteLength\n },\n permutationIndex: selected.permutationIndex,\n sourceRecord: {\n offset: sourceRecord.offset,\n byteLength: sourceRecord.byteLength\n },\n effect: unpackByteReferences(\n reflection.effect,\n blobInventory,\n blobBytes,\n usedBlobKeys\n )\n };\n const portableCounts = validateEffectBodyReflection(portable);\n if (usedBlobKeys.size !== blobInventory.size)\n {\n throw new Error(\"CEWGPU RFLX blob store contains unreferenced payloads\");\n }\n\n return Object.freeze({\n bodyCount: 1,\n sourceProgramCount: portableCounts.sourceProgramCount,\n blobCount: blobInventory.size,\n blobByteLength: blobBytes.byteLength\n });\n}\n\n/**\n * Validate complete unique-body reflection against PGRF and its shared byte\n * arena.\n *\n * @param {object} reflection Parsed RFLX v2 document.\n * @param {Uint8Array} blobBytes Raw RBLB bytes.\n * @param {object} options Reconciliation context.\n * @param {object} options.permutationGraph Validated complete PGRF document.\n * @param {object} options.sourceIdentity Validated INFO source identity.\n * @param {string} options.sourcePath Validated INFO source label.\n * @returns {{permutationCount:number,bodyCount:number,sourceProgramCount:number,blobCount:number,blobByteLength:number}}\n * Validated complete source-reflection counts.\n */\nexport function validateCompleteEffectReflection(\n reflection,\n blobBytes,\n options\n)\n{\n requireExactKeys(reflection, [\n \"format\",\n \"formatVersion\",\n \"portableFormat\",\n \"portableFormatVersion\",\n \"keyScope\",\n \"coverage\",\n \"source\",\n \"bodies\",\n \"blobStore\"\n ], \"CEWGPU RFLX\");\n requireExactKeys(reflection.coverage, [\n \"bodies\",\n \"reflection\",\n \"sourcePrograms\",\n \"constantDefaults\"\n ], \"CEWGPU RFLX.coverage\");\n if (reflection.format !== EFFECT_REFLECTION_FORMAT\n || reflection.formatVersion !== EFFECT_REFLECTION_VERSION\n || reflection.portableFormat !== EFFECT_BODY_REFLECTION_FORMAT\n || reflection.portableFormatVersion !== EFFECT_BODY_REFLECTION_VERSION\n || reflection.keyScope !== \"body-local\"\n || reflection.coverage.bodies !== \"all-unique\"\n || reflection.coverage.reflection !== \"complete-for-listed\"\n || reflection.coverage.sourcePrograms !== \"complete-for-listed\"\n || reflection.coverage.constantDefaults !== \"exact-for-listed\"\n || !Array.isArray(reflection.bodies))\n {\n throw new Error(\"CEWGPU RFLX schema or coverage is unsupported\");\n }\n\n const graph = requireRecord(\n options?.permutationGraph,\n \"CEWGPU RFLX permutation graph\"\n );\n const sourceIdentity = requireRecord(\n options?.sourceIdentity,\n \"CEWGPU RFLX source identity\"\n );\n const sourcePath = requireString(\n options?.sourcePath,\n \"CEWGPU RFLX sourcePath\"\n );\n if (reflection.bodies.length !== graph.bodies?.length)\n {\n throw new Error(\"CEWGPU RFLX does not cover every PGRF body\");\n }\n\n const source = requireRecord(reflection.source, \"CEWGPU RFLX.source\");\n requireExactKeys(source, [\n \"label\",\n \"effectVersion\",\n \"compilerVersion\",\n \"nativeHash\",\n \"stringTableByteLength\",\n \"byteLength\",\n \"sha256\"\n ], \"CEWGPU RFLX.source\");\n if (source.label !== sourcePath\n || source.byteLength !== sourceIdentity.byteLength\n || source.sha256 !== sourceIdentity.sha256)\n {\n throw new Error(\"CEWGPU RFLX source identity disagrees with INFO\");\n }\n requireSha256(source.sha256, \"CEWGPU RFLX source sha256\");\n\n const blobInventory = validateBlobStore(reflection.blobStore, blobBytes);\n const usedBlobKeys = new Set();\n const nativeHash = unpackBlobReference(\n source.nativeHash,\n blobInventory,\n blobBytes,\n usedBlobKeys\n );\n const representativeByBodyKey = new Map();\n for (const variant of graph.variants)\n {\n if (!representativeByBodyKey.has(variant.bodyKey))\n {\n representativeByBodyKey.set(variant.bodyKey, variant);\n }\n }\n let sourceProgramCount = 0;\n for (const [ bodyIndex, reflectedBody ] of reflection.bodies.entries())\n {\n requireExactKeys(reflectedBody, [\n \"bodyKey\",\n \"representativePermutationIndex\",\n \"byteLength\",\n \"sha256\",\n \"effect\"\n ], `CEWGPU RFLX body ${bodyIndex}`);\n const graphBody = graph.bodies[bodyIndex];\n requireString(reflectedBody.bodyKey, `CEWGPU RFLX body ${bodyIndex} key`);\n requireUint(\n reflectedBody.representativePermutationIndex,\n `CEWGPU RFLX body ${bodyIndex} representative`\n );\n requireUint(\n reflectedBody.byteLength,\n `CEWGPU RFLX body ${bodyIndex} byteLength`,\n true\n );\n requireSha256(\n reflectedBody.sha256,\n `CEWGPU RFLX body ${bodyIndex} sha256`\n );\n const representative = representativeByBodyKey.get(\n reflectedBody.bodyKey\n );\n if (!graphBody\n || reflectedBody.bodyKey !== graphBody.key\n || reflectedBody.byteLength !== graphBody.byteLength\n || reflectedBody.sha256 !== graphBody.sha256\n || !representative\n || reflectedBody.representativePermutationIndex\n !== representative.permutationIndex)\n {\n throw new Error(\n `CEWGPU RFLX body ${bodyIndex} disagrees with PGRF`\n );\n }\n const portable = {\n format: reflection.portableFormat,\n formatVersion: reflection.portableFormatVersion,\n mode: \"single-body\",\n keyScope: reflection.keyScope,\n coverage: {\n bodies: \"single\",\n reflection: \"complete\",\n sourcePrograms: \"complete\",\n constantDefaults: \"exact\"\n },\n source: {\n label: source.label,\n effectVersion: source.effectVersion,\n compilerVersion: source.compilerVersion,\n nativeHash: Uint8Array.from(nativeHash),\n stringTableByteLength: source.stringTableByteLength,\n byteLength: source.byteLength\n },\n permutationIndex: representative.permutationIndex,\n sourceRecord: { ...representative.sourceRecord },\n effect: unpackByteReferences(\n reflectedBody.effect,\n blobInventory,\n blobBytes,\n usedBlobKeys\n )\n };\n sourceProgramCount += validateEffectBodyReflection(portable)\n .sourceProgramCount;\n }\n if (usedBlobKeys.size !== blobInventory.size)\n {\n throw new Error(\"CEWGPU RFLX blob store contains unreferenced payloads\");\n }\n\n return Object.freeze({\n permutationCount: graph.variants.length,\n bodyCount: reflection.bodies.length,\n sourceProgramCount,\n blobCount: blobInventory.size,\n blobByteLength: blobBytes.byteLength\n });\n}\n\n/**\n * Validate an INFO reflection pointer against parsed RFLX/RBLB payloads.\n *\n * @param {object} pointer INFO reflection pointer.\n * @param {object} reflection Parsed RFLX document.\n * @param {Uint8Array} blobBytes Raw RBLB bytes.\n * @param {object} options Reconciliation context for RFLX.\n * @param {Uint8Array} [options.reflectionBytes] Exact RFLX chunk bytes for v2.\n * @returns {object} Validated reflection counts.\n */\nexport function validateEffectReflectionPointer(\n pointer,\n reflection,\n blobBytes,\n options\n)\n{\n const version = pointer?.formatVersion;\n requireExactKeys(pointer, version === EFFECT_REFLECTION_VERSION ? [\n \"chunk\",\n \"format\",\n \"formatVersion\",\n \"blobChunk\",\n \"sha256\",\n \"coverage\",\n \"permutationCount\",\n \"bodyCount\",\n \"sourceProgramCount\",\n \"blobCount\",\n \"blobByteLength\"\n ] : [\n \"chunk\",\n \"format\",\n \"formatVersion\",\n \"blobChunk\",\n \"bodyCount\",\n \"sourceProgramCount\",\n \"blobCount\",\n \"blobByteLength\"\n ], \"CEWGPU INFO.effectReflection\");\n if (pointer.chunk !== EFFECT_REFLECTION_CHUNK\n || pointer.format !== EFFECT_REFLECTION_FORMAT\n || ![\n SELECTED_EFFECT_REFLECTION_VERSION,\n EFFECT_REFLECTION_VERSION\n ].includes(version)\n || pointer.blobChunk !== EFFECT_REFLECTION_BLOB_CHUNK)\n {\n throw new Error(\"CEWGPU INFO.effectReflection is malformed\");\n }\n for (const field of [\n \"bodyCount\",\n \"sourceProgramCount\",\n \"blobCount\",\n \"blobByteLength\"\n ])\n {\n requireUint(pointer[field], `CEWGPU INFO.effectReflection.${field}`);\n }\n\n let counts;\n if (version === EFFECT_REFLECTION_VERSION)\n {\n requireSha256(pointer.sha256, \"CEWGPU INFO.effectReflection.sha256\");\n if (!(options?.reflectionBytes instanceof Uint8Array)\n || sha256Bytes(options.reflectionBytes) !== pointer.sha256)\n {\n throw new Error(\n \"CEWGPU INFO effect-reflection digest disagrees with RFLX\"\n );\n }\n if (pointer.coverage !== \"all-unique\")\n {\n throw new Error(\"CEWGPU INFO.effectReflection is malformed\");\n }\n requireUint(\n pointer.permutationCount,\n \"CEWGPU INFO.effectReflection.permutationCount\",\n true\n );\n counts = validateCompleteEffectReflection(\n reflection,\n blobBytes,\n options\n );\n if (pointer.permutationCount !== counts.permutationCount)\n {\n throw new Error(\n \"CEWGPU INFO effect-reflection counts disagree with RFLX/RBLB\"\n );\n }\n }\n else\n {\n counts = validateSelectedEffectReflection(\n reflection,\n blobBytes,\n options\n );\n }\n if (pointer.bodyCount !== counts.bodyCount\n || pointer.sourceProgramCount !== counts.sourceProgramCount\n || pointer.blobCount !== counts.blobCount\n || pointer.blobByteLength !== counts.blobByteLength)\n {\n throw new Error(\"CEWGPU INFO effect-reflection counts disagree with RFLX/RBLB\");\n }\n return counts;\n}\n\n/**\n * Selects the body-local reflected effect for one PGRF permutation.\n *\n * @param {object} reflection Validated RFLX v1 or v2 document.\n * @param {object} permutationGraph Validated PGRF document.\n * @param {number} permutationIndex Exact package-selected permutation index.\n * @returns {object} Reflected body-local effect graph.\n */\nexport function effectReflectionForPermutation(\n reflection,\n permutationGraph,\n permutationIndex\n)\n{\n const variant = selectedVariant(permutationGraph, permutationIndex);\n if (reflection?.formatVersion === SELECTED_EFFECT_REFLECTION_VERSION)\n {\n if (reflection.selectedBody?.permutationIndex !== permutationIndex\n || reflection.selectedBody?.bodyKey !== variant.bodyKey)\n {\n throw new Error(\"CEWGPU selected RFLX body disagrees with PGRF\");\n }\n return requireRecord(reflection.effect, \"CEWGPU RFLX.effect\");\n }\n if (reflection?.formatVersion === EFFECT_REFLECTION_VERSION)\n {\n const body = reflection.bodies?.find((entry) =>\n entry.bodyKey === variant.bodyKey);\n return requireRecord(body?.effect, \"CEWGPU RFLX selected effect\");\n }\n throw new Error(\"CEWGPU RFLX schema or coverage is unsupported\");\n}\n\n/**\n * Hydrates one package permutation into the validated portable reflection\n * contract owned by format-hlsl.\n *\n * @param {object} reflection Validated RFLX v1 or v2 document.\n * @param {object} permutationGraph Validated PGRF document.\n * @param {number} permutationIndex Exact package permutation index.\n * @param {(reference:object)=>Uint8Array|null} resolveBlob Exact RBLB resolver.\n * @returns {object} Fresh portable single-body reflection with owned bytes.\n */\nexport function hydrateEffectReflectionForPermutation(\n reflection,\n permutationGraph,\n permutationIndex,\n resolveBlob\n)\n{\n if (typeof resolveBlob !== \"function\")\n {\n throw new TypeError(\"CEWGPU reflection blob resolver must be a function\");\n }\n const variant = selectedVariant(permutationGraph, permutationIndex);\n const selected = reflection?.formatVersion\n === SELECTED_EFFECT_REFLECTION_VERSION\n ? reflection.selectedBody\n : variant;\n const cache = new Map();\n const portable = {\n format: reflection?.portableFormat,\n formatVersion: reflection?.portableFormatVersion,\n mode: \"single-body\",\n keyScope: reflection?.keyScope,\n coverage: {\n bodies: \"single\",\n reflection: \"complete\",\n sourcePrograms: \"complete\",\n constantDefaults: \"exact\"\n },\n source: {\n label: reflection?.source?.label,\n effectVersion: reflection?.source?.effectVersion,\n compilerVersion: reflection?.source?.compilerVersion,\n nativeHash: hydrateResolvedBytes(\n reflection?.source?.nativeHash,\n resolveBlob,\n cache\n ),\n stringTableByteLength:\n reflection?.source?.stringTableByteLength,\n byteLength: reflection?.source?.byteLength\n },\n permutationIndex,\n sourceRecord: { ...selected?.sourceRecord },\n effect: hydrateResolvedBytes(\n effectReflectionForPermutation(\n reflection,\n permutationGraph,\n permutationIndex\n ),\n resolveBlob,\n cache\n )\n };\n validateEffectBodyReflection(portable);\n return portable;\n}\n\n/**\n * Builds a deterministic deduplicated byte arena for portable reflection.\n */\nclass ReflectionBlobStore\n{\n /**\n * Initializes an empty first-seen blob inventory.\n */\n constructor()\n {\n this.payloads = [];\n this.entries = [];\n this.byDigest = new Map();\n this.byteLength = 0;\n }\n\n /**\n * Adds exact bytes and returns their canonical immutable reference.\n *\n * @param {Uint8Array} value Portable reflection bytes.\n * @returns {object} Canonical blob reference.\n */\n add(value)\n {\n if (!(value instanceof Uint8Array))\n {\n throw new TypeError(\"Selected effect reflection bytes must be Uint8Array\");\n }\n const bytes = Uint8Array.from(value);\n const sha256 = sha256Bytes(bytes);\n const candidates = this.byDigest.get(sha256) ?? [];\n const existing = candidates.find((candidate) =>\n bytesEqual(candidate.bytes, bytes));\n if (existing)\n {\n return Object.freeze({ ...existing.reference });\n }\n if (candidates.length)\n {\n throw new Error(\"Selected effect reflection SHA-256 collision detected\");\n }\n\n const entry = Object.freeze({\n blobKey: `blob${this.entries.length}`,\n offset: this.byteLength,\n byteLength: bytes.byteLength,\n sha256\n });\n const record = { bytes, reference: entry };\n candidates.push(record);\n this.byDigest.set(sha256, candidates);\n this.payloads.push(bytes);\n this.entries.push(entry);\n this.byteLength += bytes.byteLength;\n return Object.freeze({ ...entry });\n }\n\n /**\n * Materializes the contiguous blob arena in inventory order.\n *\n * @returns {Uint8Array} Owned RBLB payload.\n */\n finish()\n {\n const out = new Uint8Array(this.byteLength);\n let offset = 0;\n for (const bytes of this.payloads)\n {\n out.set(bytes, offset);\n offset += bytes.byteLength;\n }\n return out;\n }\n}\n\nfunction samePortableSource(source, portableSource, store)\n{\n const nativeHash = store.add(portableSource.nativeHash);\n return source.label === portableSource.label\n && source.effectVersion === portableSource.effectVersion\n && source.compilerVersion === portableSource.compilerVersion\n && source.stringTableByteLength === portableSource.stringTableByteLength\n && source.byteLength === portableSource.byteLength\n && source.nativeHash.blobKey === nativeHash.blobKey\n && source.nativeHash.offset === nativeHash.offset\n && source.nativeHash.byteLength === nativeHash.byteLength\n && source.nativeHash.sha256 === nativeHash.sha256;\n}\n\nfunction packByteArrays(value, store)\n{\n if (value instanceof Uint8Array) return store.add(value);\n if (Array.isArray(value))\n {\n return value.map((entry) => packByteArrays(entry, store));\n }\n if (isRecord(value))\n {\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [\n key,\n packByteArrays(entry, store)\n ]));\n }\n return value;\n}\n\nfunction unpackByteReferences(\n value,\n inventory,\n blobBytes,\n usedBlobKeys\n)\n{\n if (isBlobReference(value))\n {\n return unpackBlobReference(\n value,\n inventory,\n blobBytes,\n usedBlobKeys\n );\n }\n if (Array.isArray(value))\n {\n return value.map((entry) =>\n unpackByteReferences(entry, inventory, blobBytes, usedBlobKeys));\n }\n if (isRecord(value))\n {\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [\n key,\n unpackByteReferences(entry, inventory, blobBytes, usedBlobKeys)\n ]));\n }\n return value;\n}\n\nfunction unpackBlobReference(reference, inventory, blobBytes, usedBlobKeys)\n{\n requireExactKeys(reference, [\n \"blobKey\",\n \"offset\",\n \"byteLength\",\n \"sha256\"\n ], \"CEWGPU RFLX blob reference\");\n const entry = inventory.get(reference.blobKey);\n if (!entry\n || reference.offset !== entry.offset\n || reference.byteLength !== entry.byteLength\n || reference.sha256 !== entry.sha256)\n {\n throw new Error(\"CEWGPU RFLX blob reference disagrees with its inventory\");\n }\n usedBlobKeys.add(reference.blobKey);\n return Uint8Array.from(blobBytes.subarray(\n reference.offset,\n reference.offset + reference.byteLength\n ));\n}\n\nfunction validateBlobStore(blobStore, blobBytes)\n{\n requireExactKeys(blobStore, [\n \"chunk\",\n \"byteLength\",\n \"sha256\",\n \"blobCount\",\n \"blobs\"\n ], \"CEWGPU RFLX.blobStore\");\n if (!(blobBytes instanceof Uint8Array))\n {\n throw new Error(\"CEWGPU RBLB must be raw Uint8Array bytes\");\n }\n if (blobStore.chunk !== EFFECT_REFLECTION_BLOB_CHUNK\n || blobStore.byteLength !== blobBytes.byteLength\n || blobStore.sha256 !== sha256Bytes(blobBytes)\n || !Array.isArray(blobStore.blobs)\n || blobStore.blobCount !== blobStore.blobs.length)\n {\n throw new Error(\"CEWGPU RFLX blob-store envelope disagrees with RBLB\");\n }\n requireSha256(blobStore.sha256, \"CEWGPU RFLX blob-store sha256\");\n\n const inventory = new Map();\n const digests = new Set();\n let expectedOffset = 0;\n for (const [ index, entry ] of blobStore.blobs.entries())\n {\n requireExactKeys(entry, [\n \"blobKey\",\n \"offset\",\n \"byteLength\",\n \"sha256\"\n ], `CEWGPU RFLX blob ${index}`);\n if (entry.blobKey !== `blob${index}`)\n {\n throw new Error(`CEWGPU RFLX blob ${index} has a noncanonical key`);\n }\n requireUint(entry.offset, `CEWGPU RFLX blob ${index} offset`);\n requireUint(entry.byteLength, `CEWGPU RFLX blob ${index} byteLength`);\n requireSha256(entry.sha256, `CEWGPU RFLX blob ${index} sha256`);\n const end = entry.offset + entry.byteLength;\n if (entry.offset !== expectedOffset\n || end > blobBytes.byteLength\n || digests.has(entry.sha256)\n || sha256Bytes(blobBytes.subarray(entry.offset, end)) !== entry.sha256)\n {\n throw new Error(`CEWGPU RFLX blob ${index} is malformed or duplicated`);\n }\n inventory.set(entry.blobKey, entry);\n digests.add(entry.sha256);\n expectedOffset = end;\n }\n if (expectedOffset !== blobBytes.byteLength)\n {\n throw new Error(\"CEWGPU RFLX blob inventory does not cover RBLB\");\n }\n return inventory;\n}\n\nfunction selectedVariant(graph, permutationIndex)\n{\n const variant = graph?.variants?.[permutationIndex];\n if (!variant || variant.permutationIndex !== permutationIndex)\n {\n throw new Error(\n `Selected effect reflection body ${permutationIndex} is absent from PGRF`\n );\n }\n return variant;\n}\n\nfunction selectedBody(graph, bodyKey)\n{\n const body = graph?.bodies?.find((entry) => entry.key === bodyKey);\n if (!body)\n {\n throw new Error(`Selected effect reflection body ${bodyKey} is absent from PGRF`);\n }\n return body;\n}\n\nfunction isBlobReference(value)\n{\n return isRecord(value)\n && Object.prototype.hasOwnProperty.call(value, \"blobKey\")\n && Object.prototype.hasOwnProperty.call(value, \"offset\")\n && Object.prototype.hasOwnProperty.call(value, \"byteLength\")\n && Object.prototype.hasOwnProperty.call(value, \"sha256\");\n}\n\nfunction hydrateResolvedBytes(value, resolveBlob, cache)\n{\n if (isBlobReference(value))\n {\n const key = [\n value.blobKey,\n value.offset,\n value.byteLength,\n value.sha256\n ].join(\":\");\n if (!cache.has(key))\n {\n const bytes = resolveBlob(value);\n if (!(bytes instanceof Uint8Array))\n {\n throw new Error(\n `CEWGPU reflection blob ${value.blobKey} is unavailable`\n );\n }\n cache.set(key, bytes);\n }\n return Uint8Array.from(cache.get(key));\n }\n if (Array.isArray(value))\n {\n return value.map((entry) =>\n hydrateResolvedBytes(entry, resolveBlob, cache));\n }\n if (isRecord(value))\n {\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [\n key,\n hydrateResolvedBytes(entry, resolveBlob, cache)\n ]));\n }\n return value;\n}\n\nfunction requireExactKeys(value, allowed, context)\n{\n requireRecord(value, context);\n const keys = Reflect.ownKeys(value);\n if (keys.length !== allowed.length\n || keys.some((key) =>\n typeof key !== \"string\" || !allowed.includes(key)))\n {\n throw new Error(`${context} has unsupported or missing fields`);\n }\n return value;\n}\n\nfunction requireRecord(value, context)\n{\n if (!isRecord(value))\n {\n throw new Error(`${context} must be an object`);\n }\n return value;\n}\n\nfunction requireString(value, context)\n{\n if (typeof value !== \"string\" || !value || value !== value.trim())\n {\n throw new Error(`${context} must be a non-empty string`);\n }\n return value;\n}\n\nfunction requireSha256(value, context)\n{\n if (typeof value !== \"string\" || !SHA256.test(value))\n {\n throw new Error(`${context} must be lowercase SHA-256`);\n }\n return value;\n}\n\nfunction requireUint(value, context, positive = false)\n{\n if (!Number.isSafeInteger(value) || value < (positive ? 1 : 0)\n || value > 0xffffffff)\n {\n throw new Error(`${context} must fit uint32`);\n }\n return value;\n}\n\nfunction isRecord(value)\n{\n return !!value && typeof value === \"object\"\n && !Array.isArray(value) && !ArrayBuffer.isView(value);\n}\n\nfunction bytesEqual(left, right)\n{\n return left.byteLength === right.byteLength\n && left.every((value, index) => value === right[index]);\n}\n\nfunction deepFreeze(value)\n{\n if (!value || typeof value !== \"object\" || Object.isFrozen(value)\n || ArrayBuffer.isView(value))\n {\n return value;\n }\n Object.freeze(value);\n for (const entry of Object.values(value)) deepFreeze(entry);\n return value;\n}\n"],"names":["EFFECT_REFLECTION_CHUNK","EFFECT_REFLECTION_BLOB_CHUNK","EFFECT_REFLECTION_FORMAT","EFFECT_REFLECTION_VERSION","SHA256","SELECTED_EFFECT_REFLECTION_VERSION","buildCompleteEffectReflection","effectRes","permutationGraph","options","sourceBytes","m_data","Uint8Array","sourceIdentity","byteLength","sha256","sha256Bytes","Error","inventory","enumerateUniqueEffectBodies","length","bodies","store","ReflectionBlobStore","source","map","group","bodyIndex","graphBody","representative","selectedVariant","permutationIndex","bodyKey","key","variants","some","variant","graphVariant","sourceRecord","offset","portable","buildEffectBodyReflection","label","effectVersion","compilerVersion","nativeHash","add","stringTableByteLength","samePortableSource","exactBodyBytes","subarray","representativePermutationIndex","effect","packByteArrays","blobBytes","finish","reflection","format","formatVersion","portableFormat","EFFECT_BODY_REFLECTION_FORMAT","portableFormatVersion","EFFECT_BODY_REFLECTION_VERSION","keyScope","coverage","sourcePrograms","constantDefaults","blobStore","chunk","blobCount","entries","blobs","entry","counts","validateCompleteEffectReflection","sourcePath","pointer","blobChunk","sha256Utf8","JSON","stringify","permutationCount","bodyCount","sourceProgramCount","blobByteLength","Object","freeze","deepFreeze","validateSelectedEffectReflection","requireExactKeys","graph","requireRecord","requireString","selected","selectedBody","requireUint","requireSha256","body","blobInventory","validateBlobStore","usedBlobKeys","Set","mode","unpackBlobReference","unpackByteReferences","portableCounts","validateEffectBodyReflection","size","Array","isArray","representativeByBodyKey","Map","has","set","reflectedBody","get","from","validateEffectReflectionPointer","version","includes","field","reflectionBytes","effectReflectionForPermutation","find","hydrateEffectReflectionForPermutation","resolveBlob","TypeError","cache","hydrateResolvedBytes","constructor","payloads","byDigest","value","bytes","candidates","existing","candidate","bytesEqual","reference","blobKey","record","push","out","portableSource","isRecord","fromEntries","isBlobReference","digests","expectedOffset","index","end","prototype","hasOwnProperty","call","join","allowed","context","keys","Reflect","ownKeys","trim","test","positive","Number","isSafeInteger","ArrayBuffer","isView","left","right","every","isFrozen","values"],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { CjsByteReader } from '../../../format/CjsByteReader.js';
|
|
2
|
-
import { HlslEffectReadError } from './HlslEffectReadError.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Little-endian binary reader for Carbon/Trinity compiled effect data.
|
|
6
|
-
*
|
|
7
|
-
* The implementation is `CjsByteReader` in `src/format/`; this subclass only
|
|
8
|
-
* supplies the error class and message this format reports.
|
|
9
|
-
*/
|
|
10
|
-
class HlslReader extends CjsByteReader {
|
|
11
|
-
static ReadError = HlslEffectReadError;
|
|
12
|
-
static endOfDataMessage = "Unexpected end of effect data";
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export { HlslReader };
|
|
16
|
-
//# sourceMappingURL=HlslReader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HlslReader.js","sources":["../../../../../src/formats/hlsl/core/HlslReader.js"],"sourcesContent":["import { CjsByteReader } from \"../../../format/CjsByteReader.js\";\nimport { HlslEffectReadError } from \"./HlslEffectReadError.js\";\n\n/**\n * Little-endian binary reader for Carbon/Trinity compiled effect data.\n *\n * The implementation is `CjsByteReader` in `src/format/`; this subclass only\n * supplies the error class and message this format reports.\n */\nexport class HlslReader extends CjsByteReader\n{\n static ReadError = HlslEffectReadError;\n\n static endOfDataMessage = \"Unexpected end of effect data\";\n}\n\nexport default HlslReader;\n"],"names":["HlslReader","CjsByteReader","ReadError","HlslEffectReadError","endOfDataMessage"],"mappings":";;;AAGA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,UAAU,SAASC,aAAa,CAC7C;EACI,OAAOC,SAAS,GAAGC,mBAAmB;EAEtC,OAAOC,gBAAgB,GAAG,+BAA+B;AAC7D;;;;"}
|