@carbonenginejs/runtime-resource 0.11.1 → 0.12.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/dist/formats/bnk/CjsBnkFormat.js +12 -2
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/graph.js +3 -6
- package/dist/formats/bnk/core/graph.js.map +1 -1
- package/dist/formats/bnk/core/helpers.js +53 -11
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/sfxNodes.js +532 -0
- package/dist/formats/bnk/core/sfxNodes.js.map +1 -0
- package/dist/formats/bnk/core/soundbanksInfo.js +59 -51
- package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
- package/dist/formats/gr2/CjsGr2Format.js +256 -13
- package/dist/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/formats/gr2/core/helpers.js +15 -15
- package/dist/formats/gr2/core/helpers.js.map +1 -1
- package/dist/formats/gr2/core/json.js +1 -1
- package/dist/formats/gr2/core/json.js.map +1 -1
- package/dist/formats/gr2/core/targets.js +1 -1
- package/dist/formats/gr2/core/targets.js.map +1 -1
- package/dist/formats/gr2/index.js +0 -1
- package/dist/formats/gr2/index.js.map +1 -1
- package/dist/formats/hlsl/core/analysis.js +1 -1
- package/dist/formats/hlsl/index.js +1 -0
- package/dist/formats/hlsl/index.js.map +1 -1
- package/dist/formats/index.js +3 -6
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/webgl/core/cewg/binary.js +3 -3
- package/dist/formats/webgl/core/cewg/binary.js.map +1 -1
- package/dist/formats/webgl/core/effectPackage.js +4 -1
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/errors.js +3 -3
- package/dist/formats/webgl/core/errors.js.map +1 -1
- package/docs/formats/dxbc/README.md +68 -0
- package/docs/formats/dxbc/architecture.md +80 -0
- package/docs/formats/dxbc/reference/api.md +77 -0
- package/docs/formats/dxbc/reference/classes/README.md +76 -0
- package/docs/formats/dxbc/reference/decoded-output.md +122 -0
- package/docs/formats/gr2.md +3 -4
- package/docs/formats/hlsl/README.md +54 -0
- package/docs/formats/hlsl/architecture.md +67 -0
- package/docs/formats/hlsl/guides/hydrating-json-output.md +62 -0
- package/docs/formats/hlsl/guides/reading-effects.md +64 -0
- package/docs/formats/hlsl/reference/advanced-analysis.md +66 -0
- package/docs/formats/hlsl/reference/api.md +97 -0
- package/docs/formats/hlsl/reference/classes/README.md +16 -0
- package/docs/formats/hlsl/reference/classes/carbon-compatibility.md +66 -0
- package/docs/formats/hlsl/reference/classes/public-api.md +26 -0
- package/docs/formats/hlsl/reference/classes/tr2-effect-model.md +150 -0
- package/docs/formats/hlsl/reference/json-graph.md +100 -0
- package/docs/formats/hlsl/reference/portable-reflection.md +141 -0
- package/docs/formats/provenance.md +9 -4
- package/docs/formats/webgl/README.md +57 -0
- package/docs/formats/webgl/architecture.md +70 -0
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -0
- package/docs/formats/webgl/decl-io.md +1234 -0
- package/docs/formats/webgl/effect-reflection.md +127 -0
- package/docs/formats/webgl/memory-structured.md +871 -0
- package/docs/formats/webgl/reference/classes/README.md +96 -0
- package/docs/formats/webgl/texture-sample.md +964 -0
- package/docs/formats/webgpu/README.md +81 -0
- package/docs/formats/webgpu/architecture.md +93 -0
- package/docs/formats/webgpu/formats/cewgpu.md +479 -0
- package/docs/formats/webgpu/guides/effect-packaging.md +199 -0
- package/docs/formats/webgpu/reference/api.md +197 -0
- package/docs/formats/webgpu/reference/classes/README.md +66 -0
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1442 -0
- package/docs/formats/wwise.md +16 -1
- package/docs/reference/classes/formats.md +10 -10
- package/format-notices/bnk/NOTICE +5 -4
- package/format-notices/webgl/NOTICE +1 -1
- package/package.json +1 -1
- package/dist/formats/gr2/core/CjsFormatGr2.js +0 -273
- package/dist/formats/gr2/core/CjsFormatGr2.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effectPackage.js","sources":["../../../../../src/formats/webgl/core/effectPackage.js"],"sourcesContent":["import { EFFECT_INFO_VERSION } from \"./effectPackageValidation.js\";\nimport { CjsHlslFormat } from \"../../hlsl/index.js\";\nimport { HlslEffectBindingManifest } from \"../../hlsl/core/tr2/shader/HlslEffectBindingManifest.js\";\nimport { HlslRenderContextEnum, hlslShaderStageName } from \"../../hlsl/core/tr2/HlslRenderContextEnum.js\";\n\nimport {\n buildEffectPermutationGraph,\n EFFECT_PERMUTATION_GRAPH_CHUNK,\n EFFECT_PERMUTATION_GRAPH_FORMAT,\n EFFECT_PERMUTATION_GRAPH_VERSION\n} from \"../../../format/effect/effectPermutationGraph.js\";\nimport {\n buildCompleteEffectReflection,\n EFFECT_REFLECTION_BLOB_CHUNK,\n EFFECT_REFLECTION_CHUNK\n} from \"../../../format/effect/effectReflectionPackage.js\";\nimport { buildPackage, emitGlslWithOptions, inspectWithValues } from \"./helpers.js\";\nimport { sha256Bytes, sha256Utf8 } from \"../../../format/effect/sha256.js\";\n\nconst PACKAGE_VERSION = \"0.11.1\";\n\n/**\n * Builds a complete CEWG package from compiled Tr2 effect bytes.\n *\n * This browser-safe path owns whole-effect selection, stage translation,\n * package assembly, and structural qualification. Filesystem and native-tool\n * concerns remain in Node callers.\n *\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Compiled effect bytes.\n * @param {object} [options] Selection, provenance, and emitter policy.\n * @returns {object} Package bytes plus inspection and qualification records.\n */\nexport function buildEffectPackage(input, options = {})\n{\n const values = normalizeOptions(input, options);\n const effectRes = CjsHlslFormat.read(values.sourceBytes, {\n emit: CjsHlslFormat.OUTPUT_RAW,\n source: values.source\n });\n\n if (!effectRes.IsGood())\n {\n throw effectRes.loadError || new Error(\"Tr2EffectRes failed to load input\");\n }\n\n const sourceIdentity = normalizeSourceIdentity(values);\n // One INFO version means one contract, and that contract requires complete\n // source reflection, which only version-15 input can supply.\n if (effectRes.m_version !== 15)\n {\n throw new Error(\n \"Effect package requires a version-15 compiled effect, got version \"\n + (effectRes.m_version ?? \"unknown\")\n );\n }\n\n const permutationGraph = buildEffectPermutationGraph(effectRes);\n const reflectionPackage = effectRes.m_version === 15\n ? buildCompleteEffectReflection(\n effectRes,\n permutationGraph,\n {\n sourceIdentity,\n sourcePath: values.source\n }\n )\n : null;\n const variants = buildExportVariants(effectRes, values.allPermutations);\n const bodyMap = new Map();\n const stageMap = new Map();\n const shaderMap = new Map();\n\n for (const variant of variants)\n {\n if (bodyMap.has(variant.bodyKey))\n {\n continue;\n }\n\n const shader = effectRes.GetShader(toShaderOptions(variant.options));\n\n if (!shader)\n {\n bodyMap.set(variant.bodyKey, {\n key: variant.bodyKey,\n bodyOffset: variant.bodyOffset,\n bodySize: variant.bodySize,\n firstVariantKey: variant.key,\n error: \"Tr2EffectRes.GetShader returned null\",\n manifest: null,\n stages: []\n });\n continue;\n }\n\n const effectDescription = shader.GetEffectDescription();\n const manifest = HlslEffectBindingManifest.fromEffectDescription(effectDescription);\n const collection = collectStages(effectDescription, values.selection);\n const body = {\n key: variant.bodyKey,\n bodyOffset: variant.bodyOffset,\n bodySize: variant.bodySize,\n firstVariantKey: variant.key,\n error: collection.errors.length ? collection.errors.join(\"; \") : null,\n manifest: manifest.toJSON(),\n stages: []\n };\n\n for (const stage of collection.stages)\n {\n const stageKey = `${variant.bodyKey}.${stage.key}`;\n const shaderKey = `shader_${stageKey}`;\n const contract = buildStageContract(stage);\n const stageRecord = {\n key: stageKey,\n bodyKey: variant.bodyKey,\n localKey: stage.key,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n stageType: stage.stageType,\n stageName: stage.stageName,\n shaderHandle: stage.shaderHandle,\n shaderSize: stage.bytecode.shaderSize,\n stringTableOffset: stage.bytecode.stringTableOffset,\n shaderKey,\n contract\n };\n\n stageMap.set(stageKey, stageRecord);\n body.stages.push(stageKey);\n shaderMap.set(shaderKey, {\n key: shaderKey,\n firstStageKey: stageKey,\n firstBodyKey: variant.bodyKey,\n stageName: stage.stageName,\n shaderSize: stage.bytecode.shaderSize,\n stringTableOffset: stage.bytecode.stringTableOffset,\n bytes: stage.bytecode.bytes,\n contracts: [ {\n stageKey,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n stageName: stage.stageName,\n contract\n } ]\n });\n }\n\n bodyMap.set(variant.bodyKey, body);\n }\n\n translateStages(shaderMap, stageMap, values);\n\n const bodies = Array.from(bodyMap.values());\n const stages = Array.from(stageMap.values());\n const translatedShaders = Array.from(shaderMap.values()).map((record) =>\n {\n const { bytes, emit, ...output } = record;\n\n output.primaryContract = mergeShaderContracts(output.contracts);\n return output;\n });\n const failedShaders = translatedShaders.filter((record) =>\n !record.hlsl2webgl?.ok && !record.excluded);\n const excludedShaders = translatedShaders.filter((record) => record.excluded);\n const failedBodies = bodies.filter((body) => body.error);\n const rasterCompleteness = inspectRasterCompleteness(stages, translatedShaders);\n const availableShaderCount = translatedShaders.filter((record) =>\n record.hlsl2webgl?.ok && record.source).length;\n const info = {\n format: \"CEWG\",\n formatVersion: EFFECT_INFO_VERSION,\n packageKind: values.allPermutations\n ? \"tr2-effect-webgl-permutations\"\n : \"tr2-effect-webgl\",\n targetBackend: \"webgl\",\n backendPackage: \"@carbonenginejs/runtime-resource/formats/webgl\",\n backendPackageVersion: PACKAGE_VERSION,\n generatedAt: values.generatedAt,\n sourcePath: values.source,\n outputPath: values.outputPath,\n sourceByteLength: sourceIdentity.byteLength,\n sourceMd5: sourceIdentity.md5,\n sourceSha256: sourceIdentity.sha256,\n sourceIdentity,\n translator: \"dxbc-js-emitter\",\n translatorVersion: PACKAGE_VERSION,\n language: \"es300\",\n flags: null,\n selection: values.selection,\n permutationMode: values.allPermutations ? \"all\" : \"selected\",\n defaultPermutationIndex: defaultPermutationIndex(effectRes.m_permutations),\n sourceEffectVersion: effectRes.m_version,\n ...(reflectionPackage ? {\n sourceBodyCoverage: \"all-unique\",\n backendBodyCoverage: values.allPermutations ? \"all\" : \"selected\",\n backendProgramCoverage: selectionCoversWholeEffect(values.selection)\n ? \"all-stages\"\n : \"filtered\"\n } : {}),\n permutationCount: variants.length,\n uniqueBodyCount: bodies.length,\n sourcePermutationCount: permutationGraph.variants.length,\n sourceUniqueBodyCount: permutationGraph.bodies.length,\n permutationGraph: {\n chunk: EFFECT_PERMUTATION_GRAPH_CHUNK,\n format: EFFECT_PERMUTATION_GRAPH_FORMAT,\n formatVersion: EFFECT_PERMUTATION_GRAPH_VERSION,\n sha256: sha256Utf8(`${JSON.stringify(permutationGraph)}\\n`),\n permutationCount: permutationGraph.variants.length,\n uniqueBodyCount: permutationGraph.bodies.length\n },\n ...(reflectionPackage\n ? { effectReflection: reflectionPackage.pointer }\n : {}),\n bodyStageCount: stages.length,\n uniqueShaderCount: translatedShaders.length,\n translatedShaderCount: translatedShaders.length - failedShaders.length - excludedShaders.length,\n excludedShaderCount: excludedShaders.length,\n failedShaderCount: failedShaders.length,\n failedBodyCount: failedBodies.length,\n expectedRasterPassCount: rasterCompleteness.expectedPassCount,\n completeRasterPassCount: rasterCompleteness.completePassCount,\n incompleteRasterPassCount: rasterCompleteness.incompletePasses.length,\n availableShaderCount,\n allowFailures: values.allowFailures,\n completeness: {\n packageValid: true,\n sourceComplete: reflectionPackage !== null,\n backendComplete: false,\n runtimeComplete: false\n }\n };\n const metadata = {\n generatedAt: values.generatedAt,\n sourcePath: values.source,\n effectResource: effectRes.toJSON(),\n permutations: effectRes.GetPermutationDescription(),\n variants,\n bodies: bodies.map((body) => ({\n key: body.key,\n bodyOffset: body.bodyOffset,\n bodySize: body.bodySize,\n firstVariantKey: body.firstVariantKey,\n error: body.error,\n manifest: body.manifest\n }))\n };\n const glsl = {\n format: \"CEWG_GLSL_SET\",\n formatVersion: 1,\n language: \"es300\",\n permutationMode: info.permutationMode,\n selection: values.selection,\n variants: variants.map((variant) => ({\n key: variant.key,\n permutationIndex: variant.permutationIndex,\n bodyKey: variant.bodyKey\n })),\n bodies: bodies.map((body) => ({\n key: body.key,\n error: body.error,\n stages: body.stages\n })),\n stages,\n shaders: translatedShaders\n };\n const qualification = qualifyEffectPackage({\n info,\n metadata,\n glsl,\n failedShaders,\n excludedShaders,\n failedBodies,\n rasterCompleteness,\n availableShaderCount\n });\n if (!qualification.ok && !values.allowFailures)\n {\n throw new Error(\n `CEWG target is incomplete; output was not built. ${qualification.errors.join(\"; \")}`\n );\n }\n\n const chunks = [\n [ \"INFO\", info ],\n [ \"META\", metadata ],\n [ EFFECT_PERMUTATION_GRAPH_CHUNK, permutationGraph ],\n ...(reflectionPackage\n ? [\n [ EFFECT_REFLECTION_CHUNK, reflectionPackage.reflection ],\n [ EFFECT_REFLECTION_BLOB_CHUNK, reflectionPackage.blobBytes ]\n ]\n : []),\n [ \"GLSL\", glsl ]\n ];\n\n if (values.includeSourceEffect)\n {\n chunks.push([ \"TR2E\", values.sourceBytes ]);\n }\n\n const bytes = buildPackage(chunks);\n const inspection = inspectWithValues(bytes, {\n emit: \"json\",\n source: values.source\n });\n\n return Object.freeze({\n bytes,\n info: Object.freeze(info),\n metadata: Object.freeze(metadata),\n permutationGraph,\n reflection: reflectionPackage?.reflection ?? null,\n reflectionBlobs: reflectionPackage?.blobBytes ?? null,\n glsl: Object.freeze(glsl),\n inspection: Object.freeze(inspection),\n qualification: Object.freeze(qualification)\n });\n}\n\nfunction normalizeOptions(input, options)\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(\"CEWG effect options must be an object\");\n }\n\n const sourceBytes = toBytes(input);\n const source = String(options.source ?? \"memory\").trim() || \"memory\";\n const selection = Object.freeze({\n technique: options.technique === undefined || options.technique === null\n ? null\n : String(options.technique),\n pass: options.pass === undefined || options.pass === null ? null : Number(options.pass),\n stage: options.stage === undefined || options.stage === null\n ? null\n : String(options.stage).toLowerCase()\n });\n\n if (selection.pass !== null\n && (!Number.isSafeInteger(selection.pass) || selection.pass < 0))\n {\n throw new TypeError(\"CEWG effect pass must be a non-negative integer or null\");\n }\n\n if (selection.stage !== null\n && ![ \"vertex\", \"pixel\", \"compute\" ].includes(selection.stage))\n {\n throw new TypeError(`Unsupported CEWG effect stage: ${selection.stage}`);\n }\n\n if (options.emitterOptions !== undefined\n && (!options.emitterOptions || typeof options.emitterOptions !== \"object\"\n || Array.isArray(options.emitterOptions)))\n {\n throw new TypeError(\"CEWG emitterOptions must be an object\");\n }\n\n return {\n sourceBytes,\n source,\n outputPath: normalizeOptionalString(options.outputPath, \"CEWG outputPath\"),\n sourceIdentity: options.sourceIdentity ?? null,\n generatedAt: options.generatedAt === undefined || options.generatedAt === null\n ? null\n : new Date(options.generatedAt).toISOString(),\n allPermutations: options.allPermutations !== false,\n allowFailures: options.allowFailures === true,\n includeSourceEffect: options.includeSourceEffect === true,\n selection,\n emitterOptions: { ...(options.emitterOptions ?? {}) }\n };\n}\n\nfunction normalizeOptionalString(value, name)\n{\n if (value === undefined || value === null)\n {\n return null;\n }\n\n const result = String(value).trim();\n\n if (!result)\n {\n throw new TypeError(`${name} must be a non-empty string or null`);\n }\n\n return result;\n}\n\nfunction selectionCoversWholeEffect(selection)\n{\n return selection.technique === null\n && selection.pass === null\n && selection.stage === null;\n}\n\nfunction toBytes(input)\n{\n if (input instanceof Uint8Array)\n {\n return input;\n }\n\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n\n throw new TypeError(\"CEWG effect input must be Uint8Array, ArrayBuffer, or ArrayBufferView bytes\");\n}\n\nfunction defaultPermutationIndex(permutations)\n{\n let multiplier = 1;\n let index = 0;\n\n for (const permutation of permutations)\n {\n index += (permutation.defaultOption || 0) * multiplier;\n multiplier *= permutation.options.length || 1;\n }\n\n return index;\n}\n\nfunction bodyKey(record)\n{\n return `body_${record.offset}_${record.size}`;\n}\n\nfunction decodePermutationOptions(permutations, permutationIndex)\n{\n let remaining = permutationIndex;\n\n return permutations.map((permutation) =>\n {\n const optionCount = permutation.options.length || 1;\n const optionIndex = optionCount ? remaining % optionCount : 0;\n\n remaining = Math.floor(remaining / optionCount);\n return {\n name: permutation.name,\n value: permutation.options[optionIndex] || \"\",\n optionIndex,\n defaultOption: permutation.defaultOption\n };\n });\n}\n\nfunction toShaderOptions(options)\n{\n return options.map((option) => ({ name: option.name, value: option.value }));\n}\n\nfunction buildExportVariants(effectRes, allPermutations)\n{\n if (allPermutations)\n {\n return effectRes.m_offsets.map((record, variantIndex) =>\n {\n const permutationIndex = Number.isInteger(record.index)\n ? record.index\n : variantIndex;\n\n return {\n key: `variant_${permutationIndex}`,\n variantIndex,\n permutationIndex,\n tableIndex: variantIndex,\n bodyKey: bodyKey(record),\n bodyOffset: record.offset,\n bodySize: record.size,\n options: decodePermutationOptions(\n effectRes.m_permutations,\n permutationIndex\n ),\n tableIndexMatchesPermutationIndex:\n variantIndex === permutationIndex\n };\n });\n }\n\n const permutationIndex = defaultPermutationIndex(effectRes.m_permutations);\n const record = effectRes.m_offsets[permutationIndex];\n\n if (!record)\n {\n throw new Error(`Default permutation index ${permutationIndex} is not present`);\n }\n\n return [ {\n key: `variant_${permutationIndex}`,\n variantIndex: permutationIndex,\n permutationIndex,\n tableIndex: permutationIndex,\n bodyKey: bodyKey(record),\n bodyOffset: record.offset,\n bodySize: record.size,\n options: decodePermutationOptions(effectRes.m_permutations, permutationIndex),\n tableIndexMatchesPermutationIndex: Number.isInteger(record.index)\n ? record.index === permutationIndex\n : true\n } ];\n}\n\nfunction collectStages(effectDescription, selection)\n{\n const stages = [];\n const errors = [];\n\n for (const technique of effectDescription.techniques ?? [])\n {\n if (selection.technique && technique.name !== selection.technique)\n {\n continue;\n }\n\n if (!selection.stage && !Number.isInteger(selection.pass)\n && technique.passes.length === 0)\n {\n errors.push(`${technique.name} declares no passes`);\n }\n\n for (let passIndex = 0; passIndex < technique.passes.length; passIndex++)\n {\n if (Number.isInteger(selection.pass) && passIndex !== selection.pass)\n {\n continue;\n }\n\n const pass = technique.passes[passIndex];\n let declaredStageCount = 0;\n\n for (let stageType = 0;\n stageType < HlslRenderContextEnum.SHADER_TYPE_COUNT;\n stageType++)\n {\n const stageInput = pass.stageInputs[stageType];\n\n if (!stageInput?.m_exists)\n {\n continue;\n }\n\n declaredStageCount++;\n const stageName = hlslShaderStageName(stageType);\n\n if (selection.stage && stageName !== selection.stage)\n {\n continue;\n }\n\n if (!stageInput.cjsShaderBytecode)\n {\n errors.push(\n `${technique.name}.pass${passIndex}.${stageName} declares shader handle `\n + `${stageInput.m_shader ?? \"unknown\"} but has no shader bytecode`\n );\n continue;\n }\n\n stages.push({\n key: `${technique.name}.pass${passIndex}.${stageName}`,\n techniqueName: technique.name,\n passIndex,\n stageType,\n stageName,\n shaderHandle: stageInput.m_shader,\n bytecode: stageInput.cjsShaderBytecode,\n pipelineInputs: cloneJson(stageInput.signature?.pipelineInputs ?? []),\n registers: cloneJson(stageInput.signature?.registers ?? []),\n resources: mapToJson(stageInput.resources),\n samplers: mapToJson(stageInput.samplers),\n uavs: mapToJson(stageInput.uavs),\n constants: cloneJson(stageInput.constants ?? [])\n });\n }\n\n if (!selection.stage && declaredStageCount === 0)\n {\n errors.push(`${technique.name}.pass${passIndex} declares no shader stages`);\n }\n }\n }\n\n return { stages, errors };\n}\n\nfunction translateStages(shaderMap, stageMap, values)\n{\n const emitInto = (record, pairVaryings) =>\n {\n try\n {\n const result = emitGlslWithOptions(record.bytes, {\n ...values.emitterOptions,\n source: `${values.source}#${record.firstStageKey}`,\n ...(pairVaryings?.length ? { pairVaryings } : {})\n });\n const stageInterface = normalizeBitangentStageInterface(\n result,\n record\n );\n\n record.emit = {\n ...result,\n source: stageInterface.source,\n inputs: stageInterface.inputs\n };\n record.source = stageInterface.source;\n record.bindings = result.bindings;\n record.stageInputs = stageInterface.inputs;\n record.stageOutputs = result.outputs;\n record.emitWarnings = result.warnings;\n record.translator = \"dxbc-js-emitter\";\n record.hlsl2webgl = { ok: true, mode: \"js-emitter\" };\n\n if (result.stageName === \"compute\")\n {\n record.computeFragment = result.computeFragment;\n }\n\n const issue = validateStageSourceShape(record);\n\n if (issue)\n {\n record.hlsl2webgl = { ok: false, validationError: issue };\n record.source = null;\n }\n }\n catch (error)\n {\n const message = error?.message || String(error);\n\n record.hlsl2webgl = {\n ok: false,\n error: message,\n details: error?.details ?? null\n };\n\n if (/not supported|No GLSL lowering|unimplementable/iu.test(message))\n {\n record.excluded = {\n reason: message,\n ...(error?.details?.opcodeName\n ? { opcodeName: error.details.opcodeName }\n : {}),\n ...(error?.details?.dimensionName\n ? { dimensionName: error.details.dimensionName }\n : {})\n };\n }\n }\n };\n\n for (const record of shaderMap.values())\n {\n if (record.stageName !== \"vertex\")\n {\n emitInto(record, null);\n }\n }\n\n const pixelVaryingsByPass = new Map();\n\n for (const stage of stageMap.values())\n {\n if (stage.stageName !== \"pixel\")\n {\n continue;\n }\n\n const record = shaderMap.get(stage.shaderKey);\n\n if (!record?.emit)\n {\n continue;\n }\n\n pixelVaryingsByPass.set(\n `${stage.bodyKey}|${stage.techniqueName}|${stage.passIndex}`,\n record.emit.inputs\n .filter((input) => typeof input.name === \"string\"\n && input.name.startsWith(\"vs_r\"))\n .map((input) => input.register)\n .sort((left, right) => left - right)\n );\n }\n\n for (const stage of stageMap.values())\n {\n if (stage.stageName !== \"vertex\")\n {\n continue;\n }\n\n const record = shaderMap.get(stage.shaderKey);\n const varyings = pixelVaryingsByPass.get(\n `${stage.bodyKey}|${stage.techniqueName}|${stage.passIndex}`\n ) ?? [];\n\n if (record)\n {\n record.pairVaryings = varyings;\n emitInto(record, varyings);\n }\n }\n}\n\nfunction cloneJson(value)\n{\n if (value === undefined || value === null)\n {\n return value;\n }\n\n return JSON.parse(JSON.stringify(value));\n}\n\nfunction mapToJson(map)\n{\n if (!(map instanceof Map))\n {\n return [];\n }\n\n return Array.from(map.entries()).map(([ registerIndex, value ]) => ({\n registerIndex,\n ...cloneJson(value)\n }));\n}\n\nfunction buildStageContract(stage)\n{\n const pipelineInputs = cloneJson(stage.pipelineInputs ?? []);\n const inputSemantics = pipelineInputs.map((input) => ({\n semantic: `${input.usageName || `USAGE_${input.usage}`}${input.usageIndex || \"\"}`,\n usage: input.usage,\n usageName: input.usageName,\n usageIndex: input.usageIndex,\n registerIndex: input.registerIndex,\n usedMask: input.usedMask,\n type: input.type,\n dimension: input.dimension\n }));\n const inputNames = new Set(inputSemantics.map((input) => input.usageName));\n const hasNormal = inputNames.has(\"NORMAL\");\n const hasTangent = inputNames.has(\"TANGENT\");\n const hasBinormal = inputNames.has(\"BINORMAL\") || inputNames.has(\"BITANGENT\");\n const hasBlendIndices = inputNames.has(\"BLENDINDICES\")\n || inputNames.has(\"BLENDINDICE\");\n let tangentContract = \"none\";\n\n if (hasNormal && hasTangent && hasBinormal)\n {\n tangentContract = \"split_tbn\";\n }\n else if (!hasNormal && hasTangent)\n {\n tangentContract = \"packed_tangent_or_tangent_only\";\n }\n else if (hasNormal || hasTangent || hasBinormal)\n {\n tangentContract = \"partial_tbn\";\n }\n\n const resources = cloneJson(stage.resources ?? []);\n const samplers = cloneJson(stage.samplers ?? []);\n const uavs = cloneJson(stage.uavs ?? []);\n const constants = cloneJson(stage.constants ?? []);\n const resourceNames = resources.map((entry) => entry.name).filter(Boolean);\n\n return {\n stageName: stage.stageName,\n stageType: stage.stageType,\n vertex: stage.stageName === \"vertex\" ? {\n inputs: inputSemantics,\n tangentContract,\n requiresSplitTbn: tangentContract === \"split_tbn\",\n requiresPackedTangent: tangentContract === \"packed_tangent_or_tangent_only\",\n requiresSkinning: hasBlendIndices || resourceNames.includes(\"BoneTransforms\"),\n hasBlendIndices\n } : null,\n texturePacking: classifyTexturePacking(resourceNames),\n constantBuffers: (stage.registers ?? [])\n .filter((entry) => entry.registerType === 0)\n .map((entry) => ({\n registerIndex: entry.registerIndex,\n registerSpace: entry.registerSpace,\n registerCount: entry.registerCount,\n arrayCount: entry.arrayCount,\n dynamic: Boolean(entry.dynamic)\n })),\n resources,\n samplers,\n uavs,\n constants\n };\n}\n\nfunction classifyTexturePacking(names)\n{\n const values = new Set(names);\n\n if ([ \"NoMap\", \"PmdgMap\", \"ArMap\" ].some((name) => values.has(name)))\n {\n return \"packed_textures\";\n }\n\n if ([ \"NormalMap\", \"RoughnessMap\", \"MaterialMap\", \"AlbedoMap\",\n \"AoMap\", \"PaintMaskMap\" ].some((name) => values.has(name)))\n {\n return \"unpacked_textures\";\n }\n\n return \"unknown\";\n}\n\nfunction mergeShaderContracts(contracts)\n{\n const first = contracts?.[0]?.contract ?? null;\n\n if (!first)\n {\n return null;\n }\n\n return {\n stageName: first.stageName,\n stageType: first.stageType,\n vertex: first.vertex ? cloneJson(first.vertex) : null,\n texturePacking: first.texturePacking,\n constantBuffers: cloneJson(first.constantBuffers ?? []),\n resourceNames: (first.resources ?? []).map((entry) => entry.name).filter(Boolean),\n samplerNames: (first.samplers ?? []).map((entry) => entry.name).filter(Boolean),\n sharedByStageCount: contracts.length\n };\n}\n\nfunction normalizeBitangentStageInterface(result, shaderRecord)\n{\n if (shaderRecord?.stageName !== \"vertex\")\n {\n return {\n source: result.source,\n inputs: result.inputs\n };\n }\n\n const bitangentRegisters = new Set((shaderRecord.contracts ?? [])\n .flatMap((entry) => entry.contract?.vertex?.inputs ?? [])\n .filter((input) => input.usageName === \"BITANGENT\")\n .map((input) => input.registerIndex));\n let source = result.source;\n const inputs = result.inputs.map((input) =>\n {\n if (!bitangentRegisters.has(input.register)\n || input.semanticName !== \"BINORMAL\")\n {\n return input;\n }\n const name = `in_BITANGENT${input.semanticIndex}`;\n source = source.replaceAll(input.name, name);\n return {\n ...input,\n name,\n semanticName: \"BITANGENT\"\n };\n });\n return { source, inputs };\n}\n\nfunction validateStageSourceShape(record)\n{\n const source = record?.source ?? \"\";\n\n if (!source)\n {\n return null;\n }\n\n const hasVertexOutput = /\\bgl_Position\\b/u.test(source);\n const hasVertexInterface = /\\bin\\s+(?:lowp|mediump|highp)?\\s*\\w+\\s+attr\\d+\\b/u.test(source)\n || /\\bout\\s+(?:lowp|mediump|highp)?\\s*\\w+\\s+vs_TEXCOORD\\d+\\b/u.test(source)\n || /\\bin_[A-Z]+[0-9]+\\b/u.test(source);\n const hasFragmentOutput = /\\bout\\s+(?:lowp|mediump|highp)?\\s*vec4\\s+SV_Target\\d+\\b/u.test(source)\n || /\\bgl_FragColor\\b/u.test(source);\n\n if (record.stageName === \"vertex\" && !hasVertexOutput)\n {\n return \"vertex stage source does not write gl_Position\";\n }\n\n if (record.stageName === \"pixel\"\n && (hasVertexOutput || hasVertexInterface) && !hasFragmentOutput)\n {\n return \"pixel stage source looks like vertex GLSL\";\n }\n\n if (record.stageName === \"compute\" && !/\\bcewgUav\\d+(_s\\d+)?\\b/u.test(source))\n {\n return \"compute stage source does not write any cewgUav output\";\n }\n\n return null;\n}\n\nfunction inspectRasterCompleteness(stages, shaders)\n{\n const shaderMap = new Map(shaders.map((shader) => [ shader.key, shader ]));\n const groups = new Map();\n\n for (const stage of stages)\n {\n if (![ \"vertex\", \"pixel\" ].includes(stage.stageName))\n {\n continue;\n }\n\n const key = `${stage.bodyKey}:${stage.techniqueName}:${stage.passIndex}`;\n const group = groups.get(key) ?? {\n key,\n bodyKey: stage.bodyKey,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n vertex: null,\n pixel: null,\n duplicateStages: []\n };\n\n if (group[stage.stageName])\n {\n group.duplicateStages.push(stage.stageName);\n }\n\n group[stage.stageName] = stage;\n groups.set(key, group);\n }\n\n const incompletePasses = [];\n let completePassCount = 0;\n\n for (const group of groups.values())\n {\n const missingStages = [];\n const unavailableStages = [];\n\n for (const stageName of [ \"vertex\", \"pixel\" ])\n {\n const stage = group[stageName];\n\n if (!stage)\n {\n missingStages.push(stageName);\n continue;\n }\n\n const shader = shaderMap.get(stage.shaderKey);\n\n if (!shader?.hlsl2webgl?.ok || !shader.source)\n {\n unavailableStages.push({\n stageName,\n stageKey: stage.key,\n shaderKey: stage.shaderKey,\n reason: shader?.hlsl2webgl?.validationError\n || shader?.hlsl2webgl?.error\n || shader?.excluded?.reason\n || \"translated source is unavailable\"\n });\n }\n }\n\n if (!missingStages.length && !unavailableStages.length\n && !group.duplicateStages.length)\n {\n completePassCount++;\n }\n else\n {\n incompletePasses.push({\n ...group,\n missingStages,\n unavailableStages,\n duplicateStages: [ ...new Set(group.duplicateStages) ].sort()\n });\n }\n }\n\n return {\n expectedPassCount: groups.size,\n completePassCount,\n incompletePasses\n };\n}\n\nfunction normalizeSourceIdentity(values)\n{\n const identity = values.sourceIdentity;\n\n if (identity !== null\n && (!identity || typeof identity !== \"object\" || Array.isArray(identity)))\n {\n throw new TypeError(\"CEWG sourceIdentity must be an object\");\n }\n\n const sha256 = sha256Bytes(values.sourceBytes);\n if (identity?.sha256 !== undefined && identity?.sha256 !== null\n && identity.sha256 !== sha256)\n {\n throw new Error(\n \"CEWG sourceIdentity.sha256 does not match the exact effect input bytes\"\n );\n }\n\n return Object.freeze({\n filePath: identity?.filePath ?? values.source,\n logicalPath: identity?.logicalPath ?? values.source,\n game: identity?.game ?? null,\n client: identity?.client ?? null,\n build: identity?.build === undefined || identity?.build === null\n ? null\n : String(identity.build),\n byteLength: values.sourceBytes.byteLength,\n md5: identity?.md5 ?? null,\n sha256\n });\n}\n\nfunction qualifyEffectPackage({\n info,\n metadata,\n glsl,\n failedShaders,\n excludedShaders,\n failedBodies,\n rasterCompleteness,\n availableShaderCount\n})\n{\n const errors = [];\n\n if (info.format !== \"CEWG\" || glsl.format !== \"CEWG_GLSL_SET\")\n {\n errors.push(\"invalid CEWG package envelope\");\n }\n\n if (!Array.isArray(metadata.variants) || !Array.isArray(glsl.shaders))\n {\n errors.push(\"missing CEWG graph arrays\");\n }\n\n if (failedShaders.length)\n {\n errors.push(`${failedShaders.length} shader translation(s) failed`);\n }\n\n if (excludedShaders.length)\n {\n errors.push(`${excludedShaders.length} shader translation(s) are unsupported`);\n }\n\n if (failedBodies.length)\n {\n errors.push(`${failedBodies.length} effect body/bodies failed`);\n }\n\n if (rasterCompleteness.incompletePasses.length)\n {\n errors.push(`${rasterCompleteness.incompletePasses.length} raster pass(es) are incomplete`);\n }\n\n if (!availableShaderCount)\n {\n errors.push(\"no translated shaders are available\");\n }\n\n return {\n ok: errors.length === 0,\n level: errors.length ? \"diagnostic\" : \"structural\",\n errors: Object.freeze(errors),\n incompletePasses: Object.freeze(rasterCompleteness.incompletePasses)\n };\n}\n"],"names":["PACKAGE_VERSION","buildEffectPackage","input","options","values","normalizeOptions","effectRes","CjsHlslFormat","read","sourceBytes","emit","OUTPUT_RAW","source","IsGood","loadError","Error","sourceIdentity","normalizeSourceIdentity","m_version","permutationGraph","buildEffectPermutationGraph","reflectionPackage","buildCompleteEffectReflection","sourcePath","variants","buildExportVariants","allPermutations","bodyMap","Map","stageMap","shaderMap","variant","has","bodyKey","shader","GetShader","toShaderOptions","set","key","bodyOffset","bodySize","firstVariantKey","error","manifest","stages","effectDescription","GetEffectDescription","HlslEffectBindingManifest","fromEffectDescription","collection","collectStages","selection","body","errors","length","join","toJSON","stage","stageKey","shaderKey","contract","buildStageContract","stageRecord","localKey","techniqueName","passIndex","stageType","stageName","shaderHandle","shaderSize","bytecode","stringTableOffset","push","firstStageKey","firstBodyKey","bytes","contracts","translateStages","bodies","Array","from","translatedShaders","map","record","output","primaryContract","mergeShaderContracts","failedShaders","filter","hlsl2webgl","ok","excluded","excludedShaders","failedBodies","rasterCompleteness","inspectRasterCompleteness","availableShaderCount","info","format","formatVersion","EFFECT_INFO_VERSION","packageKind","targetBackend","backendPackage","backendPackageVersion","generatedAt","outputPath","sourceByteLength","byteLength","sourceMd5","md5","sourceSha256","sha256","translator","translatorVersion","language","flags","permutationMode","defaultPermutationIndex","m_permutations","sourceEffectVersion","sourceBodyCoverage","backendBodyCoverage","backendProgramCoverage","selectionCoversWholeEffect","permutationCount","uniqueBodyCount","sourcePermutationCount","sourceUniqueBodyCount","chunk","EFFECT_PERMUTATION_GRAPH_CHUNK","EFFECT_PERMUTATION_GRAPH_FORMAT","EFFECT_PERMUTATION_GRAPH_VERSION","sha256Utf8","JSON","stringify","effectReflection","pointer","bodyStageCount","uniqueShaderCount","translatedShaderCount","excludedShaderCount","failedShaderCount","failedBodyCount","expectedRasterPassCount","expectedPassCount","completeRasterPassCount","completePassCount","incompleteRasterPassCount","incompletePasses","allowFailures","completeness","packageValid","sourceComplete","backendComplete","runtimeComplete","metadata","effectResource","permutations","GetPermutationDescription","glsl","permutationIndex","shaders","qualification","qualifyEffectPackage","chunks","EFFECT_REFLECTION_CHUNK","reflection","EFFECT_REFLECTION_BLOB_CHUNK","blobBytes","includeSourceEffect","buildPackage","inspection","inspectWithValues","Object","freeze","reflectionBlobs","isArray","TypeError","toBytes","String","trim","technique","undefined","pass","Number","toLowerCase","isSafeInteger","includes","emitterOptions","normalizeOptionalString","Date","toISOString","value","name","result","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","multiplier","index","permutation","defaultOption","offset","size","decodePermutationOptions","remaining","optionCount","optionIndex","Math","floor","option","m_offsets","variantIndex","isInteger","tableIndex","tableIndexMatchesPermutationIndex","techniques","passes","declaredStageCount","HlslRenderContextEnum","SHADER_TYPE_COUNT","stageInput","stageInputs","m_exists","hlslShaderStageName","cjsShaderBytecode","m_shader","pipelineInputs","cloneJson","signature","registers","resources","mapToJson","samplers","uavs","constants","emitInto","pairVaryings","emitGlslWithOptions","stageInterface","normalizeBitangentStageInterface","inputs","bindings","stageOutputs","outputs","emitWarnings","warnings","mode","computeFragment","issue","validateStageSourceShape","validationError","message","details","test","reason","opcodeName","dimensionName","pixelVaryingsByPass","get","startsWith","register","sort","left","right","varyings","parse","entries","registerIndex","inputSemantics","semantic","usageName","usage","usageIndex","usedMask","type","dimension","inputNames","Set","hasNormal","hasTangent","hasBinormal","hasBlendIndices","tangentContract","resourceNames","entry","Boolean","vertex","requiresSplitTbn","requiresPackedTangent","requiresSkinning","texturePacking","classifyTexturePacking","constantBuffers","registerType","registerSpace","registerCount","arrayCount","dynamic","names","some","first","samplerNames","sharedByStageCount","shaderRecord","bitangentRegisters","flatMap","semanticName","semanticIndex","replaceAll","hasVertexOutput","hasVertexInterface","hasFragmentOutput","groups","group","pixel","duplicateStages","missingStages","unavailableStages","identity","sha256Bytes","filePath","logicalPath","game","client","build","level"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"effectPackage.js","sources":["../../../../../src/formats/webgl/core/effectPackage.js"],"sourcesContent":["import { EFFECT_INFO_VERSION } from \"./effectPackageValidation.js\";\nimport { CjsHlslFormat } from \"../../hlsl/index.js\";\nimport { HlslEffectBindingManifest } from \"../../hlsl/core/tr2/shader/HlslEffectBindingManifest.js\";\nimport { HlslRenderContextEnum, hlslShaderStageName } from \"../../hlsl/core/tr2/HlslRenderContextEnum.js\";\n\nimport {\n buildEffectPermutationGraph,\n EFFECT_PERMUTATION_GRAPH_CHUNK,\n EFFECT_PERMUTATION_GRAPH_FORMAT,\n EFFECT_PERMUTATION_GRAPH_VERSION\n} from \"../../../format/effect/effectPermutationGraph.js\";\nimport {\n buildCompleteEffectReflection,\n EFFECT_REFLECTION_BLOB_CHUNK,\n EFFECT_REFLECTION_CHUNK\n} from \"../../../format/effect/effectReflectionPackage.js\";\nimport { buildPackage, emitGlslWithOptions, inspectWithValues } from \"./helpers.js\";\nimport { sha256Bytes, sha256Utf8 } from \"../../../format/effect/sha256.js\";\n\nconst PACKAGE_VERSION = \"0.11.1\";\n\n/**\n * Builds a complete CEWG package from compiled Tr2 effect bytes.\n *\n * This browser-safe path owns whole-effect selection, stage translation,\n * package assembly, and structural qualification. Filesystem and native-tool\n * concerns remain in Node callers.\n *\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Compiled effect bytes.\n * @param {object} [options] Selection, provenance, and emitter policy.\n * @returns {object} Package bytes plus inspection and qualification records.\n */\nexport function buildEffectPackage(input, options = {})\n{\n const values = normalizeOptions(input, options);\n const effectRes = CjsHlslFormat.read(values.sourceBytes, {\n emit: CjsHlslFormat.OUTPUT_RAW,\n source: values.source\n });\n\n if (!effectRes.IsGood())\n {\n throw effectRes.loadError || new Error(\"Tr2EffectRes failed to load input\");\n }\n\n const sourceIdentity = normalizeSourceIdentity(values);\n // One INFO version means one contract, and that contract requires complete\n // source reflection, which only version-15 input can supply.\n if (effectRes.m_version !== 15)\n {\n throw new Error(\n \"Effect package requires a version-15 compiled effect, got version \"\n + (effectRes.m_version ?? \"unknown\")\n );\n }\n\n const permutationGraph = buildEffectPermutationGraph(effectRes);\n const reflectionPackage = effectRes.m_version === 15\n ? buildCompleteEffectReflection(\n effectRes,\n permutationGraph,\n {\n sourceIdentity,\n sourcePath: values.source\n }\n )\n : null;\n const variants = buildExportVariants(effectRes, values.allPermutations);\n const bodyMap = new Map();\n const stageMap = new Map();\n const shaderMap = new Map();\n\n for (const variant of variants)\n {\n if (bodyMap.has(variant.bodyKey))\n {\n continue;\n }\n\n const shader = effectRes.GetShader(toShaderOptions(variant.options));\n\n if (!shader)\n {\n bodyMap.set(variant.bodyKey, {\n key: variant.bodyKey,\n bodyOffset: variant.bodyOffset,\n bodySize: variant.bodySize,\n firstVariantKey: variant.key,\n error: \"Tr2EffectRes.GetShader returned null\",\n manifest: null,\n stages: []\n });\n continue;\n }\n\n const effectDescription = shader.GetEffectDescription();\n const manifest = HlslEffectBindingManifest.fromEffectDescription(effectDescription);\n const collection = collectStages(effectDescription, values.selection);\n const body = {\n key: variant.bodyKey,\n bodyOffset: variant.bodyOffset,\n bodySize: variant.bodySize,\n firstVariantKey: variant.key,\n error: collection.errors.length ? collection.errors.join(\"; \") : null,\n manifest: manifest.toJSON(),\n stages: []\n };\n\n for (const stage of collection.stages)\n {\n const stageKey = `${variant.bodyKey}.${stage.key}`;\n const shaderKey = `shader_${stageKey}`;\n const contract = buildStageContract(stage);\n const stageRecord = {\n key: stageKey,\n bodyKey: variant.bodyKey,\n localKey: stage.key,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n stageType: stage.stageType,\n stageName: stage.stageName,\n shaderHandle: stage.shaderHandle,\n shaderSize: stage.bytecode.shaderSize,\n stringTableOffset: stage.bytecode.stringTableOffset,\n shaderKey,\n contract\n };\n\n stageMap.set(stageKey, stageRecord);\n body.stages.push(stageKey);\n shaderMap.set(shaderKey, {\n key: shaderKey,\n firstStageKey: stageKey,\n firstBodyKey: variant.bodyKey,\n stageName: stage.stageName,\n shaderSize: stage.bytecode.shaderSize,\n stringTableOffset: stage.bytecode.stringTableOffset,\n bytes: stage.bytecode.bytes,\n contracts: [ {\n stageKey,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n stageName: stage.stageName,\n contract\n } ]\n });\n }\n\n bodyMap.set(variant.bodyKey, body);\n }\n\n translateStages(shaderMap, stageMap, values);\n\n const bodies = Array.from(bodyMap.values());\n const stages = Array.from(stageMap.values());\n const translatedShaders = Array.from(shaderMap.values()).map((record) =>\n {\n const { bytes, emit, ...output } = record;\n\n output.primaryContract = mergeShaderContracts(output.contracts);\n return output;\n });\n const failedShaders = translatedShaders.filter((record) =>\n !record.hlsl2webgl?.ok && !record.excluded);\n const excludedShaders = translatedShaders.filter((record) => record.excluded);\n const failedBodies = bodies.filter((body) => body.error);\n const rasterCompleteness = inspectRasterCompleteness(stages, translatedShaders);\n const availableShaderCount = translatedShaders.filter((record) =>\n record.hlsl2webgl?.ok && record.source).length;\n const info = {\n format: \"CEWG\",\n formatVersion: EFFECT_INFO_VERSION,\n packageKind: values.allPermutations\n ? \"tr2-effect-webgl-permutations\"\n : \"tr2-effect-webgl\",\n targetBackend: \"webgl\",\n backendPackage: \"@carbonenginejs/runtime-resource/formats/webgl\",\n backendPackageVersion: PACKAGE_VERSION,\n generatedAt: values.generatedAt,\n sourcePath: values.source,\n outputPath: values.outputPath,\n sourceByteLength: sourceIdentity.byteLength,\n sourceMd5: sourceIdentity.md5,\n sourceSha256: sourceIdentity.sha256,\n sourceIdentity,\n translator: \"dxbc-js-emitter\",\n translatorVersion: PACKAGE_VERSION,\n language: \"es300\",\n flags: null,\n selection: values.selection,\n permutationMode: values.allPermutations ? \"all\" : \"selected\",\n defaultPermutationIndex: defaultPermutationIndex(effectRes.m_permutations),\n sourceEffectVersion: effectRes.m_version,\n ...(reflectionPackage ? {\n sourceBodyCoverage: \"all-unique\",\n backendBodyCoverage: values.allPermutations ? \"all\" : \"selected\",\n backendProgramCoverage: selectionCoversWholeEffect(values.selection)\n ? \"all-stages\"\n : \"filtered\"\n } : {}),\n permutationCount: variants.length,\n uniqueBodyCount: bodies.length,\n sourcePermutationCount: permutationGraph.variants.length,\n sourceUniqueBodyCount: permutationGraph.bodies.length,\n permutationGraph: {\n chunk: EFFECT_PERMUTATION_GRAPH_CHUNK,\n format: EFFECT_PERMUTATION_GRAPH_FORMAT,\n formatVersion: EFFECT_PERMUTATION_GRAPH_VERSION,\n sha256: sha256Utf8(`${JSON.stringify(permutationGraph)}\\n`),\n permutationCount: permutationGraph.variants.length,\n uniqueBodyCount: permutationGraph.bodies.length\n },\n ...(reflectionPackage\n ? { effectReflection: reflectionPackage.pointer }\n : {}),\n bodyStageCount: stages.length,\n uniqueShaderCount: translatedShaders.length,\n translatedShaderCount: translatedShaders.length - failedShaders.length - excludedShaders.length,\n excludedShaderCount: excludedShaders.length,\n failedShaderCount: failedShaders.length,\n failedBodyCount: failedBodies.length,\n expectedRasterPassCount: rasterCompleteness.expectedPassCount,\n completeRasterPassCount: rasterCompleteness.completePassCount,\n incompleteRasterPassCount: rasterCompleteness.incompletePasses.length,\n availableShaderCount,\n allowFailures: values.allowFailures,\n completeness: {\n packageValid: true,\n sourceComplete: reflectionPackage !== null,\n backendComplete: false,\n runtimeComplete: false\n }\n };\n const metadata = {\n generatedAt: values.generatedAt,\n sourcePath: values.source,\n effectResource: effectRes.toJSON(),\n permutations: effectRes.GetPermutationDescription(),\n variants,\n bodies: bodies.map((body) => ({\n key: body.key,\n bodyOffset: body.bodyOffset,\n bodySize: body.bodySize,\n firstVariantKey: body.firstVariantKey,\n error: body.error,\n manifest: body.manifest\n }))\n };\n const glsl = {\n format: \"CEWG_GLSL_SET\",\n formatVersion: 1,\n language: \"es300\",\n permutationMode: info.permutationMode,\n selection: values.selection,\n variants: variants.map((variant) => ({\n key: variant.key,\n permutationIndex: variant.permutationIndex,\n bodyKey: variant.bodyKey\n })),\n bodies: bodies.map((body) => ({\n key: body.key,\n error: body.error,\n stages: body.stages\n })),\n stages,\n shaders: translatedShaders\n };\n const qualification = qualifyEffectPackage({\n info,\n metadata,\n glsl,\n failedShaders,\n excludedShaders,\n failedBodies,\n rasterCompleteness,\n availableShaderCount\n });\n if (!qualification.ok && !values.allowFailures)\n {\n throw new Error(\n `CEWG target is incomplete; output was not built. ${qualification.errors.join(\"; \")}`\n );\n }\n\n const chunks = [\n [ \"INFO\", info ],\n [ \"META\", metadata ],\n [ EFFECT_PERMUTATION_GRAPH_CHUNK, permutationGraph ],\n ...(reflectionPackage\n ? [\n [ EFFECT_REFLECTION_CHUNK, reflectionPackage.reflection ],\n [ EFFECT_REFLECTION_BLOB_CHUNK, reflectionPackage.blobBytes ]\n ]\n : []),\n [ \"GLSL\", glsl ]\n ];\n\n if (values.includeSourceEffect)\n {\n chunks.push([ \"TR2E\", values.sourceBytes ]);\n }\n\n const bytes = buildPackage(chunks);\n const inspection = inspectWithValues(bytes, {\n emit: \"json\",\n source: values.source\n });\n\n return Object.freeze({\n bytes,\n info: Object.freeze(info),\n metadata: Object.freeze(metadata),\n permutationGraph,\n reflection: reflectionPackage?.reflection ?? null,\n reflectionBlobs: reflectionPackage?.blobBytes ?? null,\n glsl: Object.freeze(glsl),\n inspection: Object.freeze(inspection),\n qualification: Object.freeze(qualification)\n });\n}\n\nfunction normalizeOptions(input, options)\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(\"CEWG effect options must be an object\");\n }\n\n const sourceBytes = toBytes(input);\n const source = String(options.source ?? \"memory\").trim() || \"memory\";\n const selection = Object.freeze({\n technique: options.technique === undefined || options.technique === null\n ? null\n : String(options.technique),\n pass: options.pass === undefined || options.pass === null ? null : Number(options.pass),\n stage: options.stage === undefined || options.stage === null\n ? null\n : String(options.stage).toLowerCase()\n });\n\n if (selection.pass !== null\n && (!Number.isSafeInteger(selection.pass) || selection.pass < 0))\n {\n throw new TypeError(\"CEWG effect pass must be a non-negative integer or null\");\n }\n\n if (selection.stage !== null\n && ![ \"vertex\", \"pixel\", \"compute\" ].includes(selection.stage))\n {\n throw new TypeError(`Unsupported CEWG effect stage: ${selection.stage}`);\n }\n\n if (options.emitterOptions !== undefined\n && (!options.emitterOptions || typeof options.emitterOptions !== \"object\"\n || Array.isArray(options.emitterOptions)))\n {\n throw new TypeError(\"CEWG emitterOptions must be an object\");\n }\n\n return {\n sourceBytes,\n source,\n outputPath: normalizeOptionalString(options.outputPath, \"CEWG outputPath\"),\n sourceIdentity: options.sourceIdentity ?? null,\n generatedAt: options.generatedAt === undefined || options.generatedAt === null\n ? null\n : new Date(options.generatedAt).toISOString(),\n allPermutations: options.allPermutations !== false,\n allowFailures: options.allowFailures === true,\n includeSourceEffect: options.includeSourceEffect === true,\n selection,\n emitterOptions: { ...(options.emitterOptions ?? {}) }\n };\n}\n\nfunction normalizeOptionalString(value, name)\n{\n if (value === undefined || value === null)\n {\n return null;\n }\n\n const result = String(value).trim();\n\n if (!result)\n {\n throw new TypeError(`${name} must be a non-empty string or null`);\n }\n\n return result;\n}\n\nfunction selectionCoversWholeEffect(selection)\n{\n return selection.technique === null\n && selection.pass === null\n && selection.stage === null;\n}\n\nfunction toBytes(input)\n{\n if (input instanceof Uint8Array)\n {\n return input;\n }\n\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n\n throw new TypeError(\"CEWG effect input must be Uint8Array, ArrayBuffer, or ArrayBufferView bytes\");\n}\n\nfunction defaultPermutationIndex(permutations)\n{\n let multiplier = 1;\n let index = 0;\n\n for (const permutation of permutations)\n {\n index += (permutation.defaultOption || 0) * multiplier;\n multiplier *= permutation.options.length || 1;\n }\n\n return index;\n}\n\nfunction bodyKey(record)\n{\n return `body_${record.offset}_${record.size}`;\n}\n\nfunction decodePermutationOptions(permutations, permutationIndex)\n{\n let remaining = permutationIndex;\n\n return permutations.map((permutation) =>\n {\n const optionCount = permutation.options.length || 1;\n const optionIndex = optionCount ? remaining % optionCount : 0;\n\n remaining = Math.floor(remaining / optionCount);\n return {\n name: permutation.name,\n value: permutation.options[optionIndex] || \"\",\n optionIndex,\n defaultOption: permutation.defaultOption\n };\n });\n}\n\nfunction toShaderOptions(options)\n{\n return options.map((option) => ({ name: option.name, value: option.value }));\n}\n\nfunction buildExportVariants(effectRes, allPermutations)\n{\n if (allPermutations)\n {\n return effectRes.m_offsets.map((record, variantIndex) =>\n {\n const permutationIndex = Number.isInteger(record.index)\n ? record.index\n : variantIndex;\n\n return {\n key: `variant_${permutationIndex}`,\n variantIndex,\n permutationIndex,\n tableIndex: variantIndex,\n bodyKey: bodyKey(record),\n bodyOffset: record.offset,\n bodySize: record.size,\n options: decodePermutationOptions(\n effectRes.m_permutations,\n permutationIndex\n ),\n tableIndexMatchesPermutationIndex:\n variantIndex === permutationIndex\n };\n });\n }\n\n const permutationIndex = defaultPermutationIndex(effectRes.m_permutations);\n const record = effectRes.m_offsets[permutationIndex];\n\n if (!record)\n {\n throw new Error(`Default permutation index ${permutationIndex} is not present`);\n }\n\n return [ {\n key: `variant_${permutationIndex}`,\n variantIndex: permutationIndex,\n permutationIndex,\n tableIndex: permutationIndex,\n bodyKey: bodyKey(record),\n bodyOffset: record.offset,\n bodySize: record.size,\n options: decodePermutationOptions(effectRes.m_permutations, permutationIndex),\n tableIndexMatchesPermutationIndex: Number.isInteger(record.index)\n ? record.index === permutationIndex\n : true\n } ];\n}\n\nfunction collectStages(effectDescription, selection)\n{\n const stages = [];\n const errors = [];\n\n for (const technique of effectDescription.techniques ?? [])\n {\n if (selection.technique && technique.name !== selection.technique)\n {\n continue;\n }\n\n if (!selection.stage && !Number.isInteger(selection.pass)\n && technique.passes.length === 0)\n {\n errors.push(`${technique.name} declares no passes`);\n }\n\n for (let passIndex = 0; passIndex < technique.passes.length; passIndex++)\n {\n if (Number.isInteger(selection.pass) && passIndex !== selection.pass)\n {\n continue;\n }\n\n const pass = technique.passes[passIndex];\n let declaredStageCount = 0;\n\n for (let stageType = 0;\n stageType < HlslRenderContextEnum.SHADER_TYPE_COUNT;\n stageType++)\n {\n const stageInput = pass.stageInputs[stageType];\n\n if (!stageInput?.m_exists)\n {\n continue;\n }\n\n declaredStageCount++;\n const stageName = hlslShaderStageName(stageType);\n\n if (selection.stage && stageName !== selection.stage)\n {\n continue;\n }\n\n if (!stageInput.cjsShaderBytecode)\n {\n errors.push(\n `${technique.name}.pass${passIndex}.${stageName} declares shader handle `\n + `${stageInput.m_shader ?? \"unknown\"} but has no shader bytecode`\n );\n continue;\n }\n\n stages.push({\n key: `${technique.name}.pass${passIndex}.${stageName}`,\n techniqueName: technique.name,\n passIndex,\n stageType,\n stageName,\n shaderHandle: stageInput.m_shader,\n bytecode: stageInput.cjsShaderBytecode,\n pipelineInputs: cloneJson(stageInput.signature?.pipelineInputs ?? []),\n registers: cloneJson(stageInput.signature?.registers ?? []),\n resources: mapToJson(stageInput.resources),\n samplers: mapToJson(stageInput.samplers),\n uavs: mapToJson(stageInput.uavs),\n constants: cloneJson(stageInput.constants ?? [])\n });\n }\n\n if (!selection.stage && declaredStageCount === 0)\n {\n errors.push(`${technique.name}.pass${passIndex} declares no shader stages`);\n }\n }\n }\n\n return { stages, errors };\n}\n\nfunction translateStages(shaderMap, stageMap, values)\n{\n const emitInto = (record, pairVaryings) =>\n {\n try\n {\n const result = emitGlslWithOptions(record.bytes, {\n ...values.emitterOptions,\n source: `${values.source}#${record.firstStageKey}`,\n ...(pairVaryings?.length ? { pairVaryings } : {})\n });\n const stageInterface = normalizeBitangentStageInterface(\n result,\n record\n );\n\n record.emit = {\n ...result,\n source: stageInterface.source,\n inputs: stageInterface.inputs\n };\n record.source = stageInterface.source;\n record.bindings = result.bindings;\n record.stageInputs = stageInterface.inputs;\n record.stageOutputs = result.outputs;\n record.emitWarnings = result.warnings;\n record.translator = \"dxbc-js-emitter\";\n record.hlsl2webgl = { ok: true, mode: \"js-emitter\" };\n\n if (result.stageName === \"compute\")\n {\n record.computeFragment = result.computeFragment;\n }\n\n const issue = validateStageSourceShape(record);\n\n if (issue)\n {\n record.hlsl2webgl = { ok: false, validationError: issue };\n record.source = null;\n }\n }\n catch (error)\n {\n const message = error?.message || String(error);\n\n record.hlsl2webgl = {\n ok: false,\n error: message,\n details: error?.details ?? null\n };\n\n if (/not supported|No GLSL lowering|unimplementable/iu.test(message))\n {\n record.excluded = {\n reason: message,\n ...(error?.details?.opcodeName\n ? { opcodeName: error.details.opcodeName }\n : {}),\n ...(error?.details?.dimensionName\n ? { dimensionName: error.details.dimensionName }\n : {})\n };\n }\n }\n };\n\n for (const record of shaderMap.values())\n {\n if (record.stageName !== \"vertex\")\n {\n emitInto(record, null);\n }\n }\n\n const pixelVaryingsByPass = new Map();\n\n for (const stage of stageMap.values())\n {\n if (stage.stageName !== \"pixel\")\n {\n continue;\n }\n\n const record = shaderMap.get(stage.shaderKey);\n\n if (!record?.emit)\n {\n continue;\n }\n\n pixelVaryingsByPass.set(\n `${stage.bodyKey}|${stage.techniqueName}|${stage.passIndex}`,\n record.emit.inputs\n .filter((input) => typeof input.name === \"string\"\n && input.name.startsWith(\"vs_r\"))\n .map((input) => input.register)\n .sort((left, right) => left - right)\n );\n }\n\n for (const stage of stageMap.values())\n {\n if (stage.stageName !== \"vertex\")\n {\n continue;\n }\n\n const record = shaderMap.get(stage.shaderKey);\n const varyings = pixelVaryingsByPass.get(\n `${stage.bodyKey}|${stage.techniqueName}|${stage.passIndex}`\n ) ?? [];\n\n if (record)\n {\n record.pairVaryings = varyings;\n emitInto(record, varyings);\n }\n }\n}\n\nfunction cloneJson(value)\n{\n if (value === undefined || value === null)\n {\n return value;\n }\n\n return JSON.parse(JSON.stringify(value));\n}\n\nfunction mapToJson(map)\n{\n if (!(map instanceof Map))\n {\n return [];\n }\n\n return Array.from(map.entries()).map(([ registerIndex, value ]) => ({\n registerIndex,\n ...cloneJson(value)\n }));\n}\n\nfunction buildStageContract(stage)\n{\n const pipelineInputs = cloneJson(stage.pipelineInputs ?? []);\n const inputSemantics = pipelineInputs.map((input) => ({\n semantic: `${input.usageName || `USAGE_${input.usage}`}${input.usageIndex || \"\"}`,\n usage: input.usage,\n usageName: input.usageName,\n usageIndex: input.usageIndex,\n registerIndex: input.registerIndex,\n usedMask: input.usedMask,\n type: input.type,\n dimension: input.dimension\n }));\n const inputNames = new Set(inputSemantics.map((input) => input.usageName));\n const hasNormal = inputNames.has(\"NORMAL\");\n const hasTangent = inputNames.has(\"TANGENT\");\n const hasBinormal = inputNames.has(\"BINORMAL\") || inputNames.has(\"BITANGENT\");\n const hasBlendIndices = inputNames.has(\"BLENDINDICES\")\n || inputNames.has(\"BLENDINDICE\");\n let tangentContract = \"none\";\n\n if (hasNormal && hasTangent && hasBinormal)\n {\n tangentContract = \"split_tbn\";\n }\n else if (!hasNormal && hasTangent)\n {\n tangentContract = \"packed_tangent_or_tangent_only\";\n }\n else if (hasNormal || hasTangent || hasBinormal)\n {\n tangentContract = \"partial_tbn\";\n }\n\n const resources = cloneJson(stage.resources ?? []);\n const samplers = cloneJson(stage.samplers ?? []);\n const uavs = cloneJson(stage.uavs ?? []);\n const constants = cloneJson(stage.constants ?? []);\n const resourceNames = resources.map((entry) => entry.name).filter(Boolean);\n\n return {\n stageName: stage.stageName,\n stageType: stage.stageType,\n vertex: stage.stageName === \"vertex\" ? {\n inputs: inputSemantics,\n tangentContract,\n requiresSplitTbn: tangentContract === \"split_tbn\",\n requiresPackedTangent: tangentContract === \"packed_tangent_or_tangent_only\",\n requiresSkinning: hasBlendIndices || resourceNames.includes(\"BoneTransforms\"),\n hasBlendIndices\n } : null,\n texturePacking: classifyTexturePacking(resourceNames),\n constantBuffers: (stage.registers ?? [])\n .filter((entry) => entry.registerType === 0)\n .map((entry) => ({\n registerIndex: entry.registerIndex,\n registerSpace: entry.registerSpace,\n registerCount: entry.registerCount,\n arrayCount: entry.arrayCount,\n dynamic: Boolean(entry.dynamic)\n })),\n resources,\n samplers,\n uavs,\n constants\n };\n}\n\nfunction classifyTexturePacking(names)\n{\n const values = new Set(names);\n\n if ([ \"NoMap\", \"PmdgMap\", \"ArMap\" ].some((name) => values.has(name)))\n {\n return \"packed_textures\";\n }\n\n if ([ \"NormalMap\", \"RoughnessMap\", \"MaterialMap\", \"AlbedoMap\",\n \"AoMap\", \"PaintMaskMap\" ].some((name) => values.has(name)))\n {\n return \"unpacked_textures\";\n }\n\n return \"unknown\";\n}\n\nfunction mergeShaderContracts(contracts)\n{\n const first = contracts?.[0]?.contract ?? null;\n\n if (!first)\n {\n return null;\n }\n\n return {\n stageName: first.stageName,\n stageType: first.stageType,\n vertex: first.vertex ? cloneJson(first.vertex) : null,\n texturePacking: first.texturePacking,\n constantBuffers: cloneJson(first.constantBuffers ?? []),\n resourceNames: (first.resources ?? []).map((entry) => entry.name).filter(Boolean),\n samplerNames: (first.samplers ?? []).map((entry) => entry.name).filter(Boolean),\n sharedByStageCount: contracts.length\n };\n}\n\nfunction normalizeBitangentStageInterface(result, shaderRecord)\n{\n if (shaderRecord?.stageName !== \"vertex\")\n {\n return {\n source: result.source,\n inputs: result.inputs\n };\n }\n\n const bitangentRegisters = new Set((shaderRecord.contracts ?? [])\n .flatMap((entry) => entry.contract?.vertex?.inputs ?? [])\n .filter((input) => input.usageName === \"BITANGENT\")\n .map((input) => input.registerIndex));\n let source = result.source;\n const inputs = result.inputs.map((input) =>\n {\n if (!bitangentRegisters.has(input.register)\n || input.semanticName !== \"BINORMAL\")\n {\n return input;\n }\n const name = `in_BITANGENT${input.semanticIndex}`;\n source = source.replaceAll(input.name, name);\n return {\n ...input,\n name,\n semanticName: \"BITANGENT\"\n };\n });\n return { source, inputs };\n}\n\nfunction validateStageSourceShape(record)\n{\n const source = record?.source ?? \"\";\n\n if (!source)\n {\n return null;\n }\n\n const hasVertexOutput = /\\bgl_Position\\b/u.test(source);\n const hasVertexInterface = /\\bin\\s+(?:lowp|mediump|highp)?\\s*\\w+\\s+attr\\d+\\b/u.test(source)\n || /\\bout\\s+(?:lowp|mediump|highp)?\\s*\\w+\\s+vs_TEXCOORD\\d+\\b/u.test(source)\n || /\\bin_[A-Z]+[0-9]+\\b/u.test(source);\n const hasFragmentOutput = /\\bout\\s+(?:lowp|mediump|highp)?\\s*vec4\\s+SV_Target\\d+\\b/u.test(source)\n || /\\bgl_FragColor\\b/u.test(source);\n\n if (record.stageName === \"vertex\" && !hasVertexOutput)\n {\n return \"vertex stage source does not write gl_Position\";\n }\n\n if (record.stageName === \"pixel\"\n && (hasVertexOutput || hasVertexInterface) && !hasFragmentOutput)\n {\n return \"pixel stage source looks like vertex GLSL\";\n }\n\n if (record.stageName === \"compute\" && !/\\bcewgUav\\d+(_s\\d+)?\\b/u.test(source))\n {\n return \"compute stage source does not write any cewgUav output\";\n }\n\n return null;\n}\n\nfunction inspectRasterCompleteness(stages, shaders)\n{\n const shaderMap = new Map(shaders.map((shader) => [ shader.key, shader ]));\n const groups = new Map();\n\n for (const stage of stages)\n {\n if (![ \"vertex\", \"pixel\" ].includes(stage.stageName))\n {\n continue;\n }\n\n const key = `${stage.bodyKey}:${stage.techniqueName}:${stage.passIndex}`;\n const group = groups.get(key) ?? {\n key,\n bodyKey: stage.bodyKey,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n vertex: null,\n pixel: null,\n duplicateStages: []\n };\n\n if (group[stage.stageName])\n {\n group.duplicateStages.push(stage.stageName);\n }\n\n group[stage.stageName] = stage;\n groups.set(key, group);\n }\n\n const incompletePasses = [];\n let completePassCount = 0;\n\n for (const group of groups.values())\n {\n const missingStages = [];\n const unavailableStages = [];\n\n for (const stageName of [ \"vertex\", \"pixel\" ])\n {\n const stage = group[stageName];\n\n if (!stage)\n {\n missingStages.push(stageName);\n continue;\n }\n\n const shader = shaderMap.get(stage.shaderKey);\n\n if (!shader?.hlsl2webgl?.ok || !shader.source)\n {\n unavailableStages.push({\n stageName,\n stageKey: stage.key,\n shaderKey: stage.shaderKey,\n reason: shader?.hlsl2webgl?.validationError\n || shader?.hlsl2webgl?.error\n || shader?.excluded?.reason\n || \"translated source is unavailable\"\n });\n }\n }\n\n if (!missingStages.length && !unavailableStages.length\n && !group.duplicateStages.length)\n {\n completePassCount++;\n }\n else\n {\n incompletePasses.push({\n ...group,\n missingStages,\n unavailableStages,\n duplicateStages: [ ...new Set(group.duplicateStages) ].sort()\n });\n }\n }\n\n return {\n expectedPassCount: groups.size,\n completePassCount,\n incompletePasses\n };\n}\n\nfunction normalizeSourceIdentity(values)\n{\n const identity = values.sourceIdentity;\n\n if (identity !== null\n && (!identity || typeof identity !== \"object\" || Array.isArray(identity)))\n {\n throw new TypeError(\"CEWG sourceIdentity must be an object\");\n }\n\n const sha256 = sha256Bytes(values.sourceBytes);\n if (identity?.sha256 !== undefined && identity?.sha256 !== null\n && identity.sha256 !== sha256)\n {\n throw new Error(\n \"CEWG sourceIdentity.sha256 does not match the exact effect input bytes\"\n );\n }\n\n return Object.freeze({\n filePath: identity?.filePath ?? values.source,\n logicalPath: identity?.logicalPath ?? values.source,\n game: identity?.game ?? null,\n client: identity?.client ?? null,\n build: identity?.build === undefined || identity?.build === null\n ? null\n : String(identity.build),\n byteLength: values.sourceBytes.byteLength,\n md5: identity?.md5 ?? null,\n sha256\n });\n}\n\nfunction qualifyEffectPackage({\n info,\n metadata,\n glsl,\n failedShaders,\n excludedShaders,\n failedBodies,\n rasterCompleteness,\n availableShaderCount\n})\n{\n const errors = [];\n\n if (info.format !== \"CEWG\" || glsl.format !== \"CEWG_GLSL_SET\")\n {\n errors.push(\"invalid CEWG package envelope\");\n }\n\n if (!Array.isArray(metadata.variants) || !Array.isArray(glsl.shaders))\n {\n errors.push(\"missing CEWG graph arrays\");\n }\n\n if (failedShaders.length)\n {\n errors.push(`${failedShaders.length} shader translation(s) failed`);\n }\n\n if (excludedShaders.length)\n {\n errors.push(`${excludedShaders.length} shader translation(s) are unsupported`);\n }\n\n if (failedBodies.length)\n {\n errors.push(`${failedBodies.length} effect body/bodies failed`);\n }\n\n if (rasterCompleteness.incompletePasses.length)\n {\n errors.push(`${rasterCompleteness.incompletePasses.length} raster pass(es) are incomplete`);\n }\n\n if (!availableShaderCount)\n {\n errors.push(\"no translated shaders are available\");\n }\n\n return {\n ok: errors.length === 0,\n level: errors.length ? \"diagnostic\" : \"structural\",\n errors: Object.freeze(errors),\n incompletePasses: Object.freeze(rasterCompleteness.incompletePasses)\n };\n}\n"],"names":["PACKAGE_VERSION","buildEffectPackage","input","options","values","normalizeOptions","effectRes","CjsHlslFormat","read","sourceBytes","emit","OUTPUT_RAW","source","IsGood","loadError","Error","sourceIdentity","normalizeSourceIdentity","m_version","permutationGraph","buildEffectPermutationGraph","reflectionPackage","buildCompleteEffectReflection","sourcePath","variants","buildExportVariants","allPermutations","bodyMap","Map","stageMap","shaderMap","variant","has","bodyKey","shader","GetShader","toShaderOptions","set","key","bodyOffset","bodySize","firstVariantKey","error","manifest","stages","effectDescription","GetEffectDescription","HlslEffectBindingManifest","fromEffectDescription","collection","collectStages","selection","body","errors","length","join","toJSON","stage","stageKey","shaderKey","contract","buildStageContract","stageRecord","localKey","techniqueName","passIndex","stageType","stageName","shaderHandle","shaderSize","bytecode","stringTableOffset","push","firstStageKey","firstBodyKey","bytes","contracts","translateStages","bodies","Array","from","translatedShaders","map","record","output","primaryContract","mergeShaderContracts","failedShaders","filter","hlsl2webgl","ok","excluded","excludedShaders","failedBodies","rasterCompleteness","inspectRasterCompleteness","availableShaderCount","info","format","formatVersion","EFFECT_INFO_VERSION","packageKind","targetBackend","backendPackage","backendPackageVersion","generatedAt","outputPath","sourceByteLength","byteLength","sourceMd5","md5","sourceSha256","sha256","translator","translatorVersion","language","flags","permutationMode","defaultPermutationIndex","m_permutations","sourceEffectVersion","sourceBodyCoverage","backendBodyCoverage","backendProgramCoverage","selectionCoversWholeEffect","permutationCount","uniqueBodyCount","sourcePermutationCount","sourceUniqueBodyCount","chunk","EFFECT_PERMUTATION_GRAPH_CHUNK","EFFECT_PERMUTATION_GRAPH_FORMAT","EFFECT_PERMUTATION_GRAPH_VERSION","sha256Utf8","JSON","stringify","effectReflection","pointer","bodyStageCount","uniqueShaderCount","translatedShaderCount","excludedShaderCount","failedShaderCount","failedBodyCount","expectedRasterPassCount","expectedPassCount","completeRasterPassCount","completePassCount","incompleteRasterPassCount","incompletePasses","allowFailures","completeness","packageValid","sourceComplete","backendComplete","runtimeComplete","metadata","effectResource","permutations","GetPermutationDescription","glsl","permutationIndex","shaders","qualification","qualifyEffectPackage","chunks","EFFECT_REFLECTION_CHUNK","reflection","EFFECT_REFLECTION_BLOB_CHUNK","blobBytes","includeSourceEffect","buildPackage","inspection","inspectWithValues","Object","freeze","reflectionBlobs","isArray","TypeError","toBytes","String","trim","technique","undefined","pass","Number","toLowerCase","isSafeInteger","includes","emitterOptions","normalizeOptionalString","Date","toISOString","value","name","result","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","multiplier","index","permutation","defaultOption","offset","size","decodePermutationOptions","remaining","optionCount","optionIndex","Math","floor","option","m_offsets","variantIndex","isInteger","tableIndex","tableIndexMatchesPermutationIndex","techniques","passes","declaredStageCount","HlslRenderContextEnum","SHADER_TYPE_COUNT","stageInput","stageInputs","m_exists","hlslShaderStageName","cjsShaderBytecode","m_shader","pipelineInputs","cloneJson","signature","registers","resources","mapToJson","samplers","uavs","constants","emitInto","pairVaryings","emitGlslWithOptions","stageInterface","normalizeBitangentStageInterface","inputs","bindings","stageOutputs","outputs","emitWarnings","warnings","mode","computeFragment","issue","validateStageSourceShape","validationError","message","details","test","reason","opcodeName","dimensionName","pixelVaryingsByPass","get","startsWith","register","sort","left","right","varyings","parse","entries","registerIndex","inputSemantics","semantic","usageName","usage","usageIndex","usedMask","type","dimension","inputNames","Set","hasNormal","hasTangent","hasBinormal","hasBlendIndices","tangentContract","resourceNames","entry","Boolean","vertex","requiresSplitTbn","requiresPackedTangent","requiresSkinning","texturePacking","classifyTexturePacking","constantBuffers","registerType","registerSpace","registerCount","arrayCount","dynamic","names","some","first","samplerNames","sharedByStageCount","shaderRecord","bitangentRegisters","flatMap","semanticName","semanticIndex","replaceAll","hasVertexOutput","hasVertexInterface","hasFragmentOutput","groups","group","pixel","duplicateStages","missingStages","unavailableStages","identity","sha256Bytes","filePath","logicalPath","game","client","build","level"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Error raised when a CEWG package or a DXBC-to-GLSL emission cannot be
|
|
3
3
|
* completed safely.
|
|
4
4
|
*
|
|
5
|
-
* This
|
|
6
|
-
* `DxbcReadError` class (that
|
|
7
|
-
* boundary). Emitter/package failures raised from this
|
|
5
|
+
* This format has no dependency on the sibling `formats/dxbc` internal
|
|
6
|
+
* `DxbcReadError` class (that format only exports its public `CjsDxbcFormat`
|
|
7
|
+
* boundary). Emitter/package failures raised from this format's own code
|
|
8
8
|
* use this class instead, while thrown messages that document a specific
|
|
9
9
|
* failure mode (see README/tests) are kept identical to their origin in
|
|
10
10
|
* `hlslreader`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sources":["../../../../../src/formats/webgl/core/errors.js"],"sourcesContent":["/**\n * Error raised when a CEWG package or a DXBC-to-GLSL emission cannot be\n * completed safely.\n *\n * This
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../../../../../src/formats/webgl/core/errors.js"],"sourcesContent":["/**\n * Error raised when a CEWG package or a DXBC-to-GLSL emission cannot be\n * completed safely.\n *\n * This format has no dependency on the sibling `formats/dxbc` internal\n * `DxbcReadError` class (that format only exports its public `CjsDxbcFormat`\n * boundary). Emitter/package failures raised from this format's own code\n * use this class instead, while thrown messages that document a specific\n * failure mode (see README/tests) are kept identical to their origin in\n * `hlslreader`.\n */\nexport class WebglReadError extends Error\n{\n /**\n * Creates a read/emit error with structured location details.\n *\n * @param {string} message Human-readable failure reason.\n * @param {object} [details] Extra reader state such as source, offset, or opcode.\n */\n constructor(message, details = {})\n {\n super(message);\n this.name = \"WebglReadError\";\n this.details = details;\n }\n}\n"],"names":["WebglReadError","Error","constructor","message","details","name"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,cAAc,SAASC,KAAK,CACzC;AACI;AACJ;AACA;AACA;AACA;AACA;AACIC,EAAAA,WAAWA,CAACC,OAAO,EAAEC,OAAO,GAAG,EAAE,EACjC;IACI,KAAK,CAACD,OAAO,CAAC;IACd,IAAI,CAACE,IAAI,GAAG,gBAAgB;IAC5B,IAAI,CAACD,OAAO,GAAGA,OAAO;AAC1B,EAAA;AACJ;;;;"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# DXBC format documentation
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource/formats/dxbc`
|
|
5
|
+
Audience: Shader-tool authors, lowering-backend authors, and maintainers
|
|
6
|
+
Summary: Explains the pure-JavaScript DXBC reader, its decoded output, and its boundary with effect and shader-lowering packages.
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
`@carbonenginejs/runtime-resource/formats/dxbc` owns pure-JavaScript reading of Microsoft DXBC
|
|
11
|
+
containers. It validates the chunk directory, decodes input/output/patch
|
|
12
|
+
signatures, reads SM4/SM5 program headers, and converts instruction tokens into
|
|
13
|
+
structured records.
|
|
14
|
+
|
|
15
|
+
The package preserves unfamiliar declaration payload words as `tailTokens`
|
|
16
|
+
where the framing is valid. Executable instructions decode strictly and reject
|
|
17
|
+
malformed operand lengths.
|
|
18
|
+
|
|
19
|
+
## Use this package when
|
|
20
|
+
|
|
21
|
+
Use `format-dxbc` when you need:
|
|
22
|
+
|
|
23
|
+
- cheap DXBC identification and container inspection;
|
|
24
|
+
- plain JSON-compatible signatures and instruction records;
|
|
25
|
+
- internal decoder objects for an advanced shader backend; or
|
|
26
|
+
- a browser-safe byte decoder with no native executable or filesystem
|
|
27
|
+
dependency.
|
|
28
|
+
|
|
29
|
+
Do not place target-language lowering rules here. GLSL emission belongs to
|
|
30
|
+
`@carbonenginejs/runtime-resource/formats/webgl`, and WGSL emission belongs to
|
|
31
|
+
`@carbonenginejs/runtime-resource/formats/webgpu`.
|
|
32
|
+
|
|
33
|
+
## Where it fits
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
compiled effects
|
|
37
|
+
|
|
|
38
|
+
v
|
|
39
|
+
format-hlsl
|
|
40
|
+
|
|
|
41
|
+
| opaque DXBC stage bytes
|
|
42
|
+
v
|
|
43
|
+
format-dxbc
|
|
44
|
+
|
|
|
45
|
+
+---- decoded records ----> format-webgl
|
|
46
|
+
|
|
|
47
|
+
+---- decoded records ----> format-webgpu
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The public decoder contract is Microsoft DXBC data. Package-local binary
|
|
51
|
+
utilities are internal implementation details and are not public npm subpaths.
|
|
52
|
+
|
|
53
|
+
## Start here
|
|
54
|
+
|
|
55
|
+
```js
|
|
56
|
+
import { CjsDxbcFormat } from "@carbonenginejs/runtime-resource/formats/dxbc";
|
|
57
|
+
|
|
58
|
+
const decoded = CjsDxbcFormat.read(shaderBytes, {
|
|
59
|
+
source: "example.dxbc"
|
|
60
|
+
});
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Documentation map
|
|
64
|
+
|
|
65
|
+
- [Architecture and boundaries](architecture.md)
|
|
66
|
+
- [Public API reference](reference/api.md)
|
|
67
|
+
- [Decoded output contract](reference/decoded-output.md)
|
|
68
|
+
- [Class-purpose catalog](reference/classes/README.md)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Architecture and boundaries
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource/formats/dxbc`
|
|
5
|
+
Audience: Shader-tool authors, lowering-backend authors, and maintainers
|
|
6
|
+
Summary: Defines DXBC decoding ownership, strictness, dependency direction, and target-language non-goals.
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
`format-dxbc` turns caller-supplied DXBC bytes into validated container,
|
|
11
|
+
signature, program, operand, declaration, and instruction records. It stops
|
|
12
|
+
before target-language code generation.
|
|
13
|
+
|
|
14
|
+
## Dependency direction
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
caller or format-hlsl
|
|
18
|
+
|
|
|
19
|
+
| DXBC bytes
|
|
20
|
+
v
|
|
21
|
+
format-dxbc
|
|
22
|
+
/ \
|
|
23
|
+
v v
|
|
24
|
+
format-webgl format-webgpu
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The package has no runtime dependency and its public source works in browsers
|
|
28
|
+
and Node. Lowering packages depend on its decoded records; it does not import
|
|
29
|
+
them.
|
|
30
|
+
|
|
31
|
+
## Owned responsibilities
|
|
32
|
+
|
|
33
|
+
- DXBC magic, header, checksum field, total-size, and chunk-directory parsing.
|
|
34
|
+
- Bounds-checked access to chunk payloads.
|
|
35
|
+
- `ISGN`, `ISG1`, `OSGN`, `OSG1`, `OSG5`, `PCSG`, and `PSG1` signature
|
|
36
|
+
records.
|
|
37
|
+
- `SHEX` and `SHDR` program version and token-stream reading.
|
|
38
|
+
- SM4/SM5 opcode, operand, declaration, control, and extension-token decoding.
|
|
39
|
+
- SM5.1 binding-range and resource-reference records.
|
|
40
|
+
- JSON-compatible output and an internal raw-object mode.
|
|
41
|
+
- Structured decode errors with source and offset details.
|
|
42
|
+
|
|
43
|
+
## Ownership elsewhere
|
|
44
|
+
|
|
45
|
+
- Compiled effect containers, permutations, techniques, and binding manifests
|
|
46
|
+
belong to `format-hlsl`.
|
|
47
|
+
- GLSL ES generation and WebGL-specific register/storage policy belong to
|
|
48
|
+
`format-webgl`.
|
|
49
|
+
- WGSL generation, pass-global WebGPU binding allocation, and CEWGPU assembly
|
|
50
|
+
belong to `format-webgpu`.
|
|
51
|
+
- GPU shader-module and pipeline realization belongs to engine packages.
|
|
52
|
+
|
|
53
|
+
## Strictness
|
|
54
|
+
|
|
55
|
+
The reader validates container and chunk bounds before exposing data.
|
|
56
|
+
Executable instructions must consume exactly their declared token length.
|
|
57
|
+
Declarations decode the payload forms implemented by the package and retain
|
|
58
|
+
remaining valid words in `tailTokens`, allowing unusual stages to remain
|
|
59
|
+
inspectable without pretending every declaration payload has a specialized
|
|
60
|
+
projection.
|
|
61
|
+
|
|
62
|
+
The opcode-name table covers the SM4/SM5 vocabulary used for framing. That does
|
|
63
|
+
not imply every opcode has a target-language implementation in every lowering
|
|
64
|
+
package.
|
|
65
|
+
|
|
66
|
+
## Output stability
|
|
67
|
+
|
|
68
|
+
`emit: "json"` is the stable integration surface. It returns plain data and
|
|
69
|
+
converts typed arrays into number arrays.
|
|
70
|
+
|
|
71
|
+
`emit: "raw"` exposes package-internal class instances for advanced backends.
|
|
72
|
+
Those classes are not public npm exports; consumers should treat their concrete
|
|
73
|
+
constructors as internal and depend only on the fields used by the owning
|
|
74
|
+
lowering package.
|
|
75
|
+
|
|
76
|
+
## Related documentation
|
|
77
|
+
|
|
78
|
+
- [Package documentation](README.md)
|
|
79
|
+
- [Public API reference](reference/api.md)
|
|
80
|
+
- [Decoded output contract](reference/decoded-output.md)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Public API reference
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource/formats/dxbc`
|
|
5
|
+
Audience: Shader-tool authors and lowering-backend authors
|
|
6
|
+
Summary: Defines the public `CjsDxbcFormat` profile, one-shot helpers, options, and failure behavior.
|
|
7
|
+
|
|
8
|
+
## Export
|
|
9
|
+
|
|
10
|
+
The package root exports `CjsDxbcFormat` as both a named and default export:
|
|
11
|
+
|
|
12
|
+
```js
|
|
13
|
+
import CjsDxbcFormat, {
|
|
14
|
+
CjsDxbcFormat as DxbcFormat
|
|
15
|
+
} from "@carbonenginejs/runtime-resource/formats/dxbc";
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
No internal container, signature, program, decoder, or error class is exposed
|
|
19
|
+
through the package export map.
|
|
20
|
+
|
|
21
|
+
## Reusable profile
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
const reader = new DxbcFormat({
|
|
25
|
+
emit: "json",
|
|
26
|
+
source: "example.dxbc",
|
|
27
|
+
decodeInstructions: true
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const decoded = reader.Read(shaderBytes);
|
|
31
|
+
const summary = reader.Inspect(shaderBytes);
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
| Instance method | Purpose |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| `SetValues(options)` | Merges reusable profile defaults and returns the profile. |
|
|
37
|
+
| `GetValues(options?)` | Returns effective values with optional per-call overrides. |
|
|
38
|
+
| `Read(bytes, options?)` | Reads one DXBC payload using the effective profile. |
|
|
39
|
+
| `Inspect(bytes, options?)` | Returns container, stage, shader-model, and signature counts without instruction decoding. |
|
|
40
|
+
|
|
41
|
+
## One-shot helpers
|
|
42
|
+
|
|
43
|
+
| Static helper | Purpose |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| `isDxbc(bytes)` | Returns `true` when input starts with the DXBC magic; invalid input returns `false`. |
|
|
46
|
+
| `read(bytes, options?)` | Reads one DXBC payload. |
|
|
47
|
+
| `inspect(bytes, options?)` | Inspects one payload without instruction decoding. |
|
|
48
|
+
| `toJSON(value)` | Deep-converts supported values to JSON-compatible data. |
|
|
49
|
+
|
|
50
|
+
The class also exposes `OUTPUT_JSON`, `OUTPUT_RAW`, input/output media metadata,
|
|
51
|
+
and the format's supported input type.
|
|
52
|
+
|
|
53
|
+
## Options
|
|
54
|
+
|
|
55
|
+
| Option | Default | Meaning |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| `emit` | `"json"` | `"json"` returns plain data; `"raw"` returns internal decoder objects. |
|
|
58
|
+
| `source` | `"memory"` | Caller-owned label included in error details; no path is opened. |
|
|
59
|
+
| `decodeInstructions` | `true` | When false, reads the container, signatures, and program header without decoding instructions. |
|
|
60
|
+
|
|
61
|
+
Inputs may be `Uint8Array`, `ArrayBuffer`, Node `Buffer`, `DataView`, or another
|
|
62
|
+
array-buffer view.
|
|
63
|
+
|
|
64
|
+
## Errors
|
|
65
|
+
|
|
66
|
+
Invalid options and unsupported input types throw `TypeError`. Malformed DXBC
|
|
67
|
+
throws an internal `DxbcReadError` carrying a stable human-readable message and
|
|
68
|
+
a `details` record with relevant source, offset, size, chunk, or opcode
|
|
69
|
+
information.
|
|
70
|
+
|
|
71
|
+
`isDxbc` is the non-throwing sniff operation.
|
|
72
|
+
|
|
73
|
+
## Related documentation
|
|
74
|
+
|
|
75
|
+
- [Decoded output contract](decoded-output.md)
|
|
76
|
+
- [Architecture and boundaries](../architecture.md)
|
|
77
|
+
- [Class-purpose catalog](classes/README.md)
|