@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.
Files changed (238) hide show
  1. package/README.md +21 -0
  2. package/dist/CjsResMan.js +393 -29
  3. package/dist/CjsResMan.js.map +1 -1
  4. package/dist/format/carbonEffect/CjsCarbonEffectReader.js +165 -118
  5. package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
  6. package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -0
  7. package/dist/format/carbonEffect/buildCarbonEffectContainer.js.map +1 -0
  8. package/dist/format/carbonEffect/carbonEffectBackendBlock.js +7 -113
  9. package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
  10. package/dist/format/carbonEffect/carbonEffectRecords.js +258 -66
  11. package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -1
  12. package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -0
  13. package/dist/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -0
  14. package/dist/format/effect/effectBodyInventory.js +146 -0
  15. package/dist/format/effect/effectBodyInventory.js.map +1 -0
  16. package/dist/format/effect/effectPermutationGraph.js +13 -13
  17. package/dist/format/effect/effectPermutationGraph.js.map +1 -1
  18. package/dist/format/index.js +4 -4
  19. package/dist/formats/black/CjsBlackFormat.js +19 -1
  20. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  21. package/dist/formats/bnk/CjsBnkFormat.js +28 -9
  22. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  23. package/dist/formats/bnk/core/busNodes.js +252 -0
  24. package/dist/formats/bnk/core/busNodes.js.map +1 -0
  25. package/dist/formats/bnk/core/effectNodes.js +147 -0
  26. package/dist/formats/bnk/core/effectNodes.js.map +1 -0
  27. package/dist/formats/bnk/core/eventAction.js +135 -24
  28. package/dist/formats/bnk/core/eventAction.js.map +1 -1
  29. package/dist/formats/bnk/core/globalSettings.js +215 -0
  30. package/dist/formats/bnk/core/globalSettings.js.map +1 -0
  31. package/dist/formats/bnk/core/helpers.js +37 -5
  32. package/dist/formats/bnk/core/helpers.js.map +1 -1
  33. package/dist/formats/bnk/core/musicNodes.js +43 -19
  34. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  35. package/dist/formats/bnk/core/nodeBase.js +28 -7
  36. package/dist/formats/bnk/core/nodeBase.js.map +1 -1
  37. package/dist/formats/dds/core/helpers.js +40 -1
  38. package/dist/formats/dds/core/helpers.js.map +1 -1
  39. package/dist/formats/dxbc/CjsDxbcFormat.js +45 -0
  40. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  41. package/dist/formats/dxbc/core/disassemble.js +240 -0
  42. package/dist/formats/dxbc/core/disassemble.js.map +1 -0
  43. package/dist/formats/gltf/CjsGltfFormat.js +1 -39
  44. package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
  45. package/dist/formats/gltf/core/helpers.js +1 -21
  46. package/dist/formats/gltf/core/helpers.js.map +1 -1
  47. package/dist/formats/hlsl/CjsHlslFormat.js +0 -21
  48. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
  49. package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +118 -49
  50. package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
  51. package/dist/formats/hlsl/core/detailMapFamily.js +128 -0
  52. package/dist/formats/hlsl/core/detailMapFamily.js.map +1 -0
  53. package/dist/formats/hlsl/core/localLightFamily.js +133 -0
  54. package/dist/formats/hlsl/core/localLightFamily.js.map +1 -0
  55. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +79 -73
  56. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
  57. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +8 -1
  58. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -1
  59. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +11 -691
  60. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -1
  61. package/dist/formats/index.js +4 -2
  62. package/dist/formats/index.js.map +1 -1
  63. package/dist/formats/obj/CjsObjFormat.js +1 -22
  64. package/dist/formats/obj/CjsObjFormat.js.map +1 -1
  65. package/dist/formats/obj/core/helpers.js +1 -21
  66. package/dist/formats/obj/core/helpers.js.map +1 -1
  67. package/dist/formats/pickle/CjsPickleFormat.js +214 -0
  68. package/dist/formats/pickle/CjsPickleFormat.js.map +1 -0
  69. package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -0
  70. package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -0
  71. package/dist/formats/pickle/index.js +2 -0
  72. package/dist/formats/pickle/index.js.map +1 -0
  73. package/dist/formats/red/core/redGraph.js +11 -8
  74. package/dist/formats/red/core/redGraph.js.map +1 -1
  75. package/dist/formats/stl/CjsStlFormat.js +1 -46
  76. package/dist/formats/stl/CjsStlFormat.js.map +1 -1
  77. package/dist/formats/stl/core/helpers.js +1 -21
  78. package/dist/formats/stl/core/helpers.js.map +1 -1
  79. package/dist/formats/webgl/CjsWebglFormat.js +33 -55
  80. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
  81. package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -0
  82. package/dist/formats/webgl/core/buildGlslEffectContainer.js.map +1 -0
  83. package/dist/formats/webgl/core/effectPackage.js +216 -108
  84. package/dist/formats/webgl/core/effectPackage.js.map +1 -1
  85. package/dist/formats/webgl/core/errors.js +1 -1
  86. package/dist/formats/webgl/core/errors.js.map +1 -1
  87. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +166 -24
  88. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  89. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +63 -5
  90. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  91. package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -0
  92. package/dist/formats/webgl/core/glsl/packedLightFixups.js.map +1 -0
  93. package/dist/formats/webgl/core/glslBackendBlock.js +552 -0
  94. package/dist/formats/webgl/core/glslBackendBlock.js.map +1 -0
  95. package/dist/formats/webgl/core/glslBackendBodySet.js +243 -0
  96. package/dist/formats/webgl/core/glslBackendBodySet.js.map +1 -0
  97. package/dist/formats/webgl/core/{cewgCompleteness.js → glslEffectCompleteness.js} +12 -8
  98. package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -0
  99. package/dist/formats/webgl/core/helpers.js +33 -172
  100. package/dist/formats/webgl/core/helpers.js.map +1 -1
  101. package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -0
  102. package/dist/formats/webgl/core/inspectGlslEffectContainer.js.map +1 -0
  103. package/dist/formats/webgl/core/readGlslEffectContainer.js +249 -0
  104. package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -0
  105. package/dist/formats/webgpu/CjsWebgpuFormat.js +15 -15
  106. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  107. package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +37 -145
  108. package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -1
  109. package/dist/formats/webgpu/core/{cewgpu/CewgpuContainer.js → carbonWebgpu/CarbonWebgpuContainer.js} +13 -27
  110. package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js.map +1 -0
  111. package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/containerViews.js +1 -1
  112. package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js.map +1 -0
  113. package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/validateContainer.js +4 -4
  114. package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -0
  115. package/dist/formats/webgpu/core/effectBackendBodySet.js +18 -18
  116. package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
  117. package/dist/formats/webgpu/core/errors.js +1 -1
  118. package/dist/formats/webgpu/core/errors.js.map +1 -1
  119. package/dist/formats/webgpu/core/helpers.js +22 -22
  120. package/dist/formats/webgpu/core/helpers.js.map +1 -1
  121. package/dist/formats/webgpu/core/packageEffect.js +11 -15
  122. package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
  123. package/dist/formats/webgpu/core/packageEffectSelection.js +1 -1
  124. package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -1
  125. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +23 -23
  126. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -1
  127. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +6 -6
  128. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
  129. package/dist/formats/yaml/CjsYamlFormat.js +3 -3
  130. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  131. package/dist/formats/yaml/core/CjsYamlReader.js +4 -6
  132. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  133. package/dist/formats/yaml/core/helpers.js +27 -1
  134. package/dist/formats/yaml/core/helpers.js.map +1 -1
  135. package/dist/index.js +2 -0
  136. package/dist/index.js.map +1 -1
  137. package/dist/resource/CjsLoadingObject.js +19 -0
  138. package/dist/resource/CjsLoadingObject.js.map +1 -0
  139. package/dist/resource/CjsResource.js +4 -0
  140. package/dist/resource/CjsResource.js.map +1 -1
  141. package/dist/resource/ResourceHandlerMode.js +14 -0
  142. package/dist/resource/ResourceHandlerMode.js.map +1 -0
  143. package/dist/resource/index.js +2 -0
  144. package/dist/resource/index.js.map +1 -1
  145. package/dist/resource/shader/Tr2EffectRes.js +118 -213
  146. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  147. package/dist/resource/shader/Tr2Shader.js +37 -15
  148. package/dist/resource/shader/Tr2Shader.js.map +1 -1
  149. package/dist/resource/shader/reflection/Tr2EffectConstant.js +37 -29
  150. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  151. package/dist/resource/shader/reflection/Tr2EffectDescription.js +39 -34
  152. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  153. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +51 -30
  154. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  155. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +45 -25
  156. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  157. package/dist/resource/shader/reflection/Tr2EffectResource.js +51 -17
  158. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  159. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +219 -88
  160. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  161. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +28 -18
  162. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  163. package/dist/resource/shader/reflection/Tr2Pass.js +96 -39
  164. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  165. package/dist/resource/shader/reflection/carbonRecordFields.js +159 -0
  166. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -0
  167. package/dist/resource/shader/reflection/shaderStage.js +22 -0
  168. package/dist/resource/shader/reflection/shaderStage.js.map +1 -0
  169. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +68 -10
  170. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  171. package/dist/worker/CjsResManMainThreadLoader.js +9 -7
  172. package/dist/worker/CjsResManMainThreadLoader.js.map +1 -1
  173. package/dist/worker/CjsResManWorker.js +5 -4
  174. package/dist/worker/CjsResManWorker.js.map +1 -1
  175. package/dist/worker/CjsResManWorkerLoader.js +9 -6
  176. package/dist/worker/CjsResManWorkerLoader.js.map +1 -1
  177. package/docs/README.md +2 -2
  178. package/docs/architecture.md +12 -3
  179. package/docs/concepts/resource-lifecycle.md +9 -8
  180. package/docs/concepts/shader-resource-model.md +14 -17
  181. package/docs/concepts/writing-an-engine-adapter.md +1 -1
  182. package/docs/formats/README.md +4 -2
  183. package/docs/formats/carbon-effect-container.md +127 -26
  184. package/docs/formats/dxbc/architecture.md +1 -1
  185. package/docs/formats/dxbc/reference/api.md +28 -0
  186. package/docs/formats/hlsl/README.md +3 -3
  187. package/docs/formats/hlsl/architecture.md +8 -9
  188. package/docs/formats/hlsl/guides/hydrating-json-output.md +3 -5
  189. package/docs/formats/hlsl/guides/reading-effects.md +5 -1
  190. package/docs/formats/hlsl/reference/advanced-analysis.md +20 -25
  191. package/docs/formats/hlsl/reference/api.md +0 -7
  192. package/docs/formats/hlsl/reference/json-graph.md +1 -4
  193. package/docs/formats/pickle.md +82 -0
  194. package/docs/formats/webgl/README.md +71 -13
  195. package/docs/formats/webgl/architecture.md +16 -17
  196. package/docs/formats/webgl/carbon-constant-layouts.md +3 -3
  197. package/docs/formats/webgl/decl-io.md +3 -3
  198. package/docs/formats/webgl/memory-structured.md +27 -8
  199. package/docs/formats/webgl/texture-sample.md +1 -1
  200. package/docs/formats/webgpu/README.md +3 -3
  201. package/docs/formats/webgpu/architecture.md +5 -6
  202. package/docs/formats/webgpu/formats/{cewgpu.md → carbon-webgpu.md} +10 -11
  203. package/docs/formats/webgpu/guides/effect-packaging.md +6 -8
  204. package/docs/formats/webgpu/reference/api.md +11 -12
  205. package/docs/formats/webgpu/reference/wgsl-compatibility.md +11 -8
  206. package/docs/formats/wwise.md +63 -2
  207. package/docs/reference/classes/core.md +10 -0
  208. package/docs/reference/classes/formats.md +40 -48
  209. package/docs/reference/classes/resources.md +2 -2
  210. package/docs/reference/queues.md +88 -4
  211. package/docs/reference/workers.md +7 -0
  212. package/package.json +61 -61
  213. package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +0 -372
  214. package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +0 -1
  215. package/dist/format/effect/effectReflectionPackage.js +0 -636
  216. package/dist/format/effect/effectReflectionPackage.js.map +0 -1
  217. package/dist/formats/hlsl/core/HlslReader.js +0 -16
  218. package/dist/formats/hlsl/core/HlslReader.js.map +0 -1
  219. package/dist/formats/hlsl/core/portableReflection.js +0 -848
  220. package/dist/formats/hlsl/core/portableReflection.js.map +0 -1
  221. package/dist/formats/hlsl/portable.js +0 -2
  222. package/dist/formats/hlsl/portable.js.map +0 -1
  223. package/dist/formats/webgl/core/cewg/CewgPackage.js +0 -340
  224. package/dist/formats/webgl/core/cewg/CewgPackage.js.map +0 -1
  225. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +0 -104
  226. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +0 -1
  227. package/dist/formats/webgl/core/cewg/binary.js +0 -19
  228. package/dist/formats/webgl/core/cewg/binary.js.map +0 -1
  229. package/dist/formats/webgl/core/cewgCompleteness.js.map +0 -1
  230. package/dist/formats/webgl/core/effectPackageValidation.js +0 -331
  231. package/dist/formats/webgl/core/effectPackageValidation.js.map +0 -1
  232. package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +0 -1
  233. package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +0 -1
  234. package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +0 -1
  235. package/dist/resource/shader/portable.js +0 -33
  236. package/dist/resource/shader/portable.js.map +0 -1
  237. package/docs/formats/hlsl/reference/portable-reflection.md +0 -141
  238. package/docs/formats/webgl/effect-reflection.md +0 -127
@@ -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 { 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 { emitGlslWithOptions } from \"./helpers.js\";\nimport { inspectGlslEffectContainer } from \"./inspectGlslEffectContainer.js\";\nimport { inspectRasterCompleteness } from \"./glslEffectCompleteness.js\";\nimport { recogniseDetailMapFamily } from \"../../hlsl/core/detailMapFamily.js\";\nimport {\n recogniseLocalLightFamily,\n stripLocalLightBindings\n} from \"../../hlsl/core/localLightFamily.js\";\nimport { buildGlslBackendBodySet } from \"./glslBackendBodySet.js\";\nimport { buildGlslEffectContainer } from \"./buildGlslEffectContainer.js\";\nimport { sha256Bytes, sha256Utf8 } from \"../../../format/effect/sha256.js\";\n\n/**\n * INFO record version for the in-memory build result.\n *\n * This lived in effectPackageValidation.js, which validated a written chunk\n * package by reading it back. There is no chunk package to read back, so that\n * file is gone and its one surviving constant lives with its only user.\n */\nconst EFFECT_INFO_VERSION = 3;\n\nconst PACKAGE_VERSION = \"0.11.1\";\n\n/**\n * Builds a complete Carbon WebGL 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 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 // Dropping the light family removes its declarations from the\n // shader, so the manifest must stop advertising them too.\n manifest: values.localLights === \"drop\"\n ? stripLocalLightBindings(manifest.toJSON())\n : 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 detailMapArray: stage.detailMapArray,\n localLights: stage.localLights,\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 // The same rule the validator applies to a finished file. This function used\n // to carry its own copy, and the two had already drifted: the local one had\n // dropped `hlsl2webgl.reason` from its reason chain, so the library and the\n // validator could describe one incomplete pass two different ways. If two\n // places must agree, one of them calls the other.\n const rasterCompleteness = inspectRasterCompleteness(stages, translatedShaders);\n const availableShaderCount = translatedShaders.filter((record) =>\n record.hlsl2webgl?.ok && record.source).length;\n const info = {\n format: \"CARBON_WEBGL\",\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 sourceBodyCoverage: \"all-unique\",\n backendBodyCoverage: values.allPermutations ? \"all\" : \"selected\",\n backendProgramCoverage: selectionCoversWholeEffect(values.selection)\n ? \"all-stages\"\n : \"filtered\",\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 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: effectRes.m_version === 15,\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: \"CARBON_WEBGL_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 `Carbon WebGL target is incomplete; output was not built. ${qualification.errors.join(\"; \")}`\n );\n }\n\n // The container is the effect. `bytes` is its bytes, and there is no second\n // artifact — the chunk package this function used to build alongside it is\n // gone, along with the chunk assembly that produced it.\n //\n // `info`, `metadata`, `glsl` and `permutationGraph` are still returned.\n // They are the in-memory build result, which is richer than\n // anything the wire carries: the reasons a translation failed live there and\n // nowhere else. What changed is that they are no longer *also* serialised\n // into tagged chunks beside the container.\n const backendBodySet = buildGlslBackendBodySet({\n bodies,\n stages,\n shaders: translatedShaders,\n variants,\n permutationGraph\n });\n const container = buildGlslEffectContainer(\n effectRes,\n permutationGraph,\n backendBodySet,\n { compilerVersion: effectRes.m_compilerVersionBytes }\n );\n\n const bytes = container.bytes;\n const inspection = inspectGlslEffectContainer(bytes, {\n source: values.source\n });\n\n return Object.freeze({\n bytes,\n permutationCount: container.permutationCount,\n bodyCount: container.bodyCount,\n backendBodySet,\n info: Object.freeze(info),\n metadata: Object.freeze(metadata),\n permutationGraph,\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(\"Carbon WebGL 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(\"Carbon WebGL 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 Carbon WebGL 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(\"Carbon WebGL emitterOptions must be an object\");\n }\n\n return {\n sourceBytes,\n source,\n outputPath: normalizeOptionalString(options.outputPath, \"Carbon WebGL 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 selection,\n // How to lower a recognised local-light family. Defaults to leaving it\n // alone, so a caller that does not ask gets the shader's own resources\n // and the honest texture count.\n localLights: normalizeLocalLightMode(options.localLights),\n // Whether to keep `LightProfileArray`. Defaults to dropping it, because\n // it costs a fragment sampler unit that the quad family does not have\n // to spare, and because nothing currently selects a profile: the index\n // lives in flags bits 4-15 and every `GetCarbonLightData()` writes only\n // bit 0, so the shader's own guard skips the lookup for every light. A\n // dropped profile is therefore observationally identical today and a\n // real loss only once profile indices are written.\n // See /docs/contracts/carbon-light-data.md.\n lightProfile: normalizeLightProfileMode(options.lightProfile),\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(\"Carbon WebGL 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 // Recognised from reflection here, applied by the emitter.\n // The recogniser is shared with WebGPU so both backends\n // merge exactly the same registers.\n detailMapArray: recogniseDetailMapFamily(mapToJson(stageInput.resources)),\n localLights: recogniseLocalLightFamily(mapToJson(stageInput.resources))\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\n/** Local-light lowering modes this packager accepts. */\nconst LOCAL_LIGHT_MODES = Object.freeze([ \"none\", \"packed-texture\", \"constant-buffer\", \"drop\" ]);\n\n/** How `LightProfileArray` is treated. */\nconst LIGHT_PROFILE_MODES = Object.freeze([ \"drop\", \"keep\" ]);\n\n/**\n * Normalizes the light-profile mode.\n *\n * @param {string|undefined|null} value Requested mode.\n * @returns {string} Normalized mode.\n */\nfunction normalizeLightProfileMode(value)\n{\n const mode = value === undefined || value === null ? \"drop\" : String(value);\n if (!LIGHT_PROFILE_MODES.includes(mode))\n {\n throw new TypeError(\n `Carbon WebGL lightProfile must be one of ${LIGHT_PROFILE_MODES.join(\", \")}; got \"${mode}\"`\n );\n }\n return mode;\n}\n\n/**\n * Emitter options that drop `LightProfileArray` and neutralise its samples.\n *\n * Only applies when the local-light family is left alone. `packed-texture`,\n * `constant-buffer` and `drop` each already decide what happens to the profile\n * register, and asking for it twice would either be redundant or fight them.\n *\n * @param {object|null} plan Recognised local-light family, if any.\n * @param {string} localLightMode Normalized local-light mode.\n * @param {string} profileMode Normalized light-profile mode.\n * @returns {object|null} Emitter options, or null when nothing to do.\n */\nfunction lightProfileEmitterOptions(plan, localLightMode, profileMode)\n{\n if (profileMode !== \"drop\" || localLightMode !== \"none\") return null;\n if (!Number.isInteger(plan?.profileRegister)) return null;\n return { neutralResourceRegisters: [ plan.profileRegister ] };\n}\n\n/**\n * Normalizes the local-light lowering mode.\n *\n * @param {string|undefined|null} value Requested mode.\n * @returns {string} Normalized mode.\n */\nfunction normalizeLocalLightMode(value)\n{\n if (value === undefined || value === null) return \"none\";\n\n const mode = String(value);\n if (!LOCAL_LIGHT_MODES.includes(mode))\n {\n throw new TypeError(\n `Carbon WebGL localLights must be one of ${LOCAL_LIGHT_MODES.join(\", \")}; got \"${mode}\"`\n );\n }\n return mode;\n}\n\n/**\n * Builds the emitter profile that lowers a recognised local-light family.\n *\n * Carbon's local lights are two structured buffers plus an optional profile\n * texture. WebGL 2 has no structured buffers, so one of these lowerings is\n * required for the shader to bind its lights at all; WebGPU needs none of it and\n * binds them natively.\n *\n * The constants here match the CLI packager's resolvers exactly, so the two\n * pipelines produce identical output while they still both exist. They are not\n * endorsements: `dataTexelBase` and `capacity` are values that happened to work,\n * and the constant-buffer route is known to fail on light count.\n *\n * @param {object} plan Recognised local-light family.\n * @param {string} mode Lowering mode.\n * @returns {object|null} Emitter options fragment, or null when not lowering.\n */\nfunction localLightEmitterOptions(plan, mode)\n{\n if (!plan || mode === \"none\") return null;\n\n if (mode === \"drop\")\n {\n // No lighting at all: the declarations go and every read lowers to zero.\n // Kept because isolating a lighting problem is easier without lights,\n // not because the texture budget needs it any more.\n return { stubResourceRegisters: plan.registers };\n }\n\n if (mode === \"packed-texture\")\n {\n return {\n lightPackedTexture: {\n indexRegister: plan.indexRegister,\n dataRegister: plan.dataRegister,\n profileRegister: plan.profileRegister,\n registerIndex: plan.indexRegister,\n name: \"cjsLocalLightTexture\",\n dataTexelBase: 131072\n }\n };\n }\n\n if (mode === \"constant-buffer\")\n {\n // Slot 6 is `g_uiTransforms` in the constant-buffer slot contract. There\n // is no collision on space-object shaders, which carry no UI transforms,\n // but this is squatting on a reserved number and should move.\n return {\n lightConstantBuffer: {\n indexRegister: plan.indexRegister,\n dataRegister: plan.dataRegister,\n profileRegister: plan.profileRegister,\n registerIndex: 6,\n name: \"cb6\",\n capacity: 40\n }\n };\n }\n\n throw new Error(`Unknown local-light lowering mode \"${mode}\"`);\n}\n\nfunction translateStages(shaderMap, stageMap, values)\n{\n const emitInto = (record, pairVaryings) =>\n {\n try\n {\n const profileNeutral = lightProfileEmitterOptions(\n record.localLights,\n values.localLights,\n values.lightProfile\n );\n // Remembered on the record so the body set can emit the resource\n // transform that accounts for the dropped resource. The transform's\n // identity includes the pass key, which is not known here.\n if (profileNeutral) record.lightProfileNeutral = record.localLights;\n\n const result = emitGlslWithOptions(record.bytes, {\n ...values.emitterOptions,\n source: `${values.source}#${record.firstStageKey}`,\n ...(pairVaryings?.length ? { pairVaryings } : {}),\n ...(record.detailMapArray\n ? { detailMapArrayRegisters: record.detailMapArray.registers }\n : {}),\n ...(localLightEmitterOptions(record.localLights, values.localLights) ?? {}),\n ...(profileNeutral ?? {})\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\" && !/\\bcjsUav\\d+(_s\\d+)?\\b/u.test(source))\n {\n return \"compute stage source does not write any cjsUav output\";\n }\n\n return null;\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(\"Carbon WebGL 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 \"Carbon WebGL 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 !== \"CARBON_WEBGL\" || glsl.format !== \"CARBON_WEBGL_GLSL_SET\")\n {\n errors.push(\"invalid Carbon WebGL package envelope\");\n }\n\n if (!Array.isArray(metadata.variants) || !Array.isArray(glsl.shaders))\n {\n errors.push(\"missing Carbon WebGL 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":["EFFECT_INFO_VERSION","PACKAGE_VERSION","buildEffectPackage","input","options","values","normalizeOptions","effectRes","CjsHlslFormat","read","sourceBytes","emit","OUTPUT_RAW","source","IsGood","loadError","Error","sourceIdentity","normalizeSourceIdentity","m_version","permutationGraph","buildEffectPermutationGraph","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","localLights","stripLocalLightBindings","toJSON","stage","stageKey","shaderKey","contract","buildStageContract","stageRecord","localKey","techniqueName","passIndex","stageType","stageName","shaderHandle","shaderSize","bytecode","stringTableOffset","push","firstStageKey","firstBodyKey","bytes","detailMapArray","contracts","translateStages","bodies","Array","from","translatedShaders","map","record","output","primaryContract","mergeShaderContracts","failedShaders","filter","hlsl2webgl","ok","excluded","excludedShaders","failedBodies","rasterCompleteness","inspectRasterCompleteness","availableShaderCount","info","format","formatVersion","packageKind","targetBackend","backendPackage","backendPackageVersion","generatedAt","sourcePath","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","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","backendBodySet","buildGlslBackendBodySet","container","buildGlslEffectContainer","compilerVersion","m_compilerVersionBytes","inspection","inspectGlslEffectContainer","Object","freeze","bodyCount","isArray","TypeError","toBytes","String","trim","technique","undefined","pass","Number","toLowerCase","isSafeInteger","includes","emitterOptions","normalizeOptionalString","Date","toISOString","normalizeLocalLightMode","lightProfile","normalizeLightProfileMode","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","recogniseDetailMapFamily","recogniseLocalLightFamily","LOCAL_LIGHT_MODES","LIGHT_PROFILE_MODES","mode","lightProfileEmitterOptions","plan","localLightMode","profileMode","profileRegister","neutralResourceRegisters","localLightEmitterOptions","stubResourceRegisters","lightPackedTexture","indexRegister","dataRegister","registerIndex","dataTexelBase","lightConstantBuffer","capacity","emitInto","pairVaryings","profileNeutral","lightProfileNeutral","emitGlslWithOptions","detailMapArrayRegisters","stageInterface","normalizeBitangentStageInterface","inputs","bindings","stageOutputs","outputs","emitWarnings","warnings","computeFragment","issue","validateStageSourceShape","validationError","message","details","test","reason","opcodeName","dimensionName","pixelVaryingsByPass","get","startsWith","register","sort","left","right","varyings","parse","entries","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","identity","sha256Bytes","filePath","logicalPath","game","client","build","level"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Error raised when a CEWG package or a DXBC-to-GLSL emission cannot be
2
+ * Error raised when a Carbon WebGL package or a DXBC-to-GLSL emission cannot be
3
3
  * completed safely.
4
4
  *
5
5
  * This format has no dependency on the sibling `formats/dxbc` internal
@@ -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 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;;;;"}
1
+ {"version":3,"file":"errors.js","sources":["../../../../../src/formats/webgl/core/errors.js"],"sourcesContent":["/**\n * Error raised when a Carbon WebGL 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;;;;"}