@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.
Files changed (254) hide show
  1. package/dist/format/effect/effectPermutationGraph.js +257 -0
  2. package/dist/format/effect/effectPermutationGraph.js.map +1 -0
  3. package/dist/format/effect/effectReflectionPackage.js +636 -0
  4. package/dist/format/effect/effectReflectionPackage.js.map +1 -0
  5. package/dist/format/effect/sha256.js +114 -0
  6. package/dist/format/effect/sha256.js.map +1 -0
  7. package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
  8. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
  9. package/dist/formats/dxbc/core/DxbcReader.js +266 -0
  10. package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
  11. package/dist/formats/dxbc/core/container.js +169 -0
  12. package/dist/formats/dxbc/core/container.js.map +1 -0
  13. package/dist/formats/dxbc/core/decoder.js +789 -0
  14. package/dist/formats/dxbc/core/decoder.js.map +1 -0
  15. package/dist/formats/dxbc/core/errors.js +19 -0
  16. package/dist/formats/dxbc/core/errors.js.map +1 -0
  17. package/dist/formats/dxbc/core/helpers.js +220 -0
  18. package/dist/formats/dxbc/core/helpers.js.map +1 -0
  19. package/dist/formats/dxbc/core/opcodes.js +45 -0
  20. package/dist/formats/dxbc/core/opcodes.js.map +1 -0
  21. package/dist/formats/dxbc/core/program.js +91 -0
  22. package/dist/formats/dxbc/core/program.js.map +1 -0
  23. package/dist/formats/dxbc/core/signature.js +172 -0
  24. package/dist/formats/dxbc/core/signature.js.map +1 -0
  25. package/dist/formats/dxbc/index.js +2 -0
  26. package/dist/formats/dxbc/index.js.map +1 -0
  27. package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
  28. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
  29. package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
  30. package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
  31. package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
  32. package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
  33. package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
  34. package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
  35. package/dist/formats/hlsl/core/HlslReader.js +266 -0
  36. package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
  37. package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
  38. package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
  39. package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
  40. package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
  41. package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
  42. package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
  43. package/dist/formats/hlsl/core/analysis.js +51 -0
  44. package/dist/formats/hlsl/core/analysis.js.map +1 -0
  45. package/dist/formats/hlsl/core/helpers.js +270 -0
  46. package/dist/formats/hlsl/core/helpers.js.map +1 -0
  47. package/dist/formats/hlsl/core/json.js +284 -0
  48. package/dist/formats/hlsl/core/json.js.map +1 -0
  49. package/dist/formats/hlsl/core/metadata.js +327 -0
  50. package/dist/formats/hlsl/core/metadata.js.map +1 -0
  51. package/dist/formats/hlsl/core/portableReflection.js +848 -0
  52. package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
  53. package/dist/formats/hlsl/core/render-states.js +280 -0
  54. package/dist/formats/hlsl/core/render-states.js.map +1 -0
  55. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
  56. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
  57. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
  58. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
  59. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
  60. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
  61. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
  62. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
  63. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
  64. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
  65. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
  66. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
  67. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
  68. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
  69. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
  70. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
  71. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
  72. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
  73. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
  74. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
  75. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
  76. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
  77. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
  78. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
  79. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
  80. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
  81. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
  82. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
  83. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
  84. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
  85. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
  86. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
  87. package/dist/formats/hlsl/index.js +2 -0
  88. package/dist/formats/hlsl/index.js.map +1 -0
  89. package/dist/formats/hlsl/portable.js +2 -0
  90. package/dist/formats/hlsl/portable.js.map +1 -0
  91. package/dist/formats/index.js +4 -0
  92. package/dist/formats/index.js.map +1 -1
  93. package/dist/formats/webgl/CjsWebglFormat.js +221 -0
  94. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
  95. package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
  96. package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
  97. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
  98. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
  99. package/dist/formats/webgl/core/cewg/binary.js +101 -0
  100. package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
  101. package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
  102. package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
  103. package/dist/formats/webgl/core/effectPackage.js +789 -0
  104. package/dist/formats/webgl/core/effectPackage.js.map +1 -0
  105. package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
  106. package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
  107. package/dist/formats/webgl/core/errors.js +27 -0
  108. package/dist/formats/webgl/core/errors.js.map +1 -0
  109. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
  110. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
  111. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
  112. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
  113. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
  114. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
  115. package/dist/formats/webgl/core/helpers.js +306 -0
  116. package/dist/formats/webgl/core/helpers.js.map +1 -0
  117. package/dist/formats/webgl/index.js +2 -0
  118. package/dist/formats/webgl/index.js.map +1 -0
  119. package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
  120. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
  121. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
  122. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
  123. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
  124. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
  125. package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
  126. package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
  127. package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
  128. package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
  129. package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
  130. package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
  131. package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
  132. package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
  133. package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
  134. package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
  135. package/dist/formats/webgpu/core/errors.js +20 -0
  136. package/dist/formats/webgpu/core/errors.js.map +1 -0
  137. package/dist/formats/webgpu/core/helpers.js +448 -0
  138. package/dist/formats/webgpu/core/helpers.js.map +1 -0
  139. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
  140. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
  141. package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
  142. package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
  143. package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
  144. package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
  145. package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
  146. package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
  147. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
  148. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
  149. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
  150. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
  151. package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
  152. package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
  153. package/dist/formats/webgpu/core/packageEffect.js +300 -0
  154. package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
  155. package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
  156. package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
  157. package/dist/formats/webgpu/core/packageMetadata.js +8 -0
  158. package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
  159. package/dist/formats/webgpu/core/schema.js +4 -0
  160. package/dist/formats/webgpu/core/schema.js.map +1 -0
  161. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
  162. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
  163. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
  164. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
  165. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
  166. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
  167. package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
  168. package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
  169. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
  170. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
  171. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
  172. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
  173. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
  174. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
  175. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
  176. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
  177. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
  178. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
  179. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
  180. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
  181. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
  182. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
  183. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
  184. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
  185. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
  186. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
  187. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
  188. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
  189. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
  190. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
  191. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
  192. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
  193. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
  194. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
  195. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
  196. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
  197. package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
  198. package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
  199. package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
  200. package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
  201. package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
  202. package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
  203. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
  204. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
  205. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
  206. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
  207. package/dist/formats/webgpu/index.js +2 -0
  208. package/dist/formats/webgpu/index.js.map +1 -0
  209. package/dist/resource/shader/Tr2EffectRes.js +159 -150
  210. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  211. package/dist/resource/shader/Tr2MaterialArea.js +23 -28
  212. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
  213. package/dist/resource/shader/Tr2MaterialMesh.js +21 -27
  214. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
  215. package/dist/resource/shader/Tr2MaterialRes.js +24 -29
  216. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
  217. package/dist/resource/shader/Tr2Shader.js +45 -39
  218. package/dist/resource/shader/Tr2Shader.js.map +1 -1
  219. package/dist/resource/shader/Tr2ShaderPermutation.js +30 -32
  220. package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -1
  221. package/dist/resource/shader/reflection/Tr2EffectConstant.js +113 -78
  222. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  223. package/dist/resource/shader/reflection/Tr2EffectDefine.js +17 -23
  224. package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -1
  225. package/dist/resource/shader/reflection/Tr2EffectDescription.js +23 -29
  226. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  227. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +44 -40
  228. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  229. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +82 -86
  230. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  231. package/dist/resource/shader/reflection/Tr2EffectResource.js +55 -61
  232. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  233. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +49 -45
  234. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  235. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +25 -30
  236. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  237. package/dist/resource/shader/reflection/Tr2Pass.js +30 -32
  238. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  239. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +21 -26
  240. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  241. package/docs/formats/README.md +4 -0
  242. package/docs/formats/provenance.md +11 -3
  243. package/docs/reference/classes/formats.md +440 -0
  244. package/format-notices/dxbc/LICENSE +21 -0
  245. package/format-notices/dxbc/NOTICE +20 -0
  246. package/format-notices/hlsl/LICENSE +21 -0
  247. package/format-notices/hlsl/NOTICE +25 -0
  248. package/format-notices/webgl/LICENSE +21 -0
  249. package/format-notices/webgl/NOTICE +35 -0
  250. package/format-notices/webgpu/LICENSE +21 -0
  251. package/format-notices/webgpu/NOTICE +31 -0
  252. package/package.json +6 -1
  253. package/dist/resource/shader/portableValidation.js +0 -461
  254. package/dist/resource/shader/portableValidation.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslEffectDescription.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslEffectDescription.js"],"sourcesContent":["import { HlslReader } from \"../../HlslReader.js\";\nimport { asUint8Array } from \"@carbonenginejs/runtime-utils/bytes\";\nimport { cjsUint32ToFloat32 } from \"../../HlslBinaryUtils.js\";\nimport { HlslRenderStateSetup } from \"../../HlslRenderStateSetup.js\";\nimport { HlslResourceSetDescription } from \"../../HlslResourceSetDescription.js\";\nimport { HlslShaderBytecode } from \"../../HlslShaderBytecode.js\";\nimport {\n HlslRenderContextEnum,\n HlslUsageCodeNames,\n hlslShaderStageName\n} from \"../HlslRenderContextEnum.js\";\nimport { HlslEffectConstant } from \"./HlslEffectConstant.js\";\nimport { HlslEffectLibrary } from \"./HlslEffectLibrary.js\";\nimport { HlslEffectParameterAnnotation } from \"./HlslEffectParameterAnnotation.js\";\nimport { HlslEffectResource } from \"./HlslEffectResource.js\";\nimport { HlslEffectStageInput } from \"./HlslEffectStageInput.js\";\nimport { HlslEffectTechnique } from \"./HlslEffectTechnique.js\";\nimport { HlslPass } from \"./HlslPass.js\";\nimport { HlslSamplerDescription } from \"./HlslSamplerDescription.js\";\nimport { HlslSamplerSetup } from \"./HlslSamplerSetup.js\";\n\nexport const DEFAULT_TECHNIQUE = \"Main\";\nexport const ANY_TECHNIQUE = \"\";\n\n/**\n * Trinity effect-description body decoded from one compiled permutation record.\n */\nexport class HlslEffectDescription\n{\n /**\n * Creates an empty decoded effect description.\n */\n constructor()\n {\n this.techniques = [];\n this.annotations = new Map();\n this.version = 0;\n this.effectName = \"\";\n this.readError = null;\n this.effectStateManager = null;\n }\n\n /**\n * Reads a compiled effect body using the shared string table from `HlslEffectRes`.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} data Effect body bytes.\n * @param {number} dataSize Valid byte size of the effect body.\n * @param {number} version Carbon effect data version.\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} stringTable Shared effect string table.\n * @param {number} stringTableSize Valid string-table byte count.\n * @param {string} effectName Source effect name or path.\n * @param {object} [options] Reader options and dependency overrides.\n * @returns {boolean} True when the body was decoded successfully.\n */\n Read(data, dataSize, version, stringTable, stringTableSize, effectName, options = {})\n {\n this.techniques = [];\n this.annotations = new Map();\n this.version = Number(version) || 0;\n this.effectName = effectName || \"\";\n this.readError = null;\n this.effectStateManager = options.effectStateManager || options.renderContext?.m_esm || null;\n\n try\n {\n const bodyBytes = asUint8Array(data).subarray(0, Number(dataSize) || 0);\n const tableBytes = asUint8Array(stringTable).subarray(0, Number(stringTableSize) || 0);\n const stream = new HlslReader(bodyBytes, {\n stringTable: tableBytes,\n stringTableSize: tableBytes.length,\n source: effectName || \"HlslEffectDescription\"\n });\n const context = createReadContext(options, this.effectStateManager);\n this.effectStateManager = context.effectStateManager;\n\n let techniqueCount = 1;\n if (version > 6)\n {\n techniqueCount = stream.readUint8();\n }\n\n for (let techniqueIndex = 0; techniqueIndex < techniqueCount; techniqueIndex += 1)\n {\n const technique = new HlslEffectTechnique();\n technique.name = version > 6 ? stream.readString() : DEFAULT_TECHNIQUE;\n technique.shaderTypeMask = 0;\n\n const passCount = sanityCheck(stream.readUint8(), 64, \"pass count\");\n for (let passIndex = 0; passIndex < passCount; passIndex += 1)\n {\n const pass = readPass(stream, version, effectName || \"\", context);\n technique.passes.push(pass);\n technique.shaderTypeMask |= pass.shaderTypeMask;\n }\n\n if (version > 13)\n {\n const libraryCount = stream.readUint8();\n for (let libraryIndex = 0; libraryIndex < libraryCount; libraryIndex += 1)\n {\n technique.libraries.push(readLibrary(stream, version, context));\n }\n }\n\n this.techniques.push(technique);\n }\n\n const parameterCount = sanityCheck(stream.readUint16(), 256, \"parameter annotation count\");\n for (let parameterIndex = 0; parameterIndex < parameterCount; parameterIndex += 1)\n {\n const name = stream.readString();\n if (this.annotations.has(name))\n {\n throw new Error(`Duplicate effect parameter annotation group ${name}`);\n }\n this.annotations.set(name, readAnnotations(stream));\n }\n\n applyHeapViewAnnotations(this, context);\n return true;\n }\n catch (error)\n {\n this.readError = error;\n this.techniques = [];\n this.annotations = new Map();\n return false;\n }\n }\n\n /**\n * Returns a JSON-safe summary of decoded techniques and annotations.\n *\n * @returns {object} Serializable effect-description summary.\n */\n toJSON()\n {\n return {\n version: this.version,\n effectName: this.effectName,\n techniques: this.techniques.map((entry) => entry.toJSON()),\n annotations: mapAnnotationToJson(this.annotations),\n readError: this.readError ? {\n name: this.readError.name,\n message: this.readError.message,\n details: this.readError.details || null\n } : null\n };\n }\n}\n\n/**\n * Builds the shared parser context used while reading one effect body.\n *\n * @param {object} options Reader options from `Read`.\n * @param {object|null} effectStateManager Effect-state registry override.\n * @returns {object} Parser context.\n */\nfunction createReadContext(options, effectStateManager)\n{\n return {\n effectStateManager,\n perFrameVSStartRegister: Number.isInteger(options.perFrameVSStartRegister)\n ? options.perFrameVSStartRegister\n : null,\n perFramePSStartRegister: Number.isInteger(options.perFramePSStartRegister)\n ? options.perFramePSStartRegister\n : null\n };\n}\n\n/**\n * Reads one technique pass, including shader stages, signatures, resources, and states.\n *\n * @param {HlslReader} stream Binary reader positioned at a pass record.\n * @param {number} version Carbon effect data version.\n * @param {string} effectName Source effect name or path.\n * @param {object} context Shared parser context.\n * @returns {HlslPass} Decoded pass.\n */\nfunction readPass(stream, version, effectName, context)\n{\n const pass = new HlslPass();\n const shaderTypes = [];\n const signatures = [];\n const shaderHandles = [];\n const stageCount = sanityCheck(stream.readUint8(), HlslRenderContextEnum.SHADER_TYPE_COUNT, \"stage count\");\n\n for (let stageIndex = 0; stageIndex < stageCount; stageIndex += 1)\n {\n const stageType = stream.readUint8();\n if (stageType >= HlslRenderContextEnum.SHADER_TYPE_COUNT\n || pass.stageInputs[stageType]?.m_exists)\n {\n throw new Error(`Duplicate or invalid shader stage type ${stageType}`);\n }\n const stageInput = pass.stageInputs[stageType] || new HlslEffectStageInput();\n pass.stageInputs[stageType] = stageInput;\n pass.shaderTypeMask |= 1 << stageType;\n stageInput.m_exists = true;\n\n if (version < 14)\n {\n readPipelineInputs(stageInput.signature.pipelineInputs, stream, version);\n if (version > 8)\n {\n readRegisters(stageInput.signature, stream, version, stageType, context);\n }\n }\n\n const shaderSize = stream.readUint32();\n let shaderBlob;\n if (version < 5)\n {\n shaderBlob = {\n offset: null,\n bytes: stream.readRaw(shaderSize)\n };\n stream.readRaw(stream.readUint32());\n }\n else\n {\n shaderBlob = stream.readTableBlob(shaderSize);\n if (version < 12)\n {\n stream.readUint32();\n stream.readUint32();\n }\n }\n\n if (version >= 3)\n {\n stageInput.signature.threadGroupSize = {\n x: stream.readUint32(),\n y: stream.readUint32(),\n z: stream.readUint32()\n };\n }\n\n if (version >= 14)\n {\n readPipelineInputs(stageInput.signature.pipelineInputs, stream, version);\n readRegisters(stageInput.signature, stream, version, stageType, context);\n }\n\n readInput(stageInput, stream, version, stageType, context);\n\n const bytecode = new HlslShaderBytecode({\n stageType,\n stageName: hlslShaderStageName(stageType),\n bytes: shaderBlob.bytes,\n shaderSize,\n stringTableOffset: shaderBlob.offset,\n effectName\n });\n stageInput.cjsShaderBytecode = bytecode;\n stageInput.m_shader = context.effectStateManager.RegisterShader(stageType, bytecode, stageInput.signature, effectName);\n shaderHandles[stageIndex] = stageInput.m_shader;\n shaderTypes.push(stageType);\n signatures.push(stageInput.signature);\n }\n\n pass.resourceSetDesc = new HlslResourceSetDescription(shaderTypes, signatures);\n for (let stageType = 0; stageType < HlslRenderContextEnum.SHADER_TYPE_COUNT; stageType += 1)\n {\n const stageInput = pass.stageInputs[stageType];\n if (!stageInput?.m_exists) continue;\n for (const [ registerIndex, sampler ] of stageInput.samplers.entries())\n {\n pass.resourceSetDesc.SetSampler(stageType, registerIndex, sampler.sampler);\n }\n }\n\n pass.shaderProgram = context.effectStateManager.RegisterShaderProgram(shaderHandles, stageCount);\n\n const stateCount = sanityCheck(stream.readUint8(), 64, \"render state count\");\n const states = new Map();\n for (let stateIndex = 0; stateIndex < stateCount; stateIndex += 1)\n {\n const state = stream.readUint32();\n const value = stream.readUint32();\n if (states.has(state))\n {\n throw new Error(`Duplicate render state ${state}`);\n }\n states.set(state, value);\n }\n pass.cjsRenderStateSetup = new HlslRenderStateSetup(states);\n pass.renderStates = context.effectStateManager.RegisterRenderStateSetup(pass.cjsRenderStateSetup);\n\n return pass;\n}\n\n/**\n * Reads one ray-tracing shader library block from v14+ effect data.\n *\n * @param {HlslReader} stream Binary reader positioned at a library record.\n * @param {number} version Carbon effect data version.\n * @param {object} context Shared parser context.\n * @returns {HlslEffectLibrary} Decoded library metadata.\n */\nfunction readLibrary(stream, version, context)\n{\n const library = new HlslEffectLibrary();\n library.payloadSize = stream.readUint32();\n const bytecodeSize = stream.readUint32();\n const bytecodeBlob = stream.readTableBlob(bytecodeSize);\n library.cjsShaderBytecode = new HlslShaderBytecode({\n stageType: HlslRenderContextEnum.COMPUTE_SHADER,\n stageName: \"library\",\n bytes: bytecodeBlob.bytes,\n shaderSize: bytecodeSize,\n stringTableOffset: bytecodeBlob.offset\n });\n library.libraryHandle = context.effectStateManager.RegisterShaderLibrary(\n library.cjsShaderBytecode\n );\n\n const exportCount = stream.readUint32();\n for (let exportIndex = 0; exportIndex < exportCount; exportIndex += 1)\n {\n const type = stream.readUint8();\n const name = stream.readString();\n library.exports.push({ type, name });\n if (type === 0) library.rayGenName = name;\n if (type === 1) library.missName = name;\n if (type === 2) library.closestHitName = name;\n if (type === 3) library.anyHitName = name;\n if (type === 4) library.intersectionName = name;\n }\n library.hitGroupName = stream.readString();\n\n const shaderType = HlslRenderContextEnum.COMPUTE_SHADER;\n readRegisters(library.globalInput.signature, stream, version, shaderType, context);\n readInput(library.globalInput, stream, version, shaderType, context);\n library.globalResourceSetDesc = new HlslResourceSetDescription([ shaderType ], [ library.globalInput.signature ]);\n for (const [ registerIndex, sampler ] of library.globalInput.samplers.entries())\n {\n library.globalResourceSetDesc.SetSampler(shaderType, registerIndex, sampler.sampler);\n }\n\n readRegisters(library.localInput.signature, stream, version, shaderType, context);\n readInput(library.localInput, stream, version, shaderType, context);\n\n return library;\n}\n\n/**\n * Reads constants, resources, samplers, UAVs, and annotations for one shader input.\n *\n * @param {HlslEffectStageInput} input Stage or library input to populate.\n * @param {HlslReader} stream Binary reader positioned at an input record.\n * @param {number} version Carbon effect data version.\n * @param {number} stageType Trinity shader stage enum value.\n * @param {object} context Shared parser context.\n */\nfunction readInput(input, stream, version, stageType, context)\n{\n const constantCount = stream.readUint32();\n input.constants = [];\n for (let constantIndex = 0; constantIndex < constantCount; constantIndex += 1)\n {\n input.constants.push(readConstant(stream, version));\n }\n\n const constantValueSize = stream.readUint32();\n input.sourceConstantValueSize = constantValueSize;\n let sourceConstantValues;\n if (version < 5)\n {\n sourceConstantValues = constantValueSize\n ? stream.readRaw(constantValueSize)\n : new Uint8Array(0);\n }\n else\n {\n const blob = stream.readTableBlobOptional(constantValueSize);\n sourceConstantValues = blob.bytes;\n }\n input.sourceConstantValues = Uint8Array.from(sourceConstantValues);\n input.m_constantValueSize = Math.min(\n constantValueSize,\n HlslEffectStageInput.SHADER_CONSTANTS_MAX\n );\n input.constantValues = input.sourceConstantValues.slice(0, input.m_constantValueSize);\n\n const textureCount = sanityCheck(stream.readUint8(), 64, \"texture count\");\n input.resources = new Map();\n for (let textureIndex = 0; textureIndex < textureCount; textureIndex += 1)\n {\n const registerIndex = stream.readUint8();\n if (input.resources.has(registerIndex))\n {\n throw new Error(`Duplicate resource register ${registerIndex}`);\n }\n input.resources.set(registerIndex, readResource(stream, version));\n }\n\n const samplerCount = sanityCheck(stream.readUint8(), 64, \"sampler count\");\n input.samplers = new Map();\n for (let samplerIndex = 0; samplerIndex < samplerCount; samplerIndex += 1)\n {\n const registerIndex = stream.readUint8();\n const samplerSetup = new HlslSamplerSetup();\n samplerSetup.name = version >= 4 ? stream.readString() : null;\n samplerSetup.sampler = readSampler(stream);\n if (version < 4)\n {\n stream.readBool();\n }\n if (version > 12)\n {\n samplerSetup.sampler.isDynamic = stream.readBool();\n if (!samplerSetup.sampler.isDynamic)\n {\n samplerSetup.name = null;\n }\n }\n if (input.samplers.has(registerIndex))\n {\n throw new Error(`Duplicate sampler register ${registerIndex}`);\n }\n input.samplers.set(registerIndex, samplerSetup);\n }\n\n if (version >= 3)\n {\n const uavCount = sanityCheck(stream.readUint8(), 64, \"uav count\");\n input.uavs = new Map();\n for (let uavIndex = 0; uavIndex < uavCount; uavIndex += 1)\n {\n const registerIndex = stream.readUint8();\n const resource = new HlslEffectResource();\n resource.isSRGB = false;\n resource.name = stream.readString();\n resource.type = stream.readUint8();\n resource.arrayElements = version >= 13 ? stream.readUint32() : 1;\n resource.isAutoregister = stream.readBool();\n if (input.uavs.has(registerIndex))\n {\n throw new Error(`Duplicate UAV register ${registerIndex}`);\n }\n input.uavs.set(registerIndex, resource);\n }\n\n if (version >= 8)\n {\n input.annotation = readAnnotations(stream);\n }\n }\n\n for (const constant of input.constants)\n {\n patchSamplerHeapIndexConstant(input, constant, context, stageType);\n }\n}\n\n/**\n * Reads a vector of parameter annotations from the effect stream.\n *\n * @param {HlslReader} stream Binary reader positioned at an annotation vector.\n * @returns {HlslEffectParameterAnnotation[]} Decoded annotations.\n */\nfunction readAnnotations(stream)\n{\n const annotations = [];\n const annotationCount = stream.readUint8();\n for (let annotationIndex = 0; annotationIndex < annotationCount; annotationIndex += 1)\n {\n const annotation = new HlslEffectParameterAnnotation();\n annotation.name = stream.readString();\n annotation.type = stream.readUint8();\n\n if (annotation.type === HlslEffectParameterAnnotation.Type.STRING)\n {\n annotation.stringValue = stream.readString();\n }\n else\n {\n annotation.rawValue = stream.readUint32();\n annotation.boolValue = annotation.rawValue !== 0;\n annotation.intValue = annotation.rawValue | 0;\n annotation.floatValue = cjsUint32ToFloat32(annotation.rawValue);\n }\n annotations.push(annotation);\n }\n return annotations;\n}\n\n/**\n * Reads one constant-buffer metadata record.\n *\n * @param {HlslReader} stream Binary reader positioned at a constant record.\n * @param {number} version Carbon effect data version.\n * @returns {HlslEffectConstant} Decoded constant metadata.\n */\nfunction readConstant(stream, version)\n{\n const constant = new HlslEffectConstant();\n constant.name = stream.readString();\n constant.offset = stream.readUint32();\n constant.size = stream.readUint32();\n if (version < 11)\n {\n const oldType = stream.readUint8();\n if (oldType === 0) constant.type = HlslEffectConstant.Type.FLOAT;\n else if (oldType === 1) constant.type = HlslEffectConstant.Type.INT;\n else if (oldType === 2) constant.type = HlslEffectConstant.Type.BOOL;\n else constant.type = HlslEffectConstant.Type.OTHER;\n }\n else\n {\n constant.type = stream.readUint8();\n }\n constant.dimension = stream.readUint8();\n constant.elements = stream.readUint32();\n constant.isSRGB = stream.readBool();\n constant.isAutoregister = stream.readBool();\n return constant;\n}\n\n/**\n * Reads one shader resource metadata record.\n *\n * @param {HlslReader} stream Binary reader positioned at a resource record.\n * @param {number} version Carbon effect data version.\n * @returns {HlslEffectResource} Decoded resource metadata.\n */\nfunction readResource(stream, version)\n{\n const resource = new HlslEffectResource();\n resource.name = stream.readString();\n resource.type = stream.readUint8();\n resource.arrayElements = version >= 13 ? stream.readUint32() : 1;\n resource.isSRGB = stream.readBool();\n resource.isAutoregister = stream.readBool();\n return resource;\n}\n\n/**\n * Reads one static or dynamic sampler descriptor.\n *\n * @param {HlslReader} stream Binary reader positioned at a sampler descriptor.\n * @returns {HlslSamplerDescription} Decoded sampler descriptor.\n */\nfunction readSampler(stream)\n{\n const sampler = new HlslSamplerDescription();\n sampler.comparison = stream.readBool();\n sampler.minFilter = stream.readUint8();\n sampler.magFilter = stream.readUint8();\n sampler.mipFilter = stream.readUint8();\n sampler.addressU = stream.readUint8();\n sampler.addressV = stream.readUint8();\n sampler.addressW = stream.readUint8();\n const mipLODBias = readFloat32WithBits(stream);\n sampler.mipLODBias = mipLODBias.value;\n sampler.mipLODBiasRaw = mipLODBias.rawValue;\n sampler.maxAnisotropy = stream.readUint8();\n sampler.comparisonFunc = stream.readUint8();\n const borderColor = Array.from({ length: 4 }, () => readFloat32WithBits(stream));\n sampler.borderColor = borderColor.map((entry) => entry.value);\n sampler.borderColorRaw = borderColor.map((entry) => entry.rawValue);\n const minLOD = readFloat32WithBits(stream);\n sampler.minLOD = minLOD.value;\n sampler.minLODRaw = minLOD.rawValue;\n const maxLOD = readFloat32WithBits(stream);\n sampler.maxLOD = maxLOD.value;\n sampler.maxLODRaw = maxLOD.rawValue;\n return sampler;\n}\n\n/**\n * Reads vertex/input-layout signature records for one shader stage.\n *\n * @param {object[]} pipelineInputs Destination pipeline-input array.\n * @param {HlslReader} stream Binary reader positioned at the input list.\n * @param {number} version Carbon effect data version.\n */\nfunction readPipelineInputs(pipelineInputs, stream, version)\n{\n const inputCount = sanityCheck(stream.readUint8(), 64, \"pipeline input count\");\n pipelineInputs.length = 0;\n for (let inputIndex = 0; inputIndex < inputCount; inputIndex += 1)\n {\n const usage = stream.readUint8();\n const registerIndex = stream.readUint8();\n const usageIndex = stream.readUint8();\n const usedMask = stream.readUint8();\n const input = {\n usage,\n usageName: HlslUsageCodeNames[usage] || `USAGE_${usage}`,\n registerIndex,\n usageIndex,\n usedMask,\n type: 0,\n dimension: 4\n };\n if (version > 10)\n {\n input.type = stream.readUint8();\n input.dimension = stream.readUint8();\n }\n else\n {\n input.type = usage === 6 ? HlslEffectConstant.Type.UINT : HlslEffectConstant.Type.FLOAT;\n input.dimension = 4;\n }\n pipelineInputs.push(input);\n }\n}\n\n/**\n * Reads resource-register signatures and static sampler signatures for one stage.\n *\n * @param {object} signature Stage signature object to populate.\n * @param {HlslReader} stream Binary reader positioned at the register list.\n * @param {number} version Carbon effect data version.\n * @param {number} stageType Trinity shader stage enum value.\n * @param {object} context Shared parser context.\n */\nfunction readRegisters(signature, stream, version, stageType, context)\n{\n let inputCount = stream.readUint8();\n signature.registers = [];\n for (let inputIndex = 0; inputIndex < inputCount; inputIndex += 1)\n {\n const register = {};\n if (version > 9)\n {\n register.registerType = stream.readUint8();\n }\n else\n {\n register.registerType = mapOldRegisterType(stream.readUint8());\n }\n register.registerIndex = stream.readUint32();\n if (version > 12)\n {\n register.arrayCount = stream.readUint32();\n register.registerCount = register.arrayCount;\n register.registerSpace = stream.readUint8();\n }\n else\n {\n register.arrayCount = 1;\n register.registerCount = 1;\n register.registerSpace = stageType;\n }\n register.dynamic = isRegisterDynamic(register, stageType, context);\n signature.registers.push(register);\n }\n\n if (version > 12)\n {\n inputCount = stream.readUint8();\n signature.samplers = [];\n for (let inputIndex = 0; inputIndex < inputCount; inputIndex += 1)\n {\n signature.samplers.push(readStaticSampler(stream));\n }\n }\n}\n\n/**\n * Reads one static sampler signature entry from v13+ effect data.\n *\n * @param {HlslReader} stream Binary reader positioned at a static sampler record.\n * @returns {object} Decoded static sampler entry.\n */\nfunction readStaticSampler(stream)\n{\n const record = {\n registerIndex: stream.readUint32(),\n registerSpace: stream.readUint8(),\n sampler: {\n comparison: stream.readBool(),\n minFilter: stream.readUint8(),\n magFilter: stream.readUint8(),\n mipFilter: stream.readUint8(),\n addressU: stream.readUint8(),\n addressV: stream.readUint8(),\n addressW: stream.readUint8(),\n mipLODBias: 0,\n maxAnisotropy: 0,\n comparisonFunc: 0,\n borderColor: 0,\n minLOD: 0,\n maxLOD: 0\n }\n };\n Object.defineProperties(record.sampler, {\n mipLODBiasRaw: { value: 0, writable: true },\n minLODRaw: { value: 0, writable: true },\n maxLODRaw: { value: 0, writable: true }\n });\n const mipLODBias = readFloat32WithBits(stream);\n record.sampler.mipLODBias = mipLODBias.value;\n record.sampler.mipLODBiasRaw = mipLODBias.rawValue;\n record.sampler.maxAnisotropy = stream.readUint8();\n record.sampler.comparisonFunc = stream.readUint8();\n record.sampler.borderColor = stream.readUint8();\n const minLOD = readFloat32WithBits(stream);\n record.sampler.minLOD = minLOD.value;\n record.sampler.minLODRaw = minLOD.rawValue;\n const maxLOD = readFloat32WithBits(stream);\n record.sampler.maxLOD = maxLOD.value;\n record.sampler.maxLODRaw = maxLOD.rawValue;\n return record;\n}\n\n/**\n * Reads one float while preserving its exact serialized IEEE-754 bits.\n *\n * @param {HlslReader} stream Binary reader positioned at a float.\n * @returns {{value:number,rawValue:number}} Decoded value and raw uint32 bits.\n */\nfunction readFloat32WithBits(stream)\n{\n const rawValue = stream.readUint32();\n return {\n value: cjsUint32ToFloat32(rawValue),\n rawValue\n };\n}\n\n/**\n * Maps pre-v10 register type ids to Carbon's newer register type values.\n *\n * @param {number} value Legacy register type id.\n * @returns {number} Modern register type value.\n */\nfunction mapOldRegisterType(value)\n{\n if (value === 0) return 0;\n if (value === 1) return 36;\n if (value === 2) return 68;\n if (value === 3) return 1;\n return 36;\n}\n\n/**\n * Determines whether a resource register is dynamic for the current stage.\n *\n * @param {object} register Register signature metadata.\n * @param {number} stageType Trinity shader stage enum value.\n * @param {object} context Shared parser context.\n * @returns {boolean} True when the register should be treated as dynamic.\n */\nfunction isRegisterDynamic(register, stageType, context)\n{\n if (register.registerType !== 0)\n {\n return true;\n }\n if (stageType === HlslRenderContextEnum.VERTEX_SHADER && register.registerIndex === context.perFrameVSStartRegister)\n {\n return false;\n }\n if (stageType === HlslRenderContextEnum.PIXEL_SHADER && register.registerIndex === context.perFramePSStartRegister)\n {\n return false;\n }\n return true;\n}\n\n/**\n * Ensures sampler heap-index constants have enough backing constant data.\n *\n * @param {HlslEffectStageInput} input Stage input containing samplers and constants.\n * @param {HlslEffectConstant} constant Constant metadata to compare with sampler names.\n */\nfunction patchSamplerHeapIndexConstant(input, constant)\n{\n if (constant.type !== HlslEffectConstant.Type.UINT || constant.dimension !== 1)\n {\n return;\n }\n for (const sampler of input.samplers.values())\n {\n if (sampler.name !== constant.name) continue;\n const neededSize = constant.offset + constant.size;\n if (neededSize > input.m_constantValueSize)\n {\n const next = new Uint8Array(neededSize);\n next.set(input.constantValues);\n input.constantValues = next;\n input.m_constantValueSize = neededSize;\n }\n break;\n }\n}\n\n/**\n * Applies `IsHeapView` parameter annotations to resource-set descriptions.\n *\n * @param {HlslEffectDescription} effectDescription Fully read effect description.\n */\nfunction applyHeapViewAnnotations(effectDescription)\n{\n const isHeapView = (name) =>\n {\n if (!name) return false;\n const annotations = effectDescription.annotations.get(name) || [];\n return annotations.some((annotation) =>\n annotation.name === \"IsHeapView\" &&\n annotation.type === HlslEffectParameterAnnotation.Type.BOOL &&\n annotation.boolValue\n );\n };\n\n for (const technique of effectDescription.techniques)\n {\n for (const library of technique.libraries)\n {\n const shaderType = HlslRenderContextEnum.COMPUTE_SHADER;\n for (const [ registerIndex, resource ] of library.globalInput.resources.entries())\n {\n if (isHeapView(resource.name)) library.globalResourceSetDesc?.SetSrvHeapView(shaderType, registerIndex);\n }\n for (const [ registerIndex, resource ] of library.globalInput.uavs.entries())\n {\n if (isHeapView(resource.name)) library.globalResourceSetDesc?.SetUavHeapView(shaderType, registerIndex);\n }\n for (const [ registerIndex, sampler ] of library.globalInput.samplers.entries())\n {\n if (isHeapView(sampler.name)) library.globalResourceSetDesc?.SetSamplerHeapView(shaderType, registerIndex);\n }\n }\n\n for (const pass of technique.passes)\n {\n for (let stageType = 0; stageType < pass.stageInputs.length; stageType += 1)\n {\n const stage = pass.stageInputs[stageType];\n if (!stage?.m_exists) continue;\n for (const [ registerIndex, resource ] of stage.resources.entries())\n {\n if (isHeapView(resource.name)) pass.resourceSetDesc?.SetSrvHeapView(stageType, registerIndex);\n }\n for (const [ registerIndex, resource ] of stage.uavs.entries())\n {\n if (isHeapView(resource.name)) pass.resourceSetDesc?.SetUavHeapView(stageType, registerIndex);\n }\n for (const [ registerIndex, sampler ] of stage.samplers.entries())\n {\n if (isHeapView(sampler.name)) pass.resourceSetDesc?.SetSamplerHeapView(stageType, registerIndex);\n }\n }\n }\n }\n}\n\n/**\n * Rejects unexpectedly large counts before allocating or iterating.\n *\n * @param {number} value Count read from the effect stream.\n * @param {number} limit Maximum expected count.\n * @param {string} label Name used in the thrown error.\n * @returns {number} The original value when it is within range.\n */\nfunction sanityCheck(value, limit, label)\n{\n if (value > limit)\n {\n throw new Error(`Unexpected ${label}: ${value}`);\n }\n return value;\n}\n\n/**\n * Serializes a map of parameter names to annotation arrays.\n *\n * @param {Map<string, HlslEffectParameterAnnotation[]>} map Annotation map.\n * @returns {object[]} JSON-safe annotation groups.\n */\nfunction mapAnnotationToJson(map)\n{\n return Array.from(map.entries()).map(([ name, annotations ]) => ({\n name,\n annotations: annotations.map((entry) => entry.toJSON())\n }));\n}\n"],"names":["DEFAULT_TECHNIQUE","ANY_TECHNIQUE","HlslEffectDescription","constructor","techniques","annotations","Map","version","effectName","readError","effectStateManager","Read","data","dataSize","stringTable","stringTableSize","options","Number","renderContext","m_esm","bodyBytes","asUint8Array","subarray","tableBytes","stream","HlslReader","length","source","context","createReadContext","techniqueCount","readUint8","techniqueIndex","technique","HlslEffectTechnique","name","readString","shaderTypeMask","passCount","sanityCheck","passIndex","pass","readPass","passes","push","libraryCount","libraryIndex","libraries","readLibrary","parameterCount","readUint16","parameterIndex","has","Error","set","readAnnotations","applyHeapViewAnnotations","error","toJSON","map","entry","mapAnnotationToJson","message","details","perFrameVSStartRegister","isInteger","perFramePSStartRegister","HlslPass","shaderTypes","signatures","shaderHandles","stageCount","HlslRenderContextEnum","SHADER_TYPE_COUNT","stageIndex","stageType","stageInputs","m_exists","stageInput","HlslEffectStageInput","readPipelineInputs","signature","pipelineInputs","readRegisters","shaderSize","readUint32","shaderBlob","offset","bytes","readRaw","readTableBlob","threadGroupSize","x","y","z","readInput","bytecode","HlslShaderBytecode","stageName","hlslShaderStageName","stringTableOffset","cjsShaderBytecode","m_shader","RegisterShader","resourceSetDesc","HlslResourceSetDescription","registerIndex","sampler","samplers","entries","SetSampler","shaderProgram","RegisterShaderProgram","stateCount","states","stateIndex","state","value","cjsRenderStateSetup","HlslRenderStateSetup","renderStates","RegisterRenderStateSetup","library","HlslEffectLibrary","payloadSize","bytecodeSize","bytecodeBlob","COMPUTE_SHADER","libraryHandle","RegisterShaderLibrary","exportCount","exportIndex","type","exports","rayGenName","missName","closestHitName","anyHitName","intersectionName","hitGroupName","shaderType","globalInput","globalResourceSetDesc","localInput","input","constantCount","constants","constantIndex","readConstant","constantValueSize","sourceConstantValueSize","sourceConstantValues","Uint8Array","blob","readTableBlobOptional","from","m_constantValueSize","Math","min","SHADER_CONSTANTS_MAX","constantValues","slice","textureCount","resources","textureIndex","readResource","samplerCount","samplerIndex","samplerSetup","HlslSamplerSetup","readSampler","readBool","isDynamic","uavCount","uavs","uavIndex","resource","HlslEffectResource","isSRGB","arrayElements","isAutoregister","annotation","constant","patchSamplerHeapIndexConstant","annotationCount","annotationIndex","HlslEffectParameterAnnotation","Type","STRING","stringValue","rawValue","boolValue","intValue","floatValue","cjsUint32ToFloat32","HlslEffectConstant","size","oldType","FLOAT","INT","BOOL","OTHER","dimension","elements","HlslSamplerDescription","comparison","minFilter","magFilter","mipFilter","addressU","addressV","addressW","mipLODBias","readFloat32WithBits","mipLODBiasRaw","maxAnisotropy","comparisonFunc","borderColor","Array","borderColorRaw","minLOD","minLODRaw","maxLOD","maxLODRaw","inputCount","inputIndex","usage","usageIndex","usedMask","usageName","HlslUsageCodeNames","UINT","registers","register","registerType","mapOldRegisterType","arrayCount","registerCount","registerSpace","dynamic","isRegisterDynamic","readStaticSampler","record","Object","defineProperties","writable","VERTEX_SHADER","PIXEL_SHADER","values","neededSize","next","effectDescription","isHeapView","get","some","SetSrvHeapView","SetUavHeapView","SetSamplerHeapView","stage","limit","label"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { HlslEffectStageInput } from './HlslEffectStageInput.js';
2
+
3
+ /**
4
+ * Ray-tracing shader library metadata from v14+ Trinity effects.
5
+ */
6
+ class HlslEffectLibrary {
7
+ /**
8
+ * Creates an empty shader-library metadata record.
9
+ */
10
+ constructor() {
11
+ this.payloadSize = 0;
12
+ this.libraryHandle = 0;
13
+ this.rayGenName = "";
14
+ this.missName = "";
15
+ this.closestHitName = "";
16
+ this.anyHitName = "";
17
+ this.intersectionName = "";
18
+ this.hitGroupName = "";
19
+ this.exports = [];
20
+ this.globalInput = new HlslEffectStageInput();
21
+ this.localInput = new HlslEffectStageInput();
22
+ this.globalResourceSetDesc = null;
23
+ this.cjsShaderBytecode = null;
24
+ }
25
+
26
+ /**
27
+ * Returns a JSON-safe shader-library metadata snapshot.
28
+ *
29
+ * @returns {object} Serializable shader-library metadata.
30
+ */
31
+ toJSON() {
32
+ return {
33
+ payloadSize: this.payloadSize,
34
+ libraryHandle: this.libraryHandle,
35
+ rayGenName: this.rayGenName,
36
+ missName: this.missName,
37
+ closestHitName: this.closestHitName,
38
+ anyHitName: this.anyHitName,
39
+ intersectionName: this.intersectionName,
40
+ hitGroupName: this.hitGroupName,
41
+ exports: this.exports.map(entry => ({
42
+ ...entry
43
+ })),
44
+ globalInput: this.globalInput.toJSON(),
45
+ localInput: this.localInput.toJSON(),
46
+ globalResourceSetDesc: this.globalResourceSetDesc?.toJSON?.() ?? this.globalResourceSetDesc
47
+ };
48
+ }
49
+ }
50
+
51
+ export { HlslEffectLibrary };
52
+ //# sourceMappingURL=HlslEffectLibrary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslEffectLibrary.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js"],"sourcesContent":["import { HlslEffectStageInput } from \"./HlslEffectStageInput.js\";\n\n/**\n * Ray-tracing shader library metadata from v14+ Trinity effects.\n */\nexport class HlslEffectLibrary\n{\n /**\n * Creates an empty shader-library metadata record.\n */\n constructor()\n {\n this.payloadSize = 0;\n this.libraryHandle = 0;\n this.rayGenName = \"\";\n this.missName = \"\";\n this.closestHitName = \"\";\n this.anyHitName = \"\";\n this.intersectionName = \"\";\n this.hitGroupName = \"\";\n this.exports = [];\n this.globalInput = new HlslEffectStageInput();\n this.localInput = new HlslEffectStageInput();\n this.globalResourceSetDesc = null;\n this.cjsShaderBytecode = null;\n }\n\n /**\n * Returns a JSON-safe shader-library metadata snapshot.\n *\n * @returns {object} Serializable shader-library metadata.\n */\n toJSON()\n {\n return {\n payloadSize: this.payloadSize,\n libraryHandle: this.libraryHandle,\n rayGenName: this.rayGenName,\n missName: this.missName,\n closestHitName: this.closestHitName,\n anyHitName: this.anyHitName,\n intersectionName: this.intersectionName,\n hitGroupName: this.hitGroupName,\n exports: this.exports.map((entry) => ({ ...entry })),\n globalInput: this.globalInput.toJSON(),\n localInput: this.localInput.toJSON(),\n globalResourceSetDesc: this.globalResourceSetDesc?.toJSON?.() ?? this.globalResourceSetDesc\n };\n }\n}\n"],"names":["HlslEffectLibrary","constructor","payloadSize","libraryHandle","rayGenName","missName","closestHitName","anyHitName","intersectionName","hitGroupName","exports","globalInput","HlslEffectStageInput","localInput","globalResourceSetDesc","cjsShaderBytecode","toJSON","map","entry"],"mappings":";;AAEA;AACA;AACA;AACO,MAAMA,iBAAiB,CAC9B;AACI;AACJ;AACA;AACIC,EAAAA,WAAWA,GACX;IACI,IAAI,CAACC,WAAW,GAAG,CAAC;IACpB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACC,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,QAAQ,GAAG,EAAE;IAClB,IAAI,CAACC,cAAc,GAAG,EAAE;IACxB,IAAI,CAACC,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,gBAAgB,GAAG,EAAE;IAC1B,IAAI,CAACC,YAAY,GAAG,EAAE;IACtB,IAAI,CAACC,OAAO,GAAG,EAAE;AACjB,IAAA,IAAI,CAACC,WAAW,GAAG,IAAIC,oBAAoB,EAAE;AAC7C,IAAA,IAAI,CAACC,UAAU,GAAG,IAAID,oBAAoB,EAAE;IAC5C,IAAI,CAACE,qBAAqB,GAAG,IAAI;IACjC,IAAI,CAACC,iBAAiB,GAAG,IAAI;AACjC,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;MACHd,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BC,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCC,YAAY,EAAE,IAAI,CAACA,YAAY;MAC/BC,OAAO,EAAE,IAAI,CAACA,OAAO,CAACO,GAAG,CAAEC,KAAK,KAAM;QAAE,GAAGA;AAAM,OAAC,CAAC,CAAC;AACpDP,MAAAA,WAAW,EAAE,IAAI,CAACA,WAAW,CAACK,MAAM,EAAE;AACtCH,MAAAA,UAAU,EAAE,IAAI,CAACA,UAAU,CAACG,MAAM,EAAE;MACpCF,qBAAqB,EAAE,IAAI,CAACA,qBAAqB,EAAEE,MAAM,IAAI,IAAI,IAAI,CAACF;KACzE;AACL,EAAA;AACJ;;;;"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Parameter annotation value attached to a Trinity effect parameter.
3
+ */
4
+ class HlslEffectParameterAnnotation {
5
+ static Type = Object.freeze({
6
+ BOOL: 0,
7
+ INT: 1,
8
+ FLOAT: 2,
9
+ STRING: 3
10
+ });
11
+
12
+ /**
13
+ * Creates an empty string annotation record.
14
+ */
15
+ constructor() {
16
+ this.name = "";
17
+ this.type = HlslEffectParameterAnnotation.Type.STRING;
18
+ this.boolValue = false;
19
+ this.intValue = 0;
20
+ this.floatValue = 0;
21
+ this.stringValue = "";
22
+ this.rawValue = 0;
23
+ }
24
+
25
+ /**
26
+ * Returns a JSON-safe annotation snapshot.
27
+ *
28
+ * @returns {object} Serializable annotation metadata.
29
+ */
30
+ toJSON() {
31
+ return {
32
+ ...this
33
+ };
34
+ }
35
+ }
36
+
37
+ export { HlslEffectParameterAnnotation };
38
+ //# sourceMappingURL=HlslEffectParameterAnnotation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslEffectParameterAnnotation.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js"],"sourcesContent":["/**\n * Parameter annotation value attached to a Trinity effect parameter.\n */\nexport class HlslEffectParameterAnnotation\n{\n static Type = Object.freeze({\n BOOL: 0,\n INT: 1,\n FLOAT: 2,\n STRING: 3\n });\n\n /**\n * Creates an empty string annotation record.\n */\n constructor()\n {\n this.name = \"\";\n this.type = HlslEffectParameterAnnotation.Type.STRING;\n this.boolValue = false;\n this.intValue = 0;\n this.floatValue = 0;\n this.stringValue = \"\";\n this.rawValue = 0;\n }\n\n /**\n * Returns a JSON-safe annotation snapshot.\n *\n * @returns {object} Serializable annotation metadata.\n */\n toJSON()\n {\n return { ...this };\n }\n}\n"],"names":["HlslEffectParameterAnnotation","Type","Object","freeze","BOOL","INT","FLOAT","STRING","constructor","name","type","boolValue","intValue","floatValue","stringValue","rawValue","toJSON"],"mappings":"AAAA;AACA;AACA;AACO,MAAMA,6BAA6B,CAC1C;AACI,EAAA,OAAOC,IAAI,GAAGC,MAAM,CAACC,MAAM,CAAC;AACxBC,IAAAA,IAAI,EAAE,CAAC;AACPC,IAAAA,GAAG,EAAE,CAAC;AACNC,IAAAA,KAAK,EAAE,CAAC;AACRC,IAAAA,MAAM,EAAE;AACZ,GAAC,CAAC;;AAEF;AACJ;AACA;AACIC,EAAAA,WAAWA,GACX;IACI,IAAI,CAACC,IAAI,GAAG,EAAE;AACd,IAAA,IAAI,CAACC,IAAI,GAAGV,6BAA6B,CAACC,IAAI,CAACM,MAAM;IACrD,IAAI,CAACI,SAAS,GAAG,KAAK;IACtB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,WAAW,GAAG,EAAE;IACrB,IAAI,CAACC,QAAQ,GAAG,CAAC;AACrB,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;MAAE,GAAG;KAAM;AACtB,EAAA;AACJ;;;;"}
@@ -0,0 +1,50 @@
1
+ import { HlslRenderContextEnum } from '../HlslRenderContextEnum.js';
2
+
3
+ /**
4
+ * Shader resource or UAV metadata read from a Trinity effect body.
5
+ */
6
+ class HlslEffectResource {
7
+ static Type = Object.freeze({
8
+ TEXTURE_1D: HlslRenderContextEnum.TEX_TYPE_1D,
9
+ TEXTURE_2D: HlslRenderContextEnum.TEX_TYPE_2D,
10
+ TEXTURE_3D: HlslRenderContextEnum.TEX_TYPE_3D,
11
+ TEXTURE_CUBE: HlslRenderContextEnum.TEX_TYPE_CUBE,
12
+ TEXTURE_TYPELESS: HlslRenderContextEnum.TEX_TYPE_TYPELESS,
13
+ BUFFER: 6,
14
+ STRUCTURED_BUFFER: 7,
15
+ TBUFFER: 8,
16
+ BYTEADDRESS_BUFFER: 9,
17
+ UAV_RWTYPED: 10,
18
+ UAV_RWSTRUCTURED: 11,
19
+ UAV_RWBYTEADDRESS: 12,
20
+ UAV_APPEND_STRUCTURED: 13,
21
+ UAV_CONSUME_STRUCTURED: 14,
22
+ UAV_RWSTRUCTURED_WITH_COUNTER: 15,
23
+ BINDLESS_SAMPLER: 100
24
+ });
25
+
26
+ /**
27
+ * Creates an empty shader resource record with Carbon-compatible defaults.
28
+ */
29
+ constructor() {
30
+ this.name = "";
31
+ this.type = HlslEffectResource.Type.TEXTURE_2D;
32
+ this.arrayElements = 1;
33
+ this.isSRGB = false;
34
+ this.isAutoregister = false;
35
+ }
36
+
37
+ /**
38
+ * Returns a JSON-safe resource metadata snapshot.
39
+ *
40
+ * @returns {object} Serializable resource metadata.
41
+ */
42
+ toJSON() {
43
+ return {
44
+ ...this
45
+ };
46
+ }
47
+ }
48
+
49
+ export { HlslEffectResource };
50
+ //# sourceMappingURL=HlslEffectResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslEffectResource.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslEffectResource.js"],"sourcesContent":["import { HlslRenderContextEnum } from \"../HlslRenderContextEnum.js\";\n\n/**\n * Shader resource or UAV metadata read from a Trinity effect body.\n */\nexport class HlslEffectResource\n{\n static Type = Object.freeze({\n TEXTURE_1D: HlslRenderContextEnum.TEX_TYPE_1D,\n TEXTURE_2D: HlslRenderContextEnum.TEX_TYPE_2D,\n TEXTURE_3D: HlslRenderContextEnum.TEX_TYPE_3D,\n TEXTURE_CUBE: HlslRenderContextEnum.TEX_TYPE_CUBE,\n TEXTURE_TYPELESS: HlslRenderContextEnum.TEX_TYPE_TYPELESS,\n BUFFER: 6,\n STRUCTURED_BUFFER: 7,\n TBUFFER: 8,\n BYTEADDRESS_BUFFER: 9,\n UAV_RWTYPED: 10,\n UAV_RWSTRUCTURED: 11,\n UAV_RWBYTEADDRESS: 12,\n UAV_APPEND_STRUCTURED: 13,\n UAV_CONSUME_STRUCTURED: 14,\n UAV_RWSTRUCTURED_WITH_COUNTER: 15,\n BINDLESS_SAMPLER: 100\n });\n\n /**\n * Creates an empty shader resource record with Carbon-compatible defaults.\n */\n constructor()\n {\n this.name = \"\";\n this.type = HlslEffectResource.Type.TEXTURE_2D;\n this.arrayElements = 1;\n this.isSRGB = false;\n this.isAutoregister = false;\n }\n\n /**\n * Returns a JSON-safe resource metadata snapshot.\n *\n * @returns {object} Serializable resource metadata.\n */\n toJSON()\n {\n return { ...this };\n }\n}\n"],"names":["HlslEffectResource","Type","Object","freeze","TEXTURE_1D","HlslRenderContextEnum","TEX_TYPE_1D","TEXTURE_2D","TEX_TYPE_2D","TEXTURE_3D","TEX_TYPE_3D","TEXTURE_CUBE","TEX_TYPE_CUBE","TEXTURE_TYPELESS","TEX_TYPE_TYPELESS","BUFFER","STRUCTURED_BUFFER","TBUFFER","BYTEADDRESS_BUFFER","UAV_RWTYPED","UAV_RWSTRUCTURED","UAV_RWBYTEADDRESS","UAV_APPEND_STRUCTURED","UAV_CONSUME_STRUCTURED","UAV_RWSTRUCTURED_WITH_COUNTER","BINDLESS_SAMPLER","constructor","name","type","arrayElements","isSRGB","isAutoregister","toJSON"],"mappings":";;AAEA;AACA;AACA;AACO,MAAMA,kBAAkB,CAC/B;AACI,EAAA,OAAOC,IAAI,GAAGC,MAAM,CAACC,MAAM,CAAC;IACxBC,UAAU,EAAEC,qBAAqB,CAACC,WAAW;IAC7CC,UAAU,EAAEF,qBAAqB,CAACG,WAAW;IAC7CC,UAAU,EAAEJ,qBAAqB,CAACK,WAAW;IAC7CC,YAAY,EAAEN,qBAAqB,CAACO,aAAa;IACjDC,gBAAgB,EAAER,qBAAqB,CAACS,iBAAiB;AACzDC,IAAAA,MAAM,EAAE,CAAC;AACTC,IAAAA,iBAAiB,EAAE,CAAC;AACpBC,IAAAA,OAAO,EAAE,CAAC;AACVC,IAAAA,kBAAkB,EAAE,CAAC;AACrBC,IAAAA,WAAW,EAAE,EAAE;AACfC,IAAAA,gBAAgB,EAAE,EAAE;AACpBC,IAAAA,iBAAiB,EAAE,EAAE;AACrBC,IAAAA,qBAAqB,EAAE,EAAE;AACzBC,IAAAA,sBAAsB,EAAE,EAAE;AAC1BC,IAAAA,6BAA6B,EAAE,EAAE;AACjCC,IAAAA,gBAAgB,EAAE;AACtB,GAAC,CAAC;;AAEF;AACJ;AACA;AACIC,EAAAA,WAAWA,GACX;IACI,IAAI,CAACC,IAAI,GAAG,EAAE;AACd,IAAA,IAAI,CAACC,IAAI,GAAG5B,kBAAkB,CAACC,IAAI,CAACM,UAAU;IAC9C,IAAI,CAACsB,aAAa,GAAG,CAAC;IACtB,IAAI,CAACC,MAAM,GAAG,KAAK;IACnB,IAAI,CAACC,cAAc,GAAG,KAAK;AAC/B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;MAAE,GAAG;KAAM;AACtB,EAAA;AACJ;;;;"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Decoded per-stage input metadata for constants, resources, samplers, and signatures.
3
+ */
4
+ class HlslEffectStageInput {
5
+ static INVALID = 0xffffffff;
6
+ static SHADER_CONSTANTS_MAX = 256 * 16;
7
+
8
+ /**
9
+ * Creates an empty stage input record.
10
+ */
11
+ constructor() {
12
+ this.m_exists = false;
13
+ this.resources = new Map();
14
+ this.uavs = new Map();
15
+ this.samplers = new Map();
16
+ this.m_shader = HlslEffectStageInput.INVALID;
17
+ this.constants = [];
18
+ this.m_constantValueSize = 0;
19
+ this.constantValues = new Uint8Array(0);
20
+ this.sourceConstantValueSize = 0;
21
+ this.sourceConstantValues = new Uint8Array(0);
22
+ this.signature = {
23
+ pipelineInputs: [],
24
+ registers: [],
25
+ samplers: [],
26
+ threadGroupSize: {
27
+ x: 0,
28
+ y: 0,
29
+ z: 0
30
+ }
31
+ };
32
+ this.annotation = [];
33
+ this.cjsShaderBytecode = null;
34
+ }
35
+
36
+ /**
37
+ * Returns a JSON-safe stage input metadata snapshot.
38
+ *
39
+ * @returns {object} Serializable stage input metadata.
40
+ */
41
+ toJSON() {
42
+ return {
43
+ m_exists: this.m_exists,
44
+ resources: mapToJson(this.resources),
45
+ uavs: mapToJson(this.uavs),
46
+ samplers: mapToJson(this.samplers),
47
+ m_shader: this.m_shader,
48
+ constants: this.constants.map(entry => entry?.toJSON?.() ?? entry),
49
+ m_constantValueSize: this.m_constantValueSize,
50
+ constantValues: Array.from(this.constantValues),
51
+ signature: cloneJson(this.signature),
52
+ annotation: this.annotation.map(entry => entry?.toJSON?.() ?? entry),
53
+ cjsShaderBytecode: this.cjsShaderBytecode?.toJSON?.() ?? this.cjsShaderBytecode
54
+ };
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Serializes a register-indexed metadata map.
60
+ *
61
+ * @param {Map<number, object>} map Register-indexed map.
62
+ * @returns {object[]} JSON-safe register/value records.
63
+ */
64
+ function mapToJson(map) {
65
+ return Array.from(map.entries()).map(([registerIndex, value]) => ({
66
+ registerIndex,
67
+ value: value?.toJSON?.() ?? value
68
+ }));
69
+ }
70
+
71
+ /**
72
+ * Deep-clones plain JSON-like structures used in effect signatures.
73
+ *
74
+ * @param {*} value Value to clone.
75
+ * @returns {*} JSON-like clone.
76
+ */
77
+ function cloneJson(value) {
78
+ if (Array.isArray(value)) return value.map(cloneJson);
79
+ if (value && typeof value === "object") {
80
+ return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, cloneJson(entry)]));
81
+ }
82
+ return value;
83
+ }
84
+
85
+ export { HlslEffectStageInput };
86
+ //# sourceMappingURL=HlslEffectStageInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslEffectStageInput.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js"],"sourcesContent":["/**\n * Decoded per-stage input metadata for constants, resources, samplers, and signatures.\n */\nexport class HlslEffectStageInput\n{\n static INVALID = 0xffffffff;\n static SHADER_CONSTANTS_MAX = 256 * 16;\n\n /**\n * Creates an empty stage input record.\n */\n constructor()\n {\n this.m_exists = false;\n this.resources = new Map();\n this.uavs = new Map();\n this.samplers = new Map();\n this.m_shader = HlslEffectStageInput.INVALID;\n this.constants = [];\n this.m_constantValueSize = 0;\n this.constantValues = new Uint8Array(0);\n this.sourceConstantValueSize = 0;\n this.sourceConstantValues = new Uint8Array(0);\n this.signature = {\n pipelineInputs: [],\n registers: [],\n samplers: [],\n threadGroupSize: { x: 0, y: 0, z: 0 }\n };\n this.annotation = [];\n this.cjsShaderBytecode = null;\n }\n\n /**\n * Returns a JSON-safe stage input metadata snapshot.\n *\n * @returns {object} Serializable stage input metadata.\n */\n toJSON()\n {\n return {\n m_exists: this.m_exists,\n resources: mapToJson(this.resources),\n uavs: mapToJson(this.uavs),\n samplers: mapToJson(this.samplers),\n m_shader: this.m_shader,\n constants: this.constants.map((entry) => entry?.toJSON?.() ?? entry),\n m_constantValueSize: this.m_constantValueSize,\n constantValues: Array.from(this.constantValues),\n signature: cloneJson(this.signature),\n annotation: this.annotation.map((entry) => entry?.toJSON?.() ?? entry),\n cjsShaderBytecode: this.cjsShaderBytecode?.toJSON?.() ?? this.cjsShaderBytecode\n };\n }\n}\n\n/**\n * Serializes a register-indexed metadata map.\n *\n * @param {Map<number, object>} map Register-indexed map.\n * @returns {object[]} JSON-safe register/value records.\n */\nfunction mapToJson(map)\n{\n return Array.from(map.entries()).map(([ registerIndex, value ]) => ({\n registerIndex,\n value: value?.toJSON?.() ?? value\n }));\n}\n\n/**\n * Deep-clones plain JSON-like structures used in effect signatures.\n *\n * @param {*} value Value to clone.\n * @returns {*} JSON-like clone.\n */\nfunction cloneJson(value)\n{\n if (Array.isArray(value)) return value.map(cloneJson);\n if (value && typeof value === \"object\")\n {\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [ key, cloneJson(entry) ]));\n }\n return value;\n}\n"],"names":["HlslEffectStageInput","INVALID","SHADER_CONSTANTS_MAX","constructor","m_exists","resources","Map","uavs","samplers","m_shader","constants","m_constantValueSize","constantValues","Uint8Array","sourceConstantValueSize","sourceConstantValues","signature","pipelineInputs","registers","threadGroupSize","x","y","z","annotation","cjsShaderBytecode","toJSON","mapToJson","map","entry","Array","from","cloneJson","entries","registerIndex","value","isArray","Object","fromEntries","key"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Trinity effect technique containing passes and optional shader libraries.
3
+ */
4
+ class HlslEffectTechnique {
5
+ /**
6
+ * Creates an empty technique record.
7
+ */
8
+ constructor() {
9
+ this.name = "";
10
+ this.passes = [];
11
+ this.libraries = [];
12
+ this.shaderTypeMask = 0;
13
+ }
14
+
15
+ /**
16
+ * Returns a JSON-safe technique metadata snapshot.
17
+ *
18
+ * @returns {object} Serializable technique metadata.
19
+ */
20
+ toJSON() {
21
+ return {
22
+ name: this.name,
23
+ passes: this.passes.map(entry => entry?.toJSON?.() ?? entry),
24
+ libraries: this.libraries.map(entry => entry?.toJSON?.() ?? entry),
25
+ shaderTypeMask: this.shaderTypeMask
26
+ };
27
+ }
28
+ }
29
+
30
+ export { HlslEffectTechnique };
31
+ //# sourceMappingURL=HlslEffectTechnique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslEffectTechnique.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js"],"sourcesContent":["/**\n * Trinity effect technique containing passes and optional shader libraries.\n */\nexport class HlslEffectTechnique\n{\n /**\n * Creates an empty technique record.\n */\n constructor()\n {\n this.name = \"\";\n this.passes = [];\n this.libraries = [];\n this.shaderTypeMask = 0;\n }\n\n /**\n * Returns a JSON-safe technique metadata snapshot.\n *\n * @returns {object} Serializable technique metadata.\n */\n toJSON()\n {\n return {\n name: this.name,\n passes: this.passes.map((entry) => entry?.toJSON?.() ?? entry),\n libraries: this.libraries.map((entry) => entry?.toJSON?.() ?? entry),\n shaderTypeMask: this.shaderTypeMask\n };\n }\n}\n"],"names":["HlslEffectTechnique","constructor","name","passes","libraries","shaderTypeMask","toJSON","map","entry"],"mappings":"AAAA;AACA;AACA;AACO,MAAMA,mBAAmB,CAChC;AACI;AACJ;AACA;AACIC,EAAAA,WAAWA,GACX;IACI,IAAI,CAACC,IAAI,GAAG,EAAE;IACd,IAAI,CAACC,MAAM,GAAG,EAAE;IAChB,IAAI,CAACC,SAAS,GAAG,EAAE;IACnB,IAAI,CAACC,cAAc,GAAG,CAAC;AAC3B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;MACHJ,IAAI,EAAE,IAAI,CAACA,IAAI;AACfC,MAAAA,MAAM,EAAE,IAAI,CAACA,MAAM,CAACI,GAAG,CAAEC,KAAK,IAAKA,KAAK,EAAEF,MAAM,IAAI,IAAIE,KAAK,CAAC;AAC9DJ,MAAAA,SAAS,EAAE,IAAI,CAACA,SAAS,CAACG,GAAG,CAAEC,KAAK,IAAKA,KAAK,EAAEF,MAAM,IAAI,IAAIE,KAAK,CAAC;MACpEH,cAAc,EAAE,IAAI,CAACA;KACxB;AACL,EAAA;AACJ;;;;"}
@@ -0,0 +1,42 @@
1
+ import { HlslEffectStageInput } from './HlslEffectStageInput.js';
2
+ import { HlslRenderContextEnum } from '../HlslRenderContextEnum.js';
3
+
4
+ /**
5
+ * Trinity effect pass containing shader stages, resource metadata, and render state.
6
+ */
7
+ class HlslPass {
8
+ /**
9
+ * Creates an empty pass with stage input slots for every Trinity shader stage.
10
+ */
11
+ constructor() {
12
+ this.stageInputs = Array.from({
13
+ length: HlslRenderContextEnum.SHADER_TYPE_COUNT
14
+ }, () => new HlslEffectStageInput());
15
+ this.renderStates = 0;
16
+ this.shaderTypeMask = 0;
17
+ this.shaderProgram = 0;
18
+ this.resourceSetDesc = null;
19
+ this.indirectLayout = null;
20
+ this.cjsRenderStateSetup = null;
21
+ }
22
+
23
+ /**
24
+ * Returns a JSON-safe pass metadata snapshot.
25
+ *
26
+ * @returns {object} Serializable pass metadata.
27
+ */
28
+ toJSON() {
29
+ return {
30
+ stageInputs: this.stageInputs.map(entry => entry?.toJSON?.() ?? entry),
31
+ renderStates: this.renderStates,
32
+ shaderTypeMask: this.shaderTypeMask,
33
+ shaderProgram: this.shaderProgram,
34
+ resourceSetDesc: this.resourceSetDesc?.toJSON?.() ?? this.resourceSetDesc,
35
+ indirectLayout: this.indirectLayout,
36
+ cjsRenderStateSetup: this.cjsRenderStateSetup?.toJSON?.() ?? this.cjsRenderStateSetup
37
+ };
38
+ }
39
+ }
40
+
41
+ export { HlslPass };
42
+ //# sourceMappingURL=HlslPass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslPass.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslPass.js"],"sourcesContent":["import { HlslEffectStageInput } from \"./HlslEffectStageInput.js\";\nimport { HlslRenderContextEnum } from \"../HlslRenderContextEnum.js\";\n\n/**\n * Trinity effect pass containing shader stages, resource metadata, and render state.\n */\nexport class HlslPass\n{\n /**\n * Creates an empty pass with stage input slots for every Trinity shader stage.\n */\n constructor()\n {\n this.stageInputs = Array.from(\n { length: HlslRenderContextEnum.SHADER_TYPE_COUNT },\n () => new HlslEffectStageInput()\n );\n this.renderStates = 0;\n this.shaderTypeMask = 0;\n this.shaderProgram = 0;\n this.resourceSetDesc = null;\n this.indirectLayout = null;\n this.cjsRenderStateSetup = null;\n }\n\n /**\n * Returns a JSON-safe pass metadata snapshot.\n *\n * @returns {object} Serializable pass metadata.\n */\n toJSON()\n {\n return {\n stageInputs: this.stageInputs.map((entry) => entry?.toJSON?.() ?? entry),\n renderStates: this.renderStates,\n shaderTypeMask: this.shaderTypeMask,\n shaderProgram: this.shaderProgram,\n resourceSetDesc: this.resourceSetDesc?.toJSON?.() ?? this.resourceSetDesc,\n indirectLayout: this.indirectLayout,\n cjsRenderStateSetup: this.cjsRenderStateSetup?.toJSON?.() ?? this.cjsRenderStateSetup\n };\n }\n}\n"],"names":["HlslPass","constructor","stageInputs","Array","from","length","HlslRenderContextEnum","SHADER_TYPE_COUNT","HlslEffectStageInput","renderStates","shaderTypeMask","shaderProgram","resourceSetDesc","indirectLayout","cjsRenderStateSetup","toJSON","map","entry"],"mappings":";;;AAGA;AACA;AACA;AACO,MAAMA,QAAQ,CACrB;AACI;AACJ;AACA;AACIC,EAAAA,WAAWA,GACX;AACI,IAAA,IAAI,CAACC,WAAW,GAAGC,KAAK,CAACC,IAAI,CACzB;MAAEC,MAAM,EAAEC,qBAAqB,CAACC;AAAkB,KAAC,EACnD,MAAM,IAAIC,oBAAoB,EAClC,CAAC;IACD,IAAI,CAACC,YAAY,GAAG,CAAC;IACrB,IAAI,CAACC,cAAc,GAAG,CAAC;IACvB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,mBAAmB,GAAG,IAAI;AACnC,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;AACHb,MAAAA,WAAW,EAAE,IAAI,CAACA,WAAW,CAACc,GAAG,CAAEC,KAAK,IAAKA,KAAK,EAAEF,MAAM,IAAI,IAAIE,KAAK,CAAC;MACxER,YAAY,EAAE,IAAI,CAACA,YAAY;MAC/BC,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCC,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCC,eAAe,EAAE,IAAI,CAACA,eAAe,EAAEG,MAAM,IAAI,IAAI,IAAI,CAACH,eAAe;MACzEC,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCC,mBAAmB,EAAE,IAAI,CAACA,mBAAmB,EAAEC,MAAM,IAAI,IAAI,IAAI,CAACD;KACrE;AACL,EAAA;AACJ;;;;"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Trinity sampler descriptor read from compiled effect metadata.
3
+ */
4
+ class HlslSamplerDescription {
5
+ /**
6
+ * Creates a sampler descriptor with Carbon's default zeroed fields.
7
+ */
8
+ constructor() {
9
+ this.comparison = false;
10
+ this.minFilter = 0;
11
+ this.magFilter = 0;
12
+ this.mipFilter = 0;
13
+ this.addressU = 0;
14
+ this.addressV = 0;
15
+ this.addressW = 0;
16
+ this.mipLODBias = 0;
17
+ this.mipLODBiasRaw = 0;
18
+ this.maxAnisotropy = 0;
19
+ this.comparisonFunc = 0;
20
+ this.borderColor = [0, 0, 0, 0];
21
+ this.borderColorRaw = [0, 0, 0, 0];
22
+ this.minLOD = 0;
23
+ this.minLODRaw = 0;
24
+ this.maxLOD = 0;
25
+ this.maxLODRaw = 0;
26
+ this.isDynamic = true;
27
+ }
28
+
29
+ /**
30
+ * Returns a JSON-safe sampler snapshot.
31
+ *
32
+ * @returns {object} Serializable sampler descriptor.
33
+ */
34
+ toJSON() {
35
+ return {
36
+ comparison: this.comparison,
37
+ minFilter: this.minFilter,
38
+ magFilter: this.magFilter,
39
+ mipFilter: this.mipFilter,
40
+ addressU: this.addressU,
41
+ addressV: this.addressV,
42
+ addressW: this.addressW,
43
+ mipLODBias: this.mipLODBias,
44
+ maxAnisotropy: this.maxAnisotropy,
45
+ comparisonFunc: this.comparisonFunc,
46
+ borderColor: this.borderColor.slice(),
47
+ minLOD: this.minLOD,
48
+ maxLOD: this.maxLOD,
49
+ isDynamic: this.isDynamic
50
+ };
51
+ }
52
+ }
53
+
54
+ export { HlslSamplerDescription };
55
+ //# sourceMappingURL=HlslSamplerDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslSamplerDescription.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js"],"sourcesContent":["/**\n * Trinity sampler descriptor read from compiled effect metadata.\n */\nexport class HlslSamplerDescription\n{\n /**\n * Creates a sampler descriptor with Carbon's default zeroed fields.\n */\n constructor()\n {\n this.comparison = false;\n this.minFilter = 0;\n this.magFilter = 0;\n this.mipFilter = 0;\n this.addressU = 0;\n this.addressV = 0;\n this.addressW = 0;\n this.mipLODBias = 0;\n this.mipLODBiasRaw = 0;\n this.maxAnisotropy = 0;\n this.comparisonFunc = 0;\n this.borderColor = [ 0, 0, 0, 0 ];\n this.borderColorRaw = [ 0, 0, 0, 0 ];\n this.minLOD = 0;\n this.minLODRaw = 0;\n this.maxLOD = 0;\n this.maxLODRaw = 0;\n this.isDynamic = true;\n }\n\n /**\n * Returns a JSON-safe sampler snapshot.\n *\n * @returns {object} Serializable sampler descriptor.\n */\n toJSON()\n {\n return {\n comparison: this.comparison,\n minFilter: this.minFilter,\n magFilter: this.magFilter,\n mipFilter: this.mipFilter,\n addressU: this.addressU,\n addressV: this.addressV,\n addressW: this.addressW,\n mipLODBias: this.mipLODBias,\n maxAnisotropy: this.maxAnisotropy,\n comparisonFunc: this.comparisonFunc,\n borderColor: this.borderColor.slice(),\n minLOD: this.minLOD,\n maxLOD: this.maxLOD,\n isDynamic: this.isDynamic\n };\n }\n}\n"],"names":["HlslSamplerDescription","constructor","comparison","minFilter","magFilter","mipFilter","addressU","addressV","addressW","mipLODBias","mipLODBiasRaw","maxAnisotropy","comparisonFunc","borderColor","borderColorRaw","minLOD","minLODRaw","maxLOD","maxLODRaw","isDynamic","toJSON","slice"],"mappings":"AAAA;AACA;AACA;AACO,MAAMA,sBAAsB,CACnC;AACI;AACJ;AACA;AACIC,EAAAA,WAAWA,GACX;IACI,IAAI,CAACC,UAAU,GAAG,KAAK;IACvB,IAAI,CAACC,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACC,cAAc,GAAG,CAAC;IACvB,IAAI,CAACC,WAAW,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;IACjC,IAAI,CAACC,cAAc,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;IACpC,IAAI,CAACC,MAAM,GAAG,CAAC;IACf,IAAI,CAACC,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,MAAM,GAAG,CAAC;IACf,IAAI,CAACC,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,SAAS,GAAG,IAAI;AACzB,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;MACHlB,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BE,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCC,cAAc,EAAE,IAAI,CAACA,cAAc;AACnCC,MAAAA,WAAW,EAAE,IAAI,CAACA,WAAW,CAACQ,KAAK,EAAE;MACrCN,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBE,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBE,SAAS,EAAE,IAAI,CAACA;KACnB;AACL,EAAA;AACJ;;;;"}
@@ -0,0 +1,29 @@
1
+ import { HlslSamplerDescription } from './HlslSamplerDescription.js';
2
+
3
+ /**
4
+ * Trinity sampler binding that pairs a metadata name with a sampler descriptor.
5
+ */
6
+ class HlslSamplerSetup {
7
+ /**
8
+ * Creates a sampler setup with an empty name and default descriptor.
9
+ */
10
+ constructor() {
11
+ this.name = null;
12
+ this.sampler = new HlslSamplerDescription();
13
+ }
14
+
15
+ /**
16
+ * Returns a JSON-safe sampler binding.
17
+ *
18
+ * @returns {object} Serializable sampler setup.
19
+ */
20
+ toJSON() {
21
+ return {
22
+ name: this.name,
23
+ sampler: this.sampler?.toJSON?.() ?? this.sampler
24
+ };
25
+ }
26
+ }
27
+
28
+ export { HlslSamplerSetup };
29
+ //# sourceMappingURL=HlslSamplerSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslSamplerSetup.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js"],"sourcesContent":["import { HlslSamplerDescription } from \"./HlslSamplerDescription.js\";\n\n/**\n * Trinity sampler binding that pairs a metadata name with a sampler descriptor.\n */\nexport class HlslSamplerSetup\n{\n /**\n * Creates a sampler setup with an empty name and default descriptor.\n */\n constructor()\n {\n this.name = null;\n this.sampler = new HlslSamplerDescription();\n }\n\n /**\n * Returns a JSON-safe sampler binding.\n *\n * @returns {object} Serializable sampler setup.\n */\n toJSON()\n {\n return {\n name: this.name,\n sampler: this.sampler?.toJSON?.() ?? this.sampler\n };\n }\n}\n"],"names":["HlslSamplerSetup","constructor","name","sampler","HlslSamplerDescription","toJSON"],"mappings":";;AAEA;AACA;AACA;AACO,MAAMA,gBAAgB,CAC7B;AACI;AACJ;AACA;AACIC,EAAAA,WAAWA,GACX;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;AAChB,IAAA,IAAI,CAACC,OAAO,GAAG,IAAIC,sBAAsB,EAAE;AAC/C,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;MACHH,IAAI,EAAE,IAAI,CAACA,IAAI;MACfC,OAAO,EAAE,IAAI,CAACA,OAAO,EAAEE,MAAM,IAAI,IAAI,IAAI,CAACF;KAC7C;AACL,EAAA;AACJ;;;;"}