@carbonenginejs/runtime-resource 0.9.2 → 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 (544) hide show
  1. package/NOTICE +3 -2
  2. package/README.md +47 -6
  3. package/dist/CjsMotherLode.js +88 -88
  4. package/dist/CjsMotherLode.js.map +1 -1
  5. package/dist/CjsResMan.js +717 -228
  6. package/dist/CjsResMan.js.map +1 -1
  7. package/dist/CjsResManFetchProvider.js +94 -0
  8. package/dist/CjsResManFetchProvider.js.map +1 -0
  9. package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
  10. package/dist/CjsResManWorkQueue.js.map +1 -0
  11. package/dist/format/CjsBlueReader.js +89 -0
  12. package/dist/format/CjsBlueReader.js.map +1 -1
  13. package/dist/format/CjsFormat.js +42 -16
  14. package/dist/format/CjsFormat.js.map +1 -1
  15. package/dist/format/CjsReader.js +4 -0
  16. package/dist/format/CjsReader.js.map +1 -1
  17. package/dist/format/CjsResourceProbe.js +2 -0
  18. package/dist/format/CjsResourceProbe.js.map +1 -1
  19. package/dist/format/effect/effectPermutationGraph.js +257 -0
  20. package/dist/format/effect/effectPermutationGraph.js.map +1 -0
  21. package/dist/format/effect/effectReflectionPackage.js +636 -0
  22. package/dist/format/effect/effectReflectionPackage.js.map +1 -0
  23. package/dist/format/effect/sha256.js +114 -0
  24. package/dist/format/effect/sha256.js.map +1 -0
  25. package/dist/format/payloadContract.js +20 -0
  26. package/dist/format/payloadContract.js.map +1 -1
  27. package/dist/formats/black/CjsBlackFormat.js +15 -1
  28. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  29. package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
  30. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  31. package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
  32. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  33. package/dist/formats/black/core/CjsBlackReader.js +125 -0
  34. package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
  35. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
  36. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  37. package/dist/formats/black/core/helpers.js +17 -0
  38. package/dist/formats/black/core/helpers.js.map +1 -1
  39. package/dist/formats/bnk/CjsBnkFormat.js +8 -0
  40. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  41. package/dist/formats/bnk/core/helpers.js +20 -0
  42. package/dist/formats/bnk/core/helpers.js.map +1 -1
  43. package/dist/formats/bnk/core/musicNodes.js +40 -3
  44. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  45. package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
  46. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
  47. package/dist/formats/cmf/core/binary.js +71 -0
  48. package/dist/formats/cmf/core/binary.js.map +1 -1
  49. package/dist/formats/cmf/core/buffers.js +4 -0
  50. package/dist/formats/cmf/core/buffers.js.map +1 -1
  51. package/dist/formats/cmf/core/helpers.js +31 -0
  52. package/dist/formats/cmf/core/helpers.js.map +1 -1
  53. package/dist/formats/cmf/core/schema.js +10 -0
  54. package/dist/formats/cmf/core/schema.js.map +1 -1
  55. package/dist/formats/cmf/core/shared.js +9 -0
  56. package/dist/formats/cmf/core/shared.js.map +1 -1
  57. package/dist/formats/cmf/core/writer.js +54 -0
  58. package/dist/formats/cmf/core/writer.js.map +1 -1
  59. package/dist/formats/dds/core/bc6h.js +10 -0
  60. package/dist/formats/dds/core/bc6h.js.map +1 -1
  61. package/dist/formats/dds/core/bc7.js +16 -0
  62. package/dist/formats/dds/core/bc7.js.map +1 -1
  63. package/dist/formats/dds/core/helpers.js +47 -0
  64. package/dist/formats/dds/core/helpers.js.map +1 -1
  65. package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
  66. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
  67. package/dist/formats/dxbc/core/DxbcReader.js +266 -0
  68. package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
  69. package/dist/formats/dxbc/core/container.js +169 -0
  70. package/dist/formats/dxbc/core/container.js.map +1 -0
  71. package/dist/formats/dxbc/core/decoder.js +789 -0
  72. package/dist/formats/dxbc/core/decoder.js.map +1 -0
  73. package/dist/formats/dxbc/core/errors.js +19 -0
  74. package/dist/formats/dxbc/core/errors.js.map +1 -0
  75. package/dist/formats/dxbc/core/helpers.js +220 -0
  76. package/dist/formats/dxbc/core/helpers.js.map +1 -0
  77. package/dist/formats/dxbc/core/opcodes.js +45 -0
  78. package/dist/formats/dxbc/core/opcodes.js.map +1 -0
  79. package/dist/formats/dxbc/core/program.js +91 -0
  80. package/dist/formats/dxbc/core/program.js.map +1 -0
  81. package/dist/formats/dxbc/core/signature.js +172 -0
  82. package/dist/formats/dxbc/core/signature.js.map +1 -0
  83. package/dist/formats/dxbc/index.js +2 -0
  84. package/dist/formats/dxbc/index.js.map +1 -0
  85. package/dist/formats/fbx/core/helpers.js +21 -0
  86. package/dist/formats/fbx/core/helpers.js.map +1 -1
  87. package/dist/formats/flac/CjsFlacFormat.js +49 -0
  88. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  89. package/dist/formats/flac/core/helpers.js +20 -0
  90. package/dist/formats/flac/core/helpers.js.map +1 -1
  91. package/dist/formats/gif/CjsGifFormat.js +49 -0
  92. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  93. package/dist/formats/gif/core/helpers.js +20 -0
  94. package/dist/formats/gif/core/helpers.js.map +1 -1
  95. package/dist/formats/gltf/core/helpers.js +15 -0
  96. package/dist/formats/gltf/core/helpers.js.map +1 -1
  97. package/dist/formats/gltf/core/parser.js +13 -0
  98. package/dist/formats/gltf/core/parser.js.map +1 -1
  99. package/dist/formats/gltf/core/targets.js +10 -0
  100. package/dist/formats/gltf/core/targets.js.map +1 -1
  101. package/dist/formats/gr2/core/bitknit2.js +2 -0
  102. package/dist/formats/gr2/core/bitknit2.js.map +1 -1
  103. package/dist/formats/gr2/core/helpers.js +20 -0
  104. package/dist/formats/gr2/core/helpers.js.map +1 -1
  105. package/dist/formats/gr2/core/targets.js +10 -0
  106. package/dist/formats/gr2/core/targets.js.map +1 -1
  107. package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
  108. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
  109. package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
  110. package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
  111. package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
  112. package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
  113. package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
  114. package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
  115. package/dist/formats/hlsl/core/HlslReader.js +266 -0
  116. package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
  117. package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
  118. package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
  119. package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
  120. package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
  121. package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
  122. package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
  123. package/dist/formats/hlsl/core/analysis.js +51 -0
  124. package/dist/formats/hlsl/core/analysis.js.map +1 -0
  125. package/dist/formats/hlsl/core/helpers.js +270 -0
  126. package/dist/formats/hlsl/core/helpers.js.map +1 -0
  127. package/dist/formats/hlsl/core/json.js +284 -0
  128. package/dist/formats/hlsl/core/json.js.map +1 -0
  129. package/dist/formats/hlsl/core/metadata.js +327 -0
  130. package/dist/formats/hlsl/core/metadata.js.map +1 -0
  131. package/dist/formats/hlsl/core/portableReflection.js +848 -0
  132. package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
  133. package/dist/formats/hlsl/core/render-states.js +280 -0
  134. package/dist/formats/hlsl/core/render-states.js.map +1 -0
  135. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
  136. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
  137. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
  138. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
  139. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
  140. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
  141. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
  142. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
  143. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
  144. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
  145. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
  146. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
  147. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
  148. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
  149. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
  150. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
  151. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
  152. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
  153. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
  154. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
  155. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
  156. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
  157. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
  158. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
  159. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
  160. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
  161. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
  162. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
  163. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
  164. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
  165. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
  166. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
  167. package/dist/formats/hlsl/index.js +2 -0
  168. package/dist/formats/hlsl/index.js.map +1 -0
  169. package/dist/formats/hlsl/portable.js +2 -0
  170. package/dist/formats/hlsl/portable.js.map +1 -0
  171. package/dist/formats/index.js +4 -0
  172. package/dist/formats/index.js.map +1 -1
  173. package/dist/formats/jpeg/core/helpers.js +52 -0
  174. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  175. package/dist/formats/jpeg/core/jpeg.js +93 -0
  176. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  177. package/dist/formats/mp3/core/helpers.js +37 -0
  178. package/dist/formats/mp3/core/helpers.js.map +1 -1
  179. package/dist/formats/mp4/core/helpers.js +35 -0
  180. package/dist/formats/mp4/core/helpers.js.map +1 -1
  181. package/dist/formats/ogg/CjsOggFormat.js +49 -0
  182. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  183. package/dist/formats/ogg/core/helpers.js +23 -0
  184. package/dist/formats/ogg/core/helpers.js.map +1 -1
  185. package/dist/formats/ogg/core/vorbis.js +13 -0
  186. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  187. package/dist/formats/png/core/helpers.js +52 -0
  188. package/dist/formats/png/core/helpers.js.map +1 -1
  189. package/dist/formats/red/CjsRedFormat.js +2 -0
  190. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  191. package/dist/formats/red/core/CjsRedReader.js +52 -0
  192. package/dist/formats/red/core/CjsRedReader.js.map +1 -1
  193. package/dist/formats/red/core/helpers.js +19 -0
  194. package/dist/formats/red/core/helpers.js.map +1 -1
  195. package/dist/formats/stl/core/stl.js +8 -0
  196. package/dist/formats/stl/core/stl.js.map +1 -1
  197. package/dist/formats/stl/core/targets.js +10 -0
  198. package/dist/formats/stl/core/targets.js.map +1 -1
  199. package/dist/formats/tga/core/helpers.js +47 -0
  200. package/dist/formats/tga/core/helpers.js.map +1 -1
  201. package/dist/formats/wav/core/helpers.js +37 -0
  202. package/dist/formats/wav/core/helpers.js.map +1 -1
  203. package/dist/formats/webgl/CjsWebglFormat.js +221 -0
  204. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
  205. package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
  206. package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
  207. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
  208. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
  209. package/dist/formats/webgl/core/cewg/binary.js +101 -0
  210. package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
  211. package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
  212. package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
  213. package/dist/formats/webgl/core/effectPackage.js +789 -0
  214. package/dist/formats/webgl/core/effectPackage.js.map +1 -0
  215. package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
  216. package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
  217. package/dist/formats/webgl/core/errors.js +27 -0
  218. package/dist/formats/webgl/core/errors.js.map +1 -0
  219. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
  220. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
  221. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
  222. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
  223. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
  224. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
  225. package/dist/formats/webgl/core/helpers.js +306 -0
  226. package/dist/formats/webgl/core/helpers.js.map +1 -0
  227. package/dist/formats/webgl/index.js +2 -0
  228. package/dist/formats/webgl/index.js.map +1 -0
  229. package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
  230. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
  231. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
  232. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
  233. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
  234. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
  235. package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
  236. package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
  237. package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
  238. package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
  239. package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
  240. package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
  241. package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
  242. package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
  243. package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
  244. package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
  245. package/dist/formats/webgpu/core/errors.js +20 -0
  246. package/dist/formats/webgpu/core/errors.js.map +1 -0
  247. package/dist/formats/webgpu/core/helpers.js +448 -0
  248. package/dist/formats/webgpu/core/helpers.js.map +1 -0
  249. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
  250. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
  251. package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
  252. package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
  253. package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
  254. package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
  255. package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
  256. package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
  257. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
  258. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
  259. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
  260. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
  261. package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
  262. package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
  263. package/dist/formats/webgpu/core/packageEffect.js +300 -0
  264. package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
  265. package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
  266. package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
  267. package/dist/formats/webgpu/core/packageMetadata.js +8 -0
  268. package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
  269. package/dist/formats/webgpu/core/schema.js +4 -0
  270. package/dist/formats/webgpu/core/schema.js.map +1 -0
  271. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
  272. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
  273. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
  274. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
  275. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
  276. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
  277. package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
  278. package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
  279. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
  280. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
  281. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
  282. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
  283. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
  284. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
  285. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
  286. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
  287. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
  288. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
  289. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
  290. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
  291. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
  292. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
  293. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
  294. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
  295. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
  296. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
  297. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
  298. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
  299. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
  300. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
  301. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
  302. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
  303. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
  304. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
  305. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
  306. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
  307. package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
  308. package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
  309. package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
  310. package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
  311. package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
  312. package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
  313. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
  314. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
  315. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
  316. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
  317. package/dist/formats/webgpu/index.js +2 -0
  318. package/dist/formats/webgpu/index.js.map +1 -0
  319. package/dist/formats/webm/core/helpers.js +35 -0
  320. package/dist/formats/webm/core/helpers.js.map +1 -1
  321. package/dist/formats/webp/CjsWebpFormat.js +49 -0
  322. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  323. package/dist/formats/webp/core/helpers.js +23 -0
  324. package/dist/formats/webp/core/helpers.js.map +1 -1
  325. package/dist/formats/wem/CjsWemFormat.js +8 -0
  326. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  327. package/dist/formats/wem/core/bitStream.js +2 -0
  328. package/dist/formats/wem/core/bitStream.js.map +1 -1
  329. package/dist/formats/wem/core/helpers.js +20 -0
  330. package/dist/formats/wem/core/helpers.js.map +1 -1
  331. package/dist/formats/yaml/CjsYamlFormat.js +45 -0
  332. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  333. package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
  334. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  335. package/dist/formats/yaml/core/helpers.js +10 -0
  336. package/dist/formats/yaml/core/helpers.js.map +1 -1
  337. package/dist/index.js +56 -43
  338. package/dist/index.js.map +1 -1
  339. package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
  340. package/dist/resource/CjsResource.js.map +1 -0
  341. package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
  342. package/dist/resource/Tr2LightProfileRes.js.map +1 -0
  343. package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
  344. package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
  345. package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
  346. package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
  347. package/dist/resource/audio/CjsAudioRes.js +213 -0
  348. package/dist/resource/audio/CjsAudioRes.js.map +1 -0
  349. package/dist/resource/audio/index.js +4 -0
  350. package/dist/resource/audio/index.js.map +1 -0
  351. package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
  352. package/dist/resource/geometry/MeshDecalData.js.map +1 -0
  353. package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
  354. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
  355. package/dist/resource/geometry/TriGeometryRes.js +656 -0
  356. package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
  357. package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
  358. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
  359. package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
  360. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
  361. package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
  362. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
  363. package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
  364. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
  365. package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
  366. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
  367. package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
  368. package/dist/resource/geometry/TriJointBinding.js.map +1 -0
  369. package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
  370. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
  371. package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
  372. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
  373. package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
  374. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
  375. package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
  376. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
  377. package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
  378. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
  379. package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
  380. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
  381. package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
  382. package/dist/resource/geometry/granny/enums.js.map +1 -0
  383. package/dist/resource/geometry/granny/index.js +6 -0
  384. package/dist/resource/geometry/granny/index.js.map +1 -0
  385. package/dist/resource/geometry/index.js +17 -0
  386. package/dist/resource/geometry/index.js.map +1 -0
  387. package/dist/resource/index.js +52 -0
  388. package/dist/resource/index.js.map +1 -0
  389. package/dist/resource/resourceBoundary.js +64 -0
  390. package/dist/resource/resourceBoundary.js.map +1 -0
  391. package/dist/resource/shader/Tr2EffectRes.js +429 -0
  392. package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
  393. package/dist/resource/shader/Tr2MaterialArea.js +34 -0
  394. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
  395. package/dist/resource/shader/Tr2MaterialMesh.js +30 -0
  396. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
  397. package/dist/resource/shader/Tr2MaterialRes.js +35 -0
  398. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
  399. package/dist/resource/shader/Tr2Shader.js +256 -0
  400. package/dist/resource/shader/Tr2Shader.js.map +1 -0
  401. package/dist/resource/shader/Tr2ShaderPermutation.js +47 -0
  402. package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
  403. package/dist/resource/shader/index.js +17 -0
  404. package/dist/resource/shader/index.js.map +1 -0
  405. package/dist/resource/shader/portable.js +33 -0
  406. package/dist/resource/shader/portable.js.map +1 -0
  407. package/dist/resource/shader/reflection/Tr2EffectConstant.js +135 -0
  408. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
  409. package/dist/resource/shader/reflection/Tr2EffectDefine.js +28 -0
  410. package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
  411. package/dist/resource/shader/reflection/Tr2EffectDescription.js +107 -0
  412. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
  413. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +145 -0
  414. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
  415. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +103 -0
  416. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
  417. package/dist/resource/shader/reflection/Tr2EffectResource.js +84 -0
  418. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
  419. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +239 -0
  420. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
  421. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +66 -0
  422. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
  423. package/dist/resource/shader/reflection/Tr2Pass.js +109 -0
  424. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
  425. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +75 -0
  426. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
  427. package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
  428. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
  429. package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
  430. package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
  431. package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
  432. package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
  433. package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
  434. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
  435. package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
  436. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
  437. package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
  438. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
  439. package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
  440. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
  441. package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
  442. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
  443. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
  444. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
  445. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
  446. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
  447. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
  448. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
  449. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
  450. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
  451. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
  452. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
  453. package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
  454. package/dist/resource/texture/TriTextureRes.js.map +1 -0
  455. package/dist/resource/texture/index.js +15 -0
  456. package/dist/resource/texture/index.js.map +1 -0
  457. package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
  458. package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
  459. package/dist/worker/CjsResManMainThreadLoader.js +87 -0
  460. package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
  461. package/dist/worker/CjsResManWorker.js +217 -0
  462. package/dist/worker/CjsResManWorker.js.map +1 -0
  463. package/dist/worker/CjsResManWorkerLoader.js +434 -0
  464. package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
  465. package/dist/worker/protocol.js +12 -0
  466. package/dist/worker/protocol.js.map +1 -0
  467. package/docs/README.md +16 -3
  468. package/docs/architecture.md +39 -16
  469. package/docs/concepts/resource-lifecycle.md +2 -1
  470. package/docs/formats/README.md +8 -0
  471. package/docs/formats/provenance.md +11 -3
  472. package/docs/reference/classes/README.md +6 -4
  473. package/docs/reference/classes/audio.md +30 -0
  474. package/docs/reference/classes/core.md +31 -11
  475. package/docs/reference/classes/formats.md +440 -0
  476. package/docs/reference/classes/resources.md +151 -41
  477. package/docs/reference/classes/texture.md +7 -7
  478. package/docs/reference/motherlode-cache.md +17 -0
  479. package/docs/reference/queues.md +9 -1
  480. package/docs/reference/workers.md +135 -0
  481. package/docs/roadmap.md +27 -1
  482. package/format-notices/dxbc/LICENSE +21 -0
  483. package/format-notices/dxbc/NOTICE +20 -0
  484. package/format-notices/hlsl/LICENSE +21 -0
  485. package/format-notices/hlsl/NOTICE +25 -0
  486. package/format-notices/webgl/LICENSE +21 -0
  487. package/format-notices/webgl/NOTICE +35 -0
  488. package/format-notices/webgpu/LICENSE +21 -0
  489. package/format-notices/webgpu/NOTICE +31 -0
  490. package/package.json +13 -1
  491. package/dist/CjsResManQueue.js.map +0 -1
  492. package/dist/CjsResource.js.map +0 -1
  493. package/dist/CjsResourceSource.js +0 -68
  494. package/dist/CjsResourceSource.js.map +0 -1
  495. package/dist/resourcePath.js +0 -18
  496. package/dist/resourcePath.js.map +0 -1
  497. package/dist/resourceStates.js +0 -9
  498. package/dist/resourceStates.js.map +0 -1
  499. package/dist/resources/AudioGeometryResData.js.map +0 -1
  500. package/dist/resources/GStateBindingCallbackData.js.map +0 -1
  501. package/dist/resources/MeshDecalData.js.map +0 -1
  502. package/dist/resources/MeshDecalLodData.js.map +0 -1
  503. package/dist/resources/Tr2EffectRes.js +0 -71
  504. package/dist/resources/Tr2EffectRes.js.map +0 -1
  505. package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
  506. package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
  507. package/dist/resources/Tr2ImageRes.js.map +0 -1
  508. package/dist/resources/Tr2LightProfileRes.js.map +0 -1
  509. package/dist/resources/Tr2MaterialArea.js +0 -34
  510. package/dist/resources/Tr2MaterialArea.js.map +0 -1
  511. package/dist/resources/Tr2MaterialMesh.js +0 -31
  512. package/dist/resources/Tr2MaterialMesh.js.map +0 -1
  513. package/dist/resources/Tr2MaterialRes.js +0 -34
  514. package/dist/resources/Tr2MaterialRes.js.map +0 -1
  515. package/dist/resources/Tr2ShaderPermutation.js +0 -43
  516. package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
  517. package/dist/resources/Tr2TextureLodManager.js.map +0 -1
  518. package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
  519. package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
  520. package/dist/resources/Tr2TexturePipeline.js.map +0 -1
  521. package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
  522. package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
  523. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
  524. package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
  525. package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
  526. package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
  527. package/dist/resources/TriGeometryRes.js +0 -239
  528. package/dist/resources/TriGeometryRes.js.map +0 -1
  529. package/dist/resources/TriGeometryResAreaData.js.map +0 -1
  530. package/dist/resources/TriGeometryResJointData.js.map +0 -1
  531. package/dist/resources/TriGeometryResLodData.js.map +0 -1
  532. package/dist/resources/TriGeometryResMeshData.js.map +0 -1
  533. package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
  534. package/dist/resources/TriGrannyRes.js.map +0 -1
  535. package/dist/resources/TriJointBinding.js.map +0 -1
  536. package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
  537. package/dist/resources/TriRtGeometryConstants.js.map +0 -1
  538. package/dist/resources/TriTextureRes.js.map +0 -1
  539. package/dist/resources/enums.js.map +0 -1
  540. package/dist/resources/resourceBoundary.js +0 -47
  541. package/dist/resources/resourceBoundary.js.map +0 -1
  542. package/dist/resources/texturePipelineBehavior.js.map +0 -1
  543. package/dist/texture/CjsTextureArrayRes.js.map +0 -1
  544. package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sources":["../../../../../src/formats/hlsl/core/json.js"],"sourcesContent":["/**\n * Tr2 effect JSON emitter.\n *\n * Converts the internal HlslEffectRes/HlslShader graph (src/core/tr2, internal\n * parsing machinery — not part of this package's public surface) into the\n * plain, documented JSON shape that IS the public contract of this reader.\n *\n * `emitEffectJson(effect, shader, options)` returns a plain object whose key\n * order mirrors the reader schema below. When `options.classes` is given,\n * matching node kinds are instantiated and populated as class instances\n * instead of plain object literals — an opt-in alternative to walking the\n * returned JSON into application-specific classes by hand.\n */\n\nimport { hlslShaderStageName } from \"./tr2/HlslRenderContextEnum.js\";\n\n/**\n * Node keys accepted by {@link emitEffectJson}'s `options.classes` map.\n *\n * Each key names one node shape in the emitted effect graph; the mapped\n * constructor is instantiated with `new` and populated with that node's\n * usual fields instead of a plain object literal.\n *\n * This is a first-pass hydration surface: it covers the top-level effect\n * graph (the header, the default-permutation effect description, its\n * techniques/passes/stage inputs, and per-stage constants/resources/\n * samplers/bytecode). Nested detail that has no dedicated class key yet\n * (shader libraries, parameter annotations, pipeline-input/register\n * signatures) is still emitted as plain, JSON-compatible data.\n */\nexport const CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Permutation\",\n \"EffectDescription\",\n \"Technique\",\n \"Pass\",\n \"StageInput\",\n \"Constant\",\n \"Resource\",\n \"Sampler\",\n \"ShaderBytecode\"\n]);\n\n/**\n * Instantiate and populate a node class, or return the plain props unchanged.\n *\n * @param {object} classes Opt-in node class map.\n * @param {string} key Node key to look up in `classes`.\n * @param {object} props Fields to populate onto the instance.\n * @returns {object} A populated class instance, or `props` when no\n * constructor is registered for `key`.\n */\nfunction build(classes, key, props)\n{\n const Ctor = classes[key];\n return Ctor ? Object.assign(new Ctor(), props) : props;\n}\n\n/**\n * Emit one HlslShaderPermutation node.\n *\n * @param {object} permutation Decoded permutation axis.\n * @param {object} classes Opt-in node class map.\n * @returns {object} Emitted permutation record.\n */\nfunction emitPermutation(permutation, classes)\n{\n return build(classes, \"Permutation\", {\n name: permutation.name,\n options: permutation.options.slice(),\n defaultOption: permutation.defaultOption,\n description: permutation.description,\n type: permutation.type\n });\n}\n\n/**\n * Emit one HlslShaderBytecode node. Bytes are included as a plain number\n * array (opaque payload; this package does not decode DXBC/HLSL bytecode).\n *\n * @param {object|null} bytecode Captured shader bytecode, or null.\n * @param {object} classes Opt-in node class map.\n * @returns {object|null} Emitted bytecode record, or null.\n */\nfunction emitShaderBytecode(bytecode, classes)\n{\n if (!bytecode) return null;\n return build(classes, \"ShaderBytecode\", {\n stageType: bytecode.stageType,\n stageName: bytecode.stageName,\n shaderSize: bytecode.shaderSize,\n stringTableOffset: bytecode.stringTableOffset,\n effectName: bytecode.effectName,\n bytes: Array.from(bytecode.bytes)\n });\n}\n\n/**\n * Emit one HlslEffectConstant node.\n *\n * @param {object} constant Decoded constant-buffer field metadata.\n * @param {object} classes Opt-in node class map.\n * @returns {object} Emitted constant record.\n */\nfunction emitConstant(constant, classes)\n{\n return build(classes, \"Constant\", {\n name: constant.name,\n offset: constant.offset,\n size: constant.size,\n type: constant.type,\n dimension: constant.dimension,\n elements: constant.elements,\n isSRGB: constant.isSRGB,\n isAutoregister: constant.isAutoregister\n });\n}\n\n/**\n * Emit one HlslEffectResource (SRV or UAV) node.\n *\n * @param {number} registerIndex Shader register index.\n * @param {object} resource Decoded resource metadata.\n * @param {object} classes Opt-in node class map.\n * @returns {object} Emitted resource record.\n */\nfunction emitResource(registerIndex, resource, classes)\n{\n return build(classes, \"Resource\", {\n registerIndex,\n name: resource.name,\n type: resource.type,\n arrayElements: resource.arrayElements,\n isSRGB: resource.isSRGB,\n isAutoregister: resource.isAutoregister\n });\n}\n\n/**\n * Emit one HlslSamplerSetup node.\n *\n * @param {number} registerIndex Shader register index.\n * @param {object} samplerSetup Decoded sampler setup (name + descriptor).\n * @param {object} classes Opt-in node class map.\n * @returns {object} Emitted sampler record.\n */\nfunction emitSampler(registerIndex, samplerSetup, classes)\n{\n const sampler = samplerSetup.sampler || {};\n return build(classes, \"Sampler\", {\n registerIndex,\n name: samplerSetup.name,\n isDynamic: !!sampler.isDynamic,\n comparison: !!sampler.comparison,\n minFilter: sampler.minFilter,\n magFilter: sampler.magFilter,\n mipFilter: sampler.mipFilter,\n addressU: sampler.addressU,\n addressV: sampler.addressV,\n addressW: sampler.addressW,\n mipLODBias: sampler.mipLODBias,\n maxAnisotropy: sampler.maxAnisotropy,\n comparisonFunc: sampler.comparisonFunc,\n borderColor: (sampler.borderColor || []).slice(),\n minLOD: sampler.minLOD,\n maxLOD: sampler.maxLOD\n });\n}\n\n/**\n * Emit one HlslEffectStageInput node, or null for stages absent from a pass.\n *\n * @param {object|undefined} stageInput Decoded stage input, if present.\n * @param {number} stageType Trinity shader stage enum value.\n * @param {object} classes Opt-in node class map.\n * @returns {object|null} Emitted stage-input record, or null.\n */\nfunction emitStageInput(stageInput, stageType, classes)\n{\n if (!stageInput || !stageInput.m_exists) return null;\n\n const signature = stageInput.signature || {};\n\n return build(classes, \"StageInput\", {\n stageType,\n stageName: hlslShaderStageName(stageType),\n constants: (stageInput.constants || []).map((constant) => emitConstant(constant, classes)),\n resources: Array.from(\n stageInput.resources || [],\n ([ registerIndex, resource ]) => emitResource(registerIndex, resource, classes)\n ),\n samplers: Array.from(\n stageInput.samplers || [],\n ([ registerIndex, sampler ]) => emitSampler(registerIndex, sampler, classes)\n ),\n uavs: Array.from(\n stageInput.uavs || [],\n ([ registerIndex, resource ]) => emitResource(registerIndex, resource, classes)\n ),\n bytecode: emitShaderBytecode(stageInput.cjsShaderBytecode, classes),\n signature: {\n pipelineInputs: (signature.pipelineInputs || []).map((entry) => ({ ...entry })),\n registers: (signature.registers || []).map((entry) => ({ ...entry })),\n threadGroupSize: signature.threadGroupSize ? { ...signature.threadGroupSize } : null\n }\n });\n}\n\n/**\n * Emit one HlslPass node.\n *\n * @param {object} pass Decoded technique pass.\n * @param {object} classes Opt-in node class map.\n * @returns {object} Emitted pass record.\n */\nfunction emitPass(pass, classes)\n{\n return build(classes, \"Pass\", {\n shaderTypeMask: pass.shaderTypeMask,\n stageInputs: pass.stageInputs.map((stageInput, stageType) => emitStageInput(stageInput, stageType, classes)),\n renderStates: pass.cjsRenderStateSetup ? pass.cjsRenderStateSetup.toJSON() : []\n });\n}\n\n/**\n * Emit one HlslEffectTechnique node.\n *\n * @param {object} technique Decoded technique.\n * @param {object} classes Opt-in node class map.\n * @returns {object} Emitted technique record.\n */\nfunction emitTechnique(technique, classes)\n{\n return build(classes, \"Technique\", {\n name: technique.name,\n shaderTypeMask: technique.shaderTypeMask,\n passes: technique.passes.map((pass) => emitPass(pass, classes)),\n // Shader-library (v14+ ray tracing) metadata has no dedicated class\n // key yet; emitted as plain, JSON-compatible data.\n libraries: technique.libraries.map((library) => library?.toJSON?.() ?? library)\n });\n}\n\n/**\n * Serializes a map of parameter names to annotation arrays as plain data.\n *\n * @param {Map<string, object[]>} annotations Annotation map.\n * @returns {object[]} JSON-safe annotation groups.\n */\nfunction emitAnnotations(annotations)\n{\n return Array.from(annotations.entries(), ([ name, entries ]) => ({\n name,\n annotations: entries.map((entry) => entry?.toJSON?.() ?? entry)\n }));\n}\n\n/**\n * Emit one HlslEffectDescription node: one resolved permutation's decoded\n * techniques, passes, and stage metadata.\n *\n * @param {object} description Decoded effect description (`HlslShader.GetEffectDescription()`).\n * @param {object} classes Opt-in node class map.\n * @returns {object} Emitted effect-description record.\n */\nfunction emitEffectDescription(description, classes)\n{\n return build(classes, \"EffectDescription\", {\n version: description.version,\n effectName: description.effectName,\n techniques: description.techniques.map((technique) => emitTechnique(technique, classes)),\n annotations: emitAnnotations(description.annotations),\n readError: description.readError\n ? { name: description.readError.name, message: description.readError.message }\n : null\n });\n}\n\n/**\n * Convert a loaded HlslEffectRes (and, when resolvable, its default- or\n * selected-permutation HlslShader) into the documented plain JSON shape.\n *\n * @param {object} effect Loaded HlslEffectRes instance.\n * @param {object|null} shader Resolved HlslShader for one permutation, or null.\n * @param {object} [options] Emission options.\n * @param {object} [options.classes] Opt-in node class map. See {@link CLASS_KEYS}.\n * @returns {object} Plain JSON-compatible effect graph, or a populated\n * `classes.Root` instance when provided.\n */\nexport function emitEffectJson(effect, shader, options = {})\n{\n const { classes = {} } = options;\n\n return build(classes, \"Root\", {\n version: effect.m_version,\n compilerVersion: effect.m_compilerVersion,\n sourcePath: effect.sourcePath,\n bodyCount: effect.m_offsetCount,\n permutations: effect.m_permutations.map((permutation) => emitPermutation(permutation, classes)),\n effect: shader ? emitEffectDescription(shader.GetEffectDescription(), classes) : null,\n loadError: effect.loadError ? { name: effect.loadError.name, message: effect.loadError.message } : null\n });\n}\n"],"names":["CLASS_KEYS","Object","freeze","build","classes","key","props","Ctor","assign","emitPermutation","permutation","name","options","slice","defaultOption","description","type","emitShaderBytecode","bytecode","stageType","stageName","shaderSize","stringTableOffset","effectName","bytes","Array","from","emitConstant","constant","offset","size","dimension","elements","isSRGB","isAutoregister","emitResource","registerIndex","resource","arrayElements","emitSampler","samplerSetup","sampler","isDynamic","comparison","minFilter","magFilter","mipFilter","addressU","addressV","addressW","mipLODBias","maxAnisotropy","comparisonFunc","borderColor","minLOD","maxLOD","emitStageInput","stageInput","m_exists","signature","hlslShaderStageName","constants","map","resources","samplers","uavs","cjsShaderBytecode","pipelineInputs","entry","registers","threadGroupSize","emitPass","pass","shaderTypeMask","stageInputs","renderStates","cjsRenderStateSetup","toJSON","emitTechnique","technique","passes","libraries","library","emitAnnotations","annotations","entries","emitEffectDescription","version","techniques","readError","message","emitEffectJson","effect","shader","m_version","compilerVersion","m_compilerVersion","sourcePath","bodyCount","m_offsetCount","permutations","m_permutations","GetEffectDescription","loadError"],"mappings":"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"}
@@ -0,0 +1,327 @@
1
+ import { emitRenderStates } from './render-states.js';
2
+ import { hlslShaderStageName } from './tr2/HlslRenderContextEnum.js';
3
+
4
+ /**
5
+ * Metadata-only projection for decoded Tr2 effect containers.
6
+ *
7
+ * This keeps the public shader-inspection endpoint small: permutation axes,
8
+ * selected option sets, techniques, passes, stage inputs, constants,
9
+ * resources, UAVs, samplers, pass render states, and signatures. It
10
+ * intentionally omits shader bytecode, constant value bytes, render-state
11
+ * handles, and other runtime renderer state.
12
+ */
13
+
14
+
15
+ /**
16
+ * Normalize caller-supplied permutation option selections.
17
+ *
18
+ * @param {Array<object>|Map<string, string>|null|undefined} options Option input.
19
+ * @param {string} source Source label for emitted selections.
20
+ * @returns {object[]} Normalized option selections.
21
+ */
22
+ function normalizeOptionSelections(options, source) {
23
+ if (options instanceof Map) {
24
+ return Array.from(options.entries()).map(([name, value]) => ({
25
+ name,
26
+ value,
27
+ source
28
+ }));
29
+ }
30
+ if (!Array.isArray(options)) {
31
+ return [];
32
+ }
33
+ return options.map(entry => ({
34
+ name: entry?.name || "",
35
+ value: entry?.value || "",
36
+ source
37
+ }));
38
+ }
39
+
40
+ /**
41
+ * Emit one permutation axis.
42
+ *
43
+ * @param {object} permutation Decoded permutation axis.
44
+ * @returns {object} Plain metadata.
45
+ */
46
+ function emitPermutation(permutation) {
47
+ return {
48
+ name: permutation.name,
49
+ options: permutation.options.slice(),
50
+ defaultOption: permutation.defaultOption,
51
+ defaultValue: permutation.options[permutation.defaultOption] ?? null,
52
+ description: permutation.description,
53
+ type: permutation.type
54
+ };
55
+ }
56
+
57
+ /**
58
+ * Resolve the option set that Carbon's `GetShader` lookup will use.
59
+ *
60
+ * @param {object} effect Loaded HlslEffectRes.
61
+ * @param {Array<object>|Map<string, string>|null|undefined} options Local option selections.
62
+ * @returns {{bodyIndex: number, selectedOptions: object[]}} Resolved body index and options.
63
+ */
64
+ function resolveSelectedOptions(effect, options = null) {
65
+ const localOptions = normalizeOptionSelections(options, "local");
66
+ const globalOptions = normalizeOptionSelections(effect.constructor.globalEffectOptions || [], "global");
67
+ const selectedOptions = [];
68
+ let multiplier = 1;
69
+ let bodyIndex = 0;
70
+ for (const permutation of effect.m_permutations) {
71
+ let optionIndex = permutation.defaultOption;
72
+ let source = "default";
73
+ const globalOption = globalOptions.find(entry => entry.name === permutation.name);
74
+ const localOption = localOptions.find(entry => entry.name === permutation.name);
75
+ const selected = globalOption || localOption;
76
+ if (selected) {
77
+ const selectedIndex = permutation.options.findIndex(option => option === selected.value);
78
+ if (selectedIndex >= 0) {
79
+ optionIndex = selectedIndex;
80
+ source = selected.source;
81
+ }
82
+ }
83
+ selectedOptions.push({
84
+ name: permutation.name,
85
+ value: permutation.options[optionIndex] ?? null,
86
+ optionIndex,
87
+ defaultOption: permutation.defaultOption,
88
+ defaultValue: permutation.options[permutation.defaultOption] ?? null,
89
+ source
90
+ });
91
+ bodyIndex += optionIndex * multiplier;
92
+ multiplier *= permutation.options.length || 1;
93
+ }
94
+ return {
95
+ bodyIndex,
96
+ selectedOptions
97
+ };
98
+ }
99
+
100
+ /**
101
+ * Emit one constant-buffer field metadata record.
102
+ *
103
+ * @param {object} constant Decoded constant metadata.
104
+ * @returns {object} Plain metadata.
105
+ */
106
+ function emitConstant(constant) {
107
+ return {
108
+ name: constant.name,
109
+ offset: constant.offset,
110
+ size: constant.size,
111
+ type: constant.type,
112
+ dimension: constant.dimension,
113
+ elements: constant.elements,
114
+ isSRGB: constant.isSRGB,
115
+ isAutoregister: constant.isAutoregister
116
+ };
117
+ }
118
+
119
+ /**
120
+ * Emit one SRV/UAV metadata record.
121
+ *
122
+ * @param {number} registerIndex Shader register index.
123
+ * @param {object} resource Decoded resource metadata.
124
+ * @returns {object} Plain metadata.
125
+ */
126
+ function emitResource(registerIndex, resource) {
127
+ return {
128
+ registerIndex,
129
+ name: resource.name,
130
+ type: resource.type,
131
+ arrayElements: resource.arrayElements,
132
+ isSRGB: resource.isSRGB,
133
+ isAutoregister: resource.isAutoregister
134
+ };
135
+ }
136
+
137
+ /**
138
+ * Emit one sampler metadata record.
139
+ *
140
+ * @param {number} registerIndex Shader register index.
141
+ * @param {object} samplerSetup Decoded sampler setup.
142
+ * @returns {object} Plain metadata.
143
+ */
144
+ function emitSampler(registerIndex, samplerSetup) {
145
+ const sampler = samplerSetup.sampler || {};
146
+ return {
147
+ registerIndex,
148
+ name: samplerSetup.name,
149
+ isDynamic: !!sampler.isDynamic,
150
+ comparison: !!sampler.comparison,
151
+ minFilter: sampler.minFilter,
152
+ magFilter: sampler.magFilter,
153
+ mipFilter: sampler.mipFilter,
154
+ addressU: sampler.addressU,
155
+ addressV: sampler.addressV,
156
+ addressW: sampler.addressW,
157
+ mipLODBias: sampler.mipLODBias,
158
+ maxAnisotropy: sampler.maxAnisotropy,
159
+ comparisonFunc: sampler.comparisonFunc,
160
+ borderColor: (sampler.borderColor || []).slice(),
161
+ minLOD: sampler.minLOD,
162
+ maxLOD: sampler.maxLOD
163
+ };
164
+ }
165
+
166
+ /**
167
+ * Emit one stage or library input.
168
+ *
169
+ * @param {object} stageInput Decoded stage input.
170
+ * @param {number} stageType Trinity shader stage enum.
171
+ * @param {object} [options] Emission options.
172
+ * @param {boolean} [options.requireExists] Whether absent stage inputs emit null.
173
+ * @returns {object|null} Plain metadata, or null for absent pass stages.
174
+ */
175
+ function emitStageInput(stageInput, stageType, options = {}) {
176
+ const {
177
+ requireExists = true
178
+ } = options;
179
+ if (!stageInput || requireExists && !stageInput.m_exists) return null;
180
+ const signature = stageInput.signature || {};
181
+ return {
182
+ stageType,
183
+ stageName: hlslShaderStageName(stageType),
184
+ constantValueSize: stageInput.m_constantValueSize || 0,
185
+ constants: (stageInput.constants || []).map(emitConstant),
186
+ resources: Array.from(stageInput.resources || [], ([registerIndex, resource]) => emitResource(registerIndex, resource)),
187
+ samplers: Array.from(stageInput.samplers || [], ([registerIndex, sampler]) => emitSampler(registerIndex, sampler)),
188
+ uavs: Array.from(stageInput.uavs || [], ([registerIndex, resource]) => emitResource(registerIndex, resource)),
189
+ annotations: (stageInput.annotation || []).map(entry => entry?.toJSON?.() ?? {
190
+ ...entry
191
+ }),
192
+ signature: {
193
+ pipelineInputs: (signature.pipelineInputs || []).map(entry => ({
194
+ ...entry
195
+ })),
196
+ registers: (signature.registers || []).map(entry => ({
197
+ ...entry
198
+ })),
199
+ samplers: (signature.samplers || []).map(entry => ({
200
+ ...entry
201
+ })),
202
+ threadGroupSize: signature.threadGroupSize ? {
203
+ ...signature.threadGroupSize
204
+ } : null
205
+ }
206
+ };
207
+ }
208
+
209
+ /**
210
+ * Emit ray-tracing shader-library metadata without bytecode or runtime handles.
211
+ *
212
+ * @param {object} library Decoded shader library.
213
+ * @returns {object} Plain metadata.
214
+ */
215
+ function emitLibrary(library) {
216
+ return {
217
+ payloadSize: library.payloadSize,
218
+ rayGenName: library.rayGenName,
219
+ missName: library.missName,
220
+ closestHitName: library.closestHitName,
221
+ anyHitName: library.anyHitName,
222
+ intersectionName: library.intersectionName,
223
+ hitGroupName: library.hitGroupName,
224
+ exports: library.exports.map(entry => ({
225
+ ...entry
226
+ })),
227
+ globalInput: emitStageInput(library.globalInput, 2, {
228
+ requireExists: false
229
+ }),
230
+ localInput: emitStageInput(library.localInput, 2, {
231
+ requireExists: false
232
+ })
233
+ };
234
+ }
235
+
236
+ /**
237
+ * Emit one pass metadata record.
238
+ *
239
+ * @param {object} pass Decoded pass.
240
+ * @returns {object} Plain metadata.
241
+ */
242
+ function emitPass(pass) {
243
+ return {
244
+ shaderTypeMask: pass.shaderTypeMask,
245
+ renderStates: emitRenderStates(pass.cjsRenderStateSetup),
246
+ stageInputs: pass.stageInputs.map((stageInput, stageType) => emitStageInput(stageInput, stageType))
247
+ };
248
+ }
249
+
250
+ /**
251
+ * Emit one technique metadata record.
252
+ *
253
+ * @param {object} technique Decoded technique.
254
+ * @returns {object} Plain metadata.
255
+ */
256
+ function emitTechnique(technique) {
257
+ return {
258
+ name: technique.name,
259
+ shaderTypeMask: technique.shaderTypeMask,
260
+ passes: technique.passes.map(emitPass),
261
+ libraries: technique.libraries.map(emitLibrary)
262
+ };
263
+ }
264
+
265
+ /**
266
+ * Emit one effect-description metadata record.
267
+ *
268
+ * @param {object} description Decoded effect description.
269
+ * @returns {object} Plain metadata.
270
+ */
271
+ function emitEffectDescription(description) {
272
+ return {
273
+ version: description.version,
274
+ effectName: description.effectName,
275
+ techniques: description.techniques.map(emitTechnique),
276
+ annotations: Array.from(description.annotations.entries(), ([name, entries]) => ({
277
+ name,
278
+ annotations: entries.map(entry => entry?.toJSON?.() ?? {
279
+ ...entry
280
+ })
281
+ })),
282
+ readError: description.readError ? {
283
+ name: description.readError.name,
284
+ message: description.readError.message
285
+ } : null
286
+ };
287
+ }
288
+
289
+ /**
290
+ * Emit shared effect header metadata.
291
+ *
292
+ * @param {object} effect Loaded HlslEffectRes.
293
+ * @returns {object} Plain metadata.
294
+ */
295
+ function emitHeader(effect) {
296
+ return {
297
+ version: effect.m_version,
298
+ compilerVersion: effect.m_compilerVersion,
299
+ sourcePath: effect.sourcePath,
300
+ bodyCount: effect.m_offsetCount,
301
+ permutations: effect.m_permutations.map(emitPermutation),
302
+ loadError: effect.loadError ? {
303
+ name: effect.loadError.name,
304
+ message: effect.loadError.message
305
+ } : null
306
+ };
307
+ }
308
+
309
+ /**
310
+ * Emit metadata for one resolved permutation body.
311
+ *
312
+ * @param {object} effect Loaded HlslEffectRes.
313
+ * @param {object|null} shader Resolved shader, if decoded.
314
+ * @param {{bodyIndex: number, selectedOptions: object[]}} selection Resolved option selection.
315
+ * @returns {object} Plain metadata.
316
+ */
317
+ function emitEffectMetadata(effect, shader, selection) {
318
+ return {
319
+ ...emitHeader(effect),
320
+ bodyIndex: selection.bodyIndex,
321
+ selectedOptions: selection.selectedOptions,
322
+ effect: shader ? emitEffectDescription(shader.GetEffectDescription()) : null
323
+ };
324
+ }
325
+
326
+ export { emitEffectMetadata, resolveSelectedOptions };
327
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sources":["../../../../../src/formats/hlsl/core/metadata.js"],"sourcesContent":["/**\n * Metadata-only projection for decoded Tr2 effect containers.\n *\n * This keeps the public shader-inspection endpoint small: permutation axes,\n * selected option sets, techniques, passes, stage inputs, constants,\n * resources, UAVs, samplers, pass render states, and signatures. It\n * intentionally omits shader bytecode, constant value bytes, render-state\n * handles, and other runtime renderer state.\n */\n\nimport { emitRenderStates } from \"./render-states.js\";\nimport { hlslShaderStageName } from \"./tr2/HlslRenderContextEnum.js\";\n\n/**\n * Normalize caller-supplied permutation option selections.\n *\n * @param {Array<object>|Map<string, string>|null|undefined} options Option input.\n * @param {string} source Source label for emitted selections.\n * @returns {object[]} Normalized option selections.\n */\nfunction normalizeOptionSelections(options, source)\n{\n if (options instanceof Map)\n {\n return Array.from(options.entries()).map(([ name, value ]) => ({ name, value, source }));\n }\n if (!Array.isArray(options))\n {\n return [];\n }\n return options.map((entry) => ({\n name: entry?.name || \"\",\n value: entry?.value || \"\",\n source\n }));\n}\n\n/**\n * Emit one permutation axis.\n *\n * @param {object} permutation Decoded permutation axis.\n * @returns {object} Plain metadata.\n */\nfunction emitPermutation(permutation)\n{\n return {\n name: permutation.name,\n options: permutation.options.slice(),\n defaultOption: permutation.defaultOption,\n defaultValue: permutation.options[permutation.defaultOption] ?? null,\n description: permutation.description,\n type: permutation.type\n };\n}\n\n/**\n * Resolve the option set that Carbon's `GetShader` lookup will use.\n *\n * @param {object} effect Loaded HlslEffectRes.\n * @param {Array<object>|Map<string, string>|null|undefined} options Local option selections.\n * @returns {{bodyIndex: number, selectedOptions: object[]}} Resolved body index and options.\n */\nexport function resolveSelectedOptions(effect, options = null)\n{\n const localOptions = normalizeOptionSelections(options, \"local\");\n const globalOptions = normalizeOptionSelections(effect.constructor.globalEffectOptions || [], \"global\");\n const selectedOptions = [];\n let multiplier = 1;\n let bodyIndex = 0;\n\n for (const permutation of effect.m_permutations)\n {\n let optionIndex = permutation.defaultOption;\n let source = \"default\";\n const globalOption = globalOptions.find((entry) => entry.name === permutation.name);\n const localOption = localOptions.find((entry) => entry.name === permutation.name);\n const selected = globalOption || localOption;\n\n if (selected)\n {\n const selectedIndex = permutation.options.findIndex((option) => option === selected.value);\n if (selectedIndex >= 0)\n {\n optionIndex = selectedIndex;\n source = selected.source;\n }\n }\n\n selectedOptions.push({\n name: permutation.name,\n value: permutation.options[optionIndex] ?? null,\n optionIndex,\n defaultOption: permutation.defaultOption,\n defaultValue: permutation.options[permutation.defaultOption] ?? null,\n source\n });\n\n bodyIndex += optionIndex * multiplier;\n multiplier *= permutation.options.length || 1;\n }\n\n return { bodyIndex, selectedOptions };\n}\n\n/**\n * Emit one constant-buffer field metadata record.\n *\n * @param {object} constant Decoded constant metadata.\n * @returns {object} Plain metadata.\n */\nfunction emitConstant(constant)\n{\n return {\n name: constant.name,\n offset: constant.offset,\n size: constant.size,\n type: constant.type,\n dimension: constant.dimension,\n elements: constant.elements,\n isSRGB: constant.isSRGB,\n isAutoregister: constant.isAutoregister\n };\n}\n\n/**\n * Emit one SRV/UAV metadata record.\n *\n * @param {number} registerIndex Shader register index.\n * @param {object} resource Decoded resource metadata.\n * @returns {object} Plain metadata.\n */\nfunction emitResource(registerIndex, resource)\n{\n return {\n registerIndex,\n name: resource.name,\n type: resource.type,\n arrayElements: resource.arrayElements,\n isSRGB: resource.isSRGB,\n isAutoregister: resource.isAutoregister\n };\n}\n\n/**\n * Emit one sampler metadata record.\n *\n * @param {number} registerIndex Shader register index.\n * @param {object} samplerSetup Decoded sampler setup.\n * @returns {object} Plain metadata.\n */\nfunction emitSampler(registerIndex, samplerSetup)\n{\n const sampler = samplerSetup.sampler || {};\n return {\n registerIndex,\n name: samplerSetup.name,\n isDynamic: !!sampler.isDynamic,\n comparison: !!sampler.comparison,\n minFilter: sampler.minFilter,\n magFilter: sampler.magFilter,\n mipFilter: sampler.mipFilter,\n addressU: sampler.addressU,\n addressV: sampler.addressV,\n addressW: sampler.addressW,\n mipLODBias: sampler.mipLODBias,\n maxAnisotropy: sampler.maxAnisotropy,\n comparisonFunc: sampler.comparisonFunc,\n borderColor: (sampler.borderColor || []).slice(),\n minLOD: sampler.minLOD,\n maxLOD: sampler.maxLOD\n };\n}\n\n/**\n * Emit one stage or library input.\n *\n * @param {object} stageInput Decoded stage input.\n * @param {number} stageType Trinity shader stage enum.\n * @param {object} [options] Emission options.\n * @param {boolean} [options.requireExists] Whether absent stage inputs emit null.\n * @returns {object|null} Plain metadata, or null for absent pass stages.\n */\nfunction emitStageInput(stageInput, stageType, options = {})\n{\n const { requireExists = true } = options;\n if (!stageInput || (requireExists && !stageInput.m_exists)) return null;\n\n const signature = stageInput.signature || {};\n\n return {\n stageType,\n stageName: hlslShaderStageName(stageType),\n constantValueSize: stageInput.m_constantValueSize || 0,\n constants: (stageInput.constants || []).map(emitConstant),\n resources: Array.from(\n stageInput.resources || [],\n ([ registerIndex, resource ]) => emitResource(registerIndex, resource)\n ),\n samplers: Array.from(\n stageInput.samplers || [],\n ([ registerIndex, sampler ]) => emitSampler(registerIndex, sampler)\n ),\n uavs: Array.from(\n stageInput.uavs || [],\n ([ registerIndex, resource ]) => emitResource(registerIndex, resource)\n ),\n annotations: (stageInput.annotation || []).map((entry) => entry?.toJSON?.() ?? { ...entry }),\n signature: {\n pipelineInputs: (signature.pipelineInputs || []).map((entry) => ({ ...entry })),\n registers: (signature.registers || []).map((entry) => ({ ...entry })),\n samplers: (signature.samplers || []).map((entry) => ({ ...entry })),\n threadGroupSize: signature.threadGroupSize ? { ...signature.threadGroupSize } : null\n }\n };\n}\n\n/**\n * Emit ray-tracing shader-library metadata without bytecode or runtime handles.\n *\n * @param {object} library Decoded shader library.\n * @returns {object} Plain metadata.\n */\nfunction emitLibrary(library)\n{\n return {\n payloadSize: library.payloadSize,\n rayGenName: library.rayGenName,\n missName: library.missName,\n closestHitName: library.closestHitName,\n anyHitName: library.anyHitName,\n intersectionName: library.intersectionName,\n hitGroupName: library.hitGroupName,\n exports: library.exports.map((entry) => ({ ...entry })),\n globalInput: emitStageInput(library.globalInput, 2, { requireExists: false }),\n localInput: emitStageInput(library.localInput, 2, { requireExists: false })\n };\n}\n\n/**\n * Emit one pass metadata record.\n *\n * @param {object} pass Decoded pass.\n * @returns {object} Plain metadata.\n */\nfunction emitPass(pass)\n{\n return {\n shaderTypeMask: pass.shaderTypeMask,\n renderStates: emitRenderStates(pass.cjsRenderStateSetup),\n stageInputs: pass.stageInputs.map((stageInput, stageType) => emitStageInput(stageInput, stageType))\n };\n}\n\n/**\n * Emit one technique metadata record.\n *\n * @param {object} technique Decoded technique.\n * @returns {object} Plain metadata.\n */\nfunction emitTechnique(technique)\n{\n return {\n name: technique.name,\n shaderTypeMask: technique.shaderTypeMask,\n passes: technique.passes.map(emitPass),\n libraries: technique.libraries.map(emitLibrary)\n };\n}\n\n/**\n * Emit one effect-description metadata record.\n *\n * @param {object} description Decoded effect description.\n * @returns {object} Plain metadata.\n */\nfunction emitEffectDescription(description)\n{\n return {\n version: description.version,\n effectName: description.effectName,\n techniques: description.techniques.map(emitTechnique),\n annotations: Array.from(description.annotations.entries(), ([ name, entries ]) => ({\n name,\n annotations: entries.map((entry) => entry?.toJSON?.() ?? { ...entry })\n })),\n readError: description.readError\n ? { name: description.readError.name, message: description.readError.message }\n : null\n };\n}\n\n/**\n * Emit shared effect header metadata.\n *\n * @param {object} effect Loaded HlslEffectRes.\n * @returns {object} Plain metadata.\n */\nfunction emitHeader(effect)\n{\n return {\n version: effect.m_version,\n compilerVersion: effect.m_compilerVersion,\n sourcePath: effect.sourcePath,\n bodyCount: effect.m_offsetCount,\n permutations: effect.m_permutations.map(emitPermutation),\n loadError: effect.loadError ? { name: effect.loadError.name, message: effect.loadError.message } : null\n };\n}\n\n/**\n * Emit metadata for one resolved permutation body.\n *\n * @param {object} effect Loaded HlslEffectRes.\n * @param {object|null} shader Resolved shader, if decoded.\n * @param {{bodyIndex: number, selectedOptions: object[]}} selection Resolved option selection.\n * @returns {object} Plain metadata.\n */\nexport function emitEffectMetadata(effect, shader, selection)\n{\n return {\n ...emitHeader(effect),\n bodyIndex: selection.bodyIndex,\n selectedOptions: selection.selectedOptions,\n effect: shader ? emitEffectDescription(shader.GetEffectDescription()) : null\n };\n}\n"],"names":["normalizeOptionSelections","options","source","Map","Array","from","entries","map","name","value","isArray","entry","emitPermutation","permutation","slice","defaultOption","defaultValue","description","type","resolveSelectedOptions","effect","localOptions","globalOptions","constructor","globalEffectOptions","selectedOptions","multiplier","bodyIndex","m_permutations","optionIndex","globalOption","find","localOption","selected","selectedIndex","findIndex","option","push","length","emitConstant","constant","offset","size","dimension","elements","isSRGB","isAutoregister","emitResource","registerIndex","resource","arrayElements","emitSampler","samplerSetup","sampler","isDynamic","comparison","minFilter","magFilter","mipFilter","addressU","addressV","addressW","mipLODBias","maxAnisotropy","comparisonFunc","borderColor","minLOD","maxLOD","emitStageInput","stageInput","stageType","requireExists","m_exists","signature","stageName","hlslShaderStageName","constantValueSize","m_constantValueSize","constants","resources","samplers","uavs","annotations","annotation","toJSON","pipelineInputs","registers","threadGroupSize","emitLibrary","library","payloadSize","rayGenName","missName","closestHitName","anyHitName","intersectionName","hitGroupName","exports","globalInput","localInput","emitPass","pass","shaderTypeMask","renderStates","emitRenderStates","cjsRenderStateSetup","stageInputs","emitTechnique","technique","passes","libraries","emitEffectDescription","version","effectName","techniques","readError","message","emitHeader","m_version","compilerVersion","m_compilerVersion","sourcePath","bodyCount","m_offsetCount","permutations","loadError","emitEffectMetadata","shader","selection","GetEffectDescription"],"mappings":"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"}