@carbonenginejs/runtime-resource 0.11.1 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CjsResMan.js +4 -4
- package/dist/CjsResMan.js.map +1 -1
- package/dist/_virtual/_rollupPluginBabelHelpers.js +1 -4
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/format/CjsByteReader.js +310 -0
- package/dist/format/CjsByteReader.js.map +1 -0
- package/dist/format/CjsByteWriter.js +242 -0
- package/dist/format/CjsByteWriter.js.map +1 -0
- package/dist/format/CjsFormatError.js +41 -0
- package/dist/format/CjsFormatError.js.map +1 -0
- package/dist/format/CjsStringTable.js +268 -0
- package/dist/format/CjsStringTable.js.map +1 -0
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js +361 -0
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -0
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -0
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -0
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +372 -0
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +1 -0
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +427 -0
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -0
- package/dist/format/carbonEffect/carbonEffectRecords.js +955 -0
- package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -0
- package/dist/format/compareUtf8.js +36 -0
- package/dist/format/compareUtf8.js.map +1 -0
- package/dist/format/index.js +11 -0
- package/dist/format/index.js.map +1 -0
- package/dist/formats/bnk/CjsBnkFormat.js +18 -2
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/eventAction.js +305 -0
- package/dist/formats/bnk/core/eventAction.js.map +1 -0
- package/dist/formats/bnk/core/graph.js +3 -6
- package/dist/formats/bnk/core/graph.js.map +1 -1
- package/dist/formats/bnk/core/helpers.js +62 -11
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/nodeBase.js +532 -0
- package/dist/formats/bnk/core/nodeBase.js.map +1 -0
- package/dist/formats/bnk/core/sfxNodes.js +632 -0
- package/dist/formats/bnk/core/sfxNodes.js.map +1 -0
- package/dist/formats/bnk/core/soundbanksInfo.js +59 -51
- package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
- package/dist/formats/gr2/CjsGr2Format.js +256 -13
- package/dist/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/formats/gr2/core/helpers.js +15 -15
- package/dist/formats/gr2/core/helpers.js.map +1 -1
- package/dist/formats/gr2/core/json.js +1 -1
- package/dist/formats/gr2/core/json.js.map +1 -1
- package/dist/formats/gr2/core/targets.js +1 -1
- package/dist/formats/gr2/core/targets.js.map +1 -1
- package/dist/formats/gr2/index.js +0 -1
- package/dist/formats/gr2/index.js.map +1 -1
- package/dist/formats/hlsl/core/HlslReader.js +7 -257
- package/dist/formats/hlsl/core/HlslReader.js.map +1 -1
- package/dist/formats/hlsl/core/analysis.js +1 -1
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +781 -0
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +21 -1
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
- package/dist/formats/hlsl/index.js +1 -0
- package/dist/formats/hlsl/index.js.map +1 -1
- package/dist/formats/index.js +3 -6
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/webgl/core/cewg/CewgPackage.js +2 -1
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -1
- package/dist/formats/webgl/core/cewg/binary.js +11 -93
- package/dist/formats/webgl/core/cewg/binary.js.map +1 -1
- package/dist/formats/webgl/core/effectPackage.js +4 -1
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/errors.js +3 -3
- package/dist/formats/webgl/core/errors.js.map +1 -1
- package/dist/formats/webgpu/CjsWebgpuFormat.js +4 -23
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +197 -0
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js +368 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/containerViews.js +355 -0
- package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/validateContainer.js +90 -0
- package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +1 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js +21 -20
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/formats/webgpu/core/helpers.js +87 -92
- package/dist/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +14 -13
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -1
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +10 -8
- package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -1
- package/dist/formats/webgpu/core/packageEffect.js +94 -9
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/formats/webgpu/core/packageMetadata.js +10 -1
- package/dist/formats/webgpu/core/packageMetadata.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +17 -15
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +13 -12
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +9 -8
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +23 -22
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +46 -44
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -1
- package/dist/resource/CjsResource.js +700 -684
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/Tr2LightProfileRes.js +18 -27
- package/dist/resource/Tr2LightProfileRes.js.map +1 -1
- package/dist/resource/audio/CjsAudioBufferRes.js +2 -2
- package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +2 -2
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +605 -586
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +21 -30
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -1
- package/dist/resource/geometry/granny/TriGrannyRes.js +21 -30
- package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -1
- package/dist/resource/shader/Tr2EffectRes.js +9 -7
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialArea.js +5 -3
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialMesh.js +4 -2
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialRes.js +5 -3
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
- package/dist/resource/shader/Tr2Shader.js +26 -21
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/Tr2ShaderPermutation.js +8 -6
- package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +5 -3
- package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +5 -3
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +17 -15
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +11 -9
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +8 -6
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +15 -13
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +7 -5
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +11 -9
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +8 -6
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +400 -411
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2ImageRes.js +99 -95
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
- package/dist/resource/texture/TriTextureRes.js +312 -273
- package/dist/resource/texture/TriTextureRes.js.map +1 -1
- package/docs/README.md +13 -1
- package/docs/architecture.md +3 -3
- package/docs/concepts/resource-lifecycle.md +9 -2
- package/docs/concepts/shader-resource-model.md +114 -0
- package/docs/concepts/writing-an-engine-adapter.md +115 -0
- package/docs/formats/README.md +24 -1
- package/docs/formats/carbon-effect-container.md +452 -0
- package/docs/formats/dxbc/README.md +68 -0
- package/docs/formats/dxbc/architecture.md +80 -0
- package/docs/formats/dxbc/reference/api.md +77 -0
- package/docs/formats/dxbc/reference/classes/README.md +9 -0
- package/docs/formats/dxbc/reference/decoded-output.md +122 -0
- package/docs/formats/gr2.md +3 -4
- package/docs/formats/hlsl/README.md +54 -0
- package/docs/formats/hlsl/architecture.md +67 -0
- package/docs/formats/hlsl/guides/hydrating-json-output.md +62 -0
- package/docs/formats/hlsl/guides/reading-effects.md +64 -0
- package/docs/formats/hlsl/reference/advanced-analysis.md +66 -0
- package/docs/formats/hlsl/reference/api.md +98 -0
- package/docs/formats/hlsl/reference/classes/README.md +11 -0
- package/docs/formats/hlsl/reference/json-graph.md +100 -0
- package/docs/formats/hlsl/reference/portable-reflection.md +141 -0
- package/docs/formats/provenance.md +32 -17
- package/docs/formats/webgl/README.md +57 -0
- package/docs/formats/webgl/architecture.md +70 -0
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -0
- package/docs/formats/webgl/decl-io.md +1234 -0
- package/docs/formats/webgl/effect-reflection.md +127 -0
- package/docs/formats/webgl/memory-structured.md +871 -0
- package/docs/formats/webgl/reference/classes/README.md +9 -0
- package/docs/formats/webgl/texture-sample.md +964 -0
- package/docs/formats/webgpu/README.md +84 -0
- package/docs/formats/webgpu/architecture.md +96 -0
- package/docs/formats/webgpu/formats/cewgpu.md +216 -0
- package/docs/formats/webgpu/guides/effect-packaging.md +191 -0
- package/docs/formats/webgpu/reference/api.md +197 -0
- package/docs/formats/webgpu/reference/classes/README.md +9 -0
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1543 -0
- package/docs/formats/wwise.md +45 -4
- package/docs/reference/classes/core.md +80 -0
- package/docs/reference/classes/formats.md +24 -34
- package/docs/reference/events.md +25 -0
- package/docs/reference/motherlode-cache.md +22 -8
- package/docs/reference/workers.md +5 -5
- package/docs/roadmap.md +61 -41
- package/format-notices/bnk/NOTICE +5 -4
- package/format-notices/webgl/NOTICE +1 -1
- package/package.json +2 -1
- package/dist/formats/gr2/core/CjsFormatGr2.js +0 -273
- package/dist/formats/gr2/core/CjsFormatGr2.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +0 -415
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +0 -100
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/binary.js +0 -93
- package/dist/formats/webgpu/core/cewgpu/binary.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/tags.js +0 -17
- package/dist/formats/webgpu/core/cewgpu/tags.js.map +0 -1
- package/dist/formats/webgpu/core/effectPackageValidation.js +0 -1078
- package/dist/formats/webgpu/core/effectPackageValidation.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2EffectRes.js","sources":["../../../../src/resource/shader/Tr2EffectRes.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2EffectRes.h\n// Source: trinity/trinity/Resources/Tr2EffectRes.cpp\n// Source: trinity/trinity/Resources/Tr2EffectRes_Blue.cpp\nimport { CjsSchema, carbon, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsResource } from \"../CjsResource.js\";\nimport { validateResourcePayload } from \"../resourceBoundary.js\";\nimport { Tr2Shader } from \"./Tr2Shader.js\";\n\nconst globalEffectOptions = [];\nconst SHA256 = /^[0-9a-f]{64}$/u;\nconst UINT8_MAX = 0xff;\nconst UINT32_MAX = 0xffffffff;\nconst MAX_EFFECT_PERMUTATIONS = 0x10000;\n\n/**\n * Tr2EffectRes resource record.\n *\n * This stores effect/shader payload facts. Engine-gpu decides shader module,\n * pipeline, bind group, and sampler realization.\n */\nexport class Tr2EffectRes extends CjsResource\n{\n\n #shaders = new Map();\n\n /** Creates a Tr2EffectRes with caller-provided initial state. */\n constructor(values = null)\n {\n super();\n this.SetValues(values || {}, {\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Attach a plain shader/effect payload.\n *\n * @param {object|null} payload\n * @param {object|null} options\n * @returns {Tr2EffectRes}\n */\n SetPayload(payload = null, options = null)\n {\n if (payload === null)\n {\n this.#shaders.clear();\n super.SetPayload(null);\n return this;\n }\n validateResourcePayload(\n \"Tr2EffectRes\",\n payload,\n validateEffectPayload\n );\n this.#shaders.clear();\n super.SetPayload(payload);\n this.SetValues(options || {});\n return this;\n }\n\n /**\n * Select and hydrate one canonical shader from the complete permutation\n * graph exposed by a CEWG/CEWGPU raw package.\n *\n * Global options have Carbon-compatible precedence over caller options.\n * Unknown option values retain the authored default.\n *\n * @param {Array<object>|Map<string,string>} options Local name/value choices.\n * @param {number|null} count Number of local entries to consider.\n * @returns {Tr2Shader|null} Selected device-free shader reflection.\n */\n GetShader(options = [], count = null)\n {\n const axes = getPermutationAxes(this.GetPayload());\n if (!axes.length)\n {\n const portableIndex = Tr2Shader.isPortableReflection(this.GetPayload())\n ? this.GetPayload().permutationIndex\n : 0;\n return this.GetShaderByIndex(portableIndex);\n }\n const localOptions = normalizeShaderOptions(options);\n const localCount = Number.isSafeInteger(count)\n ? Math.max(0, Math.min(count, localOptions.length))\n : localOptions.length;\n let multiplier = 1;\n let index = 0;\n\n for (const axis of axes)\n {\n let selectedIndex = axis.defaultOption;\n const globalOption = globalEffectOptions.find(\n option => option.name === axis.name\n );\n if (globalOption)\n {\n const requestedIndex = axis.options.indexOf(globalOption.value);\n if (requestedIndex >= 0)\n {\n selectedIndex = requestedIndex;\n }\n }\n else\n {\n for (let optionIndex = 0; optionIndex < localCount; optionIndex += 1)\n {\n const localOption = localOptions[optionIndex];\n if (localOption.name !== axis.name)\n {\n continue;\n }\n const requestedIndex = axis.options.indexOf(localOption.value);\n if (requestedIndex >= 0)\n {\n selectedIndex = requestedIndex;\n }\n }\n }\n\n index += selectedIndex * multiplier;\n multiplier *= axis.options.length;\n }\n\n return this.GetShaderByIndex(index);\n }\n\n /**\n * Hydrate one exact permutation-table index and cache the resulting runtime\n * graph for this payload.\n *\n * @param {number} index Exact permutation index.\n * @returns {Tr2Shader|null} Canonical shader or null when reflection is absent.\n */\n GetShaderByIndex(index)\n {\n if (!Number.isSafeInteger(index) || index < 0)\n {\n throw new TypeError(\n \"Tr2EffectRes shader index must be a non-negative safe integer\"\n );\n }\n if (this.#shaders.has(index))\n {\n return this.#shaders.get(index);\n }\n\n const payload = this.GetPayload();\n const variantCount = getPermutationVariantCount(payload);\n if (variantCount !== null && index >= variantCount)\n {\n return null;\n }\n\n const portable = getPortableReflection(payload, index);\n if (!portable)\n {\n return null;\n }\n if (portable.permutationIndex !== index)\n {\n throw new Error(\n `Portable effect reflection index ${portable.permutationIndex} does not match requested index ${index}`\n );\n }\n\n const shader = Tr2Shader.fromPortable(portable);\n this.#shaders.set(index, shader);\n return shader;\n }\n\n /**\n * Return a small JSON-friendly permutation description.\n *\n * @returns {Array<*>}\n */\n GetPermutationDescription()\n {\n const payload = this.GetPayload();\n const axes = getPermutationAxes(payload);\n if (!axes.length && Array.isArray(payload?.permutations))\n {\n return payload.permutations.map(permutation => ({ ...permutation }));\n }\n return axes.map(axis => ({\n name: axis.name,\n options: [ ...axis.options ],\n defaultOption: axis.defaultOption,\n description: axis.description,\n type: axis.type\n }));\n }\n\n /**\n * Drop hydrated shader graphs while retaining the validated CPU payload.\n */\n ReleaseResources()\n {\n this.#shaders.clear();\n }\n\n /** Release the payload and every shader graph hydrated from it. */\n ReleasePayload()\n {\n this.#shaders.clear();\n return super.ReleasePayload();\n }\n\n static payload = \"shader\";\n\n}\n\n/**\n * Merge Carbon-style global effect option overrides.\n *\n * An empty value removes the override. Existing Tr2EffectRes shader caches\n * remain valid objects; callers rebuild effects to request the new selection.\n *\n * @param {Array<object>|Map<string,string>} changes Option changes.\n */\nexport function ModifyGlobalEffectOptions(changes = [])\n{\n for (const change of normalizeShaderOptions(changes))\n {\n const index = globalEffectOptions.findIndex(\n option => option.name === change.name\n );\n if (!change.value)\n {\n if (index >= 0)\n {\n globalEffectOptions.splice(index, 1);\n }\n }\n else if (index >= 0)\n {\n globalEffectOptions[index] = change;\n }\n else\n {\n globalEffectOptions.push(change);\n }\n }\n}\n\n/**\n * Return an owned snapshot of the current global option overrides.\n *\n * @returns {Array<{name:string,value:string}>} Global option choices.\n */\nexport function GetGlobalEffectOptions()\n{\n return globalEffectOptions.map(option => ({ ...option }));\n}\n\nfunction validateEffectPayload(payload)\n{\n const graph = payload.permutationGraph;\n if (graph !== null && graph !== undefined)\n {\n validatePermutationGraph(graph);\n }\n else if (Array.isArray(payload.permutations))\n {\n if (payload.permutations.every(permutation =>\n Array.isArray(permutation?.options)))\n {\n payload.permutations.forEach(normalizePermutationAxis);\n }\n else\n {\n validateLegacyPermutationDescription(payload.permutations);\n }\n }\n else if (!Tr2Shader.isPortableReflection(payload))\n {\n throw new TypeError(\n \"Tr2EffectRes payload requires a complete permutation graph, permutations array, or one portable reflection\"\n );\n }\n\n if (Array.isArray(payload.portableReflections))\n {\n const expectedCount = getPermutationVariantCount(payload);\n if (expectedCount !== null\n && payload.portableReflections.length !== expectedCount)\n {\n throw new Error(\n \"Tr2EffectRes portable reflection count disagrees with its permutations\"\n );\n }\n payload.portableReflections.forEach((reflection, index) =>\n {\n if (!Tr2Shader.isPortableReflection(reflection)\n || reflection.permutationIndex !== index)\n {\n throw new Error(\n `Tr2EffectRes portable reflection ${index} is malformed`\n );\n }\n });\n }\n}\n\nfunction validateLegacyPermutationDescription(permutations)\n{\n for (const [ index, permutation ] of permutations.entries())\n {\n if (!permutation\n || typeof permutation !== \"object\"\n || Array.isArray(permutation)\n || typeof permutation.name !== \"string\"\n || !permutation.name)\n {\n throw new TypeError(\n `Tr2EffectRes legacy permutation ${index} is malformed`\n );\n }\n }\n}\n\nfunction validatePermutationGraph(graph)\n{\n if (!graph || typeof graph !== \"object\" || Array.isArray(graph)\n || graph.format !== \"CJS_EFFECT_PERMUTATION_GRAPH\"\n || graph.formatVersion !== 1\n || !graph.coverage || typeof graph.coverage !== \"object\"\n || Array.isArray(graph.coverage)\n || graph.coverage.permutations !== \"complete\"\n || graph.coverage.bodies !== \"identity-only\"\n || graph.coverage.reflection !== \"absent\"\n || !Array.isArray(graph.axes)\n || !Array.isArray(graph.variants)\n || !Array.isArray(graph.bodies))\n {\n throw new TypeError(\n \"Tr2EffectRes requires CJS_EFFECT_PERMUTATION_GRAPH version 1\"\n );\n }\n\n const axisNames = new Set();\n const axes = graph.axes.map((axis, index) =>\n validatePermutationAxis(axis, index, axisNames));\n const expectedCount = getPermutationProduct(axes);\n if (graph.variants.length !== expectedCount\n || !graph.bodies.length\n || graph.bodies.length > graph.variants.length)\n {\n throw new Error(\n \"Tr2EffectRes permutation graph requires complete variants and bodies\"\n );\n }\n\n const bodies = new Map();\n const bodyDigests = new Set();\n graph.bodies.forEach((body, bodyIndex) =>\n {\n if (!body || typeof body !== \"object\" || Array.isArray(body)\n || typeof body.key !== \"string\" || !body.key\n || body.key !== body.key.trim()\n || !Number.isSafeInteger(body.byteLength) || body.byteLength < 1\n || body.byteLength > UINT32_MAX\n || typeof body.sha256 !== \"string\" || !SHA256.test(body.sha256)\n || bodies.has(body.key)\n || bodyDigests.has(body.sha256))\n {\n throw new Error(\n `Tr2EffectRes permutation body ${bodyIndex} is malformed or duplicated`\n );\n }\n bodyDigests.add(body.sha256);\n bodies.set(body.key, {\n byteLength: body.byteLength,\n references: 0\n });\n });\n\n const bodyKeyBySourceRecord = new Map();\n const sourceRecords = [];\n graph.variants.forEach((variant, permutationIndex) =>\n {\n const expectedOptions = decodePermutationOptions(permutationIndex, axes);\n if (!variant || typeof variant !== \"object\" || Array.isArray(variant)\n || variant.permutationIndex !== permutationIndex\n || !Array.isArray(variant.optionIndices)\n || variant.optionIndices.length !== expectedOptions.length\n || variant.optionIndices.some((value, index) =>\n value !== expectedOptions[index])\n || typeof variant.bodyKey !== \"string\"\n || !bodies.has(variant.bodyKey))\n {\n throw new Error(\n `Tr2EffectRes permutation variant ${permutationIndex} is malformed`\n );\n }\n\n const sourceRecord = validatePermutationSourceRecord(\n variant.sourceRecord,\n permutationIndex\n );\n const body = bodies.get(variant.bodyKey);\n if (sourceRecord.byteLength !== body.byteLength)\n {\n throw new Error(\n `Tr2EffectRes permutation variant ${permutationIndex} body length disagrees`\n );\n }\n const recordKey = `${sourceRecord.offset}:${sourceRecord.byteLength}`;\n const existingBodyKey = bodyKeyBySourceRecord.get(recordKey);\n if (existingBodyKey && existingBodyKey !== variant.bodyKey)\n {\n throw new Error(\n `Tr2EffectRes source record ${recordKey} maps to multiple bodies`\n );\n }\n bodyKeyBySourceRecord.set(recordKey, variant.bodyKey);\n sourceRecords.push(sourceRecord);\n body.references += 1;\n });\n\n validateDisjointPermutationRecords(sourceRecords);\n for (const [ bodyKey, body ] of bodies)\n {\n if (!body.references)\n {\n throw new Error(\n `Tr2EffectRes permutation body ${bodyKey} is unreferenced`\n );\n }\n }\n}\n\nfunction validatePermutationAxis(axis, index, names)\n{\n if (!axis || typeof axis !== \"object\" || Array.isArray(axis)\n || axis.index !== index\n || typeof axis.name !== \"string\" || !axis.name\n || axis.name !== axis.name.trim() || names.has(axis.name)\n || !Array.isArray(axis.options) || !axis.options.length\n || axis.options.length > UINT8_MAX\n || !Number.isSafeInteger(axis.defaultOption)\n || axis.defaultOption < 0\n || axis.defaultOption >= axis.options.length\n || typeof axis.description !== \"string\"\n || !Number.isSafeInteger(axis.type)\n || axis.type < 0 || axis.type > UINT8_MAX)\n {\n throw new Error(\n `Tr2EffectRes permutation axis ${index} is malformed or duplicated`\n );\n }\n names.add(axis.name);\n const options = new Set();\n for (const option of axis.options)\n {\n if (typeof option !== \"string\" || !option\n || option !== option.trim() || options.has(option))\n {\n throw new Error(\n `Tr2EffectRes permutation axis ${index} options are malformed`\n );\n }\n options.add(option);\n }\n return normalizePermutationAxis(axis);\n}\n\nfunction getPermutationProduct(axes)\n{\n let product = 1;\n for (const axis of axes)\n {\n product *= axis.options.length;\n if (!Number.isSafeInteger(product)\n || product < 1\n || product > MAX_EFFECT_PERMUTATIONS)\n {\n throw new Error(\n \"Tr2EffectRes permutation count exceeds the implementation limit\"\n );\n }\n }\n return product;\n}\n\nfunction decodePermutationOptions(permutationIndex, axes)\n{\n let value = permutationIndex;\n return axes.map(axis =>\n {\n const optionIndex = value % axis.options.length;\n value = Math.floor(value / axis.options.length);\n return optionIndex;\n });\n}\n\nfunction validatePermutationSourceRecord(record, permutationIndex)\n{\n const offset = record?.offset;\n const byteLength = record?.byteLength;\n const end = offset + byteLength;\n if (!record || typeof record !== \"object\" || Array.isArray(record)\n || !Number.isSafeInteger(offset) || offset < 0 || offset > UINT32_MAX\n || !Number.isSafeInteger(byteLength) || byteLength < 1\n || byteLength > UINT32_MAX\n || !Number.isSafeInteger(end)\n || end > UINT32_MAX + 1)\n {\n throw new Error(\n `Tr2EffectRes permutation variant ${permutationIndex} source record is malformed`\n );\n }\n return { offset, byteLength };\n}\n\nfunction validateDisjointPermutationRecords(records)\n{\n const unique = new Map();\n for (const record of records)\n {\n const key = `${record.offset}:${record.byteLength}`;\n if (!unique.has(key))\n {\n unique.set(key, {\n offset: record.offset,\n end: record.offset + record.byteLength\n });\n }\n }\n const ordered = Array.from(unique.values()).sort((left, right) =>\n left.offset - right.offset || left.end - right.end);\n for (let index = 1; index < ordered.length; index += 1)\n {\n if (ordered[index].offset < ordered[index - 1].end)\n {\n throw new Error(\n \"Tr2EffectRes permutation source body records partially overlap\"\n );\n }\n }\n}\n\nfunction getPermutationAxes(payload)\n{\n if (!payload)\n {\n return [];\n }\n if (payload.permutationGraph)\n {\n return payload.permutationGraph.axes.map(normalizePermutationAxis);\n }\n if (Array.isArray(payload.permutations)\n && payload.permutations.every(permutation =>\n Array.isArray(permutation?.options)))\n {\n return payload.permutations.map(normalizePermutationAxis);\n }\n return [];\n}\n\nfunction normalizePermutationAxis(axis)\n{\n if (!axis || typeof axis !== \"object\" || Array.isArray(axis)\n || typeof axis.name !== \"string\" || !axis.name\n || !Array.isArray(axis.options) || !axis.options.length\n || axis.options.some(option => typeof option !== \"string\" || !option)\n || !Number.isSafeInteger(axis.defaultOption)\n || axis.defaultOption < 0\n || axis.defaultOption >= axis.options.length)\n {\n throw new TypeError(\"Tr2EffectRes permutation axis is malformed\");\n }\n return {\n name: axis.name,\n options: [ ...axis.options ],\n defaultOption: axis.defaultOption,\n description: String(axis.description ?? \"\"),\n type: Number(axis.type ?? 0)\n };\n}\n\nfunction getPermutationVariantCount(payload)\n{\n if (Array.isArray(payload?.permutationGraph?.variants))\n {\n return payload.permutationGraph.variants.length;\n }\n const axes = getPermutationAxes(payload);\n if (axes.length)\n {\n return axes.reduce((count, axis) => count * axis.options.length, 1);\n }\n return null;\n}\n\nfunction getPortableReflection(payload, index)\n{\n if (!payload)\n {\n return null;\n }\n if (typeof payload.GetPortableEffectReflection === \"function\")\n {\n return payload.GetPortableEffectReflection(index);\n }\n if (typeof payload.getPortableEffectReflection === \"function\")\n {\n return payload.getPortableEffectReflection(index);\n }\n if (Tr2Shader.isPortableReflection(payload))\n {\n return index === payload.permutationIndex ? payload : null;\n }\n if (Array.isArray(payload.portableReflections))\n {\n return payload.portableReflections[index] ?? null;\n }\n return null;\n}\n\nfunction normalizeShaderOptions(options)\n{\n if (options instanceof Map)\n {\n return Array.from(options, ([ name, value ]) => ({\n name: String(name),\n value: String(value)\n }));\n }\n if (!Array.isArray(options))\n {\n return [];\n }\n return options.map(option => ({\n name: String(option?.name ?? \"\"),\n value: String(option?.value ?? \"\")\n }));\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectRes, {\n className: \"Tr2EffectRes\",\n family: \"resources\"\n});\nCjsSchema.decorateMethod(Tr2EffectRes, \"GetShader\", carbon.method, impl.adapted, impl.reason(\"Carbon reads the selected body directly from compiled effect bytes and registers renderer handles; CarbonEngineJS hydrates the format package's validated portable reflection without realizing GPU state.\"));\nCjsSchema.decorateMethod(Tr2EffectRes, \"GetShaderByIndex\", impl.custom, impl.reason(\"Carbon selects compiled bodies through GetShader; CarbonEngineJS exposes exact package-index hydration for deterministic package consumers and tests.\"));\nCjsSchema.decorateMethod(Tr2EffectRes, \"GetPermutationDescription\", carbon.method, impl.adapted, impl.reason(\"Carbon exposes a Python tuple through Blue; CarbonEngineJS returns a JSON-friendly plain axis description.\"));\nCjsSchema.decorateMethod(Tr2EffectRes, \"ReleaseResources\", carbon.method, impl.adapted, impl.reason(\"Backend resources are engine-owned; the resource-side release clears only hydrated device-free shader graphs.\"));\n"],"names":["globalEffectOptions","SHA256","UINT8_MAX","UINT32_MAX","MAX_EFFECT_PERMUTATIONS","Tr2EffectRes","CjsResource","Map","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","SetPayload","payload","options","clear","validateResourcePayload","validateEffectPayload","GetShader","count","axes","getPermutationAxes","GetPayload","length","portableIndex","Tr2Shader","isPortableReflection","permutationIndex","GetShaderByIndex","localOptions","normalizeShaderOptions","localCount","Number","isSafeInteger","Math","max","min","multiplier","index","axis","selectedIndex","defaultOption","globalOption","find","option","name","requestedIndex","indexOf","value","optionIndex","localOption","TypeError","has","get","variantCount","getPermutationVariantCount","portable","getPortableReflection","Error","shader","fromPortable","set","GetPermutationDescription","Array","isArray","permutations","map","permutation","description","type","ReleaseResources","ReleasePayload","ModifyGlobalEffectOptions","changes","change","findIndex","splice","push","GetGlobalEffectOptions","graph","permutationGraph","undefined","validatePermutationGraph","every","forEach","normalizePermutationAxis","validateLegacyPermutationDescription","portableReflections","expectedCount","reflection","entries","format","formatVersion","coverage","bodies","variants","axisNames","Set","validatePermutationAxis","getPermutationProduct","bodyDigests","body","bodyIndex","key","trim","byteLength","sha256","test","add","references","bodyKeyBySourceRecord","sourceRecords","variant","expectedOptions","decodePermutationOptions","optionIndices","some","bodyKey","sourceRecord","validatePermutationSourceRecord","recordKey","offset","existingBodyKey","validateDisjointPermutationRecords","names","product","floor","record","end","records","unique","ordered","from","sort","left","right","String","reduce","GetPortableEffectReflection","getPortableEffectReflection","CjsSchema","define","className","family","decorateMethod","carbon","method","impl","adapted","reason","custom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2EffectRes.js","sources":["../../../../src/resource/shader/Tr2EffectRes.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2EffectRes.h\n// Source: trinity/trinity/Resources/Tr2EffectRes.cpp\n// Source: trinity/trinity/Resources/Tr2EffectRes_Blue.cpp\nimport { CjsSchema, carbon, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsResource } from \"../CjsResource.js\";\nimport { validateResourcePayload } from \"../resourceBoundary.js\";\nimport { Tr2Shader } from \"./Tr2Shader.js\";\n\nconst globalEffectOptions = [];\nconst SHA256 = /^[0-9a-f]{64}$/u;\nconst UINT8_MAX = 0xff;\nconst UINT32_MAX = 0xffffffff;\nconst MAX_EFFECT_PERMUTATIONS = 0x10000;\n\n/**\n * Tr2EffectRes resource record.\n *\n * This stores effect/shader payload facts. Engine-gpu decides shader module,\n * pipeline, bind group, and sampler realization.\n */\nexport class Tr2EffectRes extends CjsResource\n{\n\n #shaders = new Map();\n\n /** Creates a Tr2EffectRes with caller-provided initial state. */\n constructor(values = null)\n {\n super();\n this.SetValues(values || {}, {\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Attach a plain shader/effect payload.\n *\n * @param {object|null} payload\n * @param {object|null} options\n * @returns {Tr2EffectRes}\n */\n SetPayload(payload = null, options = null)\n {\n if (payload === null)\n {\n this.#shaders.clear();\n super.SetPayload(null);\n return this;\n }\n validateResourcePayload(\n \"Tr2EffectRes\",\n payload,\n validateEffectPayload\n );\n this.#shaders.clear();\n super.SetPayload(payload);\n this.SetValues(options || {});\n return this;\n }\n\n /**\n * Select and hydrate one canonical shader from the complete permutation\n * graph exposed by a CEWG/CEWGPU raw package.\n *\n * Global options have Carbon-compatible precedence over caller options.\n * Unknown option values retain the authored default.\n *\n * @param {Array<object>|Map<string,string>} options Local name/value choices.\n * @param {number|null} count Number of local entries to consider.\n * @returns {Tr2Shader|null} Selected device-free shader reflection.\n */\n GetShader(options = [], count = null)\n {\n const axes = getPermutationAxes(this.GetPayload());\n if (!axes.length)\n {\n const portableIndex = Tr2Shader.isPortableReflection(this.GetPayload())\n ? this.GetPayload().permutationIndex\n : 0;\n return this.GetShaderByIndex(portableIndex);\n }\n const localOptions = normalizeShaderOptions(options);\n const localCount = Number.isSafeInteger(count)\n ? Math.max(0, Math.min(count, localOptions.length))\n : localOptions.length;\n let multiplier = 1;\n let index = 0;\n\n for (const axis of axes)\n {\n let selectedIndex = axis.defaultOption;\n const globalOption = globalEffectOptions.find(\n option => option.name === axis.name\n );\n if (globalOption)\n {\n const requestedIndex = axis.options.indexOf(globalOption.value);\n if (requestedIndex >= 0)\n {\n selectedIndex = requestedIndex;\n }\n }\n else\n {\n for (let optionIndex = 0; optionIndex < localCount; optionIndex += 1)\n {\n const localOption = localOptions[optionIndex];\n if (localOption.name !== axis.name)\n {\n continue;\n }\n const requestedIndex = axis.options.indexOf(localOption.value);\n if (requestedIndex >= 0)\n {\n selectedIndex = requestedIndex;\n }\n }\n }\n\n index += selectedIndex * multiplier;\n multiplier *= axis.options.length;\n }\n\n return this.GetShaderByIndex(index);\n }\n\n /**\n * Hydrate one exact permutation-table index and cache the resulting runtime\n * graph for this payload.\n *\n * @param {number} index Exact permutation index.\n * @returns {Tr2Shader|null} Canonical shader or null when reflection is absent.\n */\n GetShaderByIndex(index)\n {\n if (!Number.isSafeInteger(index) || index < 0)\n {\n throw new TypeError(\n \"Tr2EffectRes shader index must be a non-negative safe integer\"\n );\n }\n if (this.#shaders.has(index))\n {\n return this.#shaders.get(index);\n }\n\n const payload = this.GetPayload();\n const variantCount = getPermutationVariantCount(payload);\n if (variantCount !== null && index >= variantCount)\n {\n return null;\n }\n\n const portable = getPortableReflection(payload, index);\n if (!portable)\n {\n return null;\n }\n if (portable.permutationIndex !== index)\n {\n throw new Error(\n `Portable effect reflection index ${portable.permutationIndex} does not match requested index ${index}`\n );\n }\n\n const shader = Tr2Shader.fromPortable(portable);\n this.#shaders.set(index, shader);\n return shader;\n }\n\n /**\n * Return a small JSON-friendly permutation description.\n *\n * @returns {Array<*>}\n */\n GetPermutationDescription()\n {\n const payload = this.GetPayload();\n const axes = getPermutationAxes(payload);\n if (!axes.length && Array.isArray(payload?.permutations))\n {\n return payload.permutations.map(permutation => ({ ...permutation }));\n }\n return axes.map(axis => ({\n name: axis.name,\n options: [ ...axis.options ],\n defaultOption: axis.defaultOption,\n description: axis.description,\n type: axis.type\n }));\n }\n\n /**\n * Drop hydrated shader graphs while retaining the validated CPU payload.\n */\n ReleaseResources()\n {\n this.#shaders.clear();\n }\n\n /** Release the payload and every shader graph hydrated from it. */\n ReleasePayload()\n {\n this.#shaders.clear();\n return super.ReleasePayload();\n }\n\n static payload = \"shader\";\n\n}\n\n/**\n * Merge Carbon-style global effect option overrides.\n *\n * An empty value removes the override. Existing Tr2EffectRes shader caches\n * remain valid objects; callers rebuild effects to request the new selection.\n *\n * @param {Array<object>|Map<string,string>} changes Option changes.\n */\nexport function ModifyGlobalEffectOptions(changes = [])\n{\n for (const change of normalizeShaderOptions(changes))\n {\n const index = globalEffectOptions.findIndex(\n option => option.name === change.name\n );\n if (!change.value)\n {\n if (index >= 0)\n {\n globalEffectOptions.splice(index, 1);\n }\n }\n else if (index >= 0)\n {\n globalEffectOptions[index] = change;\n }\n else\n {\n globalEffectOptions.push(change);\n }\n }\n}\n\n/**\n * Return an owned snapshot of the current global option overrides.\n *\n * @returns {Array<{name:string,value:string}>} Global option choices.\n */\nexport function GetGlobalEffectOptions()\n{\n return globalEffectOptions.map(option => ({ ...option }));\n}\n\nfunction validateEffectPayload(payload)\n{\n const graph = payload.permutationGraph;\n if (graph !== null && graph !== undefined)\n {\n validatePermutationGraph(graph);\n }\n else if (Array.isArray(payload.permutations))\n {\n if (payload.permutations.every(permutation =>\n Array.isArray(permutation?.options)))\n {\n payload.permutations.forEach(normalizePermutationAxis);\n }\n else\n {\n validateLegacyPermutationDescription(payload.permutations);\n }\n }\n else if (!Tr2Shader.isPortableReflection(payload))\n {\n throw new TypeError(\n \"Tr2EffectRes payload requires a complete permutation graph, permutations array, or one portable reflection\"\n );\n }\n\n if (Array.isArray(payload.portableReflections))\n {\n const expectedCount = getPermutationVariantCount(payload);\n if (expectedCount !== null\n && payload.portableReflections.length !== expectedCount)\n {\n throw new Error(\n \"Tr2EffectRes portable reflection count disagrees with its permutations\"\n );\n }\n payload.portableReflections.forEach((reflection, index) =>\n {\n if (!Tr2Shader.isPortableReflection(reflection)\n || reflection.permutationIndex !== index)\n {\n throw new Error(\n `Tr2EffectRes portable reflection ${index} is malformed`\n );\n }\n });\n }\n}\n\nfunction validateLegacyPermutationDescription(permutations)\n{\n for (const [ index, permutation ] of permutations.entries())\n {\n if (!permutation\n || typeof permutation !== \"object\"\n || Array.isArray(permutation)\n || typeof permutation.name !== \"string\"\n || !permutation.name)\n {\n throw new TypeError(\n `Tr2EffectRes legacy permutation ${index} is malformed`\n );\n }\n }\n}\n\nfunction validatePermutationGraph(graph)\n{\n if (!graph || typeof graph !== \"object\" || Array.isArray(graph)\n || graph.format !== \"CJS_EFFECT_PERMUTATION_GRAPH\"\n || graph.formatVersion !== 1\n || !graph.coverage || typeof graph.coverage !== \"object\"\n || Array.isArray(graph.coverage)\n || graph.coverage.permutations !== \"complete\"\n || graph.coverage.bodies !== \"identity-only\"\n || graph.coverage.reflection !== \"absent\"\n || !Array.isArray(graph.axes)\n || !Array.isArray(graph.variants)\n || !Array.isArray(graph.bodies))\n {\n throw new TypeError(\n \"Tr2EffectRes requires CJS_EFFECT_PERMUTATION_GRAPH version 1\"\n );\n }\n\n const axisNames = new Set();\n const axes = graph.axes.map((axis, index) =>\n validatePermutationAxis(axis, index, axisNames));\n const expectedCount = getPermutationProduct(axes);\n if (graph.variants.length !== expectedCount\n || !graph.bodies.length\n || graph.bodies.length > graph.variants.length)\n {\n throw new Error(\n \"Tr2EffectRes permutation graph requires complete variants and bodies\"\n );\n }\n\n const bodies = new Map();\n const bodyDigests = new Set();\n graph.bodies.forEach((body, bodyIndex) =>\n {\n if (!body || typeof body !== \"object\" || Array.isArray(body)\n || typeof body.key !== \"string\" || !body.key\n || body.key !== body.key.trim()\n || !Number.isSafeInteger(body.byteLength) || body.byteLength < 1\n || body.byteLength > UINT32_MAX\n || typeof body.sha256 !== \"string\" || !SHA256.test(body.sha256)\n || bodies.has(body.key)\n || bodyDigests.has(body.sha256))\n {\n throw new Error(\n `Tr2EffectRes permutation body ${bodyIndex} is malformed or duplicated`\n );\n }\n bodyDigests.add(body.sha256);\n bodies.set(body.key, {\n byteLength: body.byteLength,\n references: 0\n });\n });\n\n const bodyKeyBySourceRecord = new Map();\n const sourceRecords = [];\n graph.variants.forEach((variant, permutationIndex) =>\n {\n const expectedOptions = decodePermutationOptions(permutationIndex, axes);\n if (!variant || typeof variant !== \"object\" || Array.isArray(variant)\n || variant.permutationIndex !== permutationIndex\n || !Array.isArray(variant.optionIndices)\n || variant.optionIndices.length !== expectedOptions.length\n || variant.optionIndices.some((value, index) =>\n value !== expectedOptions[index])\n || typeof variant.bodyKey !== \"string\"\n || !bodies.has(variant.bodyKey))\n {\n throw new Error(\n `Tr2EffectRes permutation variant ${permutationIndex} is malformed`\n );\n }\n\n const sourceRecord = validatePermutationSourceRecord(\n variant.sourceRecord,\n permutationIndex\n );\n const body = bodies.get(variant.bodyKey);\n if (sourceRecord.byteLength !== body.byteLength)\n {\n throw new Error(\n `Tr2EffectRes permutation variant ${permutationIndex} body length disagrees`\n );\n }\n const recordKey = `${sourceRecord.offset}:${sourceRecord.byteLength}`;\n const existingBodyKey = bodyKeyBySourceRecord.get(recordKey);\n if (existingBodyKey && existingBodyKey !== variant.bodyKey)\n {\n throw new Error(\n `Tr2EffectRes source record ${recordKey} maps to multiple bodies`\n );\n }\n bodyKeyBySourceRecord.set(recordKey, variant.bodyKey);\n sourceRecords.push(sourceRecord);\n body.references += 1;\n });\n\n validateDisjointPermutationRecords(sourceRecords);\n for (const [ bodyKey, body ] of bodies)\n {\n if (!body.references)\n {\n throw new Error(\n `Tr2EffectRes permutation body ${bodyKey} is unreferenced`\n );\n }\n }\n}\n\nfunction validatePermutationAxis(axis, index, names)\n{\n if (!axis || typeof axis !== \"object\" || Array.isArray(axis)\n || axis.index !== index\n || typeof axis.name !== \"string\" || !axis.name\n || axis.name !== axis.name.trim() || names.has(axis.name)\n || !Array.isArray(axis.options) || !axis.options.length\n || axis.options.length > UINT8_MAX\n || !Number.isSafeInteger(axis.defaultOption)\n || axis.defaultOption < 0\n || axis.defaultOption >= axis.options.length\n || typeof axis.description !== \"string\"\n || !Number.isSafeInteger(axis.type)\n || axis.type < 0 || axis.type > UINT8_MAX)\n {\n throw new Error(\n `Tr2EffectRes permutation axis ${index} is malformed or duplicated`\n );\n }\n names.add(axis.name);\n const options = new Set();\n for (const option of axis.options)\n {\n if (typeof option !== \"string\" || !option\n || option !== option.trim() || options.has(option))\n {\n throw new Error(\n `Tr2EffectRes permutation axis ${index} options are malformed`\n );\n }\n options.add(option);\n }\n return normalizePermutationAxis(axis);\n}\n\nfunction getPermutationProduct(axes)\n{\n let product = 1;\n for (const axis of axes)\n {\n product *= axis.options.length;\n if (!Number.isSafeInteger(product)\n || product < 1\n || product > MAX_EFFECT_PERMUTATIONS)\n {\n throw new Error(\n \"Tr2EffectRes permutation count exceeds the implementation limit\"\n );\n }\n }\n return product;\n}\n\nfunction decodePermutationOptions(permutationIndex, axes)\n{\n let value = permutationIndex;\n return axes.map(axis =>\n {\n const optionIndex = value % axis.options.length;\n value = Math.floor(value / axis.options.length);\n return optionIndex;\n });\n}\n\nfunction validatePermutationSourceRecord(record, permutationIndex)\n{\n const offset = record?.offset;\n const byteLength = record?.byteLength;\n const end = offset + byteLength;\n if (!record || typeof record !== \"object\" || Array.isArray(record)\n || !Number.isSafeInteger(offset) || offset < 0 || offset > UINT32_MAX\n || !Number.isSafeInteger(byteLength) || byteLength < 1\n || byteLength > UINT32_MAX\n || !Number.isSafeInteger(end)\n || end > UINT32_MAX + 1)\n {\n throw new Error(\n `Tr2EffectRes permutation variant ${permutationIndex} source record is malformed`\n );\n }\n return { offset, byteLength };\n}\n\nfunction validateDisjointPermutationRecords(records)\n{\n const unique = new Map();\n for (const record of records)\n {\n const key = `${record.offset}:${record.byteLength}`;\n if (!unique.has(key))\n {\n unique.set(key, {\n offset: record.offset,\n end: record.offset + record.byteLength\n });\n }\n }\n const ordered = Array.from(unique.values()).sort((left, right) =>\n left.offset - right.offset || left.end - right.end);\n for (let index = 1; index < ordered.length; index += 1)\n {\n if (ordered[index].offset < ordered[index - 1].end)\n {\n throw new Error(\n \"Tr2EffectRes permutation source body records partially overlap\"\n );\n }\n }\n}\n\nfunction getPermutationAxes(payload)\n{\n if (!payload)\n {\n return [];\n }\n if (payload.permutationGraph)\n {\n return payload.permutationGraph.axes.map(normalizePermutationAxis);\n }\n if (Array.isArray(payload.permutations)\n && payload.permutations.every(permutation =>\n Array.isArray(permutation?.options)))\n {\n return payload.permutations.map(normalizePermutationAxis);\n }\n return [];\n}\n\nfunction normalizePermutationAxis(axis)\n{\n if (!axis || typeof axis !== \"object\" || Array.isArray(axis)\n || typeof axis.name !== \"string\" || !axis.name\n || !Array.isArray(axis.options) || !axis.options.length\n || axis.options.some(option => typeof option !== \"string\" || !option)\n || !Number.isSafeInteger(axis.defaultOption)\n || axis.defaultOption < 0\n || axis.defaultOption >= axis.options.length)\n {\n throw new TypeError(\"Tr2EffectRes permutation axis is malformed\");\n }\n return {\n name: axis.name,\n options: [ ...axis.options ],\n defaultOption: axis.defaultOption,\n description: String(axis.description ?? \"\"),\n type: Number(axis.type ?? 0)\n };\n}\n\nfunction getPermutationVariantCount(payload)\n{\n if (Array.isArray(payload?.permutationGraph?.variants))\n {\n return payload.permutationGraph.variants.length;\n }\n const axes = getPermutationAxes(payload);\n if (axes.length)\n {\n return axes.reduce((count, axis) => count * axis.options.length, 1);\n }\n return null;\n}\n\nfunction getPortableReflection(payload, index)\n{\n if (!payload)\n {\n return null;\n }\n if (typeof payload.GetPortableEffectReflection === \"function\")\n {\n return payload.GetPortableEffectReflection(index);\n }\n if (typeof payload.getPortableEffectReflection === \"function\")\n {\n return payload.getPortableEffectReflection(index);\n }\n if (Tr2Shader.isPortableReflection(payload))\n {\n return index === payload.permutationIndex ? payload : null;\n }\n if (Array.isArray(payload.portableReflections))\n {\n return payload.portableReflections[index] ?? null;\n }\n return null;\n}\n\nfunction normalizeShaderOptions(options)\n{\n if (options instanceof Map)\n {\n return Array.from(options, ([ name, value ]) => ({\n name: String(name),\n value: String(value)\n }));\n }\n if (!Array.isArray(options))\n {\n return [];\n }\n return options.map(option => ({\n name: String(option?.name ?? \"\"),\n value: String(option?.value ?? \"\")\n }));\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectRes, {\n className: \"Tr2EffectRes\",\n family: \"resources\",\n methods: {\n GetShader: [ carbon.method, impl.adapted, impl.reason(\"Carbon reads the selected body directly from compiled effect bytes and registers renderer handles; CarbonEngineJS hydrates the format package's validated portable reflection without realizing GPU state.\") ],\n GetShaderByIndex: [ impl.custom, impl.reason(\"Carbon selects compiled bodies through GetShader; CarbonEngineJS exposes exact package-index hydration for deterministic package consumers and tests.\") ],\n GetPermutationDescription: [ carbon.method, impl.adapted, impl.reason(\"Carbon exposes a Python tuple through Blue; CarbonEngineJS returns a JSON-friendly plain axis description.\") ],\n ReleaseResources: [ carbon.method, impl.adapted, impl.reason(\"Backend resources are engine-owned; the resource-side release clears only hydrated device-free shader graphs.\") ]\n }\n});\n"],"names":["globalEffectOptions","SHA256","UINT8_MAX","UINT32_MAX","MAX_EFFECT_PERMUTATIONS","Tr2EffectRes","CjsResource","Map","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","SetPayload","payload","options","clear","validateResourcePayload","validateEffectPayload","GetShader","count","axes","getPermutationAxes","GetPayload","length","portableIndex","Tr2Shader","isPortableReflection","permutationIndex","GetShaderByIndex","localOptions","normalizeShaderOptions","localCount","Number","isSafeInteger","Math","max","min","multiplier","index","axis","selectedIndex","defaultOption","globalOption","find","option","name","requestedIndex","indexOf","value","optionIndex","localOption","TypeError","has","get","variantCount","getPermutationVariantCount","portable","getPortableReflection","Error","shader","fromPortable","set","GetPermutationDescription","Array","isArray","permutations","map","permutation","description","type","ReleaseResources","ReleasePayload","ModifyGlobalEffectOptions","changes","change","findIndex","splice","push","GetGlobalEffectOptions","graph","permutationGraph","undefined","validatePermutationGraph","every","forEach","normalizePermutationAxis","validateLegacyPermutationDescription","portableReflections","expectedCount","reflection","entries","format","formatVersion","coverage","bodies","variants","axisNames","Set","validatePermutationAxis","getPermutationProduct","bodyDigests","body","bodyIndex","key","trim","byteLength","sha256","test","add","references","bodyKeyBySourceRecord","sourceRecords","variant","expectedOptions","decodePermutationOptions","optionIndices","some","bodyKey","sourceRecord","validatePermutationSourceRecord","recordKey","offset","existingBodyKey","validateDisjointPermutationRecords","names","product","floor","record","end","records","unique","ordered","from","sort","left","right","String","reduce","GetPortableEffectReflection","getPortableEffectReflection","CjsSchema","define","className","family","methods","carbon","method","impl","adapted","reason","custom"],"mappings":"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"}
|
|
@@ -25,10 +25,12 @@ class Tr2MaterialArea extends CjsModel {
|
|
|
25
25
|
// would register a static as an instance field.
|
|
26
26
|
CjsSchema.define(Tr2MaterialArea, {
|
|
27
27
|
className: "Tr2MaterialArea",
|
|
28
|
-
family: "resources"
|
|
28
|
+
family: "resources",
|
|
29
|
+
fields: {
|
|
30
|
+
material: [io.persist, type.objectRef("Tr2MaterialParameterStore")],
|
|
31
|
+
metatype: [io.persist, type.string]
|
|
32
|
+
}
|
|
29
33
|
});
|
|
30
|
-
CjsSchema.decorateField(Tr2MaterialArea, "material", io.persist, type.objectRef("Tr2MaterialParameterStore"));
|
|
31
|
-
CjsSchema.decorateField(Tr2MaterialArea, "metatype", io.persist, type.string);
|
|
32
34
|
|
|
33
35
|
export { Tr2MaterialArea };
|
|
34
36
|
//# sourceMappingURL=Tr2MaterialArea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2MaterialArea.js","sources":["../../../../src/resource/shader/Tr2MaterialArea.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2MaterialRes.h\r\n// Schema: format-carbon resources/Tr2MaterialArea.json; maintained by runtime-resource.\r\nimport { CjsSchema, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/**\r\n * Associates one material-area metatype with its persisted parameter store.\r\n *\r\n * The record describes resource data and does not own shader bindings or\r\n * backend material realization.\r\n */\r\nexport class Tr2MaterialArea extends CjsModel\r\n{\r\n\r\n /** Persisted material parameter-store reference. */\r\n material = null;\r\n\r\n /** Authored material-area metatype. */\r\n metatype = \"\";\r\n\r\n}\r\n\r\n// Declared imperatively rather than with decorators, so this module stays\r\n// plain ESM that loads from source without a transform. The decorator\r\n// expressions are reused verbatim, so the registered metadata is identical.\r\n// Statics belong in `methods`: decorateMethod targets the prototype and\r\n// would register a static as an instance field.\r\nCjsSchema.define(Tr2MaterialArea, {\r\n className: \"Tr2MaterialArea\",\r\n family: \"resources\"
|
|
1
|
+
{"version":3,"file":"Tr2MaterialArea.js","sources":["../../../../src/resource/shader/Tr2MaterialArea.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2MaterialRes.h\r\n// Schema: format-carbon resources/Tr2MaterialArea.json; maintained by runtime-resource.\r\nimport { CjsSchema, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/**\r\n * Associates one material-area metatype with its persisted parameter store.\r\n *\r\n * The record describes resource data and does not own shader bindings or\r\n * backend material realization.\r\n */\r\nexport class Tr2MaterialArea extends CjsModel\r\n{\r\n\r\n /** Persisted material parameter-store reference. */\r\n material = null;\r\n\r\n /** Authored material-area metatype. */\r\n metatype = \"\";\r\n\r\n}\r\n\r\n// Declared imperatively rather than with decorators, so this module stays\r\n// plain ESM that loads from source without a transform. The decorator\r\n// expressions are reused verbatim, so the registered metadata is identical.\r\n// Statics belong in `methods`: decorateMethod targets the prototype and\r\n// would register a static as an instance field.\r\nCjsSchema.define(Tr2MaterialArea, {\r\n className: \"Tr2MaterialArea\",\r\n family: \"resources\",\r\n fields: {\r\n material: [ io.persist, type.objectRef(\"Tr2MaterialParameterStore\") ],\r\n metatype: [ io.persist, type.string ]\r\n }\r\n});\r\n"],"names":["Tr2MaterialArea","CjsModel","material","metatype","CjsSchema","define","className","family","fields","io","persist","type","objectRef","string"],"mappings":";;;AAAA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,eAAe,SAASC,QAAQ,CAC7C;AAEE;AACAC,EAAAA,QAAQ,GAAG,IAAI;;AAEf;AACAC,EAAAA,QAAQ,GAAG,EAAE;AAEf;;AAEA;AACA;AACA;AACA;AACA;AACAC,SAAS,CAACC,MAAM,CAACL,eAAe,EAAE;AAChCM,EAAAA,SAAS,EAAE,iBAAiB;AAC5BC,EAAAA,MAAM,EAAE,WAAW;AACnBC,EAAAA,MAAM,EAAE;AACNN,IAAAA,QAAQ,EAAE,CAAEO,EAAE,CAACC,OAAO,EAAEC,IAAI,CAACC,SAAS,CAAC,2BAA2B,CAAC,CAAE;IACrET,QAAQ,EAAE,CAAEM,EAAE,CAACC,OAAO,EAAEC,IAAI,CAACE,MAAM;AACrC;AACF,CAAC,CAAC;;;;"}
|
|
@@ -22,9 +22,11 @@ class Tr2MaterialMesh extends CjsModel {
|
|
|
22
22
|
// would register a static as an instance field.
|
|
23
23
|
CjsSchema.define(Tr2MaterialMesh, {
|
|
24
24
|
className: "Tr2MaterialMesh",
|
|
25
|
-
family: "resources"
|
|
25
|
+
family: "resources",
|
|
26
|
+
fields: {
|
|
27
|
+
areas: [io.persist, type.objectRef("Tr2MaterialAreaDict")]
|
|
28
|
+
}
|
|
26
29
|
});
|
|
27
|
-
CjsSchema.decorateField(Tr2MaterialMesh, "areas", io.persist, type.objectRef("Tr2MaterialAreaDict"));
|
|
28
30
|
|
|
29
31
|
export { Tr2MaterialMesh };
|
|
30
32
|
//# sourceMappingURL=Tr2MaterialMesh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2MaterialMesh.js","sources":["../../../../src/resource/shader/Tr2MaterialMesh.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2MaterialRes.h\r\n// Schema: format-carbon resources/Tr2MaterialMesh.json; maintained by runtime-resource.\r\nimport { CjsSchema, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/**\r\n * Holds the persisted material-area dictionary for one material mesh.\r\n *\r\n * Area lookup remains resource metadata; engines decide how the selected\r\n * material becomes backend draw state.\r\n */\r\nexport class Tr2MaterialMesh extends CjsModel\r\n{\r\n\r\n /** Persisted dictionary of material areas. */\r\n areas = null;\r\n\r\n}\r\n\r\n// Declared imperatively rather than with decorators, so this module stays\r\n// plain ESM that loads from source without a transform. The decorator\r\n// expressions are reused verbatim, so the registered metadata is identical.\r\n// Statics belong in `methods`: decorateMethod targets the prototype and\r\n// would register a static as an instance field.\r\nCjsSchema.define(Tr2MaterialMesh, {\r\n className: \"Tr2MaterialMesh\",\r\n family: \"resources\"
|
|
1
|
+
{"version":3,"file":"Tr2MaterialMesh.js","sources":["../../../../src/resource/shader/Tr2MaterialMesh.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2MaterialRes.h\r\n// Schema: format-carbon resources/Tr2MaterialMesh.json; maintained by runtime-resource.\r\nimport { CjsSchema, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/**\r\n * Holds the persisted material-area dictionary for one material mesh.\r\n *\r\n * Area lookup remains resource metadata; engines decide how the selected\r\n * material becomes backend draw state.\r\n */\r\nexport class Tr2MaterialMesh extends CjsModel\r\n{\r\n\r\n /** Persisted dictionary of material areas. */\r\n areas = null;\r\n\r\n}\r\n\r\n// Declared imperatively rather than with decorators, so this module stays\r\n// plain ESM that loads from source without a transform. The decorator\r\n// expressions are reused verbatim, so the registered metadata is identical.\r\n// Statics belong in `methods`: decorateMethod targets the prototype and\r\n// would register a static as an instance field.\r\nCjsSchema.define(Tr2MaterialMesh, {\r\n className: \"Tr2MaterialMesh\",\r\n family: \"resources\",\r\n fields: {\r\n areas: [ io.persist, type.objectRef(\"Tr2MaterialAreaDict\") ]\r\n }\r\n});\r\n"],"names":["Tr2MaterialMesh","CjsModel","areas","CjsSchema","define","className","family","fields","io","persist","type","objectRef"],"mappings":";;;AAAA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,eAAe,SAASC,QAAQ,CAC7C;AAEE;AACAC,EAAAA,KAAK,GAAG,IAAI;AAEd;;AAEA;AACA;AACA;AACA;AACA;AACAC,SAAS,CAACC,MAAM,CAACJ,eAAe,EAAE;AAChCK,EAAAA,SAAS,EAAE,iBAAiB;AAC5BC,EAAAA,MAAM,EAAE,WAAW;AACnBC,EAAAA,MAAM,EAAE;IACNL,KAAK,EAAE,CAAEM,EAAE,CAACC,OAAO,EAAEC,IAAI,CAACC,SAAS,CAAC,qBAAqB,CAAC;AAC5D;AACF,CAAC,CAAC;;;;"}
|
|
@@ -26,10 +26,12 @@ class Tr2MaterialRes extends CjsModel {
|
|
|
26
26
|
// would register a static as an instance field.
|
|
27
27
|
CjsSchema.define(Tr2MaterialRes, {
|
|
28
28
|
className: "Tr2MaterialRes",
|
|
29
|
-
family: "resources"
|
|
29
|
+
family: "resources",
|
|
30
|
+
fields: {
|
|
31
|
+
meshes: [io.persist, type.objectRef("Tr2MaterialMeshDict")],
|
|
32
|
+
name: [io.persist, type.string]
|
|
33
|
+
}
|
|
30
34
|
});
|
|
31
|
-
CjsSchema.decorateField(Tr2MaterialRes, "meshes", io.persist, type.objectRef("Tr2MaterialMeshDict"));
|
|
32
|
-
CjsSchema.decorateField(Tr2MaterialRes, "name", io.persist, type.string);
|
|
33
35
|
|
|
34
36
|
export { Tr2MaterialRes };
|
|
35
37
|
//# sourceMappingURL=Tr2MaterialRes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2MaterialRes.js","sources":["../../../../src/resource/shader/Tr2MaterialRes.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2MaterialRes.h\r\n// Schema: format-carbon resources/Tr2MaterialRes.json; maintained by runtime-resource.\r\nimport { CjsSchema, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/**\r\n * Root persisted material record containing its authored name and material\r\n * mesh dictionary.\r\n *\r\n * It owns the serializable material description, not device shaders,\r\n * descriptor bindings, or pipelines.\r\n */\r\nexport class Tr2MaterialRes extends CjsModel\r\n{\r\n\r\n /** Persisted dictionary of material meshes. */\r\n meshes = null;\r\n\r\n /** Authored material name. */\r\n name = \"\";\r\n\r\n}\r\n\r\n// Declared imperatively rather than with decorators, so this module stays\r\n// plain ESM that loads from source without a transform. The decorator\r\n// expressions are reused verbatim, so the registered metadata is identical.\r\n// Statics belong in `methods`: decorateMethod targets the prototype and\r\n// would register a static as an instance field.\r\nCjsSchema.define(Tr2MaterialRes, {\r\n className: \"Tr2MaterialRes\",\r\n family: \"resources\"
|
|
1
|
+
{"version":3,"file":"Tr2MaterialRes.js","sources":["../../../../src/resource/shader/Tr2MaterialRes.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2MaterialRes.h\r\n// Schema: format-carbon resources/Tr2MaterialRes.json; maintained by runtime-resource.\r\nimport { CjsSchema, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/**\r\n * Root persisted material record containing its authored name and material\r\n * mesh dictionary.\r\n *\r\n * It owns the serializable material description, not device shaders,\r\n * descriptor bindings, or pipelines.\r\n */\r\nexport class Tr2MaterialRes extends CjsModel\r\n{\r\n\r\n /** Persisted dictionary of material meshes. */\r\n meshes = null;\r\n\r\n /** Authored material name. */\r\n name = \"\";\r\n\r\n}\r\n\r\n// Declared imperatively rather than with decorators, so this module stays\r\n// plain ESM that loads from source without a transform. The decorator\r\n// expressions are reused verbatim, so the registered metadata is identical.\r\n// Statics belong in `methods`: decorateMethod targets the prototype and\r\n// would register a static as an instance field.\r\nCjsSchema.define(Tr2MaterialRes, {\r\n className: \"Tr2MaterialRes\",\r\n family: \"resources\",\r\n fields: {\r\n meshes: [ io.persist, type.objectRef(\"Tr2MaterialMeshDict\") ],\r\n name: [ io.persist, type.string ]\r\n }\r\n});\r\n"],"names":["Tr2MaterialRes","CjsModel","meshes","name","CjsSchema","define","className","family","fields","io","persist","type","objectRef","string"],"mappings":";;;AAAA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,cAAc,SAASC,QAAQ,CAC5C;AAEE;AACAC,EAAAA,MAAM,GAAG,IAAI;;AAEb;AACAC,EAAAA,IAAI,GAAG,EAAE;AAEX;;AAEA;AACA;AACA;AACA;AACA;AACAC,SAAS,CAACC,MAAM,CAACL,cAAc,EAAE;AAC/BM,EAAAA,SAAS,EAAE,gBAAgB;AAC3BC,EAAAA,MAAM,EAAE,WAAW;AACnBC,EAAAA,MAAM,EAAE;AACNN,IAAAA,MAAM,EAAE,CAAEO,EAAE,CAACC,OAAO,EAAEC,IAAI,CAACC,SAAS,CAAC,qBAAqB,CAAC,CAAE;IAC7DT,IAAI,EAAE,CAAEM,EAAE,CAACC,OAAO,EAAEC,IAAI,CAACE,MAAM;AACjC;AACF,CAAC,CAAC;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { impl, CjsSchema, carbon, type } from '@carbonenginejs/runtime-utils/schema';
|
|
2
2
|
import { CjsModel } from '@carbonenginejs/runtime-utils/model';
|
|
3
3
|
import { validateEffectBodyReflection, isEffectBodyReflection } from '../../formats/hlsl/core/portableReflection.js';
|
|
4
4
|
import { Tr2EffectDescription } from './reflection/Tr2EffectDescription.js';
|
|
@@ -228,29 +228,34 @@ class Tr2Shader extends CjsModel {
|
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
-
// Declared
|
|
232
|
-
//
|
|
233
|
-
//
|
|
234
|
-
//
|
|
235
|
-
//
|
|
231
|
+
// Declared as data rather than with decorators, so this module stays plain ESM
|
|
232
|
+
// that loads from source without a transform. The decorator vocabulary is used
|
|
233
|
+
// verbatim as values, so the registered metadata is identical to the decorated
|
|
234
|
+
// form. Field order is key order, and it drives GetValues() export order.
|
|
235
|
+
// Statics belong in `methods`: the prototype is what carries instance fields.
|
|
236
|
+
const UNVALIDATED_TECHNIQUE_INDEX = impl.reason("Carbon assumes an already-validated technique index; CarbonEngineJS safely returns zero for an unavailable index.");
|
|
236
237
|
CjsSchema.define(Tr2Shader, {
|
|
237
238
|
className: "Tr2Shader",
|
|
238
|
-
family: "shader"
|
|
239
|
+
family: "shader",
|
|
240
|
+
fields: {
|
|
241
|
+
sortValue: type.uint32,
|
|
242
|
+
effect: type.rawStruct("Tr2EffectDescription"),
|
|
243
|
+
hasVertexBufferAccessInRtShadow: type.boolean
|
|
244
|
+
},
|
|
245
|
+
methods: {
|
|
246
|
+
GetTechniqueIndex: [carbon.method, impl.adapted, impl.reason("Carbon returns success through a bool plus output index; CarbonEngineJS returns the index directly or -1 while preserving exact name lookup.")],
|
|
247
|
+
GetPassCount: [carbon.method, impl.adapted, UNVALIDATED_TECHNIQUE_INDEX],
|
|
248
|
+
GetConstant: [carbon.method, impl.implemented],
|
|
249
|
+
GetResource: [carbon.method, impl.implemented],
|
|
250
|
+
GetParameterAnnotations: [carbon.method, impl.implemented],
|
|
251
|
+
GetSortValue: [carbon.method, impl.implemented],
|
|
252
|
+
GetEffectDescription: [carbon.method, impl.implemented],
|
|
253
|
+
GetEffect: [carbon.method, impl.implemented],
|
|
254
|
+
GetShaderTypeMask: [carbon.method, impl.adapted, UNVALIDATED_TECHNIQUE_INDEX],
|
|
255
|
+
ProcessEffect: [carbon.method, impl.adapted, impl.reason("Carbon packs renderer handles assigned while reading; the device-free graph leaves the sort key zero until an engine assigns valid handles.")],
|
|
256
|
+
HasVertexBufferAccessInRtShadow: [carbon.method, impl.implemented]
|
|
257
|
+
}
|
|
239
258
|
});
|
|
240
|
-
CjsSchema.decorateField(Tr2Shader, "sortValue", type.uint32);
|
|
241
|
-
CjsSchema.decorateField(Tr2Shader, "effect", type.rawStruct("Tr2EffectDescription"));
|
|
242
|
-
CjsSchema.decorateField(Tr2Shader, "hasVertexBufferAccessInRtShadow", type.boolean);
|
|
243
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetTechniqueIndex", carbon.method, impl.adapted, impl.reason("Carbon returns success through a bool plus output index; CarbonEngineJS returns the index directly or -1 while preserving exact name lookup."));
|
|
244
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetPassCount", carbon.method, impl.adapted, impl.reason("Carbon assumes an already-validated technique index; CarbonEngineJS safely returns zero for an unavailable index."));
|
|
245
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetConstant", carbon.method, impl.implemented);
|
|
246
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetResource", carbon.method, impl.implemented);
|
|
247
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetParameterAnnotations", carbon.method, impl.implemented);
|
|
248
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetSortValue", carbon.method, impl.implemented);
|
|
249
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetEffectDescription", carbon.method, impl.implemented);
|
|
250
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetEffect", carbon.method, impl.implemented);
|
|
251
|
-
CjsSchema.decorateMethod(Tr2Shader, "GetShaderTypeMask", carbon.method, impl.adapted, impl.reason("Carbon assumes an already-validated technique index; CarbonEngineJS safely returns zero for an unavailable index."));
|
|
252
|
-
CjsSchema.decorateMethod(Tr2Shader, "ProcessEffect", carbon.method, impl.adapted, impl.reason("Carbon packs renderer handles assigned while reading; the device-free graph leaves the sort key zero until an engine assigns valid handles."));
|
|
253
|
-
CjsSchema.decorateMethod(Tr2Shader, "HasVertexBufferAccessInRtShadow", carbon.method, impl.implemented);
|
|
254
259
|
|
|
255
260
|
export { Tr2Shader };
|
|
256
261
|
//# sourceMappingURL=Tr2Shader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2Shader.js","sources":["../../../../src/resource/shader/Tr2Shader.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2Shader.h\n// Source: trinity/trinity/Shader/Tr2Shader.cpp\nimport { CjsSchema, carbon, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isEffectBodyReflection,\n validateEffectBodyReflection\n} from \"../../formats/hlsl/portable.js\";\nimport { Tr2EffectDescription } from \"./reflection/Tr2EffectDescription.js\";\n\n/** GPU-free selected shader and its complete source reflection graph. */\nexport class Tr2Shader extends CjsModel\n{\n\n /** m_sortValue (unsigned int) */\n sortValue = 0;\n\n /** m_effect (Tr2EffectDescription) */\n effect = new Tr2EffectDescription();\n\n /** m_hasVertexBufferAccessInRtShadow (bool) */\n hasVertexBufferAccessInRtShadow = false;\n\n /**\n * Index of the named technique; 0 for Carbon's empty-string any-technique\n * sentinel and -1 when the shader has no techniques or the name is unknown.\n */\n GetTechniqueIndex(name = \"Main\")\n {\n const techniques = this.effect?.techniques ?? [];\n if (!techniques.length)\n {\n return -1;\n }\n if (name === \"\")\n {\n return 0;\n }\n return techniques.findIndex(technique => technique?.name === name);\n }\n\n /** Number of passes in a technique; 0 for an unknown index. */\n GetPassCount(techniqueIndex = 0)\n {\n return this.effect?.techniques?.[techniqueIndex]?.passes?.length ?? 0;\n }\n\n /**\n * The reflected constant of this name from any stage of any pass, or null;\n * the description is metadata, not a bound GPU slot.\n */\n GetConstant(name)\n {\n return Tr2Shader.findStageValue(this.effect, name, \"constants\");\n }\n\n /**\n * The reflected resource of this name, searching stage resources before\n * UAVs; null when neither has it.\n */\n GetResource(name)\n {\n for (const stage of Tr2Shader.iterateStages(this.effect))\n {\n const resource = Tr2Shader.findNamedCollectionValue(\n stage?.resources,\n name\n );\n if (resource)\n {\n return resource;\n }\n const uav = Tr2Shader.findNamedCollectionValue(stage?.uavs, name);\n if (uav)\n {\n return uav;\n }\n }\n return null;\n }\n\n /**\n * The annotation set authored for a parameter name, or null; the shape\n * depends on the reflection source.\n */\n GetParameterAnnotations(parameterName)\n {\n return Tr2Shader.findAnnotationSet(\n this.effect?.annotations,\n parameterName\n );\n }\n\n /** The packed draw-sort key; 0 until ProcessEffect has run. */\n GetSortValue()\n {\n return this.sortValue;\n }\n\n /** The reflected effect description, by reference rather than copy. */\n GetEffectDescription()\n {\n return this.effect;\n }\n\n /** The same object GetEffectDescription returns. */\n GetEffect()\n {\n return this.effect;\n }\n\n /** The technique's bitmask of shader stages, or 0 for an unknown index. */\n GetShaderTypeMask(techniqueIndex = 0)\n {\n return Number(\n this.effect?.techniques?.[techniqueIndex]?.shaderTypeMask ?? 0\n );\n }\n\n /**\n * Pack the first technique/pass's renderer handles into Carbon's sort key.\n * A device-free source graph retains 0 while its handles remain invalid.\n */\n ProcessEffect()\n {\n this.sortValue = 0;\n const pass = this.effect?.techniques?.[0]?.passes?.[0];\n if (!pass)\n {\n return;\n }\n const stages = pass.stageInputs ?? [];\n const pixelHandle = Number(\n stages[1]?.shader ?? stages[1]?.m_shader ?? 0xffffffff\n );\n const vertexHandle = Number(\n stages[0]?.shader ?? stages[0]?.m_shader ?? 0xffffffff\n );\n if (pixelHandle === 0xffffffff || vertexHandle === 0xffffffff)\n {\n return;\n }\n const pixelShader = pixelHandle & 0x3ff;\n const vertexShader = vertexHandle & 0x3ff;\n const renderStates = Number(pass.renderStates ?? 0) & 0x3ff;\n const passCount = Number(\n this.effect?.techniques?.[0]?.passes?.length ?? 0\n ) & 0x3;\n this.sortValue = (\n (passCount << 30)\n | (pixelShader << 20)\n | (vertexShader << 10)\n | renderStates\n ) >>> 0;\n }\n\n /** Whether this shader accesses vertex buffers in RT shadow mode. */\n HasVertexBufferAccessInRtShadow()\n {\n return this.hasVertexBufferAccessInRtShadow;\n }\n\n /**\n * Construct a canonical shader graph from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2Shader} Hydrated shader graph.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n if (values?.effect\n && !(values.effect instanceof Tr2EffectDescription))\n {\n normalized = {\n ...values,\n effect: Tr2EffectDescription.from(values.effect, options)\n };\n }\n const shader = super.from(normalized, options);\n if (!Object.hasOwn(values ?? {}, \"sortValue\"))\n {\n shader.ProcessEffect();\n }\n return shader;\n }\n\n /**\n * Build one canonical GPU-free shader from complete portable reflection.\n * Each child reflection class owns conversion of its own portable record.\n *\n * @param {object} portable Portable effect-body reflection.\n * @returns {Tr2Shader} Canonical selected shader.\n */\n static fromPortable(portable)\n {\n validateEffectBodyReflection(portable);\n\n const shader = new this();\n shader.effect = Tr2EffectDescription.fromPortable(portable.effect);\n shader.ProcessEffect();\n return shader;\n }\n\n /**\n * Whether a value has the supported complete portable-reflection envelope.\n *\n * @param {*} value Candidate value.\n * @returns {boolean} Whether the portable envelope is supported.\n */\n static isPortableReflection(value)\n {\n return isEffectBodyReflection(value);\n }\n\n /** Find one named reflection entry across every stage. */\n static findStageValue(effect, name, key)\n {\n for (const stage of Tr2Shader.iterateStages(effect))\n {\n const found = Tr2Shader.findNamedCollectionValue(stage?.[key], name);\n if (found)\n {\n return found;\n }\n }\n return null;\n }\n\n /** Flatten pass stage inputs in Carbon lookup order. */\n static iterateStages(effect)\n {\n const stages = [];\n for (const technique of effect?.techniques ?? [])\n {\n for (const pass of technique?.passes ?? [])\n {\n stages.push(...pass?.stageInputs ?? []);\n }\n }\n return stages;\n }\n\n /** Find a named entry in an array, Map, or plain object collection. */\n static findNamedCollectionValue(values, name)\n {\n if (!values)\n {\n return null;\n }\n if (Array.isArray(values))\n {\n return values.find(\n value => value?.name === name || value?.[1]?.name === name\n ) ?? null;\n }\n if (values instanceof Map)\n {\n for (const value of values.values())\n {\n if (value?.name === name)\n {\n return value;\n }\n }\n return null;\n }\n for (const value of Object.values(values))\n {\n if (value?.name === name)\n {\n return value;\n }\n }\n return null;\n }\n\n /** Resolve a parameter's annotations from a Map, array, or plain object. */\n static findAnnotationSet(annotations, parameterName)\n {\n if (!annotations)\n {\n return null;\n }\n if (annotations instanceof Map)\n {\n return annotations.get(parameterName) ?? null;\n }\n if (Array.isArray(annotations))\n {\n const entry = annotations.find(\n item => item?.name === parameterName\n || item?.[0] === parameterName\n );\n return entry?.annotations ?? entry?.value ?? entry?.[1] ?? null;\n }\n return annotations[parameterName] ?? null;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2Shader, {\n className: \"Tr2Shader\",\n family: \"shader\"\n});\nCjsSchema.decorateField(Tr2Shader, \"sortValue\", type.uint32);\nCjsSchema.decorateField(Tr2Shader, \"effect\", type.rawStruct(\"Tr2EffectDescription\"));\nCjsSchema.decorateField(Tr2Shader, \"hasVertexBufferAccessInRtShadow\", type.boolean);\nCjsSchema.decorateMethod(Tr2Shader, \"GetTechniqueIndex\", carbon.method, impl.adapted, impl.reason(\"Carbon returns success through a bool plus output index; CarbonEngineJS returns the index directly or -1 while preserving exact name lookup.\"));\nCjsSchema.decorateMethod(Tr2Shader, \"GetPassCount\", carbon.method, impl.adapted, impl.reason(\"Carbon assumes an already-validated technique index; CarbonEngineJS safely returns zero for an unavailable index.\"));\nCjsSchema.decorateMethod(Tr2Shader, \"GetConstant\", carbon.method, impl.implemented);\nCjsSchema.decorateMethod(Tr2Shader, \"GetResource\", carbon.method, impl.implemented);\nCjsSchema.decorateMethod(Tr2Shader, \"GetParameterAnnotations\", carbon.method, impl.implemented);\nCjsSchema.decorateMethod(Tr2Shader, \"GetSortValue\", carbon.method, impl.implemented);\nCjsSchema.decorateMethod(Tr2Shader, \"GetEffectDescription\", carbon.method, impl.implemented);\nCjsSchema.decorateMethod(Tr2Shader, \"GetEffect\", carbon.method, impl.implemented);\nCjsSchema.decorateMethod(Tr2Shader, \"GetShaderTypeMask\", carbon.method, impl.adapted, impl.reason(\"Carbon assumes an already-validated technique index; CarbonEngineJS safely returns zero for an unavailable index.\"));\nCjsSchema.decorateMethod(Tr2Shader, \"ProcessEffect\", carbon.method, impl.adapted, impl.reason(\"Carbon packs renderer handles assigned while reading; the device-free graph leaves the sort key zero until an engine assigns valid handles.\"));\nCjsSchema.decorateMethod(Tr2Shader, \"HasVertexBufferAccessInRtShadow\", carbon.method, impl.implemented);\n"],"names":["Tr2Shader","CjsModel","sortValue","effect","Tr2EffectDescription","hasVertexBufferAccessInRtShadow","GetTechniqueIndex","name","techniques","length","findIndex","technique","GetPassCount","techniqueIndex","passes","GetConstant","findStageValue","GetResource","stage","iterateStages","resource","findNamedCollectionValue","resources","uav","uavs","GetParameterAnnotations","parameterName","findAnnotationSet","annotations","GetSortValue","GetEffectDescription","GetEffect","GetShaderTypeMask","Number","shaderTypeMask","ProcessEffect","pass","stages","stageInputs","pixelHandle","shader","m_shader","vertexHandle","pixelShader","vertexShader","renderStates","passCount","HasVertexBufferAccessInRtShadow","from","values","options","normalized","Object","hasOwn","fromPortable","portable","validateEffectBodyReflection","isPortableReflection","value","isEffectBodyReflection","key","found","push","Array","isArray","find","Map","get","entry","item","CjsSchema","define","className","family","decorateField","type","uint32","rawStruct","boolean","decorateMethod","carbon","method","impl","adapted","reason","implemented"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2Shader.js","sources":["../../../../src/resource/shader/Tr2Shader.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2Shader.h\n// Source: trinity/trinity/Shader/Tr2Shader.cpp\nimport { CjsSchema, carbon, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isEffectBodyReflection,\n validateEffectBodyReflection\n} from \"../../formats/hlsl/portable.js\";\nimport { Tr2EffectDescription } from \"./reflection/Tr2EffectDescription.js\";\n\n/** GPU-free selected shader and its complete source reflection graph. */\nexport class Tr2Shader extends CjsModel\n{\n\n /** m_sortValue (unsigned int) */\n sortValue = 0;\n\n /** m_effect (Tr2EffectDescription) */\n effect = new Tr2EffectDescription();\n\n /** m_hasVertexBufferAccessInRtShadow (bool) */\n hasVertexBufferAccessInRtShadow = false;\n\n /**\n * Index of the named technique; 0 for Carbon's empty-string any-technique\n * sentinel and -1 when the shader has no techniques or the name is unknown.\n */\n GetTechniqueIndex(name = \"Main\")\n {\n const techniques = this.effect?.techniques ?? [];\n if (!techniques.length)\n {\n return -1;\n }\n if (name === \"\")\n {\n return 0;\n }\n return techniques.findIndex(technique => technique?.name === name);\n }\n\n /** Number of passes in a technique; 0 for an unknown index. */\n GetPassCount(techniqueIndex = 0)\n {\n return this.effect?.techniques?.[techniqueIndex]?.passes?.length ?? 0;\n }\n\n /**\n * The reflected constant of this name from any stage of any pass, or null;\n * the description is metadata, not a bound GPU slot.\n */\n GetConstant(name)\n {\n return Tr2Shader.findStageValue(this.effect, name, \"constants\");\n }\n\n /**\n * The reflected resource of this name, searching stage resources before\n * UAVs; null when neither has it.\n */\n GetResource(name)\n {\n for (const stage of Tr2Shader.iterateStages(this.effect))\n {\n const resource = Tr2Shader.findNamedCollectionValue(\n stage?.resources,\n name\n );\n if (resource)\n {\n return resource;\n }\n const uav = Tr2Shader.findNamedCollectionValue(stage?.uavs, name);\n if (uav)\n {\n return uav;\n }\n }\n return null;\n }\n\n /**\n * The annotation set authored for a parameter name, or null; the shape\n * depends on the reflection source.\n */\n GetParameterAnnotations(parameterName)\n {\n return Tr2Shader.findAnnotationSet(\n this.effect?.annotations,\n parameterName\n );\n }\n\n /** The packed draw-sort key; 0 until ProcessEffect has run. */\n GetSortValue()\n {\n return this.sortValue;\n }\n\n /** The reflected effect description, by reference rather than copy. */\n GetEffectDescription()\n {\n return this.effect;\n }\n\n /** The same object GetEffectDescription returns. */\n GetEffect()\n {\n return this.effect;\n }\n\n /** The technique's bitmask of shader stages, or 0 for an unknown index. */\n GetShaderTypeMask(techniqueIndex = 0)\n {\n return Number(\n this.effect?.techniques?.[techniqueIndex]?.shaderTypeMask ?? 0\n );\n }\n\n /**\n * Pack the first technique/pass's renderer handles into Carbon's sort key.\n * A device-free source graph retains 0 while its handles remain invalid.\n */\n ProcessEffect()\n {\n this.sortValue = 0;\n const pass = this.effect?.techniques?.[0]?.passes?.[0];\n if (!pass)\n {\n return;\n }\n const stages = pass.stageInputs ?? [];\n const pixelHandle = Number(\n stages[1]?.shader ?? stages[1]?.m_shader ?? 0xffffffff\n );\n const vertexHandle = Number(\n stages[0]?.shader ?? stages[0]?.m_shader ?? 0xffffffff\n );\n if (pixelHandle === 0xffffffff || vertexHandle === 0xffffffff)\n {\n return;\n }\n const pixelShader = pixelHandle & 0x3ff;\n const vertexShader = vertexHandle & 0x3ff;\n const renderStates = Number(pass.renderStates ?? 0) & 0x3ff;\n const passCount = Number(\n this.effect?.techniques?.[0]?.passes?.length ?? 0\n ) & 0x3;\n this.sortValue = (\n (passCount << 30)\n | (pixelShader << 20)\n | (vertexShader << 10)\n | renderStates\n ) >>> 0;\n }\n\n /** Whether this shader accesses vertex buffers in RT shadow mode. */\n HasVertexBufferAccessInRtShadow()\n {\n return this.hasVertexBufferAccessInRtShadow;\n }\n\n /**\n * Construct a canonical shader graph from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2Shader} Hydrated shader graph.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n if (values?.effect\n && !(values.effect instanceof Tr2EffectDescription))\n {\n normalized = {\n ...values,\n effect: Tr2EffectDescription.from(values.effect, options)\n };\n }\n const shader = super.from(normalized, options);\n if (!Object.hasOwn(values ?? {}, \"sortValue\"))\n {\n shader.ProcessEffect();\n }\n return shader;\n }\n\n /**\n * Build one canonical GPU-free shader from complete portable reflection.\n * Each child reflection class owns conversion of its own portable record.\n *\n * @param {object} portable Portable effect-body reflection.\n * @returns {Tr2Shader} Canonical selected shader.\n */\n static fromPortable(portable)\n {\n validateEffectBodyReflection(portable);\n\n const shader = new this();\n shader.effect = Tr2EffectDescription.fromPortable(portable.effect);\n shader.ProcessEffect();\n return shader;\n }\n\n /**\n * Whether a value has the supported complete portable-reflection envelope.\n *\n * @param {*} value Candidate value.\n * @returns {boolean} Whether the portable envelope is supported.\n */\n static isPortableReflection(value)\n {\n return isEffectBodyReflection(value);\n }\n\n /** Find one named reflection entry across every stage. */\n static findStageValue(effect, name, key)\n {\n for (const stage of Tr2Shader.iterateStages(effect))\n {\n const found = Tr2Shader.findNamedCollectionValue(stage?.[key], name);\n if (found)\n {\n return found;\n }\n }\n return null;\n }\n\n /** Flatten pass stage inputs in Carbon lookup order. */\n static iterateStages(effect)\n {\n const stages = [];\n for (const technique of effect?.techniques ?? [])\n {\n for (const pass of technique?.passes ?? [])\n {\n stages.push(...pass?.stageInputs ?? []);\n }\n }\n return stages;\n }\n\n /** Find a named entry in an array, Map, or plain object collection. */\n static findNamedCollectionValue(values, name)\n {\n if (!values)\n {\n return null;\n }\n if (Array.isArray(values))\n {\n return values.find(\n value => value?.name === name || value?.[1]?.name === name\n ) ?? null;\n }\n if (values instanceof Map)\n {\n for (const value of values.values())\n {\n if (value?.name === name)\n {\n return value;\n }\n }\n return null;\n }\n for (const value of Object.values(values))\n {\n if (value?.name === name)\n {\n return value;\n }\n }\n return null;\n }\n\n /** Resolve a parameter's annotations from a Map, array, or plain object. */\n static findAnnotationSet(annotations, parameterName)\n {\n if (!annotations)\n {\n return null;\n }\n if (annotations instanceof Map)\n {\n return annotations.get(parameterName) ?? null;\n }\n if (Array.isArray(annotations))\n {\n const entry = annotations.find(\n item => item?.name === parameterName\n || item?.[0] === parameterName\n );\n return entry?.annotations ?? entry?.value ?? entry?.[1] ?? null;\n }\n return annotations[parameterName] ?? null;\n }\n\n}\n\n// Declared as data rather than with decorators, so this module stays plain ESM\n// that loads from source without a transform. The decorator vocabulary is used\n// verbatim as values, so the registered metadata is identical to the decorated\n// form. Field order is key order, and it drives GetValues() export order.\n// Statics belong in `methods`: the prototype is what carries instance fields.\nconst UNVALIDATED_TECHNIQUE_INDEX = impl.reason(\n \"Carbon assumes an already-validated technique index; CarbonEngineJS safely returns zero for an unavailable index.\"\n);\n\nCjsSchema.define(Tr2Shader, {\n className: \"Tr2Shader\",\n family: \"shader\",\n fields: {\n sortValue: type.uint32,\n effect: type.rawStruct(\"Tr2EffectDescription\"),\n hasVertexBufferAccessInRtShadow: type.boolean\n },\n methods: {\n GetTechniqueIndex: [ carbon.method, impl.adapted, impl.reason(\"Carbon returns success through a bool plus output index; CarbonEngineJS returns the index directly or -1 while preserving exact name lookup.\") ],\n GetPassCount: [ carbon.method, impl.adapted, UNVALIDATED_TECHNIQUE_INDEX ],\n GetConstant: [ carbon.method, impl.implemented ],\n GetResource: [ carbon.method, impl.implemented ],\n GetParameterAnnotations: [ carbon.method, impl.implemented ],\n GetSortValue: [ carbon.method, impl.implemented ],\n GetEffectDescription: [ carbon.method, impl.implemented ],\n GetEffect: [ carbon.method, impl.implemented ],\n GetShaderTypeMask: [ carbon.method, impl.adapted, UNVALIDATED_TECHNIQUE_INDEX ],\n ProcessEffect: [ carbon.method, impl.adapted, impl.reason(\"Carbon packs renderer handles assigned while reading; the device-free graph leaves the sort key zero until an engine assigns valid handles.\") ],\n HasVertexBufferAccessInRtShadow: [ carbon.method, impl.implemented ]\n }\n});\n"],"names":["Tr2Shader","CjsModel","sortValue","effect","Tr2EffectDescription","hasVertexBufferAccessInRtShadow","GetTechniqueIndex","name","techniques","length","findIndex","technique","GetPassCount","techniqueIndex","passes","GetConstant","findStageValue","GetResource","stage","iterateStages","resource","findNamedCollectionValue","resources","uav","uavs","GetParameterAnnotations","parameterName","findAnnotationSet","annotations","GetSortValue","GetEffectDescription","GetEffect","GetShaderTypeMask","Number","shaderTypeMask","ProcessEffect","pass","stages","stageInputs","pixelHandle","shader","m_shader","vertexHandle","pixelShader","vertexShader","renderStates","passCount","HasVertexBufferAccessInRtShadow","from","values","options","normalized","Object","hasOwn","fromPortable","portable","validateEffectBodyReflection","isPortableReflection","value","isEffectBodyReflection","key","found","push","Array","isArray","find","Map","get","entry","item","UNVALIDATED_TECHNIQUE_INDEX","impl","reason","CjsSchema","define","className","family","fields","type","uint32","rawStruct","boolean","methods","carbon","method","adapted","implemented"],"mappings":"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"}
|
|
@@ -35,13 +35,15 @@ class Tr2ShaderPermutation extends CjsModel {
|
|
|
35
35
|
// would register a static as an instance field.
|
|
36
36
|
CjsSchema.define(Tr2ShaderPermutation, {
|
|
37
37
|
className: "Tr2ShaderPermutation",
|
|
38
|
-
family: "resources"
|
|
38
|
+
family: "resources",
|
|
39
|
+
fields: {
|
|
40
|
+
name: type.string,
|
|
41
|
+
options: type.list("BlueSharedString"),
|
|
42
|
+
defaultOption: type.uint64,
|
|
43
|
+
description: type.string,
|
|
44
|
+
type: type.uint8
|
|
45
|
+
}
|
|
39
46
|
});
|
|
40
|
-
CjsSchema.decorateField(Tr2ShaderPermutation, "name", type.string);
|
|
41
|
-
CjsSchema.decorateField(Tr2ShaderPermutation, "options", type.list("BlueSharedString"));
|
|
42
|
-
CjsSchema.decorateField(Tr2ShaderPermutation, "defaultOption", type.uint64);
|
|
43
|
-
CjsSchema.decorateField(Tr2ShaderPermutation, "description", type.string);
|
|
44
|
-
CjsSchema.decorateField(Tr2ShaderPermutation, "type", type.uint8);
|
|
45
47
|
|
|
46
48
|
export { Tr2ShaderPermutation };
|
|
47
49
|
//# sourceMappingURL=Tr2ShaderPermutation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2ShaderPermutation.js","sources":["../../../../src/resource/shader/Tr2ShaderPermutation.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2EffectRes.h\r\n// Schema: format-carbon resources/Tr2ShaderPermutation.json; maintained by runtime-resource.\r\nimport { CjsSchema, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/**\r\n * Describes one authored effect permutation and the option values a shader\r\n * resolver may select.\r\n *\r\n * This is resource metadata only. Backend shader compilation and pipeline\r\n * realization remain engine responsibilities.\r\n */\r\nexport class Tr2ShaderPermutation extends CjsModel\r\n{\r\n\r\n /** Authored permutation name. */\r\n name = \"\";\r\n\r\n /** Ordered option names accepted by the permutation. */\r\n options = [];\r\n\r\n /** Index of the option selected when a caller supplies no override. */\r\n defaultOption = 0;\r\n\r\n /** Human-readable description retained from the effect resource. */\r\n description = \"\";\r\n\r\n /** Carbon permutation category value. */\r\n type = 0;\r\n\r\n}\r\n\r\n// Declared imperatively rather than with decorators, so this module stays\r\n// plain ESM that loads from source without a transform. The decorator\r\n// expressions are reused verbatim, so the registered metadata is identical.\r\n// Statics belong in `methods`: decorateMethod targets the prototype and\r\n// would register a static as an instance field.\r\nCjsSchema.define(Tr2ShaderPermutation, {\r\n className: \"Tr2ShaderPermutation\",\r\n family: \"resources\"
|
|
1
|
+
{"version":3,"file":"Tr2ShaderPermutation.js","sources":["../../../../src/resource/shader/Tr2ShaderPermutation.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2EffectRes.h\r\n// Schema: format-carbon resources/Tr2ShaderPermutation.json; maintained by runtime-resource.\r\nimport { CjsSchema, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/**\r\n * Describes one authored effect permutation and the option values a shader\r\n * resolver may select.\r\n *\r\n * This is resource metadata only. Backend shader compilation and pipeline\r\n * realization remain engine responsibilities.\r\n */\r\nexport class Tr2ShaderPermutation extends CjsModel\r\n{\r\n\r\n /** Authored permutation name. */\r\n name = \"\";\r\n\r\n /** Ordered option names accepted by the permutation. */\r\n options = [];\r\n\r\n /** Index of the option selected when a caller supplies no override. */\r\n defaultOption = 0;\r\n\r\n /** Human-readable description retained from the effect resource. */\r\n description = \"\";\r\n\r\n /** Carbon permutation category value. */\r\n type = 0;\r\n\r\n}\r\n\r\n// Declared imperatively rather than with decorators, so this module stays\r\n// plain ESM that loads from source without a transform. The decorator\r\n// expressions are reused verbatim, so the registered metadata is identical.\r\n// Statics belong in `methods`: decorateMethod targets the prototype and\r\n// would register a static as an instance field.\r\nCjsSchema.define(Tr2ShaderPermutation, {\r\n className: \"Tr2ShaderPermutation\",\r\n family: \"resources\",\r\n fields: {\r\n name: type.string,\r\n options: type.list(\"BlueSharedString\"),\r\n defaultOption: type.uint64,\r\n description: type.string,\r\n type: type.uint8\r\n }\r\n});\r\n"],"names":["Tr2ShaderPermutation","CjsModel","name","options","defaultOption","description","type","CjsSchema","define","className","family","fields","string","list","uint64","uint8"],"mappings":";;;AAAA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,oBAAoB,SAASC,QAAQ,CAClD;AAEE;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,OAAO,GAAG,EAAE;;AAEZ;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;AACAC,EAAAA,WAAW,GAAG,EAAE;;AAEhB;AACAC,EAAAA,IAAI,GAAG,CAAC;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACAC,SAAS,CAACC,MAAM,CAACR,oBAAoB,EAAE;AACrCS,EAAAA,SAAS,EAAE,sBAAsB;AACjCC,EAAAA,MAAM,EAAE,WAAW;AACnBC,EAAAA,MAAM,EAAE;IACNT,IAAI,EAAEI,IAAI,CAACM,MAAM;AACjBT,IAAAA,OAAO,EAAEG,IAAI,CAACO,IAAI,CAAC,kBAAkB,CAAC;IACtCT,aAAa,EAAEE,IAAI,CAACQ,MAAM;IAC1BT,WAAW,EAAEC,IAAI,CAACM,MAAM;IACxBN,IAAI,EAAEA,IAAI,CAACS;AACb;AACF,CAAC,CAAC;;;;"}
|
|
@@ -19,10 +19,12 @@ class Tr2EffectDefine extends CjsModel {
|
|
|
19
19
|
// would register a static as an instance field.
|
|
20
20
|
CjsSchema.define(Tr2EffectDefine, {
|
|
21
21
|
className: "Tr2EffectDefine",
|
|
22
|
-
family: "shader"
|
|
22
|
+
family: "shader",
|
|
23
|
+
fields: {
|
|
24
|
+
name: type.string,
|
|
25
|
+
value: type.string
|
|
26
|
+
}
|
|
23
27
|
});
|
|
24
|
-
CjsSchema.decorateField(Tr2EffectDefine, "name", type.string);
|
|
25
|
-
CjsSchema.decorateField(Tr2EffectDefine, "value", type.string);
|
|
26
28
|
|
|
27
29
|
export { Tr2EffectDefine };
|
|
28
30
|
//# sourceMappingURL=Tr2EffectDefine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2EffectDefine.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectDefine.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\n\n/** Effect compile define retained as source metadata. */\nexport class Tr2EffectDefine extends CjsModel\n{\n\n /** name (const char*) */\n name = \"\";\n\n /** value (const char*) */\n value = \"\";\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectDefine, {\n className: \"Tr2EffectDefine\",\n family: \"shader\"
|
|
1
|
+
{"version":3,"file":"Tr2EffectDefine.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectDefine.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\n\n/** Effect compile define retained as source metadata. */\nexport class Tr2EffectDefine extends CjsModel\n{\n\n /** name (const char*) */\n name = \"\";\n\n /** value (const char*) */\n value = \"\";\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectDefine, {\n className: \"Tr2EffectDefine\",\n family: \"shader\",\n fields: {\n name: type.string,\n value: type.string\n }\n});\n"],"names":["Tr2EffectDefine","CjsModel","name","value","CjsSchema","define","className","family","fields","type","string"],"mappings":";;;AAAA;;AAIA;AACO,MAAMA,eAAe,SAASC,QAAQ,CAC7C;AAEE;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,KAAK,GAAG,EAAE;AAEZ;;AAEA;AACA;AACA;AACA;AACA;AACAC,SAAS,CAACC,MAAM,CAACL,eAAe,EAAE;AAChCM,EAAAA,SAAS,EAAE,iBAAiB;AAC5BC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE;IACNN,IAAI,EAAEO,IAAI,CAACC,MAAM;IACjBP,KAAK,EAAEM,IAAI,CAACC;AACd;AACF,CAAC,CAAC;;;;"}
|
|
@@ -98,10 +98,12 @@ class Tr2EffectDescription extends CjsModel {
|
|
|
98
98
|
// would register a static as an instance field.
|
|
99
99
|
CjsSchema.define(Tr2EffectDescription, {
|
|
100
100
|
className: "Tr2EffectDescription",
|
|
101
|
-
family: "shader"
|
|
101
|
+
family: "shader",
|
|
102
|
+
fields: {
|
|
103
|
+
techniques: type.list("Tr2EffectTechnique"),
|
|
104
|
+
annotations: type.map("Tr2EffectParameterAnnotationMap")
|
|
105
|
+
}
|
|
102
106
|
});
|
|
103
|
-
CjsSchema.decorateField(Tr2EffectDescription, "techniques", type.list("Tr2EffectTechnique"));
|
|
104
|
-
CjsSchema.decorateField(Tr2EffectDescription, "annotations", type.map("Tr2EffectParameterAnnotationMap"));
|
|
105
107
|
|
|
106
108
|
export { Tr2EffectDescription };
|
|
107
109
|
//# sourceMappingURL=Tr2EffectDescription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2EffectDescription.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectDescription.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\n// Source: trinity/trinity/Shader/Tr2EffectDescription.cpp\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isArray,\n isPlainObject\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { Tr2EffectParameterAnnotation } from \"./Tr2EffectParameterAnnotation.js\";\nimport { Tr2EffectTechnique } from \"./Tr2EffectTechnique.js\";\n\n/** Complete device-free effect description for one selected shader body. */\nexport class Tr2EffectDescription extends CjsModel\n{\n\n /** techniques (TrackableStdVector<Tr2EffectTechnique>) */\n techniques = [];\n\n /** annotations (Tr2EffectAnnotationMap) */\n annotations = new Map();\n\n /**\n * Construct a canonical effect description from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2EffectDescription} Hydrated description.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n let annotations = null;\n if (values && Object.hasOwn(values, \"annotations\"))\n {\n const entries = values.annotations instanceof Map\n ? values.annotations\n : Object.entries(values.annotations ?? {});\n annotations = new Map();\n for (const [ parameterName, records ] of entries)\n {\n if (!Array.isArray(records))\n {\n throw new TypeError(\n `Effect annotations for \"${parameterName}\" must be an array`\n );\n }\n annotations.set(\n String(parameterName),\n records.map(record => record instanceof Tr2EffectParameterAnnotation\n ? record\n : Tr2EffectParameterAnnotation.from(record, options))\n );\n }\n normalized = { ...values, annotations };\n }\n const effect = super.from(normalized, options);\n if (annotations)\n {\n effect.annotations = annotations;\n }\n return effect;\n }\n\n /**\n * Build one complete effect description from its portable JSON record.\n *\n * @param {object} value Portable effect-description record.\n * @returns {Tr2EffectDescription} Reflected description.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect description must be an object\");\n }\n if (!isArray(value.annotations))\n {\n throw new TypeError(\n \"Portable effect annotation groups must be an array\"\n );\n }\n if (!isArray(value.techniques))\n {\n throw new TypeError(\"Portable effect techniques must be an array\");\n }\n if (value.annotationGroupCount !== value.annotations.length\n || value.techniqueCount !== value.techniques.length)\n {\n throw new Error(\n \"Portable effect description counts disagree with its collections\"\n );\n }\n\n const effect = new this();\n effect.annotations = this.readPortableAnnotationGroups(\n value.annotations\n );\n effect.techniques = value.techniques.map(\n entry => Tr2EffectTechnique.fromPortable(entry)\n );\n return effect;\n }\n\n /** Build parameter-name-indexed annotation groups. */\n static readPortableAnnotationGroups(values)\n {\n const result = new Map();\n for (const value of values)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\n \"Portable effect annotation group must be an object\"\n );\n }\n const parameterName = String(value.parameterName ?? \"\");\n if (!isArray(value.annotations))\n {\n throw new TypeError(\n `Portable annotations for parameter \"${parameterName}\" must be an array`\n );\n }\n if (result.has(parameterName))\n {\n throw new Error(\n `Portable effect annotation group \"${parameterName}\" is duplicated`\n );\n }\n result.set(\n parameterName,\n value.annotations.map(\n entry => Tr2EffectParameterAnnotation.fromPortable(entry)\n )\n );\n }\n return result;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectDescription, {\n className: \"Tr2EffectDescription\",\n family: \"shader\"
|
|
1
|
+
{"version":3,"file":"Tr2EffectDescription.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectDescription.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\n// Source: trinity/trinity/Shader/Tr2EffectDescription.cpp\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isArray,\n isPlainObject\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { Tr2EffectParameterAnnotation } from \"./Tr2EffectParameterAnnotation.js\";\nimport { Tr2EffectTechnique } from \"./Tr2EffectTechnique.js\";\n\n/** Complete device-free effect description for one selected shader body. */\nexport class Tr2EffectDescription extends CjsModel\n{\n\n /** techniques (TrackableStdVector<Tr2EffectTechnique>) */\n techniques = [];\n\n /** annotations (Tr2EffectAnnotationMap) */\n annotations = new Map();\n\n /**\n * Construct a canonical effect description from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2EffectDescription} Hydrated description.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n let annotations = null;\n if (values && Object.hasOwn(values, \"annotations\"))\n {\n const entries = values.annotations instanceof Map\n ? values.annotations\n : Object.entries(values.annotations ?? {});\n annotations = new Map();\n for (const [ parameterName, records ] of entries)\n {\n if (!Array.isArray(records))\n {\n throw new TypeError(\n `Effect annotations for \"${parameterName}\" must be an array`\n );\n }\n annotations.set(\n String(parameterName),\n records.map(record => record instanceof Tr2EffectParameterAnnotation\n ? record\n : Tr2EffectParameterAnnotation.from(record, options))\n );\n }\n normalized = { ...values, annotations };\n }\n const effect = super.from(normalized, options);\n if (annotations)\n {\n effect.annotations = annotations;\n }\n return effect;\n }\n\n /**\n * Build one complete effect description from its portable JSON record.\n *\n * @param {object} value Portable effect-description record.\n * @returns {Tr2EffectDescription} Reflected description.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect description must be an object\");\n }\n if (!isArray(value.annotations))\n {\n throw new TypeError(\n \"Portable effect annotation groups must be an array\"\n );\n }\n if (!isArray(value.techniques))\n {\n throw new TypeError(\"Portable effect techniques must be an array\");\n }\n if (value.annotationGroupCount !== value.annotations.length\n || value.techniqueCount !== value.techniques.length)\n {\n throw new Error(\n \"Portable effect description counts disagree with its collections\"\n );\n }\n\n const effect = new this();\n effect.annotations = this.readPortableAnnotationGroups(\n value.annotations\n );\n effect.techniques = value.techniques.map(\n entry => Tr2EffectTechnique.fromPortable(entry)\n );\n return effect;\n }\n\n /** Build parameter-name-indexed annotation groups. */\n static readPortableAnnotationGroups(values)\n {\n const result = new Map();\n for (const value of values)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\n \"Portable effect annotation group must be an object\"\n );\n }\n const parameterName = String(value.parameterName ?? \"\");\n if (!isArray(value.annotations))\n {\n throw new TypeError(\n `Portable annotations for parameter \"${parameterName}\" must be an array`\n );\n }\n if (result.has(parameterName))\n {\n throw new Error(\n `Portable effect annotation group \"${parameterName}\" is duplicated`\n );\n }\n result.set(\n parameterName,\n value.annotations.map(\n entry => Tr2EffectParameterAnnotation.fromPortable(entry)\n )\n );\n }\n return result;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectDescription, {\n className: \"Tr2EffectDescription\",\n family: \"shader\",\n fields: {\n techniques: type.list(\"Tr2EffectTechnique\"),\n annotations: type.map(\"Tr2EffectParameterAnnotationMap\")\n }\n});\n"],"names":["Tr2EffectDescription","CjsModel","techniques","annotations","Map","from","values","options","normalized","Object","hasOwn","entries","parameterName","records","Array","isArray","TypeError","set","String","map","record","Tr2EffectParameterAnnotation","effect","fromPortable","value","isPlainObject","annotationGroupCount","length","techniqueCount","Error","readPortableAnnotationGroups","entry","Tr2EffectTechnique","result","has","CjsSchema","define","className","family","fields","type","list"],"mappings":"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"}
|