@carbonenginejs/runtime-resource 0.10.0 → 0.11.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/format/effect/effectPermutationGraph.js +257 -0
- package/dist/format/effect/effectPermutationGraph.js.map +1 -0
- package/dist/format/effect/effectReflectionPackage.js +636 -0
- package/dist/format/effect/effectReflectionPackage.js.map +1 -0
- package/dist/format/effect/sha256.js +114 -0
- package/dist/format/effect/sha256.js.map +1 -0
- package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
- package/dist/formats/dxbc/core/DxbcReader.js +266 -0
- package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
- package/dist/formats/dxbc/core/container.js +169 -0
- package/dist/formats/dxbc/core/container.js.map +1 -0
- package/dist/formats/dxbc/core/decoder.js +789 -0
- package/dist/formats/dxbc/core/decoder.js.map +1 -0
- package/dist/formats/dxbc/core/errors.js +19 -0
- package/dist/formats/dxbc/core/errors.js.map +1 -0
- package/dist/formats/dxbc/core/helpers.js +220 -0
- package/dist/formats/dxbc/core/helpers.js.map +1 -0
- package/dist/formats/dxbc/core/opcodes.js +45 -0
- package/dist/formats/dxbc/core/opcodes.js.map +1 -0
- package/dist/formats/dxbc/core/program.js +91 -0
- package/dist/formats/dxbc/core/program.js.map +1 -0
- package/dist/formats/dxbc/core/signature.js +172 -0
- package/dist/formats/dxbc/core/signature.js.map +1 -0
- package/dist/formats/dxbc/index.js +2 -0
- package/dist/formats/dxbc/index.js.map +1 -0
- package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
- package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
- package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
- package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
- package/dist/formats/hlsl/core/HlslReader.js +266 -0
- package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
- package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
- package/dist/formats/hlsl/core/analysis.js +51 -0
- package/dist/formats/hlsl/core/analysis.js.map +1 -0
- package/dist/formats/hlsl/core/helpers.js +270 -0
- package/dist/formats/hlsl/core/helpers.js.map +1 -0
- package/dist/formats/hlsl/core/json.js +284 -0
- package/dist/formats/hlsl/core/json.js.map +1 -0
- package/dist/formats/hlsl/core/metadata.js +327 -0
- package/dist/formats/hlsl/core/metadata.js.map +1 -0
- package/dist/formats/hlsl/core/portableReflection.js +848 -0
- package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
- package/dist/formats/hlsl/core/render-states.js +280 -0
- package/dist/formats/hlsl/core/render-states.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
- package/dist/formats/hlsl/index.js +2 -0
- package/dist/formats/hlsl/index.js.map +1 -0
- package/dist/formats/hlsl/portable.js +2 -0
- package/dist/formats/hlsl/portable.js.map +1 -0
- package/dist/formats/index.js +4 -0
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/webgl/CjsWebglFormat.js +221 -0
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
- package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
- package/dist/formats/webgl/core/cewg/binary.js +101 -0
- package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
- package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
- package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +789 -0
- package/dist/formats/webgl/core/effectPackage.js.map +1 -0
- package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
- package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
- package/dist/formats/webgl/core/errors.js +27 -0
- package/dist/formats/webgl/core/errors.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +306 -0
- package/dist/formats/webgl/core/helpers.js.map +1 -0
- package/dist/formats/webgl/index.js +2 -0
- package/dist/formats/webgl/index.js.map +1 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
- package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
- package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
- package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
- package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
- package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
- package/dist/formats/webgpu/core/errors.js +20 -0
- package/dist/formats/webgpu/core/errors.js.map +1 -0
- package/dist/formats/webgpu/core/helpers.js +448 -0
- package/dist/formats/webgpu/core/helpers.js.map +1 -0
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
- package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
- package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
- package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
- package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
- package/dist/formats/webgpu/core/packageEffect.js +300 -0
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
- package/dist/formats/webgpu/core/packageMetadata.js +8 -0
- package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
- package/dist/formats/webgpu/core/schema.js +4 -0
- package/dist/formats/webgpu/core/schema.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
- package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
- package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
- package/dist/formats/webgpu/index.js +2 -0
- package/dist/formats/webgpu/index.js.map +1 -0
- package/dist/resource/shader/Tr2EffectRes.js +159 -150
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialArea.js +23 -28
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialMesh.js +21 -27
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialRes.js +24 -29
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
- package/dist/resource/shader/Tr2Shader.js +45 -39
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/Tr2ShaderPermutation.js +30 -32
- package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +113 -78
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +17 -23
- package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +23 -29
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +44 -40
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +82 -86
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +55 -61
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +49 -45
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +25 -30
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +30 -32
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +21 -26
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/docs/formats/README.md +4 -0
- package/docs/formats/provenance.md +11 -3
- package/docs/reference/classes/formats.md +440 -0
- package/format-notices/dxbc/LICENSE +21 -0
- package/format-notices/dxbc/NOTICE +20 -0
- package/format-notices/hlsl/LICENSE +21 -0
- package/format-notices/hlsl/NOTICE +25 -0
- package/format-notices/webgl/LICENSE +21 -0
- package/format-notices/webgl/NOTICE +35 -0
- package/format-notices/webgpu/LICENSE +21 -0
- package/format-notices/webgpu/NOTICE +31 -0
- package/package.json +6 -1
- package/dist/resource/shader/portableValidation.js +0 -461
- package/dist/resource/shader/portableValidation.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portableReflection.js","sources":["../../../../../src/formats/hlsl/core/portableReflection.js"],"sourcesContent":["import { readRaw } from \"./helpers.js\";\nimport { isPlainObject } from \"@carbonenginejs/runtime-utils/is\";\nimport { HlslEffectStateManager } from \"./HlslEffectStateManager.js\";\nimport {\n HlslRenderContextEnum,\n hlslShaderStageName\n} from \"./tr2/HlslRenderContextEnum.js\";\nimport { HlslShader } from \"./tr2/shader/HlslShader.js\";\n\nexport const EFFECT_BODY_REFLECTION_FORMAT = \"CJS_EFFECT_BODY_REFLECTION\";\nexport const EFFECT_BODY_REFLECTION_VERSION = 1;\n\nconst PORTABLE_EFFECT_VERSION = 15;\nconst UINT8_MAX = 0xff;\nconst UINT32_MAX = 0xffffffff;\nconst CONSTANT_BYTES_MAX = 4096;\nconst EFFECT_BODY_COUNT_MAX = 0x10000;\n\n/**\n * Reads one exact permutation-table body into the versioned portable reflection\n * contract used by backend effect packagers.\n *\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Compiled Tr2 effect bytes.\n * @param {object} [options] Source label and exact body index.\n * @param {string} [options.source] Diagnostic source label.\n * @param {number} [options.permutationIndex] Exact zero-based body-table index.\n * @returns {object} Complete portable reflection for the selected source body.\n */\nexport function readEffectBodyReflection(input, options = {})\n{\n const source = String(options.source ?? \"memory\").trim() || \"memory\";\n const effectRes = readRaw(input, { source });\n return buildEffectBodyReflection(\n effectRes,\n options.permutationIndex ?? 0\n );\n}\n\n/**\n * Serializes one already-loaded effect body without applying global or local\n * option overrides.\n *\n * Returned byte arrays are owned copies. The document contains source\n * reflection and source programs only; renderer handles and derived resource\n * objects are deliberately excluded.\n *\n * @param {object} effectRes Loaded raw HlslEffectRes graph.\n * @param {number} permutationIndex Exact zero-based body-table index.\n * @returns {object} Complete portable body-reflection document.\n */\nexport function buildEffectBodyReflection(effectRes, permutationIndex)\n{\n if (!effectRes || typeof effectRes !== \"object\"\n || typeof effectRes.GetShaderByIndex !== \"function\")\n {\n throw new TypeError(\n \"Portable effect reflection requires a loaded HlslEffectRes with GetShaderByIndex\"\n );\n }\n assertUint(permutationIndex, \"Portable effect reflection permutationIndex\");\n if (permutationIndex >= effectRes.m_offsetCount)\n {\n throw new RangeError(\n `Portable effect reflection body index ${permutationIndex} is unavailable`\n );\n }\n if (effectRes.m_version !== PORTABLE_EFFECT_VERSION)\n {\n throw new Error(\n `Portable effect reflection requires source effect version ${PORTABLE_EFFECT_VERSION}`\n );\n }\n const sourceRecord = normalizeBodySourceRecord(\n effectRes.m_offsets?.[permutationIndex],\n permutationIndex,\n effectRes.m_data?.byteLength\n );\n\n const shader = decodeEffectBodyFresh(effectRes, sourceRecord);\n const description = shader?.GetEffectDescription?.();\n if (!description || description.readError)\n {\n throw description?.readError\n || new Error(`Effect body ${permutationIndex} could not be decoded`);\n }\n\n const document = {\n format: EFFECT_BODY_REFLECTION_FORMAT,\n formatVersion: EFFECT_BODY_REFLECTION_VERSION,\n mode: \"single-body\",\n keyScope: \"body-local\",\n coverage: {\n bodies: \"single\",\n reflection: \"complete\",\n sourcePrograms: \"complete\",\n constantDefaults: \"exact\"\n },\n source: {\n label: String(effectRes.sourcePath ?? \"\"),\n effectVersion: effectRes.m_version,\n compilerVersion: effectRes.m_compilerVersion,\n nativeHash: copyBytes(effectRes.m_hash),\n stringTableByteLength: effectRes.m_stringTableSize,\n byteLength: effectRes.m_data?.byteLength\n },\n permutationIndex,\n sourceRecord: {\n offset: sourceRecord.offset,\n byteLength: sourceRecord.byteLength\n },\n effect: emitEffect(description)\n };\n\n validateEffectBodyReflection(document);\n return document;\n}\n\n/**\n * Enumerates first-occurrence-ordered groups of byte-identical effect bodies.\n *\n * This inspects owned source bytes without decoding bodies or touching parser\n * caches. Distinct source ranges with identical bytes are grouped together.\n *\n * @param {object} effectRes Loaded raw version-15 HlslEffectRes graph.\n * @returns {object[]} Frozen unique-body inventory with every permutation alias.\n */\nexport function enumerateUniqueEffectBodies(effectRes)\n{\n if (!effectRes || typeof effectRes !== \"object\"\n || effectRes.m_version !== PORTABLE_EFFECT_VERSION\n || !(effectRes.m_data instanceof Uint8Array)\n || !Array.isArray(effectRes.m_offsets)\n || effectRes.m_offsetCount !== effectRes.m_offsets.length\n || !effectRes.m_offsets.length)\n {\n throw new TypeError(\n \"Portable effect body inventory requires a loaded version-15 HlslEffectRes\"\n );\n }\n if (effectRes.m_offsets.length > EFFECT_BODY_COUNT_MAX)\n {\n throw new RangeError(\n `Portable effect body inventory exceeds ${EFFECT_BODY_COUNT_MAX} records`\n );\n }\n\n const sourceRecords = effectRes.m_offsets.map((record, permutationIndex) =>\n normalizeBodySourceRecord(\n record,\n permutationIndex,\n effectRes.m_data.byteLength\n ));\n validateDisjointBodySourceRecords(sourceRecords);\n\n const groups = [];\n const groupByRange = new Map();\n const groupsByFingerprint = new Map();\n for (const [ permutationIndex, sourceRecord ] of sourceRecords.entries())\n {\n const rangeKey = `${sourceRecord.offset}:${sourceRecord.byteLength}`;\n let group = groupByRange.get(rangeKey);\n if (!group)\n {\n const bytes = effectRes.m_data.subarray(\n sourceRecord.offset,\n sourceRecord.offset + sourceRecord.byteLength\n );\n const fingerprint = fingerprintBytes(bytes);\n const candidates = groupsByFingerprint.get(fingerprint) ?? [];\n group = candidates.find((candidate) =>\n bytesEqual(candidate.bytes, bytes));\n if (!group)\n {\n group = {\n bytes,\n permutationIndex,\n sourceRecord,\n variants: []\n };\n candidates.push(group);\n groupsByFingerprint.set(fingerprint, candidates);\n groups.push(group);\n }\n groupByRange.set(rangeKey, group);\n }\n group.variants.push({\n permutationIndex,\n sourceRecord\n });\n }\n\n return Object.freeze(groups.map((group) => Object.freeze({\n permutationIndex: group.permutationIndex,\n sourceRecord: group.sourceRecord,\n variants: Object.freeze(group.variants.map((variant) =>\n Object.freeze(variant)))\n })));\n}\n\n/**\n * Validates a portable body-reflection document independently of its source\n * parser objects.\n *\n * @param {object} document Candidate reflection document.\n * @returns {{permutationIndex:number,techniqueCount:number,passCount:number,stageCount:number,libraryCount:number,sourceProgramCount:number}}\n * Validated structural counts.\n */\nexport function validateEffectBodyReflection(document)\n{\n requireExactKeys(document, [\n \"format\",\n \"formatVersion\",\n \"mode\",\n \"keyScope\",\n \"coverage\",\n \"source\",\n \"permutationIndex\",\n \"sourceRecord\",\n \"effect\"\n ], \"Portable effect body reflection\");\n requireExactKeys(document.coverage, [\n \"bodies\",\n \"reflection\",\n \"sourcePrograms\",\n \"constantDefaults\"\n ], \"Portable reflection coverage\");\n if (!isRecord(document)\n || document.format !== EFFECT_BODY_REFLECTION_FORMAT\n || document.formatVersion !== EFFECT_BODY_REFLECTION_VERSION\n || document.mode !== \"single-body\"\n || document.keyScope !== \"body-local\"\n || !isRecord(document.coverage)\n || document.coverage.bodies !== \"single\"\n || document.coverage.reflection !== \"complete\"\n || document.coverage.sourcePrograms !== \"complete\"\n || document.coverage.constantDefaults !== \"exact\")\n {\n throw new Error(\"Portable effect body reflection schema or coverage is unsupported\");\n }\n\n assertUint(document.permutationIndex, \"Portable reflection permutationIndex\");\n validateSource(document.source);\n const sourceRecord = requireRecord(\n document.sourceRecord,\n \"Portable reflection sourceRecord\"\n );\n requireExactKeys(\n sourceRecord,\n [ \"offset\", \"byteLength\" ],\n \"Portable reflection sourceRecord\"\n );\n assertUint(sourceRecord.offset, \"Portable reflection sourceRecord offset\");\n assertUint(\n sourceRecord.byteLength,\n \"Portable reflection sourceRecord byteLength\"\n );\n if (!sourceRecord.byteLength\n || sourceRecord.offset + sourceRecord.byteLength > document.source.byteLength)\n {\n throw new Error(\"Portable reflection sourceRecord is outside the source envelope\");\n }\n const effect = requireRecord(document.effect, \"Portable reflection effect\");\n requireExactKeys(effect, [\n \"annotations\",\n \"annotationGroupCount\",\n \"techniqueCount\",\n \"techniques\"\n ], \"Portable reflection effect\");\n if (!Array.isArray(effect.annotations)\n || !Array.isArray(effect.techniques)\n || effect.annotationGroupCount !== effect.annotations.length\n || effect.techniqueCount !== effect.techniques.length)\n {\n throw new Error(\"Portable reflection effect is malformed\");\n }\n validateAnnotationGroups(effect.annotations, \"effect annotations\");\n\n const counts = {\n permutationIndex: document.permutationIndex,\n techniqueCount: effect.techniques.length,\n passCount: 0,\n stageCount: 0,\n libraryCount: 0,\n sourceProgramCount: 0\n };\n const techniqueKeys = new Set();\n for (const [ techniqueIndex, technique ] of effect.techniques.entries())\n {\n const context = `technique ${techniqueIndex}`;\n requireExactKeys(technique, [\n \"key\",\n \"name\",\n \"passCount\",\n \"libraryCount\",\n \"passes\",\n \"libraries\"\n ], `Portable reflection ${context}`);\n requireKey(technique?.key, `technique${techniqueIndex}`, context, techniqueKeys);\n if (typeof technique.name !== \"string\"\n || !Array.isArray(technique.passes)\n || !Array.isArray(technique.libraries)\n || technique.passCount !== technique.passes.length\n || technique.libraryCount !== technique.libraries.length)\n {\n throw new Error(`Portable reflection ${context} is malformed`);\n }\n\n const passKeys = new Set();\n for (const [ passIndex, pass ] of technique.passes.entries())\n {\n const passKey = `${technique.key}.pass${passIndex}`;\n requireExactKeys(pass, [\n \"key\",\n \"renderStateCount\",\n \"renderStates\",\n \"stageCount\",\n \"stages\"\n ], `Portable reflection ${context} pass ${passIndex}`);\n requireKey(pass?.key, passKey, `${context} pass ${passIndex}`, passKeys);\n validatePass(pass, counts, document.source);\n counts.passCount += 1;\n }\n\n const libraryKeys = new Set();\n for (const [ libraryIndex, library ] of technique.libraries.entries())\n {\n const libraryKey = `${technique.key}.library${libraryIndex}`;\n requireExactKeys(library, [\n \"key\",\n \"payloadSize\",\n \"sourceProgram\",\n \"exportCount\",\n \"exports\",\n \"hitGroupName\",\n \"globalInput\",\n \"localInput\"\n ], `Portable reflection ${context} library ${libraryIndex}`);\n requireKey(\n library?.key,\n libraryKey,\n `${context} library ${libraryIndex}`,\n libraryKeys\n );\n validateLibrary(library, counts, document.source);\n counts.libraryCount += 1;\n }\n }\n\n return Object.freeze({ ...counts });\n}\n\nfunction emitEffect(description)\n{\n return {\n annotations: emitAnnotationGroups(description.annotations),\n annotationGroupCount: description.annotations?.size ?? 0,\n techniqueCount: description.techniques?.length ?? 0,\n techniques: (description.techniques || []).map((technique, techniqueIndex) =>\n emitTechnique(technique, techniqueIndex))\n };\n}\n\nfunction emitTechnique(technique, techniqueIndex)\n{\n const key = `technique${techniqueIndex}`;\n return {\n key,\n name: String(technique.name ?? \"\"),\n passCount: technique.passes?.length ?? 0,\n libraryCount: technique.libraries?.length ?? 0,\n passes: (technique.passes || []).map((pass, passIndex) =>\n emitPass(pass, key, passIndex)),\n libraries: (technique.libraries || []).map((library, libraryIndex) =>\n emitLibrary(library, key, libraryIndex))\n };\n}\n\nfunction emitPass(pass, techniqueKey, passIndex)\n{\n const key = `${techniqueKey}.pass${passIndex}`;\n const stages = [];\n for (let stageType = 0;\n stageType < HlslRenderContextEnum.SHADER_TYPE_COUNT;\n stageType += 1)\n {\n const input = pass.stageInputs?.[stageType];\n if (!input?.m_exists) continue;\n stages.push(emitStage(input, key, stageType));\n }\n\n return {\n key,\n renderStateCount: pass.cjsRenderStateSetup?.entries?.length ?? 0,\n renderStates: (pass.cjsRenderStateSetup?.entries || []).map((entry) => ({\n state: entry.key >>> 0,\n value: entry.value >>> 0\n })),\n stageCount: stages.length,\n stages\n };\n}\n\nfunction emitStage(input, passKey, stageType)\n{\n return {\n key: `${passKey}.stage${stageType}`,\n stageType,\n stageName: hlslShaderStageName(stageType),\n sourceProgram: emitSourceProgram(input.cjsShaderBytecode, \"stage\"),\n input: emitInput(input)\n };\n}\n\nfunction emitLibrary(library, techniqueKey, libraryIndex)\n{\n return {\n key: `${techniqueKey}.library${libraryIndex}`,\n payloadSize: library.payloadSize >>> 0,\n sourceProgram: emitSourceProgram(library.cjsShaderBytecode, \"library\"),\n exportCount: library.exports?.length ?? 0,\n exports: (library.exports || []).map((entry) => ({\n type: entry.type,\n name: String(entry.name ?? \"\")\n })),\n hitGroupName: String(library.hitGroupName ?? \"\"),\n globalInput: emitInput(library.globalInput),\n localInput: emitInput(library.localInput)\n };\n}\n\nfunction emitSourceProgram(bytecode, kind)\n{\n if (!bytecode)\n {\n throw new Error(\"Portable reflection source program is missing\");\n }\n const program = {\n kind,\n shaderSize: bytecode.shaderSize,\n stringTableOffset: bytecode.stringTableOffset,\n bytes: copyBytes(bytecode.bytes)\n };\n if (kind === \"stage\")\n {\n program.stageType = bytecode.stageType;\n program.stageName = String(bytecode.stageName ?? \"\");\n }\n return program;\n}\n\nfunction emitInput(input)\n{\n const sourceConstantValues = copyBytes(input?.sourceConstantValues);\n const sourceConstantValueSize = input?.sourceConstantValueSize ?? 0;\n if (sourceConstantValues.byteLength !== sourceConstantValueSize)\n {\n throw new Error(\"Portable reflection source constant defaults are incomplete\");\n }\n\n return {\n constantDefaults: {\n declaredByteLength: sourceConstantValueSize,\n bytes: sourceConstantValues\n },\n constantCount: input?.constants?.length ?? 0,\n constants: (input?.constants || []).map((constant) => ({\n name: String(constant.name ?? \"\"),\n offset: constant.offset,\n size: constant.size,\n type: constant.type,\n dimension: constant.dimension,\n elements: constant.elements,\n isSRGB: !!constant.isSRGB,\n isAutoregister: !!constant.isAutoregister\n })),\n resourceCount: input?.resources?.size ?? 0,\n resources: emitResourceMap(input?.resources),\n uavCount: input?.uavs?.size ?? 0,\n uavs: emitResourceMap(input?.uavs),\n samplerCount: input?.samplers?.size ?? 0,\n samplers: emitSamplerMap(input?.samplers),\n annotationCount: input?.annotation?.length ?? 0,\n annotations: emitAnnotations(input?.annotation),\n signature: emitSignature(input?.signature)\n };\n}\n\nfunction emitResourceMap(map)\n{\n return Array.from(map || [], ([ registerIndex, resource ]) => ({\n registerIndex,\n name: String(resource.name ?? \"\"),\n type: resource.type,\n arrayElements: resource.arrayElements,\n isSRGB: !!resource.isSRGB,\n isAutoregister: !!resource.isAutoregister\n }));\n}\n\nfunction emitSamplerMap(map)\n{\n return Array.from(map || [], ([ registerIndex, setup ]) => ({\n registerIndex,\n name: setup.name === null || setup.name === undefined\n ? null\n : String(setup.name),\n isDynamic: !!setup.sampler?.isDynamic,\n descriptor: emitDynamicSampler(setup.sampler)\n }));\n}\n\nfunction emitDynamicSampler(sampler = {})\n{\n return {\n comparison: !!sampler.comparison,\n minFilter: sampler.minFilter,\n magFilter: sampler.magFilter,\n mipFilter: sampler.mipFilter,\n addressU: sampler.addressU,\n addressV: sampler.addressV,\n addressW: sampler.addressW,\n mipLODBiasRaw: sampler.mipLODBiasRaw,\n maxAnisotropy: sampler.maxAnisotropy,\n comparisonFunc: sampler.comparisonFunc,\n borderColorRaw: (sampler.borderColorRaw || []).slice(),\n minLODRaw: sampler.minLODRaw,\n maxLODRaw: sampler.maxLODRaw\n };\n}\n\nfunction emitStaticSampler(entry)\n{\n const sampler = entry.sampler || {};\n return {\n registerIndex: entry.registerIndex,\n registerSpace: entry.registerSpace,\n descriptor: {\n comparison: !!sampler.comparison,\n minFilter: sampler.minFilter,\n magFilter: sampler.magFilter,\n mipFilter: sampler.mipFilter,\n addressU: sampler.addressU,\n addressV: sampler.addressV,\n addressW: sampler.addressW,\n mipLODBiasRaw: sampler.mipLODBiasRaw,\n maxAnisotropy: sampler.maxAnisotropy,\n comparisonFunc: sampler.comparisonFunc,\n borderColor: sampler.borderColor,\n minLODRaw: sampler.minLODRaw,\n maxLODRaw: sampler.maxLODRaw\n }\n };\n}\n\nfunction emitSignature(signature = {})\n{\n return {\n pipelineInputCount: signature.pipelineInputs?.length ?? 0,\n pipelineInputs: (signature.pipelineInputs || []).map((entry) => ({\n usage: entry.usage,\n registerIndex: entry.registerIndex,\n usageIndex: entry.usageIndex,\n usedMask: entry.usedMask,\n type: entry.type,\n dimension: entry.dimension\n })),\n registerCount: signature.registers?.length ?? 0,\n registers: (signature.registers || []).map((entry) => ({\n registerType: entry.registerType,\n registerIndex: entry.registerIndex,\n arrayCount: entry.arrayCount,\n registerCount: entry.registerCount,\n registerSpace: entry.registerSpace\n })),\n staticSamplerCount: signature.samplers?.length ?? 0,\n staticSamplers: (signature.samplers || []).map(emitStaticSampler),\n threadGroupSize: {\n x: signature.threadGroupSize?.x ?? 0,\n y: signature.threadGroupSize?.y ?? 0,\n z: signature.threadGroupSize?.z ?? 0\n }\n };\n}\n\nfunction emitAnnotationGroups(map)\n{\n return Array.from(map || [], ([ parameterName, annotations ]) => ({\n parameterName: String(parameterName),\n annotations: emitAnnotations(annotations)\n }));\n}\n\nfunction emitAnnotations(annotations)\n{\n return (annotations || []).map((annotation) =>\n {\n const record = {\n name: String(annotation.name ?? \"\"),\n type: annotation.type\n };\n if (annotation.type === 3)\n {\n record.stringValue = String(annotation.stringValue ?? \"\");\n }\n else\n {\n record.rawValue = annotation.rawValue >>> 0;\n }\n return record;\n });\n}\n\nfunction validateSource(source)\n{\n requireRecord(source, \"Portable reflection source\");\n requireExactKeys(source, [\n \"label\",\n \"effectVersion\",\n \"compilerVersion\",\n \"nativeHash\",\n \"stringTableByteLength\",\n \"byteLength\"\n ], \"Portable reflection source\");\n if (typeof source.label !== \"string\")\n {\n throw new Error(\"Portable reflection source label is malformed\");\n }\n assertUint(source.effectVersion, \"Portable reflection effectVersion\");\n assertUint(\n source.stringTableByteLength,\n \"Portable reflection stringTableByteLength\"\n );\n assertUint(source.byteLength, \"Portable reflection source byteLength\");\n if (!source.byteLength\n || source.stringTableByteLength > source.byteLength)\n {\n throw new Error(\"Portable reflection source byteLength must be positive\");\n }\n if (source.effectVersion !== PORTABLE_EFFECT_VERSION)\n {\n throw new Error(\"Portable reflection effectVersion is unsupported\");\n }\n if (source.compilerVersion !== null)\n {\n assertUint(source.compilerVersion, \"Portable reflection compilerVersion\");\n }\n const hash = requireBytes(source.nativeHash, \"Portable reflection nativeHash\");\n if (source.compilerVersion === null || hash.byteLength !== 32)\n {\n throw new Error(\"Portable reflection v15 source identity is incomplete\");\n }\n}\n\nfunction validatePass(pass, counts, source)\n{\n if (!Array.isArray(pass.renderStates) || !Array.isArray(pass.stages)\n || pass.renderStateCount !== pass.renderStates.length\n || pass.stageCount !== pass.stages.length)\n {\n throw new Error(`Portable reflection pass ${pass.key} is malformed`);\n }\n validateRegisterIndexed(\n pass.renderStates,\n \"state\",\n `pass ${pass.key} render states`,\n (entry) =>\n {\n requireExactKeys(\n entry,\n [ \"state\", \"value\" ],\n `Portable reflection pass ${pass.key} render state`\n );\n assertUint(entry.value, `pass ${pass.key} render-state value`);\n }\n );\n\n const stageTypes = new Set();\n const stageKeys = new Set();\n for (const stage of pass.stages)\n {\n requireExactKeys(stage, [\n \"key\",\n \"stageType\",\n \"stageName\",\n \"sourceProgram\",\n \"input\"\n ], `Portable reflection pass ${pass.key} stage`);\n assertUint(stage?.stageType, `pass ${pass.key} stage type`);\n if (stage.stageType >= HlslRenderContextEnum.SHADER_TYPE_COUNT\n || stageTypes.has(stage.stageType))\n {\n throw new Error(`Portable reflection pass ${pass.key} stage type is invalid or duplicated`);\n }\n stageTypes.add(stage.stageType);\n requireKey(\n stage.key,\n `${pass.key}.stage${stage.stageType}`,\n `pass ${pass.key} stage`,\n stageKeys\n );\n if (stage.stageName !== hlslShaderStageName(stage.stageType))\n {\n throw new Error(`Portable reflection stage ${stage.key} name disagrees`);\n }\n validateSourceProgram(\n stage.sourceProgram,\n \"stage\",\n stage.stageType,\n stage.stageName,\n source.stringTableByteLength\n );\n validateInput(stage.input, stage.key);\n counts.stageCount += 1;\n counts.sourceProgramCount += 1;\n }\n}\n\nfunction validateLibrary(library, counts, source)\n{\n assertUint(library.payloadSize, `library ${library.key} payloadSize`);\n validateSourceProgram(\n library.sourceProgram,\n \"library\",\n null,\n null,\n source.stringTableByteLength\n );\n if (!Array.isArray(library.exports)\n || library.exportCount !== library.exports.length\n || typeof library.hitGroupName !== \"string\")\n {\n throw new Error(`Portable reflection library ${library.key} is malformed`);\n }\n const exportIdentities = new Set();\n for (const [ index, entry ] of library.exports.entries())\n {\n requireExactKeys(\n entry,\n [ \"type\", \"name\" ],\n `Portable reflection library ${library.key} export ${index}`\n );\n assertUint8(entry?.type, `library ${library.key} export ${index} type`);\n const identity = `${entry.type}:${entry.name}`;\n if (entry.type > 4 || typeof entry.name !== \"string\" || !entry.name\n || exportIdentities.has(identity))\n {\n throw new Error(\n `Portable reflection library ${library.key} export ${index} is malformed or duplicated`\n );\n }\n exportIdentities.add(identity);\n }\n validateInput(library.globalInput, `${library.key}.globalInput`);\n validateInput(library.localInput, `${library.key}.localInput`);\n counts.sourceProgramCount += 1;\n}\n\nfunction validateSourceProgram(\n program,\n expectedKind,\n stageType,\n stageName,\n stringTableByteLength\n)\n{\n requireRecord(program, \"Portable reflection source program\");\n requireExactKeys(program, expectedKind === \"stage\" ? [\n \"kind\",\n \"stageType\",\n \"stageName\",\n \"shaderSize\",\n \"stringTableOffset\",\n \"bytes\"\n ] : [\n \"kind\",\n \"shaderSize\",\n \"stringTableOffset\",\n \"bytes\"\n ], \"Portable reflection source program\");\n if (program.kind !== expectedKind)\n {\n throw new Error(\"Portable reflection source program kind disagrees\");\n }\n if (expectedKind === \"stage\"\n && (program.stageType !== stageType || program.stageName !== stageName))\n {\n throw new Error(\"Portable reflection source program stage identity disagrees\");\n }\n assertUint(program.shaderSize, \"Portable reflection source program shaderSize\");\n const bytes = requireBytes(program.bytes, \"Portable reflection source program bytes\");\n if (!bytes.byteLength || program.shaderSize !== bytes.byteLength)\n {\n throw new Error(\"Portable reflection source program bytes are incomplete\");\n }\n assertUint(\n program.stringTableOffset,\n \"Portable reflection source program stringTableOffset\"\n );\n if (program.stringTableOffset + program.shaderSize > stringTableByteLength)\n {\n throw new Error(\"Portable reflection source program is outside the shared string table\");\n }\n}\n\nfunction validateInput(input, context)\n{\n requireRecord(input, `Portable reflection ${context} input`);\n requireExactKeys(input, [\n \"constantDefaults\",\n \"constantCount\",\n \"constants\",\n \"resourceCount\",\n \"resources\",\n \"uavCount\",\n \"uavs\",\n \"samplerCount\",\n \"samplers\",\n \"annotationCount\",\n \"annotations\",\n \"signature\"\n ], `Portable reflection ${context} input`);\n const defaults = requireRecord(\n input.constantDefaults,\n `Portable reflection ${context} constant defaults`\n );\n requireExactKeys(defaults, [\n \"declaredByteLength\",\n \"bytes\"\n ], `Portable reflection ${context} constant defaults`);\n assertUint(\n defaults.declaredByteLength,\n `Portable reflection ${context} constant-default length`\n );\n const defaultBytes = requireBytes(\n defaults.bytes,\n `Portable reflection ${context} constant-default bytes`\n );\n if (defaults.declaredByteLength !== defaultBytes.byteLength\n || defaultBytes.byteLength > CONSTANT_BYTES_MAX)\n {\n throw new Error(`Portable reflection ${context} constant defaults are invalid`);\n }\n\n if (!Array.isArray(input.constants)\n || !Array.isArray(input.resources)\n || !Array.isArray(input.uavs)\n || !Array.isArray(input.samplers)\n || !Array.isArray(input.annotations)\n || input.constantCount !== input.constants.length\n || input.resourceCount !== input.resources.length\n || input.uavCount !== input.uavs.length\n || input.samplerCount !== input.samplers.length\n || input.annotationCount !== input.annotations.length)\n {\n throw new Error(`Portable reflection ${context} input collections are malformed`);\n }\n const constantNames = new Set();\n for (const [ index, constant ] of input.constants.entries())\n {\n requireExactKeys(constant, [\n \"name\",\n \"offset\",\n \"size\",\n \"type\",\n \"dimension\",\n \"elements\",\n \"isSRGB\",\n \"isAutoregister\"\n ], `Portable reflection ${context} constant ${index}`);\n if (!isRecord(constant)\n || typeof constant.name !== \"string\" || !constant.name\n || constantNames.has(constant.name))\n {\n throw new Error(`Portable reflection ${context} constant ${index} is malformed or duplicated`);\n }\n constantNames.add(constant.name);\n assertUint(constant.offset, `${context} constant ${constant.name} offset`);\n assertUint(constant.size, `${context} constant ${constant.name} size`);\n assertUint8(constant.type, `${context} constant ${constant.name} type`);\n assertUint8(constant.dimension, `${context} constant ${constant.name} dimension`);\n assertUint(constant.elements, `${context} constant ${constant.name} elements`);\n if (!constant.size || constant.type > 4\n || constant.dimension < 1\n || constant.offset + constant.size > CONSTANT_BYTES_MAX\n || typeof constant.isSRGB !== \"boolean\"\n || typeof constant.isAutoregister !== \"boolean\")\n {\n throw new Error(`Portable reflection ${context} constant ${constant.name} is invalid`);\n }\n }\n\n validateResourceList(input.resources, `${context} resources`);\n validateResourceList(input.uavs, `${context} UAVs`);\n validateSamplerList(input.samplers, `${context} samplers`);\n validateAnnotations(input.annotations, `${context} annotations`);\n validateSignature(input.signature, context);\n validateMapSignatureReconciliation(input, context);\n}\n\nfunction validateResourceList(entries, context)\n{\n validateRegisterIndexed(entries, \"registerIndex\", context, (entry) =>\n {\n requireExactKeys(entry, [\n \"registerIndex\",\n \"name\",\n \"type\",\n \"arrayElements\",\n \"isSRGB\",\n \"isAutoregister\"\n ], `Portable reflection ${context} entry`);\n assertUint8(entry.registerIndex, `${context} registerIndex`);\n if (typeof entry.name !== \"string\" || !entry.name)\n {\n throw new Error(`Portable reflection ${context} name is malformed`);\n }\n assertUint8(entry.type, `${context} type`);\n assertUint(entry.arrayElements, `${context} arrayElements`);\n if (typeof entry.isSRGB !== \"boolean\"\n || typeof entry.isAutoregister !== \"boolean\")\n {\n throw new Error(`Portable reflection ${context} entry is malformed`);\n }\n });\n}\n\nfunction validateSamplerList(entries, context)\n{\n validateRegisterIndexed(entries, \"registerIndex\", context, (entry) =>\n {\n requireExactKeys(entry, [\n \"registerIndex\",\n \"name\",\n \"isDynamic\",\n \"descriptor\"\n ], `Portable reflection ${context} entry`);\n assertUint8(entry.registerIndex, `${context} registerIndex`);\n if ((entry.isDynamic && typeof entry.name !== \"string\")\n || (!entry.isDynamic && entry.name !== null)\n || typeof entry.isDynamic !== \"boolean\")\n {\n throw new Error(`Portable reflection ${context} entry is malformed`);\n }\n validateSamplerDescriptor(entry.descriptor, context, false);\n });\n}\n\nfunction validateSignature(signature, context)\n{\n requireRecord(signature, `Portable reflection ${context} signature`);\n requireExactKeys(signature, [\n \"pipelineInputCount\",\n \"pipelineInputs\",\n \"registerCount\",\n \"registers\",\n \"staticSamplerCount\",\n \"staticSamplers\",\n \"threadGroupSize\"\n ], `Portable reflection ${context} signature`);\n if (!Array.isArray(signature.pipelineInputs)\n || !Array.isArray(signature.registers)\n || !Array.isArray(signature.staticSamplers)\n || signature.pipelineInputCount !== signature.pipelineInputs.length\n || signature.registerCount !== signature.registers.length\n || signature.staticSamplerCount !== signature.staticSamplers.length)\n {\n throw new Error(`Portable reflection ${context} signature is malformed`);\n }\n for (const [ index, input ] of signature.pipelineInputs.entries())\n {\n requireExactKeys(input, [\n \"usage\",\n \"registerIndex\",\n \"usageIndex\",\n \"usedMask\",\n \"type\",\n \"dimension\"\n ], `Portable reflection ${context} pipeline input ${index}`);\n for (const field of [ \"usage\", \"registerIndex\", \"usageIndex\", \"usedMask\", \"type\", \"dimension\" ])\n {\n assertUint8(input?.[field], `${context} pipeline input ${index} ${field}`);\n }\n }\n\n const registerRanges = new Map();\n for (const [ index, register ] of signature.registers.entries())\n {\n requireExactKeys(register, [\n \"registerType\",\n \"registerIndex\",\n \"arrayCount\",\n \"registerCount\",\n \"registerSpace\"\n ], `Portable reflection ${context} register ${index}`);\n assertUint8(register?.registerType, `${context} register ${index} type`);\n assertUint(register.registerIndex, `${context} register ${index} index`);\n assertUint(register.arrayCount, `${context} register ${index} arrayCount`);\n assertUint(register.registerCount, `${context} register ${index} registerCount`);\n assertUint8(register.registerSpace, `${context} register ${index} space`);\n const classification = registerClass(register.registerType);\n const isUnbounded = register.arrayCount === 0\n && register.registerCount === 0;\n const rangeEnd = isUnbounded\n ? UINT32_MAX + 1\n : register.registerIndex + register.registerCount;\n if (register.registerCount !== register.arrayCount\n || (isUnbounded\n && classification !== \"sampler\"\n && classification !== \"resource\"\n && classification !== \"uav\")\n || rangeEnd > UINT32_MAX + 1)\n {\n throw new Error(`Portable reflection ${context} register ${index} is malformed`);\n }\n const rangeKey = `${classification}:${register.registerSpace}`;\n const ranges = registerRanges.get(rangeKey) || [];\n if (ranges.some(([ start, end ]) =>\n register.registerIndex < end && rangeEnd > start))\n {\n throw new Error(`Portable reflection ${context} signature register range overlaps`);\n }\n ranges.push([ register.registerIndex, rangeEnd ]);\n registerRanges.set(rangeKey, ranges);\n }\n\n validateRegisterIndexed(\n signature.staticSamplers,\n \"registerIndex\",\n `${context} static samplers`,\n (entry) =>\n {\n requireExactKeys(entry, [\n \"registerIndex\",\n \"registerSpace\",\n \"descriptor\"\n ], `Portable reflection ${context} static sampler`);\n assertUint8(entry.registerSpace, `${context} static sampler space`);\n validateSamplerDescriptor(entry.descriptor, context, true);\n },\n (entry) => `${entry.registerSpace}:${entry.registerIndex}`\n );\n const group = requireRecord(\n signature.threadGroupSize,\n `Portable reflection ${context} threadGroupSize`\n );\n requireExactKeys(\n group,\n [ \"x\", \"y\", \"z\" ],\n `Portable reflection ${context} threadGroupSize`\n );\n assertUint(group.x, `${context} threadGroupSize.x`);\n assertUint(group.y, `${context} threadGroupSize.y`);\n assertUint(group.z, `${context} threadGroupSize.z`);\n}\n\nfunction validateMapSignatureReconciliation(input, context)\n{\n const signature = input.signature;\n validateMappedBindings(\n input.resources,\n signature.registers.filter((entry) =>\n registerClass(entry.registerType) === \"resource\"),\n `${context} resources`\n );\n validateMappedBindings(\n input.uavs,\n signature.registers.filter((entry) =>\n registerClass(entry.registerType) === \"uav\"),\n `${context} UAVs`\n );\n\n for (const sampler of input.samplers)\n {\n const matches = sampler.isDynamic\n ? signature.registers.filter((entry) =>\n registerClass(entry.registerType) === \"sampler\"\n && entry.registerIndex === sampler.registerIndex)\n : signature.staticSamplers.filter((entry) =>\n entry.registerIndex === sampler.registerIndex);\n if (matches.length > 1\n || (matches.length === 1\n && sampler.isDynamic\n && matches[0].arrayCount !== 0\n && matches[0].arrayCount !== 1))\n {\n throw new Error(\n `Portable reflection ${context} sampler map disagrees with its signature`\n );\n }\n }\n}\n\nfunction validateMappedBindings(entries, registers, context)\n{\n for (const entry of entries)\n {\n const matches = registers.filter((register) =>\n register.registerIndex === entry.registerIndex);\n if (matches.length !== 1\n || matches[0].arrayCount !== entry.arrayElements)\n {\n throw new Error(\n `Portable reflection ${context} map disagrees with its signature`\n );\n }\n }\n}\n\nfunction registerClass(registerType)\n{\n if (registerType === 0) return \"constantBuffer\";\n if (registerType === 1) return \"sampler\";\n if (registerType >= 32 && registerType <= 63) return \"resource\";\n if (registerType >= 64 && registerType <= 95) return \"uav\";\n return `raw${registerType}`;\n}\n\nfunction validateSamplerDescriptor(descriptor, context, staticSampler)\n{\n requireRecord(descriptor, `Portable reflection ${context} sampler descriptor`);\n requireExactKeys(descriptor, [\n \"comparison\",\n \"minFilter\",\n \"magFilter\",\n \"mipFilter\",\n \"addressU\",\n \"addressV\",\n \"addressW\",\n \"mipLODBiasRaw\",\n \"maxAnisotropy\",\n \"comparisonFunc\",\n staticSampler ? \"borderColor\" : \"borderColorRaw\",\n \"minLODRaw\",\n \"maxLODRaw\"\n ], `Portable reflection ${context} sampler descriptor`);\n if (typeof descriptor.comparison !== \"boolean\")\n {\n throw new Error(`Portable reflection ${context} sampler comparison is malformed`);\n }\n for (const field of [\n \"minFilter\", \"magFilter\", \"mipFilter\", \"addressU\", \"addressV\",\n \"addressW\", \"maxAnisotropy\", \"comparisonFunc\"\n ])\n {\n assertUint8(descriptor[field], `${context} sampler ${field}`);\n }\n for (const field of [ \"mipLODBiasRaw\", \"minLODRaw\", \"maxLODRaw\" ])\n {\n assertUint(descriptor[field], `${context} sampler ${field}`);\n }\n if (staticSampler)\n {\n assertUint8(descriptor.borderColor, `${context} static sampler borderColor`);\n }\n else if (!Array.isArray(descriptor.borderColorRaw)\n || descriptor.borderColorRaw.length !== 4)\n {\n throw new Error(`Portable reflection ${context} sampler borderColorRaw is malformed`);\n }\n else\n {\n descriptor.borderColorRaw.forEach((value, index) =>\n assertUint(value, `${context} sampler borderColorRaw[${index}]`));\n }\n}\n\nfunction validateAnnotationGroups(groups, context)\n{\n const names = new Set();\n for (const [ index, group ] of groups.entries())\n {\n requireExactKeys(group, [\n \"parameterName\",\n \"annotations\"\n ], `Portable reflection ${context} group ${index}`);\n if (!isRecord(group)\n || typeof group.parameterName !== \"string\"\n || names.has(group.parameterName)\n || !Array.isArray(group.annotations))\n {\n throw new Error(`Portable reflection ${context} group ${index} is malformed or duplicated`);\n }\n names.add(group.parameterName);\n validateAnnotations(group.annotations, `${context} ${group.parameterName}`);\n }\n}\n\nfunction validateAnnotations(annotations, context)\n{\n for (const [ index, annotation ] of annotations.entries())\n {\n requireExactKeys(annotation, annotation?.type === 3\n ? [ \"name\", \"type\", \"stringValue\" ]\n : [ \"name\", \"type\", \"rawValue\" ],\n `Portable reflection ${context} annotation ${index}`);\n if (!isRecord(annotation)\n || typeof annotation.name !== \"string\" || !annotation.name)\n {\n throw new Error(`Portable reflection ${context} annotation ${index} is malformed`);\n }\n assertUint8(annotation.type, `${context} annotation ${index} type`);\n if (annotation.type === 3)\n {\n if (typeof annotation.stringValue !== \"string\"\n || Object.prototype.hasOwnProperty.call(annotation, \"rawValue\"))\n {\n throw new Error(`Portable reflection ${context} string annotation is malformed`);\n }\n }\n else if (annotation.type <= 2)\n {\n assertUint(annotation.rawValue, `${context} annotation ${index} rawValue`);\n if (Object.prototype.hasOwnProperty.call(annotation, \"stringValue\"))\n {\n throw new Error(`Portable reflection ${context} numeric annotation is malformed`);\n }\n }\n else\n {\n throw new Error(`Portable reflection ${context} annotation type is unsupported`);\n }\n }\n}\n\nfunction validateRegisterIndexed(entries, field, context, validate, identityFor = null)\n{\n const identities = new Set();\n for (const [ index, entry ] of entries.entries())\n {\n if (!isRecord(entry))\n {\n throw new Error(`Portable reflection ${context} entry ${index} is malformed`);\n }\n assertUint(entry[field], `${context} entry ${index} ${field}`);\n const identity = identityFor ? identityFor(entry) : entry[field];\n if (identities.has(identity))\n {\n throw new Error(`Portable reflection ${context} entry ${index} is duplicated`);\n }\n identities.add(identity);\n validate(entry);\n }\n}\n\nfunction requireKey(value, expected, context, keys)\n{\n if (value !== expected || keys.has(value))\n {\n throw new Error(`Portable reflection ${context} key is malformed or duplicated`);\n }\n keys.add(value);\n}\n\nfunction requireRecord(value, context)\n{\n if (!isRecord(value))\n {\n throw new Error(`${context} must be an object`);\n }\n return value;\n}\n\nfunction requireExactKeys(value, allowed, context)\n{\n requireRecord(value, context);\n const actual = Reflect.ownKeys(value);\n if (actual.length !== allowed.length\n || actual.some((key) => typeof key !== \"string\" || !allowed.includes(key)))\n {\n throw new Error(`${context} has unsupported or missing fields`);\n }\n}\n\nfunction isRecord(value)\n{\n // Plain objects only. A class instance, Map, Date, or anything carrying a\n // custom prototype can present exactly the right own keys while bringing\n // behaviour with it, so reject them at every object position.\n return isPlainObject(value);\n}\n\nfunction requireBytes(value, context)\n{\n if (!(value instanceof Uint8Array))\n {\n throw new Error(`${context} must be Uint8Array bytes`);\n }\n return value;\n}\n\nfunction copyBytes(value)\n{\n if (value === undefined || value === null)\n {\n return new Uint8Array(0);\n }\n if (value instanceof Uint8Array)\n {\n return Uint8Array.from(value);\n }\n if (value instanceof ArrayBuffer)\n {\n return new Uint8Array(value.slice(0));\n }\n if (ArrayBuffer.isView(value))\n {\n return Uint8Array.from(new Uint8Array(\n value.buffer,\n value.byteOffset,\n value.byteLength\n ));\n }\n throw new TypeError(\"Portable reflection bytes must be a byte view\");\n}\n\nfunction decodeEffectBodyFresh(effectRes, sourceRecord)\n{\n const shader = new HlslShader();\n const buffer = effectRes.m_data.subarray(\n sourceRecord.offset,\n sourceRecord.offset + sourceRecord.byteLength\n );\n const ok = shader.GetEffect().Read(\n buffer,\n sourceRecord.byteLength,\n effectRes.m_version,\n effectRes.m_stringTable,\n effectRes.m_stringTableSize,\n effectRes.sourcePath,\n { effectStateManager: new HlslEffectStateManager() }\n );\n if (ok) shader.ProcessEffect();\n return shader;\n}\n\nfunction normalizeBodySourceRecord(\n record,\n permutationIndex,\n sourceByteLength\n)\n{\n const end = record?.offset + record?.size;\n if (!record || record.index !== permutationIndex\n || !Number.isSafeInteger(record.offset) || record.offset < 0\n || record.offset > UINT32_MAX\n || !Number.isSafeInteger(record.size) || record.size < 1\n || record.size > UINT32_MAX\n || !Number.isSafeInteger(end)\n || record.end !== end\n || !Number.isSafeInteger(sourceByteLength)\n || end > sourceByteLength)\n {\n throw new Error(\n `Portable effect reflection body index ${permutationIndex} `\n + \"disagrees with its source record\"\n );\n }\n return Object.freeze({\n offset: record.offset,\n byteLength: record.size\n });\n}\n\nfunction validateDisjointBodySourceRecords(sourceRecords)\n{\n const unique = new Map();\n for (const record of sourceRecords)\n {\n const key = `${record.offset}:${record.byteLength}`;\n if (!unique.has(key)) unique.set(key, record);\n }\n const ordered = Array.from(unique.values()).sort((left, right) =>\n left.offset - right.offset || left.byteLength - right.byteLength);\n for (let index = 1; index < ordered.length; index += 1)\n {\n const previous = ordered[index - 1];\n const current = ordered[index];\n if (current.offset < previous.offset + previous.byteLength)\n {\n throw new Error(\n \"Portable effect reflection body source records partially overlap\"\n );\n }\n }\n}\n\nfunction fingerprintBytes(bytes)\n{\n let hash = 0x811c9dc5;\n for (const value of bytes)\n {\n hash = Math.imul(hash ^ value, 0x01000193) >>> 0;\n }\n return `${bytes.byteLength}:${hash.toString(16).padStart(8, \"0\")}`;\n}\n\nfunction bytesEqual(left, right)\n{\n return left.byteLength === right.byteLength\n && left.every((value, index) => value === right[index]);\n}\n\nfunction assertUint8(value, context)\n{\n assertUint(value, context);\n if (value > UINT8_MAX)\n {\n throw new Error(`${context} must fit uint8`);\n }\n}\n\nfunction assertUint(value, context)\n{\n if (!Number.isSafeInteger(value) || value < 0 || value > UINT32_MAX)\n {\n throw new Error(`${context} must fit uint32`);\n }\n}\n\n/**\n * Validate one stage or library input record on its own.\n *\n * The whole-document walk validates inputs in place; this exposes the same\n * rules for a caller hydrating a single input outside that walk.\n *\n * @param {object} input Candidate portable input record.\n * @param {string} [context] Diagnostic context used in error messages.\n * @returns {object} The validated input record.\n */\nexport function validateEffectBodyInput(input, context = \"standalone input\")\n{\n validateInput(input, context);\n\n return input;\n}\n\n/**\n * Report whether a value is a valid portable body-reflection document.\n *\n * @param {any} value Candidate document.\n * @returns {boolean} True when the document validates.\n */\nexport function isEffectBodyReflection(value)\n{\n try\n {\n validateEffectBodyReflection(value);\n\n return true;\n }\n catch\n {\n return false;\n }\n}\n"],"names":["EFFECT_BODY_REFLECTION_FORMAT","EFFECT_BODY_REFLECTION_VERSION","PORTABLE_EFFECT_VERSION","UINT8_MAX","UINT32_MAX","CONSTANT_BYTES_MAX","EFFECT_BODY_COUNT_MAX","readEffectBodyReflection","input","options","source","String","trim","effectRes","readRaw","buildEffectBodyReflection","permutationIndex","GetShaderByIndex","TypeError","assertUint","m_offsetCount","RangeError","m_version","Error","sourceRecord","normalizeBodySourceRecord","m_offsets","m_data","byteLength","shader","decodeEffectBodyFresh","description","GetEffectDescription","readError","document","format","formatVersion","mode","keyScope","coverage","bodies","reflection","sourcePrograms","constantDefaults","label","sourcePath","effectVersion","compilerVersion","m_compilerVersion","nativeHash","copyBytes","m_hash","stringTableByteLength","m_stringTableSize","offset","effect","emitEffect","validateEffectBodyReflection","enumerateUniqueEffectBodies","Uint8Array","Array","isArray","length","sourceRecords","map","record","validateDisjointBodySourceRecords","groups","groupByRange","Map","groupsByFingerprint","entries","rangeKey","group","get","bytes","subarray","fingerprint","fingerprintBytes","candidates","find","candidate","bytesEqual","variants","push","set","Object","freeze","variant","requireExactKeys","isRecord","validateSource","requireRecord","annotations","techniques","annotationGroupCount","techniqueCount","validateAnnotationGroups","counts","passCount","stageCount","libraryCount","sourceProgramCount","techniqueKeys","Set","techniqueIndex","technique","context","requireKey","key","name","passes","libraries","passKeys","passIndex","pass","passKey","validatePass","libraryKeys","libraryIndex","library","libraryKey","validateLibrary","emitAnnotationGroups","size","emitTechnique","emitPass","emitLibrary","techniqueKey","stages","stageType","HlslRenderContextEnum","SHADER_TYPE_COUNT","stageInputs","m_exists","emitStage","renderStateCount","cjsRenderStateSetup","renderStates","entry","state","value","stageName","hlslShaderStageName","sourceProgram","emitSourceProgram","cjsShaderBytecode","emitInput","payloadSize","exportCount","exports","type","hitGroupName","globalInput","localInput","bytecode","kind","program","shaderSize","stringTableOffset","sourceConstantValues","sourceConstantValueSize","declaredByteLength","constantCount","constants","constant","dimension","elements","isSRGB","isAutoregister","resourceCount","resources","emitResourceMap","uavCount","uavs","samplerCount","samplers","emitSamplerMap","annotationCount","annotation","emitAnnotations","signature","emitSignature","from","registerIndex","resource","arrayElements","setup","undefined","isDynamic","sampler","descriptor","emitDynamicSampler","comparison","minFilter","magFilter","mipFilter","addressU","addressV","addressW","mipLODBiasRaw","maxAnisotropy","comparisonFunc","borderColorRaw","slice","minLODRaw","maxLODRaw","emitStaticSampler","registerSpace","borderColor","pipelineInputCount","pipelineInputs","usage","usageIndex","usedMask","registerCount","registers","registerType","arrayCount","staticSamplerCount","staticSamplers","threadGroupSize","x","y","z","parameterName","stringValue","rawValue","hash","requireBytes","validateRegisterIndexed","stageTypes","stageKeys","stage","has","add","validateSourceProgram","validateInput","exportIdentities","index","assertUint8","identity","expectedKind","defaults","defaultBytes","constantNames","validateResourceList","validateSamplerList","validateAnnotations","validateSignature","validateMapSignatureReconciliation","validateSamplerDescriptor","field","registerRanges","register","classification","registerClass","isUnbounded","rangeEnd","ranges","some","start","end","validateMappedBindings","filter","matches","staticSampler","forEach","names","prototype","hasOwnProperty","call","validate","identityFor","identities","expected","keys","allowed","actual","Reflect","ownKeys","includes","isPlainObject","ArrayBuffer","isView","buffer","byteOffset","HlslShader","ok","GetEffect","Read","m_stringTable","effectStateManager","HlslEffectStateManager","ProcessEffect","sourceByteLength","Number","isSafeInteger","unique","ordered","values","sort","left","right","previous","current","Math","imul","toString","padStart","every","validateEffectBodyInput","isEffectBodyReflection"],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { cjsUint32ToFloat32 } from './HlslBinaryUtils.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Human-readable names for Carbon/D3D render-state key/value pairs.
|
|
5
|
+
*
|
|
6
|
+
* The numeric state ids match Carbon's `HlslRenderContextEnum::RenderState`
|
|
7
|
+
* / `TriD3DRenderState` values, which mirror D3D9 render-state constants.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const RENDER_STATE_NAMES = Object.freeze({
|
|
11
|
+
7: "RS_ZENABLE",
|
|
12
|
+
8: "RS_FILLMODE",
|
|
13
|
+
9: "RS_SHADEMODE",
|
|
14
|
+
14: "RS_ZWRITEENABLE",
|
|
15
|
+
15: "RS_ALPHATESTENABLE",
|
|
16
|
+
16: "RS_LASTPIXEL",
|
|
17
|
+
19: "RS_SRCBLEND",
|
|
18
|
+
20: "RS_DESTBLEND",
|
|
19
|
+
22: "RS_CULLMODE",
|
|
20
|
+
23: "RS_ZFUNC",
|
|
21
|
+
24: "RS_ALPHAREF",
|
|
22
|
+
25: "RS_ALPHAFUNC",
|
|
23
|
+
26: "RS_DITHERENABLE",
|
|
24
|
+
27: "RS_ALPHABLENDENABLE",
|
|
25
|
+
28: "RS_FOGENABLE",
|
|
26
|
+
29: "RS_SPECULARENABLE",
|
|
27
|
+
34: "RS_FOGCOLOR",
|
|
28
|
+
35: "RS_FOGTABLEMODE",
|
|
29
|
+
36: "RS_FOGSTART",
|
|
30
|
+
37: "RS_FOGEND",
|
|
31
|
+
38: "RS_FOGDENSITY",
|
|
32
|
+
48: "RS_RANGEFOGENABLE",
|
|
33
|
+
52: "RS_STENCILENABLE",
|
|
34
|
+
53: "RS_STENCILFAIL",
|
|
35
|
+
54: "RS_STENCILZFAIL",
|
|
36
|
+
55: "RS_STENCILPASS",
|
|
37
|
+
56: "RS_STENCILFUNC",
|
|
38
|
+
57: "RS_STENCILREF",
|
|
39
|
+
58: "RS_STENCILMASK",
|
|
40
|
+
59: "RS_STENCILWRITEMASK",
|
|
41
|
+
60: "RS_TEXTUREFACTOR",
|
|
42
|
+
128: "RS_WRAP0",
|
|
43
|
+
129: "RS_WRAP1",
|
|
44
|
+
130: "RS_WRAP2",
|
|
45
|
+
131: "RS_WRAP3",
|
|
46
|
+
132: "RS_WRAP4",
|
|
47
|
+
133: "RS_WRAP5",
|
|
48
|
+
134: "RS_WRAP6",
|
|
49
|
+
135: "RS_WRAP7",
|
|
50
|
+
136: "RS_CLIPPING",
|
|
51
|
+
137: "RS_LIGHTING",
|
|
52
|
+
139: "RS_AMBIENT",
|
|
53
|
+
140: "RS_FOGVERTEXMODE",
|
|
54
|
+
141: "RS_COLORVERTEX",
|
|
55
|
+
142: "RS_LOCALVIEWER",
|
|
56
|
+
143: "RS_NORMALIZENORMALS",
|
|
57
|
+
145: "RS_DIFFUSEMATERIALSOURCE",
|
|
58
|
+
146: "RS_SPECULARMATERIALSOURCE",
|
|
59
|
+
147: "RS_AMBIENTMATERIALSOURCE",
|
|
60
|
+
148: "RS_EMISSIVEMATERIALSOURCE",
|
|
61
|
+
151: "RS_VERTEXBLEND",
|
|
62
|
+
152: "RS_CLIPPLANEENABLE",
|
|
63
|
+
154: "RS_POINTSIZE",
|
|
64
|
+
155: "RS_POINTSIZE_MIN",
|
|
65
|
+
156: "RS_POINTSPRITEENABLE",
|
|
66
|
+
157: "RS_POINTSCALEENABLE",
|
|
67
|
+
158: "RS_POINTSCALE_A",
|
|
68
|
+
159: "RS_POINTSCALE_B",
|
|
69
|
+
160: "RS_POINTSCALE_C",
|
|
70
|
+
161: "RS_MULTISAMPLEANTIALIAS",
|
|
71
|
+
162: "RS_MULTISAMPLEMASK",
|
|
72
|
+
163: "RS_PATCHEDGESTYLE",
|
|
73
|
+
165: "RS_DEBUGMONITORTOKEN",
|
|
74
|
+
166: "RS_POINTSIZE_MAX",
|
|
75
|
+
167: "RS_INDEXEDVERTEXBLENDENABLE",
|
|
76
|
+
168: "RS_COLORWRITEENABLE",
|
|
77
|
+
170: "RS_TWEENFACTOR",
|
|
78
|
+
171: "RS_BLENDOP",
|
|
79
|
+
172: "RS_POSITIONDEGREE",
|
|
80
|
+
173: "RS_NORMALDEGREE",
|
|
81
|
+
174: "RS_SCISSORTESTENABLE",
|
|
82
|
+
175: "RS_SLOPESCALEDEPTHBIAS",
|
|
83
|
+
176: "RS_ANTIALIASEDLINEENABLE",
|
|
84
|
+
185: "RS_TWOSIDEDSTENCILMODE",
|
|
85
|
+
186: "RS_CCW_STENCILFAIL",
|
|
86
|
+
187: "RS_CCW_STENCILZFAIL",
|
|
87
|
+
188: "RS_CCW_STENCILPASS",
|
|
88
|
+
189: "RS_CCW_STENCILFUNC",
|
|
89
|
+
190: "RS_COLORWRITEENABLE1",
|
|
90
|
+
191: "RS_COLORWRITEENABLE2",
|
|
91
|
+
192: "RS_COLORWRITEENABLE3",
|
|
92
|
+
193: "RS_BLENDFACTOR",
|
|
93
|
+
194: "RS_SRGBWRITEENABLE",
|
|
94
|
+
195: "RS_DEPTHBIAS",
|
|
95
|
+
206: "RS_SEPARATEALPHABLENDENABLE",
|
|
96
|
+
207: "RS_SRCBLENDALPHA",
|
|
97
|
+
208: "RS_DESTBLENDALPHA",
|
|
98
|
+
209: "RS_BLENDOPALPHA"
|
|
99
|
+
});
|
|
100
|
+
const BOOL_NAMES = Object.freeze({
|
|
101
|
+
0: "FALSE",
|
|
102
|
+
1: "TRUE"
|
|
103
|
+
});
|
|
104
|
+
const ZBUFFER_NAMES = Object.freeze({
|
|
105
|
+
0: "D3DZB_FALSE",
|
|
106
|
+
1: "D3DZB_TRUE",
|
|
107
|
+
2: "D3DZB_USEW"
|
|
108
|
+
});
|
|
109
|
+
const FILL_MODE_NAMES = Object.freeze({
|
|
110
|
+
1: "D3DFILL_POINT",
|
|
111
|
+
2: "D3DFILL_WIREFRAME",
|
|
112
|
+
3: "D3DFILL_SOLID"
|
|
113
|
+
});
|
|
114
|
+
const SHADE_MODE_NAMES = Object.freeze({
|
|
115
|
+
1: "D3DSHADE_FLAT",
|
|
116
|
+
2: "D3DSHADE_GOURAUD",
|
|
117
|
+
3: "D3DSHADE_PHONG"
|
|
118
|
+
});
|
|
119
|
+
const BLEND_NAMES = Object.freeze({
|
|
120
|
+
1: "BLEND_ZERO",
|
|
121
|
+
2: "BLEND_ONE",
|
|
122
|
+
3: "BLEND_SRCCOLOR",
|
|
123
|
+
4: "BLEND_INVSRCCOLOR",
|
|
124
|
+
5: "BLEND_SRCALPHA",
|
|
125
|
+
6: "BLEND_INVSRCALPHA",
|
|
126
|
+
7: "BLEND_DESTALPHA",
|
|
127
|
+
8: "BLEND_INVDESTALPHA",
|
|
128
|
+
9: "BLEND_DESTCOLOR",
|
|
129
|
+
10: "BLEND_INVDESTCOLOR",
|
|
130
|
+
11: "BLEND_SRCALPHASAT",
|
|
131
|
+
12: "BLEND_BOTHSRCALPHA",
|
|
132
|
+
13: "BLEND_BOTHINVSRCALPHA",
|
|
133
|
+
14: "BLEND_BLENDFACTOR",
|
|
134
|
+
15: "BLEND_INVBLENDFACTOR"
|
|
135
|
+
});
|
|
136
|
+
const CULL_NAMES = Object.freeze({
|
|
137
|
+
1: "CULL_NONE",
|
|
138
|
+
2: "CULL_CW",
|
|
139
|
+
3: "CULL_CCW"
|
|
140
|
+
});
|
|
141
|
+
const COMPARE_NAMES = Object.freeze({
|
|
142
|
+
1: "CMP_NEVER",
|
|
143
|
+
2: "CMP_LESS",
|
|
144
|
+
3: "CMP_EQUAL",
|
|
145
|
+
4: "CMP_LEQUAL",
|
|
146
|
+
5: "CMP_GREATER",
|
|
147
|
+
6: "CMP_NOTEQUAL",
|
|
148
|
+
7: "CMP_GREATEREQUAL",
|
|
149
|
+
8: "CMP_ALWAYS"
|
|
150
|
+
});
|
|
151
|
+
const FOG_MODE_NAMES = Object.freeze({
|
|
152
|
+
0: "D3DFOG_NONE",
|
|
153
|
+
1: "D3DFOG_EXP",
|
|
154
|
+
2: "D3DFOG_EXP2",
|
|
155
|
+
3: "D3DFOG_LINEAR"
|
|
156
|
+
});
|
|
157
|
+
const STENCIL_OP_NAMES = Object.freeze({
|
|
158
|
+
1: "D3DSTENCILOP_KEEP",
|
|
159
|
+
2: "D3DSTENCILOP_ZERO",
|
|
160
|
+
3: "D3DSTENCILOP_REPLACE",
|
|
161
|
+
4: "D3DSTENCILOP_INCRSAT",
|
|
162
|
+
5: "D3DSTENCILOP_DECRSAT",
|
|
163
|
+
6: "D3DSTENCILOP_INVERT",
|
|
164
|
+
7: "D3DSTENCILOP_INCR",
|
|
165
|
+
8: "D3DSTENCILOP_DECR"
|
|
166
|
+
});
|
|
167
|
+
const MATERIAL_SOURCE_NAMES = Object.freeze({
|
|
168
|
+
0: "D3DMCS_MATERIAL",
|
|
169
|
+
1: "D3DMCS_COLOR1",
|
|
170
|
+
2: "D3DMCS_COLOR2"
|
|
171
|
+
});
|
|
172
|
+
const VERTEX_BLEND_NAMES = Object.freeze({
|
|
173
|
+
0: "D3DVBF_DISABLE",
|
|
174
|
+
1: "D3DVBF_1WEIGHTS",
|
|
175
|
+
2: "D3DVBF_2WEIGHTS",
|
|
176
|
+
3: "D3DVBF_3WEIGHTS",
|
|
177
|
+
255: "D3DVBF_TWEENING",
|
|
178
|
+
256: "D3DVBF_0WEIGHTS"
|
|
179
|
+
});
|
|
180
|
+
const BLEND_OP_NAMES = Object.freeze({
|
|
181
|
+
1: "BLENDOP_ADD",
|
|
182
|
+
2: "BLENDOP_SUBTRACT",
|
|
183
|
+
3: "BLENDOP_REVSUBTRACT",
|
|
184
|
+
4: "BLENDOP_MIN",
|
|
185
|
+
5: "BLENDOP_MAX"
|
|
186
|
+
});
|
|
187
|
+
const DEGREE_NAMES = Object.freeze({
|
|
188
|
+
1: "D3DDEGREE_LINEAR",
|
|
189
|
+
2: "D3DDEGREE_QUADRATIC",
|
|
190
|
+
3: "D3DDEGREE_CUBIC",
|
|
191
|
+
5: "D3DDEGREE_QUINTIC"
|
|
192
|
+
});
|
|
193
|
+
const PATCH_EDGE_STYLE_NAMES = Object.freeze({
|
|
194
|
+
0: "D3DPATCHEDGE_DISCRETE",
|
|
195
|
+
1: "D3DPATCHEDGE_CONTINUOUS"
|
|
196
|
+
});
|
|
197
|
+
const VALUE_NAME_BY_STATE = new Map([[7, ZBUFFER_NAMES], [8, FILL_MODE_NAMES], [9, SHADE_MODE_NAMES], [19, BLEND_NAMES], [20, BLEND_NAMES], [22, CULL_NAMES], [23, COMPARE_NAMES], [25, COMPARE_NAMES], [35, FOG_MODE_NAMES], [53, STENCIL_OP_NAMES], [54, STENCIL_OP_NAMES], [55, STENCIL_OP_NAMES], [56, COMPARE_NAMES], [140, FOG_MODE_NAMES], [145, MATERIAL_SOURCE_NAMES], [146, MATERIAL_SOURCE_NAMES], [147, MATERIAL_SOURCE_NAMES], [148, MATERIAL_SOURCE_NAMES], [151, VERTEX_BLEND_NAMES], [163, PATCH_EDGE_STYLE_NAMES], [171, BLEND_OP_NAMES], [172, DEGREE_NAMES], [173, DEGREE_NAMES], [186, STENCIL_OP_NAMES], [187, STENCIL_OP_NAMES], [188, STENCIL_OP_NAMES], [189, COMPARE_NAMES], [207, BLEND_NAMES], [208, BLEND_NAMES], [209, BLEND_OP_NAMES]]);
|
|
198
|
+
const BOOL_STATES = new Set([14, 15, 16, 26, 27, 28, 29, 48, 52, 136, 137, 141, 142, 143, 152, 156, 157, 161, 167, 174, 176, 185, 194, 206]);
|
|
199
|
+
const FLOAT_STATES = new Set([36, 37, 38, 154, 155, 158, 159, 160, 166, 170, 175, 195]);
|
|
200
|
+
const COLOR_STATES = new Set([34, 60, 139, 193]);
|
|
201
|
+
const COLOR_WRITE_STATES = new Set([168, 190, 191, 192]);
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Converts a D3D color write mask into channel names.
|
|
205
|
+
*
|
|
206
|
+
* @param {number} value Raw color-write mask.
|
|
207
|
+
* @returns {string[]} Enabled color channels.
|
|
208
|
+
*/
|
|
209
|
+
function colorWriteChannels(value) {
|
|
210
|
+
const channels = [];
|
|
211
|
+
if (value & 1) channels.push("RED");
|
|
212
|
+
if (value & 2) channels.push("GREEN");
|
|
213
|
+
if (value & 4) channels.push("BLUE");
|
|
214
|
+
if (value & 8) channels.push("ALPHA");
|
|
215
|
+
return channels;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Converts an ARGB D3DCOLOR value into channel bytes.
|
|
220
|
+
*
|
|
221
|
+
* @param {number} value Raw D3DCOLOR value.
|
|
222
|
+
* @returns {{a:number,r:number,g:number,b:number}} Color channels.
|
|
223
|
+
*/
|
|
224
|
+
function d3dColor(value) {
|
|
225
|
+
const unsigned = value >>> 0;
|
|
226
|
+
return {
|
|
227
|
+
a: unsigned >>> 24 & 0xff,
|
|
228
|
+
r: unsigned >>> 16 & 0xff,
|
|
229
|
+
g: unsigned >>> 8 & 0xff,
|
|
230
|
+
b: unsigned & 0xff
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Emits a human-readable render-state record without dropping raw values.
|
|
236
|
+
*
|
|
237
|
+
* @param {{key:number,value:number}} entry Raw render-state key/value pair.
|
|
238
|
+
* @returns {object} Enriched render-state metadata.
|
|
239
|
+
*/
|
|
240
|
+
function emitRenderState(entry) {
|
|
241
|
+
const key = Number(entry.key);
|
|
242
|
+
const value = Number(entry.value);
|
|
243
|
+
const out = {
|
|
244
|
+
key,
|
|
245
|
+
name: RENDER_STATE_NAMES[key] || `RS_${key}`,
|
|
246
|
+
value
|
|
247
|
+
};
|
|
248
|
+
const valueNames = VALUE_NAME_BY_STATE.get(key);
|
|
249
|
+
if (valueNames?.[value] !== undefined) {
|
|
250
|
+
out.valueName = valueNames[value];
|
|
251
|
+
} else if (BOOL_STATES.has(key)) {
|
|
252
|
+
out.valueName = BOOL_NAMES[value] || `BOOL_${value}`;
|
|
253
|
+
}
|
|
254
|
+
if (FLOAT_STATES.has(key)) {
|
|
255
|
+
out.valueFloat = cjsUint32ToFloat32(value);
|
|
256
|
+
}
|
|
257
|
+
if (COLOR_STATES.has(key)) {
|
|
258
|
+
out.valueHex = `0x${(value >>> 0).toString(16).padStart(8, "0").toUpperCase()}`;
|
|
259
|
+
out.valueColor = d3dColor(value);
|
|
260
|
+
}
|
|
261
|
+
if (COLOR_WRITE_STATES.has(key)) {
|
|
262
|
+
const channels = colorWriteChannels(value);
|
|
263
|
+
out.valueName = channels.length ? channels.join("|") : "NONE";
|
|
264
|
+
out.valueFlags = channels;
|
|
265
|
+
}
|
|
266
|
+
return out;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Emits a render-state setup as enriched records.
|
|
271
|
+
*
|
|
272
|
+
* @param {object|null} setup HlslRenderStateSetup-like object.
|
|
273
|
+
* @returns {object[]} Enriched render-state records.
|
|
274
|
+
*/
|
|
275
|
+
function emitRenderStates(setup) {
|
|
276
|
+
return (setup?.entries || []).map(emitRenderState);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export { RENDER_STATE_NAMES, emitRenderState, emitRenderStates };
|
|
280
|
+
//# sourceMappingURL=render-states.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-states.js","sources":["../../../../../src/formats/hlsl/core/render-states.js"],"sourcesContent":["/**\n * Human-readable names for Carbon/D3D render-state key/value pairs.\n *\n * The numeric state ids match Carbon's `HlslRenderContextEnum::RenderState`\n * / `TriD3DRenderState` values, which mirror D3D9 render-state constants.\n */\n\nimport { cjsUint32ToFloat32 } from \"./HlslBinaryUtils.js\";\n\nexport const RENDER_STATE_NAMES = Object.freeze({\n 7: \"RS_ZENABLE\",\n 8: \"RS_FILLMODE\",\n 9: \"RS_SHADEMODE\",\n 14: \"RS_ZWRITEENABLE\",\n 15: \"RS_ALPHATESTENABLE\",\n 16: \"RS_LASTPIXEL\",\n 19: \"RS_SRCBLEND\",\n 20: \"RS_DESTBLEND\",\n 22: \"RS_CULLMODE\",\n 23: \"RS_ZFUNC\",\n 24: \"RS_ALPHAREF\",\n 25: \"RS_ALPHAFUNC\",\n 26: \"RS_DITHERENABLE\",\n 27: \"RS_ALPHABLENDENABLE\",\n 28: \"RS_FOGENABLE\",\n 29: \"RS_SPECULARENABLE\",\n 34: \"RS_FOGCOLOR\",\n 35: \"RS_FOGTABLEMODE\",\n 36: \"RS_FOGSTART\",\n 37: \"RS_FOGEND\",\n 38: \"RS_FOGDENSITY\",\n 48: \"RS_RANGEFOGENABLE\",\n 52: \"RS_STENCILENABLE\",\n 53: \"RS_STENCILFAIL\",\n 54: \"RS_STENCILZFAIL\",\n 55: \"RS_STENCILPASS\",\n 56: \"RS_STENCILFUNC\",\n 57: \"RS_STENCILREF\",\n 58: \"RS_STENCILMASK\",\n 59: \"RS_STENCILWRITEMASK\",\n 60: \"RS_TEXTUREFACTOR\",\n 128: \"RS_WRAP0\",\n 129: \"RS_WRAP1\",\n 130: \"RS_WRAP2\",\n 131: \"RS_WRAP3\",\n 132: \"RS_WRAP4\",\n 133: \"RS_WRAP5\",\n 134: \"RS_WRAP6\",\n 135: \"RS_WRAP7\",\n 136: \"RS_CLIPPING\",\n 137: \"RS_LIGHTING\",\n 139: \"RS_AMBIENT\",\n 140: \"RS_FOGVERTEXMODE\",\n 141: \"RS_COLORVERTEX\",\n 142: \"RS_LOCALVIEWER\",\n 143: \"RS_NORMALIZENORMALS\",\n 145: \"RS_DIFFUSEMATERIALSOURCE\",\n 146: \"RS_SPECULARMATERIALSOURCE\",\n 147: \"RS_AMBIENTMATERIALSOURCE\",\n 148: \"RS_EMISSIVEMATERIALSOURCE\",\n 151: \"RS_VERTEXBLEND\",\n 152: \"RS_CLIPPLANEENABLE\",\n 154: \"RS_POINTSIZE\",\n 155: \"RS_POINTSIZE_MIN\",\n 156: \"RS_POINTSPRITEENABLE\",\n 157: \"RS_POINTSCALEENABLE\",\n 158: \"RS_POINTSCALE_A\",\n 159: \"RS_POINTSCALE_B\",\n 160: \"RS_POINTSCALE_C\",\n 161: \"RS_MULTISAMPLEANTIALIAS\",\n 162: \"RS_MULTISAMPLEMASK\",\n 163: \"RS_PATCHEDGESTYLE\",\n 165: \"RS_DEBUGMONITORTOKEN\",\n 166: \"RS_POINTSIZE_MAX\",\n 167: \"RS_INDEXEDVERTEXBLENDENABLE\",\n 168: \"RS_COLORWRITEENABLE\",\n 170: \"RS_TWEENFACTOR\",\n 171: \"RS_BLENDOP\",\n 172: \"RS_POSITIONDEGREE\",\n 173: \"RS_NORMALDEGREE\",\n 174: \"RS_SCISSORTESTENABLE\",\n 175: \"RS_SLOPESCALEDEPTHBIAS\",\n 176: \"RS_ANTIALIASEDLINEENABLE\",\n 185: \"RS_TWOSIDEDSTENCILMODE\",\n 186: \"RS_CCW_STENCILFAIL\",\n 187: \"RS_CCW_STENCILZFAIL\",\n 188: \"RS_CCW_STENCILPASS\",\n 189: \"RS_CCW_STENCILFUNC\",\n 190: \"RS_COLORWRITEENABLE1\",\n 191: \"RS_COLORWRITEENABLE2\",\n 192: \"RS_COLORWRITEENABLE3\",\n 193: \"RS_BLENDFACTOR\",\n 194: \"RS_SRGBWRITEENABLE\",\n 195: \"RS_DEPTHBIAS\",\n 206: \"RS_SEPARATEALPHABLENDENABLE\",\n 207: \"RS_SRCBLENDALPHA\",\n 208: \"RS_DESTBLENDALPHA\",\n 209: \"RS_BLENDOPALPHA\"\n});\n\nconst BOOL_NAMES = Object.freeze({\n 0: \"FALSE\",\n 1: \"TRUE\"\n});\n\nconst ZBUFFER_NAMES = Object.freeze({\n 0: \"D3DZB_FALSE\",\n 1: \"D3DZB_TRUE\",\n 2: \"D3DZB_USEW\"\n});\n\nconst FILL_MODE_NAMES = Object.freeze({\n 1: \"D3DFILL_POINT\",\n 2: \"D3DFILL_WIREFRAME\",\n 3: \"D3DFILL_SOLID\"\n});\n\nconst SHADE_MODE_NAMES = Object.freeze({\n 1: \"D3DSHADE_FLAT\",\n 2: \"D3DSHADE_GOURAUD\",\n 3: \"D3DSHADE_PHONG\"\n});\n\nconst BLEND_NAMES = Object.freeze({\n 1: \"BLEND_ZERO\",\n 2: \"BLEND_ONE\",\n 3: \"BLEND_SRCCOLOR\",\n 4: \"BLEND_INVSRCCOLOR\",\n 5: \"BLEND_SRCALPHA\",\n 6: \"BLEND_INVSRCALPHA\",\n 7: \"BLEND_DESTALPHA\",\n 8: \"BLEND_INVDESTALPHA\",\n 9: \"BLEND_DESTCOLOR\",\n 10: \"BLEND_INVDESTCOLOR\",\n 11: \"BLEND_SRCALPHASAT\",\n 12: \"BLEND_BOTHSRCALPHA\",\n 13: \"BLEND_BOTHINVSRCALPHA\",\n 14: \"BLEND_BLENDFACTOR\",\n 15: \"BLEND_INVBLENDFACTOR\"\n});\n\nconst CULL_NAMES = Object.freeze({\n 1: \"CULL_NONE\",\n 2: \"CULL_CW\",\n 3: \"CULL_CCW\"\n});\n\nconst COMPARE_NAMES = Object.freeze({\n 1: \"CMP_NEVER\",\n 2: \"CMP_LESS\",\n 3: \"CMP_EQUAL\",\n 4: \"CMP_LEQUAL\",\n 5: \"CMP_GREATER\",\n 6: \"CMP_NOTEQUAL\",\n 7: \"CMP_GREATEREQUAL\",\n 8: \"CMP_ALWAYS\"\n});\n\nconst FOG_MODE_NAMES = Object.freeze({\n 0: \"D3DFOG_NONE\",\n 1: \"D3DFOG_EXP\",\n 2: \"D3DFOG_EXP2\",\n 3: \"D3DFOG_LINEAR\"\n});\n\nconst STENCIL_OP_NAMES = Object.freeze({\n 1: \"D3DSTENCILOP_KEEP\",\n 2: \"D3DSTENCILOP_ZERO\",\n 3: \"D3DSTENCILOP_REPLACE\",\n 4: \"D3DSTENCILOP_INCRSAT\",\n 5: \"D3DSTENCILOP_DECRSAT\",\n 6: \"D3DSTENCILOP_INVERT\",\n 7: \"D3DSTENCILOP_INCR\",\n 8: \"D3DSTENCILOP_DECR\"\n});\n\nconst MATERIAL_SOURCE_NAMES = Object.freeze({\n 0: \"D3DMCS_MATERIAL\",\n 1: \"D3DMCS_COLOR1\",\n 2: \"D3DMCS_COLOR2\"\n});\n\nconst VERTEX_BLEND_NAMES = Object.freeze({\n 0: \"D3DVBF_DISABLE\",\n 1: \"D3DVBF_1WEIGHTS\",\n 2: \"D3DVBF_2WEIGHTS\",\n 3: \"D3DVBF_3WEIGHTS\",\n 255: \"D3DVBF_TWEENING\",\n 256: \"D3DVBF_0WEIGHTS\"\n});\n\nconst BLEND_OP_NAMES = Object.freeze({\n 1: \"BLENDOP_ADD\",\n 2: \"BLENDOP_SUBTRACT\",\n 3: \"BLENDOP_REVSUBTRACT\",\n 4: \"BLENDOP_MIN\",\n 5: \"BLENDOP_MAX\"\n});\n\nconst DEGREE_NAMES = Object.freeze({\n 1: \"D3DDEGREE_LINEAR\",\n 2: \"D3DDEGREE_QUADRATIC\",\n 3: \"D3DDEGREE_CUBIC\",\n 5: \"D3DDEGREE_QUINTIC\"\n});\n\nconst PATCH_EDGE_STYLE_NAMES = Object.freeze({\n 0: \"D3DPATCHEDGE_DISCRETE\",\n 1: \"D3DPATCHEDGE_CONTINUOUS\"\n});\n\nconst VALUE_NAME_BY_STATE = new Map([\n [ 7, ZBUFFER_NAMES ],\n [ 8, FILL_MODE_NAMES ],\n [ 9, SHADE_MODE_NAMES ],\n [ 19, BLEND_NAMES ],\n [ 20, BLEND_NAMES ],\n [ 22, CULL_NAMES ],\n [ 23, COMPARE_NAMES ],\n [ 25, COMPARE_NAMES ],\n [ 35, FOG_MODE_NAMES ],\n [ 53, STENCIL_OP_NAMES ],\n [ 54, STENCIL_OP_NAMES ],\n [ 55, STENCIL_OP_NAMES ],\n [ 56, COMPARE_NAMES ],\n [ 140, FOG_MODE_NAMES ],\n [ 145, MATERIAL_SOURCE_NAMES ],\n [ 146, MATERIAL_SOURCE_NAMES ],\n [ 147, MATERIAL_SOURCE_NAMES ],\n [ 148, MATERIAL_SOURCE_NAMES ],\n [ 151, VERTEX_BLEND_NAMES ],\n [ 163, PATCH_EDGE_STYLE_NAMES ],\n [ 171, BLEND_OP_NAMES ],\n [ 172, DEGREE_NAMES ],\n [ 173, DEGREE_NAMES ],\n [ 186, STENCIL_OP_NAMES ],\n [ 187, STENCIL_OP_NAMES ],\n [ 188, STENCIL_OP_NAMES ],\n [ 189, COMPARE_NAMES ],\n [ 207, BLEND_NAMES ],\n [ 208, BLEND_NAMES ],\n [ 209, BLEND_OP_NAMES ]\n]);\n\nconst BOOL_STATES = new Set([\n 14, 15, 16, 26, 27, 28, 29, 48, 52, 136, 137, 141, 142, 143, 152, 156,\n 157, 161, 167, 174, 176, 185, 194, 206\n]);\n\nconst FLOAT_STATES = new Set([ 36, 37, 38, 154, 155, 158, 159, 160, 166, 170, 175, 195 ]);\nconst COLOR_STATES = new Set([ 34, 60, 139, 193 ]);\nconst COLOR_WRITE_STATES = new Set([ 168, 190, 191, 192 ]);\n\n/**\n * Converts a D3D color write mask into channel names.\n *\n * @param {number} value Raw color-write mask.\n * @returns {string[]} Enabled color channels.\n */\nfunction colorWriteChannels(value)\n{\n const channels = [];\n if (value & 1) channels.push(\"RED\");\n if (value & 2) channels.push(\"GREEN\");\n if (value & 4) channels.push(\"BLUE\");\n if (value & 8) channels.push(\"ALPHA\");\n return channels;\n}\n\n/**\n * Converts an ARGB D3DCOLOR value into channel bytes.\n *\n * @param {number} value Raw D3DCOLOR value.\n * @returns {{a:number,r:number,g:number,b:number}} Color channels.\n */\nfunction d3dColor(value)\n{\n const unsigned = value >>> 0;\n return {\n a: (unsigned >>> 24) & 0xff,\n r: (unsigned >>> 16) & 0xff,\n g: (unsigned >>> 8) & 0xff,\n b: unsigned & 0xff\n };\n}\n\n/**\n * Emits a human-readable render-state record without dropping raw values.\n *\n * @param {{key:number,value:number}} entry Raw render-state key/value pair.\n * @returns {object} Enriched render-state metadata.\n */\nexport function emitRenderState(entry)\n{\n const key = Number(entry.key);\n const value = Number(entry.value);\n const out = {\n key,\n name: RENDER_STATE_NAMES[key] || `RS_${key}`,\n value\n };\n\n const valueNames = VALUE_NAME_BY_STATE.get(key);\n if (valueNames?.[value] !== undefined)\n {\n out.valueName = valueNames[value];\n }\n else if (BOOL_STATES.has(key))\n {\n out.valueName = BOOL_NAMES[value] || `BOOL_${value}`;\n }\n\n if (FLOAT_STATES.has(key))\n {\n out.valueFloat = cjsUint32ToFloat32(value);\n }\n\n if (COLOR_STATES.has(key))\n {\n out.valueHex = `0x${(value >>> 0).toString(16).padStart(8, \"0\").toUpperCase()}`;\n out.valueColor = d3dColor(value);\n }\n\n if (COLOR_WRITE_STATES.has(key))\n {\n const channels = colorWriteChannels(value);\n out.valueName = channels.length ? channels.join(\"|\") : \"NONE\";\n out.valueFlags = channels;\n }\n\n return out;\n}\n\n/**\n * Emits a render-state setup as enriched records.\n *\n * @param {object|null} setup HlslRenderStateSetup-like object.\n * @returns {object[]} Enriched render-state records.\n */\nexport function emitRenderStates(setup)\n{\n return (setup?.entries || []).map(emitRenderState);\n}\n"],"names":["RENDER_STATE_NAMES","Object","freeze","BOOL_NAMES","ZBUFFER_NAMES","FILL_MODE_NAMES","SHADE_MODE_NAMES","BLEND_NAMES","CULL_NAMES","COMPARE_NAMES","FOG_MODE_NAMES","STENCIL_OP_NAMES","MATERIAL_SOURCE_NAMES","VERTEX_BLEND_NAMES","BLEND_OP_NAMES","DEGREE_NAMES","PATCH_EDGE_STYLE_NAMES","VALUE_NAME_BY_STATE","Map","BOOL_STATES","Set","FLOAT_STATES","COLOR_STATES","COLOR_WRITE_STATES","colorWriteChannels","value","channels","push","d3dColor","unsigned","a","r","g","b","emitRenderState","entry","key","Number","out","name","valueNames","get","undefined","valueName","has","valueFloat","cjsUint32ToFloat32","valueHex","toString","padStart","toUpperCase","valueColor","length","join","valueFlags","emitRenderStates","setup","entries","map"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render-context enum values mirrored from Carbon's Trinity renderer.
|
|
3
|
+
*/
|
|
4
|
+
const HlslRenderContextEnum = Object.freeze({
|
|
5
|
+
VERTEX_SHADER: 0,
|
|
6
|
+
PIXEL_SHADER: 1,
|
|
7
|
+
COMPUTE_SHADER: 2,
|
|
8
|
+
GEOMETRY_SHADER: 3,
|
|
9
|
+
HULL_SHADER: 4,
|
|
10
|
+
DOMAIN_SHADER: 5,
|
|
11
|
+
INVALID_SHADER: 6,
|
|
12
|
+
SHADER_TYPE_COUNT: 6,
|
|
13
|
+
CBUFFER_GUI: 6,
|
|
14
|
+
CBUFFER_COUNT: 7,
|
|
15
|
+
TEX_TYPE_1D: 1,
|
|
16
|
+
TEX_TYPE_2D: 2,
|
|
17
|
+
TEX_TYPE_3D: 3,
|
|
18
|
+
TEX_TYPE_CUBE: 4,
|
|
19
|
+
TEX_TYPE_TYPELESS: 5
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Human-readable shader stage names indexed by `HlslRenderContextEnum` stage ids.
|
|
24
|
+
*/
|
|
25
|
+
const HlslShaderStageNames = Object.freeze(["vertex", "pixel", "compute", "geometry", "hull", "domain"]);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Human-readable vertex usage names indexed by Carbon usage ids.
|
|
29
|
+
*/
|
|
30
|
+
const HlslUsageCodeNames = Object.freeze(["POSITION", "COLOR", "NORMAL", "TANGENT", "BITANGENT", "TEXCOORD", "BLENDINDICES", "BLENDWEIGHTS"]);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Converts a Trinity shader stage id into a stable display name.
|
|
34
|
+
*
|
|
35
|
+
* @param {number} stageType Trinity shader stage enum value.
|
|
36
|
+
* @returns {string} Stage name or `"unknown"`.
|
|
37
|
+
*/
|
|
38
|
+
function hlslShaderStageName(stageType) {
|
|
39
|
+
return HlslShaderStageNames[stageType] || "unknown";
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { HlslRenderContextEnum, HlslShaderStageNames, HlslUsageCodeNames, hlslShaderStageName };
|
|
43
|
+
//# sourceMappingURL=HlslRenderContextEnum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HlslRenderContextEnum.js","sources":["../../../../../../src/formats/hlsl/core/tr2/HlslRenderContextEnum.js"],"sourcesContent":["/**\n * Render-context enum values mirrored from Carbon's Trinity renderer.\n */\nexport const HlslRenderContextEnum = Object.freeze({\n VERTEX_SHADER: 0,\n PIXEL_SHADER: 1,\n COMPUTE_SHADER: 2,\n GEOMETRY_SHADER: 3,\n HULL_SHADER: 4,\n DOMAIN_SHADER: 5,\n INVALID_SHADER: 6,\n SHADER_TYPE_COUNT: 6,\n CBUFFER_GUI: 6,\n CBUFFER_COUNT: 7,\n\n TEX_TYPE_1D: 1,\n TEX_TYPE_2D: 2,\n TEX_TYPE_3D: 3,\n TEX_TYPE_CUBE: 4,\n TEX_TYPE_TYPELESS: 5\n});\n\n/**\n * Human-readable shader stage names indexed by `HlslRenderContextEnum` stage ids.\n */\nexport const HlslShaderStageNames = Object.freeze([\n \"vertex\",\n \"pixel\",\n \"compute\",\n \"geometry\",\n \"hull\",\n \"domain\"\n]);\n\n/**\n * Human-readable vertex usage names indexed by Carbon usage ids.\n */\nexport const HlslUsageCodeNames = Object.freeze([\n \"POSITION\",\n \"COLOR\",\n \"NORMAL\",\n \"TANGENT\",\n \"BITANGENT\",\n \"TEXCOORD\",\n \"BLENDINDICES\",\n \"BLENDWEIGHTS\"\n]);\n\n/**\n * Converts a Trinity shader stage id into a stable display name.\n *\n * @param {number} stageType Trinity shader stage enum value.\n * @returns {string} Stage name or `\"unknown\"`.\n */\nexport function hlslShaderStageName(stageType)\n{\n return HlslShaderStageNames[stageType] || \"unknown\";\n}\n"],"names":["HlslRenderContextEnum","Object","freeze","VERTEX_SHADER","PIXEL_SHADER","COMPUTE_SHADER","GEOMETRY_SHADER","HULL_SHADER","DOMAIN_SHADER","INVALID_SHADER","SHADER_TYPE_COUNT","CBUFFER_GUI","CBUFFER_COUNT","TEX_TYPE_1D","TEX_TYPE_2D","TEX_TYPE_3D","TEX_TYPE_CUBE","TEX_TYPE_TYPELESS","HlslShaderStageNames","HlslUsageCodeNames","hlslShaderStageName","stageType"],"mappings":"AAAA;AACA;AACA;MACaA,qBAAqB,GAAGC,MAAM,CAACC,MAAM,CAAC;AAC/CC,EAAAA,aAAa,EAAE,CAAC;AAChBC,EAAAA,YAAY,EAAE,CAAC;AACfC,EAAAA,cAAc,EAAE,CAAC;AACjBC,EAAAA,eAAe,EAAE,CAAC;AAClBC,EAAAA,WAAW,EAAE,CAAC;AACdC,EAAAA,aAAa,EAAE,CAAC;AAChBC,EAAAA,cAAc,EAAE,CAAC;AACjBC,EAAAA,iBAAiB,EAAE,CAAC;AACpBC,EAAAA,WAAW,EAAE,CAAC;AACdC,EAAAA,aAAa,EAAE,CAAC;AAEhBC,EAAAA,WAAW,EAAE,CAAC;AACdC,EAAAA,WAAW,EAAE,CAAC;AACdC,EAAAA,WAAW,EAAE,CAAC;AACdC,EAAAA,aAAa,EAAE,CAAC;AAChBC,EAAAA,iBAAiB,EAAE;AACvB,CAAC;;AAED;AACA;AACA;AACO,MAAMC,oBAAoB,GAAGjB,MAAM,CAACC,MAAM,CAAC,CAC9C,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,CACX;;AAED;AACA;AACA;AACO,MAAMiB,kBAAkB,GAAGlB,MAAM,CAACC,MAAM,CAAC,CAC5C,UAAU,EACV,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,CACjB;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,SAASkB,mBAAmBA,CAACC,SAAS,EAC7C;AACI,EAAA,OAAOH,oBAAoB,CAACG,SAAS,CAAC,IAAI,SAAS;AACvD;;;;"}
|