@carbonenginejs/runtime-resource 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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,327 @@
|
|
|
1
|
+
import { emitRenderStates } from './render-states.js';
|
|
2
|
+
import { hlslShaderStageName } from './tr2/HlslRenderContextEnum.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Metadata-only projection for decoded Tr2 effect containers.
|
|
6
|
+
*
|
|
7
|
+
* This keeps the public shader-inspection endpoint small: permutation axes,
|
|
8
|
+
* selected option sets, techniques, passes, stage inputs, constants,
|
|
9
|
+
* resources, UAVs, samplers, pass render states, and signatures. It
|
|
10
|
+
* intentionally omits shader bytecode, constant value bytes, render-state
|
|
11
|
+
* handles, and other runtime renderer state.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Normalize caller-supplied permutation option selections.
|
|
17
|
+
*
|
|
18
|
+
* @param {Array<object>|Map<string, string>|null|undefined} options Option input.
|
|
19
|
+
* @param {string} source Source label for emitted selections.
|
|
20
|
+
* @returns {object[]} Normalized option selections.
|
|
21
|
+
*/
|
|
22
|
+
function normalizeOptionSelections(options, source) {
|
|
23
|
+
if (options instanceof Map) {
|
|
24
|
+
return Array.from(options.entries()).map(([name, value]) => ({
|
|
25
|
+
name,
|
|
26
|
+
value,
|
|
27
|
+
source
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
if (!Array.isArray(options)) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
return options.map(entry => ({
|
|
34
|
+
name: entry?.name || "",
|
|
35
|
+
value: entry?.value || "",
|
|
36
|
+
source
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Emit one permutation axis.
|
|
42
|
+
*
|
|
43
|
+
* @param {object} permutation Decoded permutation axis.
|
|
44
|
+
* @returns {object} Plain metadata.
|
|
45
|
+
*/
|
|
46
|
+
function emitPermutation(permutation) {
|
|
47
|
+
return {
|
|
48
|
+
name: permutation.name,
|
|
49
|
+
options: permutation.options.slice(),
|
|
50
|
+
defaultOption: permutation.defaultOption,
|
|
51
|
+
defaultValue: permutation.options[permutation.defaultOption] ?? null,
|
|
52
|
+
description: permutation.description,
|
|
53
|
+
type: permutation.type
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Resolve the option set that Carbon's `GetShader` lookup will use.
|
|
59
|
+
*
|
|
60
|
+
* @param {object} effect Loaded HlslEffectRes.
|
|
61
|
+
* @param {Array<object>|Map<string, string>|null|undefined} options Local option selections.
|
|
62
|
+
* @returns {{bodyIndex: number, selectedOptions: object[]}} Resolved body index and options.
|
|
63
|
+
*/
|
|
64
|
+
function resolveSelectedOptions(effect, options = null) {
|
|
65
|
+
const localOptions = normalizeOptionSelections(options, "local");
|
|
66
|
+
const globalOptions = normalizeOptionSelections(effect.constructor.globalEffectOptions || [], "global");
|
|
67
|
+
const selectedOptions = [];
|
|
68
|
+
let multiplier = 1;
|
|
69
|
+
let bodyIndex = 0;
|
|
70
|
+
for (const permutation of effect.m_permutations) {
|
|
71
|
+
let optionIndex = permutation.defaultOption;
|
|
72
|
+
let source = "default";
|
|
73
|
+
const globalOption = globalOptions.find(entry => entry.name === permutation.name);
|
|
74
|
+
const localOption = localOptions.find(entry => entry.name === permutation.name);
|
|
75
|
+
const selected = globalOption || localOption;
|
|
76
|
+
if (selected) {
|
|
77
|
+
const selectedIndex = permutation.options.findIndex(option => option === selected.value);
|
|
78
|
+
if (selectedIndex >= 0) {
|
|
79
|
+
optionIndex = selectedIndex;
|
|
80
|
+
source = selected.source;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
selectedOptions.push({
|
|
84
|
+
name: permutation.name,
|
|
85
|
+
value: permutation.options[optionIndex] ?? null,
|
|
86
|
+
optionIndex,
|
|
87
|
+
defaultOption: permutation.defaultOption,
|
|
88
|
+
defaultValue: permutation.options[permutation.defaultOption] ?? null,
|
|
89
|
+
source
|
|
90
|
+
});
|
|
91
|
+
bodyIndex += optionIndex * multiplier;
|
|
92
|
+
multiplier *= permutation.options.length || 1;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
bodyIndex,
|
|
96
|
+
selectedOptions
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Emit one constant-buffer field metadata record.
|
|
102
|
+
*
|
|
103
|
+
* @param {object} constant Decoded constant metadata.
|
|
104
|
+
* @returns {object} Plain metadata.
|
|
105
|
+
*/
|
|
106
|
+
function emitConstant(constant) {
|
|
107
|
+
return {
|
|
108
|
+
name: constant.name,
|
|
109
|
+
offset: constant.offset,
|
|
110
|
+
size: constant.size,
|
|
111
|
+
type: constant.type,
|
|
112
|
+
dimension: constant.dimension,
|
|
113
|
+
elements: constant.elements,
|
|
114
|
+
isSRGB: constant.isSRGB,
|
|
115
|
+
isAutoregister: constant.isAutoregister
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Emit one SRV/UAV metadata record.
|
|
121
|
+
*
|
|
122
|
+
* @param {number} registerIndex Shader register index.
|
|
123
|
+
* @param {object} resource Decoded resource metadata.
|
|
124
|
+
* @returns {object} Plain metadata.
|
|
125
|
+
*/
|
|
126
|
+
function emitResource(registerIndex, resource) {
|
|
127
|
+
return {
|
|
128
|
+
registerIndex,
|
|
129
|
+
name: resource.name,
|
|
130
|
+
type: resource.type,
|
|
131
|
+
arrayElements: resource.arrayElements,
|
|
132
|
+
isSRGB: resource.isSRGB,
|
|
133
|
+
isAutoregister: resource.isAutoregister
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Emit one sampler metadata record.
|
|
139
|
+
*
|
|
140
|
+
* @param {number} registerIndex Shader register index.
|
|
141
|
+
* @param {object} samplerSetup Decoded sampler setup.
|
|
142
|
+
* @returns {object} Plain metadata.
|
|
143
|
+
*/
|
|
144
|
+
function emitSampler(registerIndex, samplerSetup) {
|
|
145
|
+
const sampler = samplerSetup.sampler || {};
|
|
146
|
+
return {
|
|
147
|
+
registerIndex,
|
|
148
|
+
name: samplerSetup.name,
|
|
149
|
+
isDynamic: !!sampler.isDynamic,
|
|
150
|
+
comparison: !!sampler.comparison,
|
|
151
|
+
minFilter: sampler.minFilter,
|
|
152
|
+
magFilter: sampler.magFilter,
|
|
153
|
+
mipFilter: sampler.mipFilter,
|
|
154
|
+
addressU: sampler.addressU,
|
|
155
|
+
addressV: sampler.addressV,
|
|
156
|
+
addressW: sampler.addressW,
|
|
157
|
+
mipLODBias: sampler.mipLODBias,
|
|
158
|
+
maxAnisotropy: sampler.maxAnisotropy,
|
|
159
|
+
comparisonFunc: sampler.comparisonFunc,
|
|
160
|
+
borderColor: (sampler.borderColor || []).slice(),
|
|
161
|
+
minLOD: sampler.minLOD,
|
|
162
|
+
maxLOD: sampler.maxLOD
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Emit one stage or library input.
|
|
168
|
+
*
|
|
169
|
+
* @param {object} stageInput Decoded stage input.
|
|
170
|
+
* @param {number} stageType Trinity shader stage enum.
|
|
171
|
+
* @param {object} [options] Emission options.
|
|
172
|
+
* @param {boolean} [options.requireExists] Whether absent stage inputs emit null.
|
|
173
|
+
* @returns {object|null} Plain metadata, or null for absent pass stages.
|
|
174
|
+
*/
|
|
175
|
+
function emitStageInput(stageInput, stageType, options = {}) {
|
|
176
|
+
const {
|
|
177
|
+
requireExists = true
|
|
178
|
+
} = options;
|
|
179
|
+
if (!stageInput || requireExists && !stageInput.m_exists) return null;
|
|
180
|
+
const signature = stageInput.signature || {};
|
|
181
|
+
return {
|
|
182
|
+
stageType,
|
|
183
|
+
stageName: hlslShaderStageName(stageType),
|
|
184
|
+
constantValueSize: stageInput.m_constantValueSize || 0,
|
|
185
|
+
constants: (stageInput.constants || []).map(emitConstant),
|
|
186
|
+
resources: Array.from(stageInput.resources || [], ([registerIndex, resource]) => emitResource(registerIndex, resource)),
|
|
187
|
+
samplers: Array.from(stageInput.samplers || [], ([registerIndex, sampler]) => emitSampler(registerIndex, sampler)),
|
|
188
|
+
uavs: Array.from(stageInput.uavs || [], ([registerIndex, resource]) => emitResource(registerIndex, resource)),
|
|
189
|
+
annotations: (stageInput.annotation || []).map(entry => entry?.toJSON?.() ?? {
|
|
190
|
+
...entry
|
|
191
|
+
}),
|
|
192
|
+
signature: {
|
|
193
|
+
pipelineInputs: (signature.pipelineInputs || []).map(entry => ({
|
|
194
|
+
...entry
|
|
195
|
+
})),
|
|
196
|
+
registers: (signature.registers || []).map(entry => ({
|
|
197
|
+
...entry
|
|
198
|
+
})),
|
|
199
|
+
samplers: (signature.samplers || []).map(entry => ({
|
|
200
|
+
...entry
|
|
201
|
+
})),
|
|
202
|
+
threadGroupSize: signature.threadGroupSize ? {
|
|
203
|
+
...signature.threadGroupSize
|
|
204
|
+
} : null
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Emit ray-tracing shader-library metadata without bytecode or runtime handles.
|
|
211
|
+
*
|
|
212
|
+
* @param {object} library Decoded shader library.
|
|
213
|
+
* @returns {object} Plain metadata.
|
|
214
|
+
*/
|
|
215
|
+
function emitLibrary(library) {
|
|
216
|
+
return {
|
|
217
|
+
payloadSize: library.payloadSize,
|
|
218
|
+
rayGenName: library.rayGenName,
|
|
219
|
+
missName: library.missName,
|
|
220
|
+
closestHitName: library.closestHitName,
|
|
221
|
+
anyHitName: library.anyHitName,
|
|
222
|
+
intersectionName: library.intersectionName,
|
|
223
|
+
hitGroupName: library.hitGroupName,
|
|
224
|
+
exports: library.exports.map(entry => ({
|
|
225
|
+
...entry
|
|
226
|
+
})),
|
|
227
|
+
globalInput: emitStageInput(library.globalInput, 2, {
|
|
228
|
+
requireExists: false
|
|
229
|
+
}),
|
|
230
|
+
localInput: emitStageInput(library.localInput, 2, {
|
|
231
|
+
requireExists: false
|
|
232
|
+
})
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Emit one pass metadata record.
|
|
238
|
+
*
|
|
239
|
+
* @param {object} pass Decoded pass.
|
|
240
|
+
* @returns {object} Plain metadata.
|
|
241
|
+
*/
|
|
242
|
+
function emitPass(pass) {
|
|
243
|
+
return {
|
|
244
|
+
shaderTypeMask: pass.shaderTypeMask,
|
|
245
|
+
renderStates: emitRenderStates(pass.cjsRenderStateSetup),
|
|
246
|
+
stageInputs: pass.stageInputs.map((stageInput, stageType) => emitStageInput(stageInput, stageType))
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Emit one technique metadata record.
|
|
252
|
+
*
|
|
253
|
+
* @param {object} technique Decoded technique.
|
|
254
|
+
* @returns {object} Plain metadata.
|
|
255
|
+
*/
|
|
256
|
+
function emitTechnique(technique) {
|
|
257
|
+
return {
|
|
258
|
+
name: technique.name,
|
|
259
|
+
shaderTypeMask: technique.shaderTypeMask,
|
|
260
|
+
passes: technique.passes.map(emitPass),
|
|
261
|
+
libraries: technique.libraries.map(emitLibrary)
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Emit one effect-description metadata record.
|
|
267
|
+
*
|
|
268
|
+
* @param {object} description Decoded effect description.
|
|
269
|
+
* @returns {object} Plain metadata.
|
|
270
|
+
*/
|
|
271
|
+
function emitEffectDescription(description) {
|
|
272
|
+
return {
|
|
273
|
+
version: description.version,
|
|
274
|
+
effectName: description.effectName,
|
|
275
|
+
techniques: description.techniques.map(emitTechnique),
|
|
276
|
+
annotations: Array.from(description.annotations.entries(), ([name, entries]) => ({
|
|
277
|
+
name,
|
|
278
|
+
annotations: entries.map(entry => entry?.toJSON?.() ?? {
|
|
279
|
+
...entry
|
|
280
|
+
})
|
|
281
|
+
})),
|
|
282
|
+
readError: description.readError ? {
|
|
283
|
+
name: description.readError.name,
|
|
284
|
+
message: description.readError.message
|
|
285
|
+
} : null
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Emit shared effect header metadata.
|
|
291
|
+
*
|
|
292
|
+
* @param {object} effect Loaded HlslEffectRes.
|
|
293
|
+
* @returns {object} Plain metadata.
|
|
294
|
+
*/
|
|
295
|
+
function emitHeader(effect) {
|
|
296
|
+
return {
|
|
297
|
+
version: effect.m_version,
|
|
298
|
+
compilerVersion: effect.m_compilerVersion,
|
|
299
|
+
sourcePath: effect.sourcePath,
|
|
300
|
+
bodyCount: effect.m_offsetCount,
|
|
301
|
+
permutations: effect.m_permutations.map(emitPermutation),
|
|
302
|
+
loadError: effect.loadError ? {
|
|
303
|
+
name: effect.loadError.name,
|
|
304
|
+
message: effect.loadError.message
|
|
305
|
+
} : null
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Emit metadata for one resolved permutation body.
|
|
311
|
+
*
|
|
312
|
+
* @param {object} effect Loaded HlslEffectRes.
|
|
313
|
+
* @param {object|null} shader Resolved shader, if decoded.
|
|
314
|
+
* @param {{bodyIndex: number, selectedOptions: object[]}} selection Resolved option selection.
|
|
315
|
+
* @returns {object} Plain metadata.
|
|
316
|
+
*/
|
|
317
|
+
function emitEffectMetadata(effect, shader, selection) {
|
|
318
|
+
return {
|
|
319
|
+
...emitHeader(effect),
|
|
320
|
+
bodyIndex: selection.bodyIndex,
|
|
321
|
+
selectedOptions: selection.selectedOptions,
|
|
322
|
+
effect: shader ? emitEffectDescription(shader.GetEffectDescription()) : null
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
export { emitEffectMetadata, resolveSelectedOptions };
|
|
327
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sources":["../../../../../src/formats/hlsl/core/metadata.js"],"sourcesContent":["/**\n * Metadata-only projection for decoded Tr2 effect containers.\n *\n * This keeps the public shader-inspection endpoint small: permutation axes,\n * selected option sets, techniques, passes, stage inputs, constants,\n * resources, UAVs, samplers, pass render states, and signatures. It\n * intentionally omits shader bytecode, constant value bytes, render-state\n * handles, and other runtime renderer state.\n */\n\nimport { emitRenderStates } from \"./render-states.js\";\nimport { hlslShaderStageName } from \"./tr2/HlslRenderContextEnum.js\";\n\n/**\n * Normalize caller-supplied permutation option selections.\n *\n * @param {Array<object>|Map<string, string>|null|undefined} options Option input.\n * @param {string} source Source label for emitted selections.\n * @returns {object[]} Normalized option selections.\n */\nfunction normalizeOptionSelections(options, source)\n{\n if (options instanceof Map)\n {\n return Array.from(options.entries()).map(([ name, value ]) => ({ name, value, source }));\n }\n if (!Array.isArray(options))\n {\n return [];\n }\n return options.map((entry) => ({\n name: entry?.name || \"\",\n value: entry?.value || \"\",\n source\n }));\n}\n\n/**\n * Emit one permutation axis.\n *\n * @param {object} permutation Decoded permutation axis.\n * @returns {object} Plain metadata.\n */\nfunction emitPermutation(permutation)\n{\n return {\n name: permutation.name,\n options: permutation.options.slice(),\n defaultOption: permutation.defaultOption,\n defaultValue: permutation.options[permutation.defaultOption] ?? null,\n description: permutation.description,\n type: permutation.type\n };\n}\n\n/**\n * Resolve the option set that Carbon's `GetShader` lookup will use.\n *\n * @param {object} effect Loaded HlslEffectRes.\n * @param {Array<object>|Map<string, string>|null|undefined} options Local option selections.\n * @returns {{bodyIndex: number, selectedOptions: object[]}} Resolved body index and options.\n */\nexport function resolveSelectedOptions(effect, options = null)\n{\n const localOptions = normalizeOptionSelections(options, \"local\");\n const globalOptions = normalizeOptionSelections(effect.constructor.globalEffectOptions || [], \"global\");\n const selectedOptions = [];\n let multiplier = 1;\n let bodyIndex = 0;\n\n for (const permutation of effect.m_permutations)\n {\n let optionIndex = permutation.defaultOption;\n let source = \"default\";\n const globalOption = globalOptions.find((entry) => entry.name === permutation.name);\n const localOption = localOptions.find((entry) => entry.name === permutation.name);\n const selected = globalOption || localOption;\n\n if (selected)\n {\n const selectedIndex = permutation.options.findIndex((option) => option === selected.value);\n if (selectedIndex >= 0)\n {\n optionIndex = selectedIndex;\n source = selected.source;\n }\n }\n\n selectedOptions.push({\n name: permutation.name,\n value: permutation.options[optionIndex] ?? null,\n optionIndex,\n defaultOption: permutation.defaultOption,\n defaultValue: permutation.options[permutation.defaultOption] ?? null,\n source\n });\n\n bodyIndex += optionIndex * multiplier;\n multiplier *= permutation.options.length || 1;\n }\n\n return { bodyIndex, selectedOptions };\n}\n\n/**\n * Emit one constant-buffer field metadata record.\n *\n * @param {object} constant Decoded constant metadata.\n * @returns {object} Plain metadata.\n */\nfunction emitConstant(constant)\n{\n return {\n name: 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}\n\n/**\n * Emit one SRV/UAV metadata record.\n *\n * @param {number} registerIndex Shader register index.\n * @param {object} resource Decoded resource metadata.\n * @returns {object} Plain metadata.\n */\nfunction emitResource(registerIndex, resource)\n{\n return {\n registerIndex,\n name: resource.name,\n type: resource.type,\n arrayElements: resource.arrayElements,\n isSRGB: resource.isSRGB,\n isAutoregister: resource.isAutoregister\n };\n}\n\n/**\n * Emit one sampler metadata record.\n *\n * @param {number} registerIndex Shader register index.\n * @param {object} samplerSetup Decoded sampler setup.\n * @returns {object} Plain metadata.\n */\nfunction emitSampler(registerIndex, samplerSetup)\n{\n const sampler = samplerSetup.sampler || {};\n return {\n registerIndex,\n name: samplerSetup.name,\n isDynamic: !!sampler.isDynamic,\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 mipLODBias: sampler.mipLODBias,\n maxAnisotropy: sampler.maxAnisotropy,\n comparisonFunc: sampler.comparisonFunc,\n borderColor: (sampler.borderColor || []).slice(),\n minLOD: sampler.minLOD,\n maxLOD: sampler.maxLOD\n };\n}\n\n/**\n * Emit one stage or library input.\n *\n * @param {object} stageInput Decoded stage input.\n * @param {number} stageType Trinity shader stage enum.\n * @param {object} [options] Emission options.\n * @param {boolean} [options.requireExists] Whether absent stage inputs emit null.\n * @returns {object|null} Plain metadata, or null for absent pass stages.\n */\nfunction emitStageInput(stageInput, stageType, options = {})\n{\n const { requireExists = true } = options;\n if (!stageInput || (requireExists && !stageInput.m_exists)) return null;\n\n const signature = stageInput.signature || {};\n\n return {\n stageType,\n stageName: hlslShaderStageName(stageType),\n constantValueSize: stageInput.m_constantValueSize || 0,\n constants: (stageInput.constants || []).map(emitConstant),\n resources: Array.from(\n stageInput.resources || [],\n ([ registerIndex, resource ]) => emitResource(registerIndex, resource)\n ),\n samplers: Array.from(\n stageInput.samplers || [],\n ([ registerIndex, sampler ]) => emitSampler(registerIndex, sampler)\n ),\n uavs: Array.from(\n stageInput.uavs || [],\n ([ registerIndex, resource ]) => emitResource(registerIndex, resource)\n ),\n annotations: (stageInput.annotation || []).map((entry) => entry?.toJSON?.() ?? { ...entry }),\n signature: {\n pipelineInputs: (signature.pipelineInputs || []).map((entry) => ({ ...entry })),\n registers: (signature.registers || []).map((entry) => ({ ...entry })),\n samplers: (signature.samplers || []).map((entry) => ({ ...entry })),\n threadGroupSize: signature.threadGroupSize ? { ...signature.threadGroupSize } : null\n }\n };\n}\n\n/**\n * Emit ray-tracing shader-library metadata without bytecode or runtime handles.\n *\n * @param {object} library Decoded shader library.\n * @returns {object} Plain metadata.\n */\nfunction emitLibrary(library)\n{\n return {\n payloadSize: library.payloadSize,\n rayGenName: library.rayGenName,\n missName: library.missName,\n closestHitName: library.closestHitName,\n anyHitName: library.anyHitName,\n intersectionName: library.intersectionName,\n hitGroupName: library.hitGroupName,\n exports: library.exports.map((entry) => ({ ...entry })),\n globalInput: emitStageInput(library.globalInput, 2, { requireExists: false }),\n localInput: emitStageInput(library.localInput, 2, { requireExists: false })\n };\n}\n\n/**\n * Emit one pass metadata record.\n *\n * @param {object} pass Decoded pass.\n * @returns {object} Plain metadata.\n */\nfunction emitPass(pass)\n{\n return {\n shaderTypeMask: pass.shaderTypeMask,\n renderStates: emitRenderStates(pass.cjsRenderStateSetup),\n stageInputs: pass.stageInputs.map((stageInput, stageType) => emitStageInput(stageInput, stageType))\n };\n}\n\n/**\n * Emit one technique metadata record.\n *\n * @param {object} technique Decoded technique.\n * @returns {object} Plain metadata.\n */\nfunction emitTechnique(technique)\n{\n return {\n name: technique.name,\n shaderTypeMask: technique.shaderTypeMask,\n passes: technique.passes.map(emitPass),\n libraries: technique.libraries.map(emitLibrary)\n };\n}\n\n/**\n * Emit one effect-description metadata record.\n *\n * @param {object} description Decoded effect description.\n * @returns {object} Plain metadata.\n */\nfunction emitEffectDescription(description)\n{\n return {\n version: description.version,\n effectName: description.effectName,\n techniques: description.techniques.map(emitTechnique),\n annotations: Array.from(description.annotations.entries(), ([ name, entries ]) => ({\n name,\n annotations: entries.map((entry) => entry?.toJSON?.() ?? { ...entry })\n })),\n readError: description.readError\n ? { name: description.readError.name, message: description.readError.message }\n : null\n };\n}\n\n/**\n * Emit shared effect header metadata.\n *\n * @param {object} effect Loaded HlslEffectRes.\n * @returns {object} Plain metadata.\n */\nfunction emitHeader(effect)\n{\n return {\n version: effect.m_version,\n compilerVersion: effect.m_compilerVersion,\n sourcePath: effect.sourcePath,\n bodyCount: effect.m_offsetCount,\n permutations: effect.m_permutations.map(emitPermutation),\n loadError: effect.loadError ? { name: effect.loadError.name, message: effect.loadError.message } : null\n };\n}\n\n/**\n * Emit metadata for one resolved permutation body.\n *\n * @param {object} effect Loaded HlslEffectRes.\n * @param {object|null} shader Resolved shader, if decoded.\n * @param {{bodyIndex: number, selectedOptions: object[]}} selection Resolved option selection.\n * @returns {object} Plain metadata.\n */\nexport function emitEffectMetadata(effect, shader, selection)\n{\n return {\n ...emitHeader(effect),\n bodyIndex: selection.bodyIndex,\n selectedOptions: selection.selectedOptions,\n effect: shader ? emitEffectDescription(shader.GetEffectDescription()) : null\n };\n}\n"],"names":["normalizeOptionSelections","options","source","Map","Array","from","entries","map","name","value","isArray","entry","emitPermutation","permutation","slice","defaultOption","defaultValue","description","type","resolveSelectedOptions","effect","localOptions","globalOptions","constructor","globalEffectOptions","selectedOptions","multiplier","bodyIndex","m_permutations","optionIndex","globalOption","find","localOption","selected","selectedIndex","findIndex","option","push","length","emitConstant","constant","offset","size","dimension","elements","isSRGB","isAutoregister","emitResource","registerIndex","resource","arrayElements","emitSampler","samplerSetup","sampler","isDynamic","comparison","minFilter","magFilter","mipFilter","addressU","addressV","addressW","mipLODBias","maxAnisotropy","comparisonFunc","borderColor","minLOD","maxLOD","emitStageInput","stageInput","stageType","requireExists","m_exists","signature","stageName","hlslShaderStageName","constantValueSize","m_constantValueSize","constants","resources","samplers","uavs","annotations","annotation","toJSON","pipelineInputs","registers","threadGroupSize","emitLibrary","library","payloadSize","rayGenName","missName","closestHitName","anyHitName","intersectionName","hitGroupName","exports","globalInput","localInput","emitPass","pass","shaderTypeMask","renderStates","emitRenderStates","cjsRenderStateSetup","stageInputs","emitTechnique","technique","passes","libraries","emitEffectDescription","version","effectName","techniques","readError","message","emitHeader","m_version","compilerVersion","m_compilerVersion","sourcePath","bodyCount","m_offsetCount","permutations","loadError","emitEffectMetadata","shader","selection","GetEffectDescription"],"mappings":"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"}
|