@carbonenginejs/runtime-resource 0.10.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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":"HlslEffectStateManager.js","sources":["../../../../../src/formats/hlsl/core/HlslEffectStateManager.js"],"sourcesContent":["import { HlslRenderStateSetup } from \"./HlslRenderStateSetup.js\";\n\n/**\n * In-memory JavaScript substitute for Carbon's effect state manager registry.\n */\nexport class HlslEffectStateManager\n{\n /**\n * Creates empty registries for shaders, programs, render states, and libraries.\n */\n constructor()\n {\n this._nextShader = 1;\n this._nextProgram = 1;\n this._nextRenderState = 1;\n this._nextLibrary = 1;\n this.shaders = new Map();\n this.shaderPrograms = new Map();\n this.renderStates = new Map();\n this.shaderLibraries = new Map();\n }\n\n /**\n * Registers a shader stage payload and returns a stable numeric handle.\n *\n * @param {number} stageType Trinity shader stage enum value.\n * @param {object} bytecode Captured shader bytecode.\n * @param {object} signature Stage signature metadata.\n * @param {string} [effectName] Source effect name or path.\n * @returns {number} Shader handle.\n */\n RegisterShader(stageType, bytecode, signature, effectName = \"\")\n {\n const handle = this._nextShader++;\n this.shaders.set(handle, {\n stageType,\n bytecode,\n signature,\n effectName\n });\n return handle;\n }\n\n /**\n * Registers a shader program from one or more shader handles.\n *\n * @param {number[]} shaderHandles Shader handles in effect stage order.\n * @param {number} [stageCount] Number of active stage handles to use.\n * @returns {number} Shader program handle.\n */\n RegisterShaderProgram(shaderHandles, stageCount = shaderHandles.length)\n {\n const handle = this._nextProgram++;\n this.shaderPrograms.set(handle, {\n shaderHandles: shaderHandles.slice(0, stageCount),\n stageCount\n });\n return handle;\n }\n\n /**\n * Registers a program override pairing for Carbon-compatible call sites.\n *\n * @param {number} program Base shader program handle.\n * @param {number} overrideProgram Override shader program handle.\n * @returns {number} Override program handle.\n */\n RegisterShaderProgramOverride(program, overrideProgram)\n {\n const handle = this._nextProgram++;\n this.shaderPrograms.set(handle, {\n program,\n overrideProgram,\n isOverride: true\n });\n return handle;\n }\n\n /**\n * Registers a render-state setup and returns its handle.\n *\n * @param {HlslRenderStateSetup|Map<number, number>|object} states Render-state setup.\n * @returns {number} Render-state handle.\n */\n RegisterRenderStateSetup(states)\n {\n const handle = this._nextRenderState++;\n this.renderStates.set(handle, states instanceof HlslRenderStateSetup ? states : new HlslRenderStateSetup(states));\n return handle;\n }\n\n /**\n * Registers a DXIL/DXBC library bytecode payload and returns its handle.\n *\n * @param {object} bytecode Captured shader-library bytecode.\n * @returns {number} Shader library handle.\n */\n RegisterShaderLibrary(bytecode)\n {\n const handle = this._nextLibrary++;\n this.shaderLibraries.set(handle, bytecode);\n return handle;\n }\n\n /**\n * Looks up a registered shader by handle.\n *\n * @param {number} handle Shader handle.\n * @returns {object|null} Registered shader metadata or null.\n */\n GetShader(handle)\n {\n return this.shaders.get(handle) || null;\n }\n\n /**\n * Looks up a registered shader program by handle.\n *\n * @param {number} handle Shader program handle.\n * @returns {object|null} Registered program metadata or null.\n */\n GetShaderProgram(handle)\n {\n return this.shaderPrograms.get(handle) || null;\n }\n\n /**\n * Looks up a registered render-state setup by handle.\n *\n * @param {number} handle Render-state handle.\n * @returns {HlslRenderStateSetup|null} Registered render-state setup or null.\n */\n GetRenderStateSetup(handle)\n {\n return this.renderStates.get(handle) || null;\n }\n}\n"],"names":["HlslEffectStateManager","constructor","_nextShader","_nextProgram","_nextRenderState","_nextLibrary","shaders","Map","shaderPrograms","renderStates","shaderLibraries","RegisterShader","stageType","bytecode","signature","effectName","handle","set","RegisterShaderProgram","shaderHandles","stageCount","length","slice","RegisterShaderProgramOverride","program","overrideProgram","isOverride","RegisterRenderStateSetup","states","HlslRenderStateSetup","RegisterShaderLibrary","GetShader","get","GetShaderProgram","GetRenderStateSetup"],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import { HlslEffectReadError } from './HlslEffectReadError.js';
2
+ import { asUint8Array } from '@carbonenginejs/runtime-utils/bytes';
3
+
4
+ const textDecoder = new TextDecoder("utf-8", {
5
+ fatal: false
6
+ });
7
+
8
+ /**
9
+ * Little-endian binary reader for Carbon/Trinity compiled effect data.
10
+ */
11
+ class HlslReader {
12
+ /**
13
+ * Creates a reader over a byte payload and optional shared string table.
14
+ *
15
+ * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes Source payload.
16
+ * @param {object} [options] Reader bounds and metadata.
17
+ * @param {number} [options.offset] Initial byte offset.
18
+ * @param {number} [options.end] Exclusive end offset.
19
+ * @param {string} [options.source] Source name used in error details.
20
+ * @param {ArrayBuffer|ArrayBufferView|Uint8Array} [options.stringTable] Effect string table.
21
+ * @param {number} [options.stringTableSize] Valid string-table byte count.
22
+ */
23
+ constructor(bytes, options = {}) {
24
+ this.bytes = asUint8Array(bytes);
25
+ this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);
26
+ this.offset = Number(options.offset) || 0;
27
+ this.end = Number.isInteger(options.end) ? options.end : this.bytes.length;
28
+ this.source = options.source || "memory";
29
+ this.stringTable = options.stringTable ? asUint8Array(options.stringTable) : null;
30
+ this.stringTableSize = Number.isInteger(options.stringTableSize) ? options.stringTableSize : this.stringTable ? this.stringTable.length : 0;
31
+ }
32
+
33
+ /**
34
+ * Attaches or replaces the effect string table used by string and blob reads.
35
+ *
36
+ * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes String-table bytes.
37
+ * @param {number|null} [size] Valid string-table byte count.
38
+ */
39
+ setStringTable(bytes, size = null) {
40
+ this.stringTable = asUint8Array(bytes);
41
+ this.stringTableSize = Number.isInteger(size) ? size : this.stringTable.length;
42
+ }
43
+
44
+ /**
45
+ * Returns the unread byte count inside the configured reader bounds.
46
+ *
47
+ * @returns {number} Remaining bytes.
48
+ */
49
+ get remaining() {
50
+ return this.end - this.offset;
51
+ }
52
+
53
+ /**
54
+ * Advances the reader by a fixed number of bytes.
55
+ *
56
+ * @param {number} size Byte count to skip.
57
+ */
58
+ skip(size) {
59
+ this._require(size);
60
+ this.offset += size;
61
+ }
62
+
63
+ /**
64
+ * Reads a byte range from the main payload.
65
+ *
66
+ * @param {number} size Byte count to read.
67
+ * @returns {Uint8Array} View over the read bytes.
68
+ */
69
+ readRaw(size) {
70
+ this._require(size);
71
+ const start = this.offset;
72
+ this.offset += size;
73
+ return this.bytes.subarray(start, start + size);
74
+ }
75
+
76
+ /**
77
+ * Reads an unsigned 8-bit integer.
78
+ *
79
+ * @returns {number} Integer value.
80
+ */
81
+ readUint8() {
82
+ this._require(1);
83
+ const value = this.view.getUint8(this.offset);
84
+ this.offset += 1;
85
+ return value;
86
+ }
87
+
88
+ /**
89
+ * Reads a little-endian unsigned 16-bit integer.
90
+ *
91
+ * @returns {number} Integer value.
92
+ */
93
+ readUint16() {
94
+ this._require(2);
95
+ const value = this.view.getUint16(this.offset, true);
96
+ this.offset += 2;
97
+ return value;
98
+ }
99
+
100
+ /**
101
+ * Reads a little-endian unsigned 32-bit integer.
102
+ *
103
+ * @returns {number} Integer value.
104
+ */
105
+ readUint32() {
106
+ this._require(4);
107
+ const value = this.view.getUint32(this.offset, true);
108
+ this.offset += 4;
109
+ return value;
110
+ }
111
+
112
+ /**
113
+ * Reads a little-endian signed 32-bit integer.
114
+ *
115
+ * @returns {number} Integer value.
116
+ */
117
+ readInt32() {
118
+ this._require(4);
119
+ const value = this.view.getInt32(this.offset, true);
120
+ this.offset += 4;
121
+ return value;
122
+ }
123
+
124
+ /**
125
+ * Reads a little-endian 32-bit float.
126
+ *
127
+ * @returns {number} Float value.
128
+ */
129
+ readFloat32() {
130
+ this._require(4);
131
+ const value = this.view.getFloat32(this.offset, true);
132
+ this.offset += 4;
133
+ return value;
134
+ }
135
+
136
+ /**
137
+ * Reads Carbon's byte-sized boolean encoding.
138
+ *
139
+ * @returns {boolean} Boolean value.
140
+ */
141
+ readBool() {
142
+ return this.readUint8() !== 0;
143
+ }
144
+
145
+ /**
146
+ * Reads a string-table offset and resolves it to a UTF-8 string.
147
+ *
148
+ * @param {number} [sizeHint] Optional maximum byte span for bounds checking.
149
+ * @returns {string} Decoded string.
150
+ */
151
+ readString(sizeHint = 0) {
152
+ const offset = this.readUint32();
153
+ return this.readStringAt(offset, sizeHint);
154
+ }
155
+
156
+ /**
157
+ * Reads an optional string-table offset, returning null for zero-length fields.
158
+ *
159
+ * @param {number} length Source field length.
160
+ * @returns {string|null} Decoded string or null.
161
+ */
162
+ readStringOptional(length) {
163
+ const offset = this.readUint32();
164
+ if (length === 0) {
165
+ return null;
166
+ }
167
+ return this.readStringAt(offset, length);
168
+ }
169
+
170
+ /**
171
+ * Reads a string-table blob offset and returns the referenced byte range.
172
+ *
173
+ * @param {number} size Blob byte count.
174
+ * @returns {{offset:number,bytes:Uint8Array}} Blob location and bytes.
175
+ */
176
+ readTableBlob(size) {
177
+ const offset = this.readUint32();
178
+ this._requireStringTable(offset, size);
179
+ return {
180
+ offset,
181
+ bytes: this.stringTable.subarray(offset, offset + size)
182
+ };
183
+ }
184
+
185
+ /**
186
+ * Reads a possibly empty string-table blob reference.
187
+ *
188
+ * @param {number} size Blob byte count.
189
+ * @returns {{offset:number,bytes:Uint8Array}} Blob location and bytes.
190
+ */
191
+ readTableBlobOptional(size) {
192
+ const offset = this.readUint32();
193
+ if (size === 0) {
194
+ return {
195
+ offset,
196
+ bytes: new Uint8Array(0)
197
+ };
198
+ }
199
+ this._requireStringTable(offset, size);
200
+ return {
201
+ offset,
202
+ bytes: this.stringTable.subarray(offset, offset + size)
203
+ };
204
+ }
205
+
206
+ /**
207
+ * Resolves a string table offset to a null-terminated UTF-8 string.
208
+ *
209
+ * @param {number} offset String-table byte offset.
210
+ * @param {number} [sizeHint] Optional maximum byte span for bounds checking.
211
+ * @returns {string} Decoded string.
212
+ */
213
+ readStringAt(offset, sizeHint = 0) {
214
+ this._requireStringTable(offset, sizeHint);
215
+ let end = offset;
216
+ while (end < this.stringTableSize && this.stringTable[end] !== 0) {
217
+ end += 1;
218
+ }
219
+ return textDecoder.decode(this.stringTable.subarray(offset, end));
220
+ }
221
+
222
+ /**
223
+ * Ensures the requested read fits inside the configured payload bounds.
224
+ *
225
+ * @param {number} size Requested byte count.
226
+ * @private
227
+ */
228
+ _require(size) {
229
+ if (!Number.isInteger(size) || size < 0 || this.offset + size > this.end) {
230
+ throw new HlslEffectReadError("Unexpected end of effect data", {
231
+ source: this.source,
232
+ offset: this.offset,
233
+ requested: size,
234
+ end: this.end
235
+ });
236
+ }
237
+ }
238
+
239
+ /**
240
+ * Ensures a string-table offset and optional span are valid.
241
+ *
242
+ * @param {number} offset String-table byte offset.
243
+ * @param {number} [sizeHint] Optional byte span for bounds checking.
244
+ * @private
245
+ */
246
+ _requireStringTable(offset, sizeHint = 0) {
247
+ const size = Number(sizeHint) || 0;
248
+ if (!this.stringTable) {
249
+ throw new HlslEffectReadError("Missing effect string table", {
250
+ source: this.source,
251
+ offset
252
+ });
253
+ }
254
+ if (!Number.isInteger(offset) || offset < 0 || offset >= this.stringTableSize || offset + size > this.stringTableSize) {
255
+ throw new HlslEffectReadError("Invalid string-table offset", {
256
+ source: this.source,
257
+ offset,
258
+ sizeHint: size,
259
+ stringTableSize: this.stringTableSize
260
+ });
261
+ }
262
+ }
263
+ }
264
+
265
+ export { HlslReader };
266
+ //# sourceMappingURL=HlslReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslReader.js","sources":["../../../../../src/formats/hlsl/core/HlslReader.js"],"sourcesContent":["import { HlslEffectReadError } from \"./HlslEffectReadError.js\";\nimport { asUint8Array } from \"@carbonenginejs/runtime-utils/bytes\";\n\nconst textDecoder = new TextDecoder(\"utf-8\", { fatal: false });\n\n/**\n * Little-endian binary reader for Carbon/Trinity compiled effect data.\n */\nexport class HlslReader\n{\n /**\n * Creates a reader over a byte payload and optional shared string table.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes Source payload.\n * @param {object} [options] Reader bounds and metadata.\n * @param {number} [options.offset] Initial byte offset.\n * @param {number} [options.end] Exclusive end offset.\n * @param {string} [options.source] Source name used in error details.\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} [options.stringTable] Effect string table.\n * @param {number} [options.stringTableSize] Valid string-table byte count.\n */\n constructor(bytes, options = {})\n {\n this.bytes = asUint8Array(bytes);\n this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);\n this.offset = Number(options.offset) || 0;\n this.end = Number.isInteger(options.end) ? options.end : this.bytes.length;\n this.source = options.source || \"memory\";\n this.stringTable = options.stringTable ? asUint8Array(options.stringTable) : null;\n this.stringTableSize = Number.isInteger(options.stringTableSize)\n ? options.stringTableSize\n : (this.stringTable ? this.stringTable.length : 0);\n }\n\n /**\n * Attaches or replaces the effect string table used by string and blob reads.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes String-table bytes.\n * @param {number|null} [size] Valid string-table byte count.\n */\n setStringTable(bytes, size = null)\n {\n this.stringTable = asUint8Array(bytes);\n this.stringTableSize = Number.isInteger(size) ? size : this.stringTable.length;\n }\n\n /**\n * Returns the unread byte count inside the configured reader bounds.\n *\n * @returns {number} Remaining bytes.\n */\n get remaining()\n {\n return this.end - this.offset;\n }\n\n /**\n * Advances the reader by a fixed number of bytes.\n *\n * @param {number} size Byte count to skip.\n */\n skip(size)\n {\n this._require(size);\n this.offset += size;\n }\n\n /**\n * Reads a byte range from the main payload.\n *\n * @param {number} size Byte count to read.\n * @returns {Uint8Array} View over the read bytes.\n */\n readRaw(size)\n {\n this._require(size);\n const start = this.offset;\n this.offset += size;\n return this.bytes.subarray(start, start + size);\n }\n\n /**\n * Reads an unsigned 8-bit integer.\n *\n * @returns {number} Integer value.\n */\n readUint8()\n {\n this._require(1);\n const value = this.view.getUint8(this.offset);\n this.offset += 1;\n return value;\n }\n\n /**\n * Reads a little-endian unsigned 16-bit integer.\n *\n * @returns {number} Integer value.\n */\n readUint16()\n {\n this._require(2);\n const value = this.view.getUint16(this.offset, true);\n this.offset += 2;\n return value;\n }\n\n /**\n * Reads a little-endian unsigned 32-bit integer.\n *\n * @returns {number} Integer value.\n */\n readUint32()\n {\n this._require(4);\n const value = this.view.getUint32(this.offset, true);\n this.offset += 4;\n return value;\n }\n\n /**\n * Reads a little-endian signed 32-bit integer.\n *\n * @returns {number} Integer value.\n */\n readInt32()\n {\n this._require(4);\n const value = this.view.getInt32(this.offset, true);\n this.offset += 4;\n return value;\n }\n\n /**\n * Reads a little-endian 32-bit float.\n *\n * @returns {number} Float value.\n */\n readFloat32()\n {\n this._require(4);\n const value = this.view.getFloat32(this.offset, true);\n this.offset += 4;\n return value;\n }\n\n /**\n * Reads Carbon's byte-sized boolean encoding.\n *\n * @returns {boolean} Boolean value.\n */\n readBool()\n {\n return this.readUint8() !== 0;\n }\n\n /**\n * Reads a string-table offset and resolves it to a UTF-8 string.\n *\n * @param {number} [sizeHint] Optional maximum byte span for bounds checking.\n * @returns {string} Decoded string.\n */\n readString(sizeHint = 0)\n {\n const offset = this.readUint32();\n return this.readStringAt(offset, sizeHint);\n }\n\n /**\n * Reads an optional string-table offset, returning null for zero-length fields.\n *\n * @param {number} length Source field length.\n * @returns {string|null} Decoded string or null.\n */\n readStringOptional(length)\n {\n const offset = this.readUint32();\n if (length === 0)\n {\n return null;\n }\n return this.readStringAt(offset, length);\n }\n\n /**\n * Reads a string-table blob offset and returns the referenced byte range.\n *\n * @param {number} size Blob byte count.\n * @returns {{offset:number,bytes:Uint8Array}} Blob location and bytes.\n */\n readTableBlob(size)\n {\n const offset = this.readUint32();\n this._requireStringTable(offset, size);\n return {\n offset,\n bytes: this.stringTable.subarray(offset, offset + size)\n };\n }\n\n /**\n * Reads a possibly empty string-table blob reference.\n *\n * @param {number} size Blob byte count.\n * @returns {{offset:number,bytes:Uint8Array}} Blob location and bytes.\n */\n readTableBlobOptional(size)\n {\n const offset = this.readUint32();\n if (size === 0)\n {\n return {\n offset,\n bytes: new Uint8Array(0)\n };\n }\n this._requireStringTable(offset, size);\n return {\n offset,\n bytes: this.stringTable.subarray(offset, offset + size)\n };\n }\n\n /**\n * Resolves a string table offset to a null-terminated UTF-8 string.\n *\n * @param {number} offset String-table byte offset.\n * @param {number} [sizeHint] Optional maximum byte span for bounds checking.\n * @returns {string} Decoded string.\n */\n readStringAt(offset, sizeHint = 0)\n {\n this._requireStringTable(offset, sizeHint);\n let end = offset;\n while (end < this.stringTableSize && this.stringTable[end] !== 0)\n {\n end += 1;\n }\n return textDecoder.decode(this.stringTable.subarray(offset, end));\n }\n\n /**\n * Ensures the requested read fits inside the configured payload bounds.\n *\n * @param {number} size Requested byte count.\n * @private\n */\n _require(size)\n {\n if (!Number.isInteger(size) || size < 0 || this.offset + size > this.end)\n {\n throw new HlslEffectReadError(\"Unexpected end of effect data\", {\n source: this.source,\n offset: this.offset,\n requested: size,\n end: this.end\n });\n }\n }\n\n /**\n * Ensures a string-table offset and optional span are valid.\n *\n * @param {number} offset String-table byte offset.\n * @param {number} [sizeHint] Optional byte span for bounds checking.\n * @private\n */\n _requireStringTable(offset, sizeHint = 0)\n {\n const size = Number(sizeHint) || 0;\n if (!this.stringTable)\n {\n throw new HlslEffectReadError(\"Missing effect string table\", {\n source: this.source,\n offset\n });\n }\n if (!Number.isInteger(offset) || offset < 0 || offset >= this.stringTableSize || offset + size > this.stringTableSize)\n {\n throw new HlslEffectReadError(\"Invalid string-table offset\", {\n source: this.source,\n offset,\n sizeHint: size,\n stringTableSize: this.stringTableSize\n });\n }\n }\n}\n"],"names":["textDecoder","TextDecoder","fatal","HlslReader","constructor","bytes","options","asUint8Array","view","DataView","buffer","byteOffset","byteLength","offset","Number","end","isInteger","length","source","stringTable","stringTableSize","setStringTable","size","remaining","skip","_require","readRaw","start","subarray","readUint8","value","getUint8","readUint16","getUint16","readUint32","getUint32","readInt32","getInt32","readFloat32","getFloat32","readBool","readString","sizeHint","readStringAt","readStringOptional","readTableBlob","_requireStringTable","readTableBlobOptional","Uint8Array","decode","HlslEffectReadError","requested"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * JavaScript mirror of a registered Carbon render-state setup.
3
+ */
4
+ class HlslRenderStateSetup {
5
+ /**
6
+ * Creates a render-state table from a Map or plain object.
7
+ *
8
+ * @param {Map<number, number>|object} [states] Render-state key/value pairs.
9
+ */
10
+ constructor(states = new Map()) {
11
+ this.states = states instanceof Map ? new Map(states) : new Map(Object.entries(states || {}).map(([key, value]) => [Number(key), Number(value)]));
12
+ }
13
+
14
+ /**
15
+ * Returns render states as stable serializable key/value records.
16
+ *
17
+ * @returns {{key:number,value:number}[]} Render-state entries.
18
+ */
19
+ get entries() {
20
+ return Array.from(this.states.entries()).map(([key, value]) => ({
21
+ key,
22
+ value
23
+ }));
24
+ }
25
+
26
+ /**
27
+ * Returns render states in report-friendly form.
28
+ *
29
+ * @returns {{key:number,value:number}[]} JSON-safe render-state entries.
30
+ */
31
+ toJSON() {
32
+ return this.entries;
33
+ }
34
+ }
35
+
36
+ export { HlslRenderStateSetup };
37
+ //# sourceMappingURL=HlslRenderStateSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslRenderStateSetup.js","sources":["../../../../../src/formats/hlsl/core/HlslRenderStateSetup.js"],"sourcesContent":["/**\n * JavaScript mirror of a registered Carbon render-state setup.\n */\nexport class HlslRenderStateSetup\n{\n /**\n * Creates a render-state table from a Map or plain object.\n *\n * @param {Map<number, number>|object} [states] Render-state key/value pairs.\n */\n constructor(states = new Map())\n {\n this.states = states instanceof Map\n ? new Map(states)\n : new Map(Object.entries(states || {}).map(([ key, value ]) => [ Number(key), Number(value) ]));\n }\n\n /**\n * Returns render states as stable serializable key/value records.\n *\n * @returns {{key:number,value:number}[]} Render-state entries.\n */\n get entries()\n {\n return Array.from(this.states.entries()).map(([ key, value ]) => ({ key, value }));\n }\n\n /**\n * Returns render states in report-friendly form.\n *\n * @returns {{key:number,value:number}[]} JSON-safe render-state entries.\n */\n toJSON()\n {\n return this.entries;\n }\n}\n"],"names":["HlslRenderStateSetup","constructor","states","Map","Object","entries","map","key","value","Number","Array","from","toJSON"],"mappings":"AAAA;AACA;AACA;AACO,MAAMA,oBAAoB,CACjC;AACI;AACJ;AACA;AACA;AACA;AACIC,EAAAA,WAAWA,CAACC,MAAM,GAAG,IAAIC,GAAG,EAAE,EAC9B;IACI,IAAI,CAACD,MAAM,GAAGA,MAAM,YAAYC,GAAG,GAC7B,IAAIA,GAAG,CAACD,MAAM,CAAC,GACf,IAAIC,GAAG,CAACC,MAAM,CAACC,OAAO,CAACH,MAAM,IAAI,EAAE,CAAC,CAACI,GAAG,CAAC,CAAC,CAAEC,GAAG,EAAEC,KAAK,CAAE,KAAK,CAAEC,MAAM,CAACF,GAAG,CAAC,EAAEE,MAAM,CAACD,KAAK,CAAC,CAAE,CAAC,CAAC;AACvG,EAAA;;AAEA;AACJ;AACA;AACA;AACA;EACI,IAAIH,OAAOA,GACX;IACI,OAAOK,KAAK,CAACC,IAAI,CAAC,IAAI,CAACT,MAAM,CAACG,OAAO,EAAE,CAAC,CAACC,GAAG,CAAC,CAAC,CAAEC,GAAG,EAAEC,KAAK,CAAE,MAAM;MAAED,GAAG;AAAEC,MAAAA;AAAM,KAAC,CAAC,CAAC;AACtF,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACII,EAAAA,MAAMA,GACN;IACI,OAAO,IAAI,CAACP,OAAO;AACvB,EAAA;AACJ;;;;"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * JavaScript mirror of Carbon's resource-set descriptor builder.
3
+ */
4
+ class HlslResourceSetDescription {
5
+ /**
6
+ * Creates an empty resource-set description for the supplied shader stages.
7
+ *
8
+ * @param {number[]} [shaderTypes] Shader stage enum values participating in the set.
9
+ * @param {object[]} [signatures] Stage signatures read from the effect body.
10
+ */
11
+ constructor(shaderTypes = [], signatures = []) {
12
+ this.shaderTypes = shaderTypes.slice();
13
+ this.signatures = signatures.slice();
14
+ this.samplers = [];
15
+ this.heapViews = [];
16
+ }
17
+
18
+ /**
19
+ * Records a static sampler binding for a shader register.
20
+ *
21
+ * @param {number} stageType Shader stage enum value.
22
+ * @param {number} registerIndex Register index in the stage signature.
23
+ * @param {object} sampler Sampler descriptor.
24
+ */
25
+ SetSampler(stageType, registerIndex, sampler) {
26
+ this.samplers.push({
27
+ stageType,
28
+ registerIndex,
29
+ sampler
30
+ });
31
+ }
32
+
33
+ /**
34
+ * Marks a shader-resource binding as heap-view based.
35
+ *
36
+ * @param {number} stageType Shader stage enum value.
37
+ * @param {number} registerIndex Register index in the stage signature.
38
+ */
39
+ SetSrvHeapView(stageType, registerIndex) {
40
+ this.heapViews.push({
41
+ kind: "srv",
42
+ stageType,
43
+ registerIndex
44
+ });
45
+ }
46
+
47
+ /**
48
+ * Marks an unordered-access binding as heap-view based.
49
+ *
50
+ * @param {number} stageType Shader stage enum value.
51
+ * @param {number} registerIndex Register index in the stage signature.
52
+ */
53
+ SetUavHeapView(stageType, registerIndex) {
54
+ this.heapViews.push({
55
+ kind: "uav",
56
+ stageType,
57
+ registerIndex
58
+ });
59
+ }
60
+
61
+ /**
62
+ * Marks a sampler binding as heap-view based.
63
+ *
64
+ * @param {number} stageType Shader stage enum value.
65
+ * @param {number} registerIndex Register index in the stage signature.
66
+ */
67
+ SetSamplerHeapView(stageType, registerIndex) {
68
+ this.heapViews.push({
69
+ kind: "sampler",
70
+ stageType,
71
+ registerIndex
72
+ });
73
+ }
74
+
75
+ /**
76
+ * Returns a JSON-safe description of sampler and heap-view metadata.
77
+ *
78
+ * @returns {object} Serializable resource-set summary.
79
+ */
80
+ toJSON() {
81
+ return {
82
+ shaderTypes: this.shaderTypes.slice(),
83
+ samplers: this.samplers.map(entry => ({
84
+ ...entry
85
+ })),
86
+ heapViews: this.heapViews.map(entry => ({
87
+ ...entry
88
+ }))
89
+ };
90
+ }
91
+ }
92
+
93
+ export { HlslResourceSetDescription };
94
+ //# sourceMappingURL=HlslResourceSetDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslResourceSetDescription.js","sources":["../../../../../src/formats/hlsl/core/HlslResourceSetDescription.js"],"sourcesContent":["/**\n * JavaScript mirror of Carbon's resource-set descriptor builder.\n */\nexport class HlslResourceSetDescription\n{\n /**\n * Creates an empty resource-set description for the supplied shader stages.\n *\n * @param {number[]} [shaderTypes] Shader stage enum values participating in the set.\n * @param {object[]} [signatures] Stage signatures read from the effect body.\n */\n constructor(shaderTypes = [], signatures = [])\n {\n this.shaderTypes = shaderTypes.slice();\n this.signatures = signatures.slice();\n this.samplers = [];\n this.heapViews = [];\n }\n\n /**\n * Records a static sampler binding for a shader register.\n *\n * @param {number} stageType Shader stage enum value.\n * @param {number} registerIndex Register index in the stage signature.\n * @param {object} sampler Sampler descriptor.\n */\n SetSampler(stageType, registerIndex, sampler)\n {\n this.samplers.push({ stageType, registerIndex, sampler });\n }\n\n /**\n * Marks a shader-resource binding as heap-view based.\n *\n * @param {number} stageType Shader stage enum value.\n * @param {number} registerIndex Register index in the stage signature.\n */\n SetSrvHeapView(stageType, registerIndex)\n {\n this.heapViews.push({ kind: \"srv\", stageType, registerIndex });\n }\n\n /**\n * Marks an unordered-access binding as heap-view based.\n *\n * @param {number} stageType Shader stage enum value.\n * @param {number} registerIndex Register index in the stage signature.\n */\n SetUavHeapView(stageType, registerIndex)\n {\n this.heapViews.push({ kind: \"uav\", stageType, registerIndex });\n }\n\n /**\n * Marks a sampler binding as heap-view based.\n *\n * @param {number} stageType Shader stage enum value.\n * @param {number} registerIndex Register index in the stage signature.\n */\n SetSamplerHeapView(stageType, registerIndex)\n {\n this.heapViews.push({ kind: \"sampler\", stageType, registerIndex });\n }\n\n /**\n * Returns a JSON-safe description of sampler and heap-view metadata.\n *\n * @returns {object} Serializable resource-set summary.\n */\n toJSON()\n {\n return {\n shaderTypes: this.shaderTypes.slice(),\n samplers: this.samplers.map((entry) => ({ ...entry })),\n heapViews: this.heapViews.map((entry) => ({ ...entry }))\n };\n }\n}\n"],"names":["HlslResourceSetDescription","constructor","shaderTypes","signatures","slice","samplers","heapViews","SetSampler","stageType","registerIndex","sampler","push","SetSrvHeapView","kind","SetUavHeapView","SetSamplerHeapView","toJSON","map","entry"],"mappings":"AAAA;AACA;AACA;AACO,MAAMA,0BAA0B,CACvC;AACI;AACJ;AACA;AACA;AACA;AACA;EACIC,WAAWA,CAACC,WAAW,GAAG,EAAE,EAAEC,UAAU,GAAG,EAAE,EAC7C;AACI,IAAA,IAAI,CAACD,WAAW,GAAGA,WAAW,CAACE,KAAK,EAAE;AACtC,IAAA,IAAI,CAACD,UAAU,GAAGA,UAAU,CAACC,KAAK,EAAE;IACpC,IAAI,CAACC,QAAQ,GAAG,EAAE;IAClB,IAAI,CAACC,SAAS,GAAG,EAAE;AACvB,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,EAAAA,UAAUA,CAACC,SAAS,EAAEC,aAAa,EAAEC,OAAO,EAC5C;AACI,IAAA,IAAI,CAACL,QAAQ,CAACM,IAAI,CAAC;MAAEH,SAAS;MAAEC,aAAa;AAAEC,MAAAA;AAAQ,KAAC,CAAC;AAC7D,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACIE,EAAAA,cAAcA,CAACJ,SAAS,EAAEC,aAAa,EACvC;AACI,IAAA,IAAI,CAACH,SAAS,CAACK,IAAI,CAAC;AAAEE,MAAAA,IAAI,EAAE,KAAK;MAAEL,SAAS;AAAEC,MAAAA;AAAc,KAAC,CAAC;AAClE,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACIK,EAAAA,cAAcA,CAACN,SAAS,EAAEC,aAAa,EACvC;AACI,IAAA,IAAI,CAACH,SAAS,CAACK,IAAI,CAAC;AAAEE,MAAAA,IAAI,EAAE,KAAK;MAAEL,SAAS;AAAEC,MAAAA;AAAc,KAAC,CAAC;AAClE,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACIM,EAAAA,kBAAkBA,CAACP,SAAS,EAAEC,aAAa,EAC3C;AACI,IAAA,IAAI,CAACH,SAAS,CAACK,IAAI,CAAC;AAAEE,MAAAA,IAAI,EAAE,SAAS;MAAEL,SAAS;AAAEC,MAAAA;AAAc,KAAC,CAAC;AACtE,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIO,EAAAA,MAAMA,GACN;IACI,OAAO;AACHd,MAAAA,WAAW,EAAE,IAAI,CAACA,WAAW,CAACE,KAAK,EAAE;MACrCC,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAACY,GAAG,CAAEC,KAAK,KAAM;QAAE,GAAGA;AAAM,OAAC,CAAC,CAAC;MACtDZ,SAAS,EAAE,IAAI,CAACA,SAAS,CAACW,GAAG,CAAEC,KAAK,KAAM;QAAE,GAAGA;AAAM,OAAC,CAAC;KAC1D;AACL,EAAA;AACJ;;;;"}
@@ -0,0 +1,44 @@
1
+ import { asUint8Array } from '@carbonenginejs/runtime-utils/bytes';
2
+
3
+ /**
4
+ * JavaScript stand-in for Carbon's shader-bytecode handle payload.
5
+ */
6
+ class HlslShaderBytecode {
7
+ /**
8
+ * Captures bytecode and metadata for one compiled shader stage or library.
9
+ *
10
+ * @param {object} [options] Bytecode metadata.
11
+ * @param {number|null} [options.stageType] Trinity shader stage enum value.
12
+ * @param {string|null} [options.stageName] Friendly stage name.
13
+ * @param {ArrayBuffer|ArrayBufferView|Uint8Array} [options.bytes] Shader bytecode bytes.
14
+ * @param {number} [options.shaderSize] Original bytecode size from the effect.
15
+ * @param {number|null} [options.stringTableOffset] Offset into the effect string table.
16
+ * @param {string} [options.effectName] Source effect name or path.
17
+ */
18
+ constructor(options = {}) {
19
+ this.stageType = Number.isInteger(options.stageType) ? options.stageType : null;
20
+ this.stageName = options.stageName || null;
21
+ this.bytes = options.bytes ? asUint8Array(options.bytes) : new Uint8Array(0);
22
+ this.shaderSize = Number(options.shaderSize) || this.bytes.length;
23
+ this.stringTableOffset = Number.isInteger(options.stringTableOffset) ? options.stringTableOffset : null;
24
+ this.effectName = options.effectName || "";
25
+ }
26
+
27
+ /**
28
+ * Returns serializable metadata while omitting the potentially large byte array.
29
+ *
30
+ * @returns {object} JSON-safe bytecode summary.
31
+ */
32
+ toJSON() {
33
+ return {
34
+ stageType: this.stageType,
35
+ stageName: this.stageName,
36
+ shaderSize: this.shaderSize,
37
+ stringTableOffset: this.stringTableOffset,
38
+ effectName: this.effectName
39
+ };
40
+ }
41
+ }
42
+
43
+ export { HlslShaderBytecode };
44
+ //# sourceMappingURL=HlslShaderBytecode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlslShaderBytecode.js","sources":["../../../../../src/formats/hlsl/core/HlslShaderBytecode.js"],"sourcesContent":["import { asUint8Array } from \"@carbonenginejs/runtime-utils/bytes\";\n\n/**\n * JavaScript stand-in for Carbon's shader-bytecode handle payload.\n */\nexport class HlslShaderBytecode\n{\n /**\n * Captures bytecode and metadata for one compiled shader stage or library.\n *\n * @param {object} [options] Bytecode metadata.\n * @param {number|null} [options.stageType] Trinity shader stage enum value.\n * @param {string|null} [options.stageName] Friendly stage name.\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} [options.bytes] Shader bytecode bytes.\n * @param {number} [options.shaderSize] Original bytecode size from the effect.\n * @param {number|null} [options.stringTableOffset] Offset into the effect string table.\n * @param {string} [options.effectName] Source effect name or path.\n */\n constructor(options = {})\n {\n this.stageType = Number.isInteger(options.stageType) ? options.stageType : null;\n this.stageName = options.stageName || null;\n this.bytes = options.bytes ? asUint8Array(options.bytes) : new Uint8Array(0);\n this.shaderSize = Number(options.shaderSize) || this.bytes.length;\n this.stringTableOffset = Number.isInteger(options.stringTableOffset) ? options.stringTableOffset : null;\n this.effectName = options.effectName || \"\";\n }\n\n /**\n * Returns serializable metadata while omitting the potentially large byte array.\n *\n * @returns {object} JSON-safe bytecode summary.\n */\n toJSON()\n {\n return {\n stageType: this.stageType,\n stageName: this.stageName,\n shaderSize: this.shaderSize,\n stringTableOffset: this.stringTableOffset,\n effectName: this.effectName\n };\n }\n}\n"],"names":["HlslShaderBytecode","constructor","options","stageType","Number","isInteger","stageName","bytes","asUint8Array","Uint8Array","shaderSize","length","stringTableOffset","effectName","toJSON"],"mappings":";;AAEA;AACA;AACA;AACO,MAAMA,kBAAkB,CAC/B;AACI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,EAAAA,WAAWA,CAACC,OAAO,GAAG,EAAE,EACxB;AACI,IAAA,IAAI,CAACC,SAAS,GAAGC,MAAM,CAACC,SAAS,CAACH,OAAO,CAACC,SAAS,CAAC,GAAGD,OAAO,CAACC,SAAS,GAAG,IAAI;AAC/E,IAAA,IAAI,CAACG,SAAS,GAAGJ,OAAO,CAACI,SAAS,IAAI,IAAI;AAC1C,IAAA,IAAI,CAACC,KAAK,GAAGL,OAAO,CAACK,KAAK,GAAGC,YAAY,CAACN,OAAO,CAACK,KAAK,CAAC,GAAG,IAAIE,UAAU,CAAC,CAAC,CAAC;AAC5E,IAAA,IAAI,CAACC,UAAU,GAAGN,MAAM,CAACF,OAAO,CAACQ,UAAU,CAAC,IAAI,IAAI,CAACH,KAAK,CAACI,MAAM;AACjE,IAAA,IAAI,CAACC,iBAAiB,GAAGR,MAAM,CAACC,SAAS,CAACH,OAAO,CAACU,iBAAiB,CAAC,GAAGV,OAAO,CAACU,iBAAiB,GAAG,IAAI;AACvG,IAAA,IAAI,CAACC,UAAU,GAAGX,OAAO,CAACW,UAAU,IAAI,EAAE;AAC9C,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;MACHX,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBG,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBI,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BE,iBAAiB,EAAE,IAAI,CAACA,iBAAiB;MACzCC,UAAU,EAAE,IAAI,CAACA;KACpB;AACL,EAAA;AACJ;;;;"}
@@ -0,0 +1,51 @@
1
+ import { normalizeValues, DEFAULT_VALUES, readRaw } from './helpers.js';
2
+ import { resolveSelectedOptions } from './metadata.js';
3
+ import { HlslEffectBindingManifest } from './tr2/shader/HlslEffectBindingManifest.js';
4
+
5
+ /**
6
+ * Resolve one permutation to the raw effect/shader/manifest context that
7
+ * downstream translation tooling needs.
8
+ *
9
+ * This is intentionally an advanced helper: it returns internal graph objects
10
+ * rather than the stable JSON contract exposed by `CjsHlslFormat`.
11
+ *
12
+ * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect payload.
13
+ * @param {object} values Normalized format values.
14
+ * @returns {{effectRes: object, shader: object|null, selection: object, effectDescription: object|null, bindingManifest: HlslEffectBindingManifest|null}}
15
+ * Raw loaded effect data plus the resolved permutation context.
16
+ */
17
+ function analyzeEffectWithValues(input, values) {
18
+ const effectRes = readRaw(input, values);
19
+ const selection = resolveSelectedOptions(effectRes, values.permutation || []);
20
+ let shader = null;
21
+ try {
22
+ shader = effectRes.GetShader(values.permutation || []);
23
+ } catch {
24
+ shader = null;
25
+ }
26
+ const effectDescription = shader ? shader.GetEffectDescription() : null;
27
+ const bindingManifest = effectDescription ? HlslEffectBindingManifest.fromEffectDescription(effectDescription) : null;
28
+ return {
29
+ effectRes,
30
+ shader,
31
+ selection,
32
+ effectDescription,
33
+ bindingManifest
34
+ };
35
+ }
36
+
37
+ /**
38
+ * Advanced one-shot helper for tooling that needs one parse plus one binding
39
+ * manifest build without changing the stable reader emits.
40
+ *
41
+ * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect payload.
42
+ * @param {object} [options] Format values.
43
+ * @returns {{effectRes: object, shader: object|null, selection: object, effectDescription: object|null, bindingManifest: HlslEffectBindingManifest|null}}
44
+ * Raw loaded effect data plus the resolved permutation context.
45
+ */
46
+ function readEffectAnalysis(input, options = {}) {
47
+ return analyzeEffectWithValues(input, normalizeValues(DEFAULT_VALUES, options, "readEffectAnalysis"));
48
+ }
49
+
50
+ export { analyzeEffectWithValues, readEffectAnalysis };
51
+ //# sourceMappingURL=analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.js","sources":["../../../../../src/formats/hlsl/core/analysis.js"],"sourcesContent":["import { DEFAULT_VALUES, normalizeValues, readRaw } from \"./helpers.js\";\nimport { resolveSelectedOptions } from \"./metadata.js\";\nimport { HlslEffectBindingManifest } from \"./tr2/shader/HlslEffectBindingManifest.js\";\n\n/**\n * Resolve one permutation to the raw effect/shader/manifest context that\n * downstream translation tooling needs.\n *\n * This is intentionally an advanced helper: it returns internal graph objects\n * rather than the stable JSON contract exposed by `CjsHlslFormat`.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect payload.\n * @param {object} values Normalized format values.\n * @returns {{effectRes: object, shader: object|null, selection: object, effectDescription: object|null, bindingManifest: HlslEffectBindingManifest|null}}\n * Raw loaded effect data plus the resolved permutation context.\n */\nexport function analyzeEffectWithValues(input, values)\n{\n const effectRes = readRaw(input, values);\n const selection = resolveSelectedOptions(effectRes, values.permutation || []);\n\n let shader = null;\n try\n {\n shader = effectRes.GetShader(values.permutation || []);\n }\n catch\n {\n shader = null;\n }\n\n const effectDescription = shader ? shader.GetEffectDescription() : null;\n const bindingManifest = effectDescription\n ? HlslEffectBindingManifest.fromEffectDescription(effectDescription)\n : null;\n\n return {\n effectRes,\n shader,\n selection,\n effectDescription,\n bindingManifest\n };\n}\n\n/**\n * Advanced one-shot helper for tooling that needs one parse plus one binding\n * manifest build without changing the stable reader emits.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input Tr2 effect payload.\n * @param {object} [options] Format values.\n * @returns {{effectRes: object, shader: object|null, selection: object, effectDescription: object|null, bindingManifest: HlslEffectBindingManifest|null}}\n * Raw loaded effect data plus the resolved permutation context.\n */\nexport function readEffectAnalysis(input, options = {})\n{\n return analyzeEffectWithValues(input, normalizeValues(DEFAULT_VALUES, options, \"readEffectAnalysis\"));\n}\n"],"names":["analyzeEffectWithValues","input","values","effectRes","readRaw","selection","resolveSelectedOptions","permutation","shader","GetShader","effectDescription","GetEffectDescription","bindingManifest","HlslEffectBindingManifest","fromEffectDescription","readEffectAnalysis","options","normalizeValues","DEFAULT_VALUES"],"mappings":";;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,uBAAuBA,CAACC,KAAK,EAAEC,MAAM,EACrD;AACI,EAAA,MAAMC,SAAS,GAAGC,OAAO,CAACH,KAAK,EAAEC,MAAM,CAAC;EACxC,MAAMG,SAAS,GAAGC,sBAAsB,CAACH,SAAS,EAAED,MAAM,CAACK,WAAW,IAAI,EAAE,CAAC;EAE7E,IAAIC,MAAM,GAAG,IAAI;EACjB,IACA;IACIA,MAAM,GAAGL,SAAS,CAACM,SAAS,CAACP,MAAM,CAACK,WAAW,IAAI,EAAE,CAAC;AAC1D,EAAA,CAAC,CACD,MACA;AACIC,IAAAA,MAAM,GAAG,IAAI;AACjB,EAAA;EAEA,MAAME,iBAAiB,GAAGF,MAAM,GAAGA,MAAM,CAACG,oBAAoB,EAAE,GAAG,IAAI;EACvE,MAAMC,eAAe,GAAGF,iBAAiB,GACnCG,yBAAyB,CAACC,qBAAqB,CAACJ,iBAAiB,CAAC,GAClE,IAAI;EAEV,OAAO;IACHP,SAAS;IACTK,MAAM;IACNH,SAAS;IACTK,iBAAiB;AACjBE,IAAAA;GACH;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,kBAAkBA,CAACd,KAAK,EAAEe,OAAO,GAAG,EAAE,EACtD;AACI,EAAA,OAAOhB,uBAAuB,CAACC,KAAK,EAAEgB,eAAe,CAACC,cAAc,EAAEF,OAAO,EAAE,oBAAoB,CAAC,CAAC;AACzG;;;;"}