@carbonenginejs/runtime-resource 0.12.0 → 0.12.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 (170) hide show
  1. package/dist/CjsResMan.js +4 -4
  2. package/dist/CjsResMan.js.map +1 -1
  3. package/dist/_virtual/_rollupPluginBabelHelpers.js +1 -4
  4. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  5. package/dist/format/CjsByteReader.js +310 -0
  6. package/dist/format/CjsByteReader.js.map +1 -0
  7. package/dist/format/CjsByteWriter.js +242 -0
  8. package/dist/format/CjsByteWriter.js.map +1 -0
  9. package/dist/format/CjsFormatError.js +41 -0
  10. package/dist/format/CjsFormatError.js.map +1 -0
  11. package/dist/format/CjsStringTable.js +268 -0
  12. package/dist/format/CjsStringTable.js.map +1 -0
  13. package/dist/format/carbonEffect/CjsCarbonEffectReader.js +361 -0
  14. package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -0
  15. package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -0
  16. package/dist/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -0
  17. package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +372 -0
  18. package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +1 -0
  19. package/dist/format/carbonEffect/carbonEffectBackendBlock.js +427 -0
  20. package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -0
  21. package/dist/format/carbonEffect/carbonEffectRecords.js +955 -0
  22. package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -0
  23. package/dist/format/compareUtf8.js +36 -0
  24. package/dist/format/compareUtf8.js.map +1 -0
  25. package/dist/format/index.js +11 -0
  26. package/dist/format/index.js.map +1 -0
  27. package/dist/formats/bnk/CjsBnkFormat.js +10 -4
  28. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  29. package/dist/formats/bnk/core/eventAction.js +305 -0
  30. package/dist/formats/bnk/core/eventAction.js.map +1 -0
  31. package/dist/formats/bnk/core/helpers.js +11 -2
  32. package/dist/formats/bnk/core/helpers.js.map +1 -1
  33. package/dist/formats/bnk/core/nodeBase.js +532 -0
  34. package/dist/formats/bnk/core/nodeBase.js.map +1 -0
  35. package/dist/formats/bnk/core/sfxNodes.js +252 -152
  36. package/dist/formats/bnk/core/sfxNodes.js.map +1 -1
  37. package/dist/formats/hlsl/core/HlslReader.js +7 -257
  38. package/dist/formats/hlsl/core/HlslReader.js.map +1 -1
  39. package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +781 -0
  40. package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -0
  41. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +21 -1
  42. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
  43. package/dist/formats/index.js +1 -1
  44. package/dist/formats/webgl/core/cewg/CewgPackage.js +2 -1
  45. package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -1
  46. package/dist/formats/webgl/core/cewg/binary.js +11 -93
  47. package/dist/formats/webgl/core/cewg/binary.js.map +1 -1
  48. package/dist/formats/webgl/core/effectPackage.js +1 -1
  49. package/dist/formats/webgpu/CjsWebgpuFormat.js +4 -23
  50. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  51. package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +197 -0
  52. package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -0
  53. package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js +368 -0
  54. package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +1 -0
  55. package/dist/formats/webgpu/core/cewgpu/containerViews.js +355 -0
  56. package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +1 -0
  57. package/dist/formats/webgpu/core/cewgpu/validateContainer.js +90 -0
  58. package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +1 -0
  59. package/dist/formats/webgpu/core/effectBackendBodySet.js +21 -20
  60. package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
  61. package/dist/formats/webgpu/core/helpers.js +87 -92
  62. package/dist/formats/webgpu/core/helpers.js.map +1 -1
  63. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +14 -13
  64. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -1
  65. package/dist/formats/webgpu/core/ir/inferValueTypes.js +10 -8
  66. package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -1
  67. package/dist/formats/webgpu/core/packageEffect.js +94 -9
  68. package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
  69. package/dist/formats/webgpu/core/packageMetadata.js +10 -1
  70. package/dist/formats/webgpu/core/packageMetadata.js.map +1 -1
  71. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +17 -15
  72. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -1
  73. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +13 -12
  74. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -1
  75. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +9 -8
  76. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
  77. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +23 -22
  78. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -1
  79. package/dist/formats/webgpu/core/wgsl/selectionPlans.js +46 -44
  80. package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -1
  81. package/dist/resource/CjsResource.js +700 -684
  82. package/dist/resource/CjsResource.js.map +1 -1
  83. package/dist/resource/Tr2LightProfileRes.js +18 -27
  84. package/dist/resource/Tr2LightProfileRes.js.map +1 -1
  85. package/dist/resource/audio/CjsAudioBufferRes.js +2 -2
  86. package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -1
  87. package/dist/resource/audio/CjsAudioRes.js +2 -2
  88. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  89. package/dist/resource/geometry/TriGeometryRes.js +605 -586
  90. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  91. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +21 -30
  92. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -1
  93. package/dist/resource/geometry/granny/TriGrannyRes.js +21 -30
  94. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -1
  95. package/dist/resource/shader/Tr2EffectRes.js +9 -7
  96. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  97. package/dist/resource/shader/Tr2MaterialArea.js +5 -3
  98. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
  99. package/dist/resource/shader/Tr2MaterialMesh.js +4 -2
  100. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
  101. package/dist/resource/shader/Tr2MaterialRes.js +5 -3
  102. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
  103. package/dist/resource/shader/Tr2Shader.js +26 -21
  104. package/dist/resource/shader/Tr2Shader.js.map +1 -1
  105. package/dist/resource/shader/Tr2ShaderPermutation.js +8 -6
  106. package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -1
  107. package/dist/resource/shader/reflection/Tr2EffectDefine.js +5 -3
  108. package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -1
  109. package/dist/resource/shader/reflection/Tr2EffectDescription.js +5 -3
  110. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  111. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +17 -15
  112. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  113. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +11 -9
  114. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  115. package/dist/resource/shader/reflection/Tr2EffectResource.js +8 -6
  116. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  117. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +15 -13
  118. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  119. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +7 -5
  120. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  121. package/dist/resource/shader/reflection/Tr2Pass.js +11 -9
  122. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  123. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +8 -6
  124. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  125. package/dist/resource/texture/CjsTextureArrayRes.js +400 -411
  126. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  127. package/dist/resource/texture/Tr2ImageRes.js +99 -95
  128. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  129. package/dist/resource/texture/TriTextureRes.js +312 -273
  130. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  131. package/docs/README.md +13 -1
  132. package/docs/architecture.md +3 -3
  133. package/docs/concepts/resource-lifecycle.md +9 -2
  134. package/docs/concepts/shader-resource-model.md +114 -0
  135. package/docs/concepts/writing-an-engine-adapter.md +115 -0
  136. package/docs/formats/README.md +24 -1
  137. package/docs/formats/carbon-effect-container.md +452 -0
  138. package/docs/formats/dxbc/reference/classes/README.md +5 -72
  139. package/docs/formats/hlsl/reference/api.md +5 -4
  140. package/docs/formats/hlsl/reference/classes/README.md +6 -11
  141. package/docs/formats/provenance.md +23 -13
  142. package/docs/formats/webgl/reference/classes/README.md +5 -92
  143. package/docs/formats/webgpu/README.md +19 -16
  144. package/docs/formats/webgpu/architecture.md +15 -12
  145. package/docs/formats/webgpu/formats/cewgpu.md +175 -438
  146. package/docs/formats/webgpu/guides/effect-packaging.md +132 -140
  147. package/docs/formats/webgpu/reference/api.md +131 -131
  148. package/docs/formats/webgpu/reference/classes/README.md +5 -62
  149. package/docs/formats/webgpu/reference/wgsl-compatibility.md +146 -45
  150. package/docs/formats/wwise.md +34 -8
  151. package/docs/reference/classes/core.md +80 -0
  152. package/docs/reference/classes/formats.md +18 -28
  153. package/docs/reference/events.md +25 -0
  154. package/docs/reference/motherlode-cache.md +22 -8
  155. package/docs/reference/workers.md +5 -5
  156. package/docs/roadmap.md +61 -41
  157. package/package.json +2 -1
  158. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +0 -415
  159. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +0 -1
  160. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +0 -100
  161. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +0 -1
  162. package/dist/formats/webgpu/core/cewgpu/binary.js +0 -93
  163. package/dist/formats/webgpu/core/cewgpu/binary.js.map +0 -1
  164. package/dist/formats/webgpu/core/cewgpu/tags.js +0 -17
  165. package/dist/formats/webgpu/core/cewgpu/tags.js.map +0 -1
  166. package/dist/formats/webgpu/core/effectPackageValidation.js +0 -1078
  167. package/dist/formats/webgpu/core/effectPackageValidation.js.map +0 -1
  168. package/docs/formats/hlsl/reference/classes/carbon-compatibility.md +0 -66
  169. package/docs/formats/hlsl/reference/classes/public-api.md +0 -26
  170. package/docs/formats/hlsl/reference/classes/tr2-effect-model.md +0 -150
@@ -1,4 +1,4 @@
1
- import { CjsSchema, type, impl } from '@carbonenginejs/runtime-utils/schema';
1
+ import { CjsSchema, impl, type } from '@carbonenginejs/runtime-utils/schema';
2
2
  import { CjsModel } from '@carbonenginejs/runtime-utils/model';
3
3
  import { isPlainObject, isArray, isUint32 } from '@carbonenginejs/runtime-utils/is';
4
4
  import { clonePortableSourceProgram } from '../portable.js';
@@ -125,21 +125,23 @@ class Tr2EffectLibrary extends CjsModel {
125
125
  // would register a static as an instance field.
126
126
  CjsSchema.define(Tr2EffectLibrary, {
127
127
  className: "Tr2EffectLibrary",
128
- family: "shader"
128
+ family: "shader",
129
+ fields: {
130
+ payloadSize: type.uint32,
131
+ libraryHandle: type.uint32,
132
+ rayGenName: type.string,
133
+ missName: type.string,
134
+ closestHitName: type.string,
135
+ anyHitName: type.string,
136
+ intersectionName: type.string,
137
+ hitGroupName: type.string,
138
+ globalInput: type.rawStruct("Tr2EffectStageInput"),
139
+ localInput: type.rawStruct("Tr2EffectStageInput"),
140
+ globalResourceSetDesc: type.rawStruct("Tr2ResourceSetDescriptionAL"),
141
+ sourceProgram: [impl.adapted, impl.reason("Carbon registers the library with the renderer while reading; the device-free graph retains the source program for later engine realization."), type.rawStruct("CjsEffectSourceProgram")],
142
+ exports: [impl.adapted, impl.reason("Carbon resolves these exports into a renderer library handle; the device-free graph keeps the declarative export list."), type.rawStruct("CjsEffectLibraryExports")]
143
+ }
129
144
  });
130
- CjsSchema.decorateField(Tr2EffectLibrary, "payloadSize", type.uint32);
131
- CjsSchema.decorateField(Tr2EffectLibrary, "libraryHandle", type.uint32);
132
- CjsSchema.decorateField(Tr2EffectLibrary, "rayGenName", type.string);
133
- CjsSchema.decorateField(Tr2EffectLibrary, "missName", type.string);
134
- CjsSchema.decorateField(Tr2EffectLibrary, "closestHitName", type.string);
135
- CjsSchema.decorateField(Tr2EffectLibrary, "anyHitName", type.string);
136
- CjsSchema.decorateField(Tr2EffectLibrary, "intersectionName", type.string);
137
- CjsSchema.decorateField(Tr2EffectLibrary, "hitGroupName", type.string);
138
- CjsSchema.decorateField(Tr2EffectLibrary, "globalInput", type.rawStruct("Tr2EffectStageInput"));
139
- CjsSchema.decorateField(Tr2EffectLibrary, "localInput", type.rawStruct("Tr2EffectStageInput"));
140
- CjsSchema.decorateField(Tr2EffectLibrary, "globalResourceSetDesc", type.rawStruct("Tr2ResourceSetDescriptionAL"));
141
- CjsSchema.decorateField(Tr2EffectLibrary, "sourceProgram", impl.adapted, impl.reason("Carbon registers the library with the renderer while reading; the device-free graph retains the source program for later engine realization."), type.rawStruct("CjsEffectSourceProgram"));
142
- CjsSchema.decorateField(Tr2EffectLibrary, "exports", impl.adapted, impl.reason("Carbon resolves these exports into a renderer library handle; the device-free graph keeps the declarative export list."), type.rawStruct("CjsEffectLibraryExports"));
143
145
 
144
146
  export { Tr2EffectLibrary };
145
147
  //# sourceMappingURL=Tr2EffectLibrary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2EffectLibrary.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectLibrary.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isArray,\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { clonePortableSourceProgram } from \"../portable.js\";\nimport { Tr2EffectStageInput } from \"./Tr2EffectStageInput.js\";\n\n/** Reflected shader-library metadata. */\nexport class Tr2EffectLibrary extends CjsModel\n{\n\n /** payloadSize (uint32_t) */\n payloadSize = 0;\n\n /** libraryHandle (uint32_t) */\n libraryHandle = 0;\n\n /** rayGenName (BlueSharedStringW) */\n rayGenName = \"\";\n\n /** missName (BlueSharedStringW) */\n missName = \"\";\n\n /** closestHitName (BlueSharedStringW) */\n closestHitName = \"\";\n\n /** anyHitName (BlueSharedStringW) */\n anyHitName = \"\";\n\n /** intersectionName (BlueSharedStringW) */\n intersectionName = \"\";\n\n /** hitGroupName (BlueSharedStringW) */\n hitGroupName = \"\";\n\n /** globalInput (Tr2EffectStageInput) */\n globalInput = null;\n\n /** localInput (Tr2EffectStageInput) */\n localInput = null;\n\n /** globalResourceSetDesc (Tr2ResourceSetDescriptionAL) */\n globalResourceSetDesc = null;\n\n /** Exact source library program metadata and owned bytes. */\n sourceProgram = null;\n\n /** Portable export records retained before backend library registration. */\n exports = [];\n\n /**\n * Construct one canonical library from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2EffectLibrary} Hydrated library.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n const inputs = new Map();\n for (const field of [ \"globalInput\", \"localInput\" ])\n {\n if (values?.[field]\n && !(values[field] instanceof Tr2EffectStageInput))\n {\n normalized = normalized === values ? { ...values } : normalized;\n normalized[field] = Tr2EffectStageInput.from(\n values[field],\n options\n );\n inputs.set(field, normalized[field]);\n }\n }\n const library = super.from(normalized, options);\n for (const [ field, value ] of inputs)\n {\n library[field] = value;\n }\n return library;\n }\n\n /**\n * Build one shader library from its portable JSON reflection record.\n *\n * @param {object} value Portable library record.\n * @returns {Tr2EffectLibrary} Reflected library.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect library must be an object\");\n }\n if (!isArray(value.exports))\n {\n throw new TypeError(\n \"Portable effect library exports must be an array\"\n );\n }\n if (value.exportCount !== value.exports.length)\n {\n throw new Error(\n \"Portable effect library export count disagrees with its collection\"\n );\n }\n\n const library = new this();\n if (!isUint32(value.payloadSize))\n {\n throw new RangeError(\n \"Portable effect library payload size must fit uint32\"\n );\n }\n library.payloadSize = value.payloadSize;\n library.hitGroupName = String(value.hitGroupName ?? \"\");\n library.exports = value.exports.map(entry =>\n {\n if (!isUint32(entry?.type))\n {\n throw new RangeError(\n \"Portable effect library export type must fit uint32\"\n );\n }\n return {\n type: entry.type,\n name: String(entry?.name ?? \"\")\n };\n });\n for (const entry of library.exports)\n {\n if (entry.type === 0) library.rayGenName = entry.name;\n if (entry.type === 1) library.missName = entry.name;\n if (entry.type === 2) library.closestHitName = entry.name;\n if (entry.type === 3) library.anyHitName = entry.name;\n if (entry.type === 4) library.intersectionName = entry.name;\n }\n library.sourceProgram = clonePortableSourceProgram(\n value.sourceProgram,\n \"library\"\n );\n library.globalInput = Tr2EffectStageInput.fromPortableInput(\n value.globalInput\n );\n library.localInput = Tr2EffectStageInput.fromPortableInput(\n value.localInput\n );\n return library;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectLibrary, {\n className: \"Tr2EffectLibrary\",\n family: \"shader\"\n});\nCjsSchema.decorateField(Tr2EffectLibrary, \"payloadSize\", type.uint32);\nCjsSchema.decorateField(Tr2EffectLibrary, \"libraryHandle\", type.uint32);\nCjsSchema.decorateField(Tr2EffectLibrary, \"rayGenName\", type.string);\nCjsSchema.decorateField(Tr2EffectLibrary, \"missName\", type.string);\nCjsSchema.decorateField(Tr2EffectLibrary, \"closestHitName\", type.string);\nCjsSchema.decorateField(Tr2EffectLibrary, \"anyHitName\", type.string);\nCjsSchema.decorateField(Tr2EffectLibrary, \"intersectionName\", type.string);\nCjsSchema.decorateField(Tr2EffectLibrary, \"hitGroupName\", type.string);\nCjsSchema.decorateField(Tr2EffectLibrary, \"globalInput\", type.rawStruct(\"Tr2EffectStageInput\"));\nCjsSchema.decorateField(Tr2EffectLibrary, \"localInput\", type.rawStruct(\"Tr2EffectStageInput\"));\nCjsSchema.decorateField(Tr2EffectLibrary, \"globalResourceSetDesc\", type.rawStruct(\"Tr2ResourceSetDescriptionAL\"));\nCjsSchema.decorateField(Tr2EffectLibrary, \"sourceProgram\", impl.adapted, impl.reason(\"Carbon registers the library with the renderer while reading; the device-free graph retains the source program for later engine realization.\"), type.rawStruct(\"CjsEffectSourceProgram\"));\nCjsSchema.decorateField(Tr2EffectLibrary, \"exports\", impl.adapted, impl.reason(\"Carbon resolves these exports into a renderer library handle; the device-free graph keeps the declarative export list.\"), type.rawStruct(\"CjsEffectLibraryExports\"));\n"],"names":["Tr2EffectLibrary","CjsModel","payloadSize","libraryHandle","rayGenName","missName","closestHitName","anyHitName","intersectionName","hitGroupName","globalInput","localInput","globalResourceSetDesc","sourceProgram","exports","from","values","options","normalized","inputs","Map","field","Tr2EffectStageInput","set","library","value","fromPortable","isPlainObject","TypeError","isArray","exportCount","length","Error","isUint32","RangeError","String","map","entry","type","name","clonePortableSourceProgram","fromPortableInput","CjsSchema","define","className","family","decorateField","uint32","string","rawStruct","impl","adapted","reason"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2EffectLibrary.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectLibrary.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isArray,\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { clonePortableSourceProgram } from \"../portable.js\";\nimport { Tr2EffectStageInput } from \"./Tr2EffectStageInput.js\";\n\n/** Reflected shader-library metadata. */\nexport class Tr2EffectLibrary extends CjsModel\n{\n\n /** payloadSize (uint32_t) */\n payloadSize = 0;\n\n /** libraryHandle (uint32_t) */\n libraryHandle = 0;\n\n /** rayGenName (BlueSharedStringW) */\n rayGenName = \"\";\n\n /** missName (BlueSharedStringW) */\n missName = \"\";\n\n /** closestHitName (BlueSharedStringW) */\n closestHitName = \"\";\n\n /** anyHitName (BlueSharedStringW) */\n anyHitName = \"\";\n\n /** intersectionName (BlueSharedStringW) */\n intersectionName = \"\";\n\n /** hitGroupName (BlueSharedStringW) */\n hitGroupName = \"\";\n\n /** globalInput (Tr2EffectStageInput) */\n globalInput = null;\n\n /** localInput (Tr2EffectStageInput) */\n localInput = null;\n\n /** globalResourceSetDesc (Tr2ResourceSetDescriptionAL) */\n globalResourceSetDesc = null;\n\n /** Exact source library program metadata and owned bytes. */\n sourceProgram = null;\n\n /** Portable export records retained before backend library registration. */\n exports = [];\n\n /**\n * Construct one canonical library from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2EffectLibrary} Hydrated library.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n const inputs = new Map();\n for (const field of [ \"globalInput\", \"localInput\" ])\n {\n if (values?.[field]\n && !(values[field] instanceof Tr2EffectStageInput))\n {\n normalized = normalized === values ? { ...values } : normalized;\n normalized[field] = Tr2EffectStageInput.from(\n values[field],\n options\n );\n inputs.set(field, normalized[field]);\n }\n }\n const library = super.from(normalized, options);\n for (const [ field, value ] of inputs)\n {\n library[field] = value;\n }\n return library;\n }\n\n /**\n * Build one shader library from its portable JSON reflection record.\n *\n * @param {object} value Portable library record.\n * @returns {Tr2EffectLibrary} Reflected library.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect library must be an object\");\n }\n if (!isArray(value.exports))\n {\n throw new TypeError(\n \"Portable effect library exports must be an array\"\n );\n }\n if (value.exportCount !== value.exports.length)\n {\n throw new Error(\n \"Portable effect library export count disagrees with its collection\"\n );\n }\n\n const library = new this();\n if (!isUint32(value.payloadSize))\n {\n throw new RangeError(\n \"Portable effect library payload size must fit uint32\"\n );\n }\n library.payloadSize = value.payloadSize;\n library.hitGroupName = String(value.hitGroupName ?? \"\");\n library.exports = value.exports.map(entry =>\n {\n if (!isUint32(entry?.type))\n {\n throw new RangeError(\n \"Portable effect library export type must fit uint32\"\n );\n }\n return {\n type: entry.type,\n name: String(entry?.name ?? \"\")\n };\n });\n for (const entry of library.exports)\n {\n if (entry.type === 0) library.rayGenName = entry.name;\n if (entry.type === 1) library.missName = entry.name;\n if (entry.type === 2) library.closestHitName = entry.name;\n if (entry.type === 3) library.anyHitName = entry.name;\n if (entry.type === 4) library.intersectionName = entry.name;\n }\n library.sourceProgram = clonePortableSourceProgram(\n value.sourceProgram,\n \"library\"\n );\n library.globalInput = Tr2EffectStageInput.fromPortableInput(\n value.globalInput\n );\n library.localInput = Tr2EffectStageInput.fromPortableInput(\n value.localInput\n );\n return library;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectLibrary, {\n className: \"Tr2EffectLibrary\",\n family: \"shader\",\n fields: {\n payloadSize: type.uint32,\n libraryHandle: type.uint32,\n rayGenName: type.string,\n missName: type.string,\n closestHitName: type.string,\n anyHitName: type.string,\n intersectionName: type.string,\n hitGroupName: type.string,\n globalInput: type.rawStruct(\"Tr2EffectStageInput\"),\n localInput: type.rawStruct(\"Tr2EffectStageInput\"),\n globalResourceSetDesc: type.rawStruct(\"Tr2ResourceSetDescriptionAL\"),\n sourceProgram: [ impl.adapted, impl.reason(\"Carbon registers the library with the renderer while reading; the device-free graph retains the source program for later engine realization.\"), type.rawStruct(\"CjsEffectSourceProgram\") ],\n exports: [ impl.adapted, impl.reason(\"Carbon resolves these exports into a renderer library handle; the device-free graph keeps the declarative export list.\"), type.rawStruct(\"CjsEffectLibraryExports\") ]\n }\n});\n"],"names":["Tr2EffectLibrary","CjsModel","payloadSize","libraryHandle","rayGenName","missName","closestHitName","anyHitName","intersectionName","hitGroupName","globalInput","localInput","globalResourceSetDesc","sourceProgram","exports","from","values","options","normalized","inputs","Map","field","Tr2EffectStageInput","set","library","value","fromPortable","isPlainObject","TypeError","isArray","exportCount","length","Error","isUint32","RangeError","String","map","entry","type","name","clonePortableSourceProgram","fromPortableInput","CjsSchema","define","className","family","fields","uint32","string","rawStruct","impl","adapted","reason"],"mappings":";;;;;;AAAA;;AAWA;AACO,MAAMA,gBAAgB,SAASC,QAAQ,CAC9C;AAEE;AACAC,EAAAA,WAAW,GAAG,CAAC;;AAEf;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;AACAC,EAAAA,UAAU,GAAG,EAAE;;AAEf;AACAC,EAAAA,QAAQ,GAAG,EAAE;;AAEb;AACAC,EAAAA,cAAc,GAAG,EAAE;;AAEnB;AACAC,EAAAA,UAAU,GAAG,EAAE;;AAEf;AACAC,EAAAA,gBAAgB,GAAG,EAAE;;AAErB;AACAC,EAAAA,YAAY,GAAG,EAAE;;AAEjB;AACAC,EAAAA,WAAW,GAAG,IAAI;;AAElB;AACAC,EAAAA,UAAU,GAAG,IAAI;;AAEjB;AACAC,EAAAA,qBAAqB,GAAG,IAAI;;AAE5B;AACAC,EAAAA,aAAa,GAAG,IAAI;;AAEpB;AACAC,EAAAA,OAAO,GAAG,EAAE;;AAEZ;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,IAAIA,CAACC,MAAM,GAAG,EAAE,EAAEC,OAAO,GAAG,EAAE,EACrC;IACE,IAAIC,UAAU,GAAGF,MAAM;AACvB,IAAA,MAAMG,MAAM,GAAG,IAAIC,GAAG,EAAE;IACxB,KAAK,MAAMC,KAAK,IAAI,CAAE,aAAa,EAAE,YAAY,CAAE,EACnD;AACE,MAAA,IAAIL,MAAM,GAAGK,KAAK,CAAC,IACd,EAAEL,MAAM,CAACK,KAAK,CAAC,YAAYC,mBAAmB,CAAC,EACpD;AACEJ,QAAAA,UAAU,GAAGA,UAAU,KAAKF,MAAM,GAAG;UAAE,GAAGA;AAAO,SAAC,GAAGE,UAAU;AAC/DA,QAAAA,UAAU,CAACG,KAAK,CAAC,GAAGC,mBAAmB,CAACP,IAAI,CAC1CC,MAAM,CAACK,KAAK,CAAC,EACbJ,OACF,CAAC;QACDE,MAAM,CAACI,GAAG,CAACF,KAAK,EAAEH,UAAU,CAACG,KAAK,CAAC,CAAC;AACtC,MAAA;AACF,IAAA;IACA,MAAMG,OAAO,GAAG,KAAK,CAACT,IAAI,CAACG,UAAU,EAAED,OAAO,CAAC;IAC/C,KAAK,MAAM,CAAEI,KAAK,EAAEI,KAAK,CAAE,IAAIN,MAAM,EACrC;AACEK,MAAAA,OAAO,CAACH,KAAK,CAAC,GAAGI,KAAK;AACxB,IAAA;AACA,IAAA,OAAOD,OAAO;AAChB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOE,YAAYA,CAACD,KAAK,EACzB;AACE,IAAA,IAAI,CAACE,aAAa,CAACF,KAAK,CAAC,EACzB;AACE,MAAA,MAAM,IAAIG,SAAS,CAAC,2CAA2C,CAAC;AAClE,IAAA;AACA,IAAA,IAAI,CAACC,OAAO,CAACJ,KAAK,CAACX,OAAO,CAAC,EAC3B;AACE,MAAA,MAAM,IAAIc,SAAS,CACjB,kDACF,CAAC;AACH,IAAA;IACA,IAAIH,KAAK,CAACK,WAAW,KAAKL,KAAK,CAACX,OAAO,CAACiB,MAAM,EAC9C;AACE,MAAA,MAAM,IAAIC,KAAK,CACb,oEACF,CAAC;AACH,IAAA;AAEA,IAAA,MAAMR,OAAO,GAAG,IAAI,IAAI,EAAE;AAC1B,IAAA,IAAI,CAACS,QAAQ,CAACR,KAAK,CAACvB,WAAW,CAAC,EAChC;AACE,MAAA,MAAM,IAAIgC,UAAU,CAClB,sDACF,CAAC;AACH,IAAA;AACAV,IAAAA,OAAO,CAACtB,WAAW,GAAGuB,KAAK,CAACvB,WAAW;IACvCsB,OAAO,CAACf,YAAY,GAAG0B,MAAM,CAACV,KAAK,CAAChB,YAAY,IAAI,EAAE,CAAC;IACvDe,OAAO,CAACV,OAAO,GAAGW,KAAK,CAACX,OAAO,CAACsB,GAAG,CAACC,KAAK,IACzC;AACE,MAAA,IAAI,CAACJ,QAAQ,CAACI,KAAK,EAAEC,IAAI,CAAC,EAC1B;AACE,QAAA,MAAM,IAAIJ,UAAU,CAClB,qDACF,CAAC;AACH,MAAA;MACA,OAAO;QACLI,IAAI,EAAED,KAAK,CAACC,IAAI;AAChBC,QAAAA,IAAI,EAAEJ,MAAM,CAACE,KAAK,EAAEE,IAAI,IAAI,EAAE;OAC/B;AACH,IAAA,CAAC,CAAC;AACF,IAAA,KAAK,MAAMF,KAAK,IAAIb,OAAO,CAACV,OAAO,EACnC;AACE,MAAA,IAAIuB,KAAK,CAACC,IAAI,KAAK,CAAC,EAAEd,OAAO,CAACpB,UAAU,GAAGiC,KAAK,CAACE,IAAI;AACrD,MAAA,IAAIF,KAAK,CAACC,IAAI,KAAK,CAAC,EAAEd,OAAO,CAACnB,QAAQ,GAAGgC,KAAK,CAACE,IAAI;AACnD,MAAA,IAAIF,KAAK,CAACC,IAAI,KAAK,CAAC,EAAEd,OAAO,CAAClB,cAAc,GAAG+B,KAAK,CAACE,IAAI;AACzD,MAAA,IAAIF,KAAK,CAACC,IAAI,KAAK,CAAC,EAAEd,OAAO,CAACjB,UAAU,GAAG8B,KAAK,CAACE,IAAI;AACrD,MAAA,IAAIF,KAAK,CAACC,IAAI,KAAK,CAAC,EAAEd,OAAO,CAAChB,gBAAgB,GAAG6B,KAAK,CAACE,IAAI;AAC7D,IAAA;IACAf,OAAO,CAACX,aAAa,GAAG2B,0BAA0B,CAChDf,KAAK,CAACZ,aAAa,EACnB,SACF,CAAC;IACDW,OAAO,CAACd,WAAW,GAAGY,mBAAmB,CAACmB,iBAAiB,CACzDhB,KAAK,CAACf,WACR,CAAC;IACDc,OAAO,CAACb,UAAU,GAAGW,mBAAmB,CAACmB,iBAAiB,CACxDhB,KAAK,CAACd,UACR,CAAC;AACD,IAAA,OAAOa,OAAO;AAChB,EAAA;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACAkB,SAAS,CAACC,MAAM,CAAC3C,gBAAgB,EAAE;AACjC4C,EAAAA,SAAS,EAAE,kBAAkB;AAC7BC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE;IACN5C,WAAW,EAAEoC,IAAI,CAACS,MAAM;IACxB5C,aAAa,EAAEmC,IAAI,CAACS,MAAM;IAC1B3C,UAAU,EAAEkC,IAAI,CAACU,MAAM;IACvB3C,QAAQ,EAAEiC,IAAI,CAACU,MAAM;IACrB1C,cAAc,EAAEgC,IAAI,CAACU,MAAM;IAC3BzC,UAAU,EAAE+B,IAAI,CAACU,MAAM;IACvBxC,gBAAgB,EAAE8B,IAAI,CAACU,MAAM;IAC7BvC,YAAY,EAAE6B,IAAI,CAACU,MAAM;AACzBtC,IAAAA,WAAW,EAAE4B,IAAI,CAACW,SAAS,CAAC,qBAAqB,CAAC;AAClDtC,IAAAA,UAAU,EAAE2B,IAAI,CAACW,SAAS,CAAC,qBAAqB,CAAC;AACjDrC,IAAAA,qBAAqB,EAAE0B,IAAI,CAACW,SAAS,CAAC,6BAA6B,CAAC;AACpEpC,IAAAA,aAAa,EAAE,CAAEqC,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC,8IAA8I,CAAC,EAAEd,IAAI,CAACW,SAAS,CAAC,wBAAwB,CAAC,CAAE;AACtOnC,IAAAA,OAAO,EAAE,CAAEoC,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC,wHAAwH,CAAC,EAAEd,IAAI,CAACW,SAAS,CAAC,yBAAyB,CAAC;AAC3M;AACF,CAAC,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import { CjsSchema, type, schema, impl } from '@carbonenginejs/runtime-utils/schema';
1
+ import { CjsSchema, type, impl, schema } from '@carbonenginejs/runtime-utils/schema';
2
2
  import { CjsModel } from '@carbonenginejs/runtime-utils/model';
3
3
  import { dwordToFloat } from '@carbonenginejs/runtime-utils/math/num';
4
4
  import { isPlainObject, isUint32 } from '@carbonenginejs/runtime-utils/is';
@@ -89,15 +89,17 @@ class Tr2EffectParameterAnnotation extends CjsModel {
89
89
  // would register a static as an instance field.
90
90
  CjsSchema.define(Tr2EffectParameterAnnotation, {
91
91
  className: "Tr2EffectParameterAnnotation",
92
- family: "shader"
92
+ family: "shader",
93
+ fields: {
94
+ name: type.string,
95
+ type: [type.int32, schema.enum("Type")],
96
+ boolValue: type.boolean,
97
+ rawValue: [impl.adapted, impl.reason("Carbon reads numeric annotations into typed values; the portable source contract retains the exact uint32 payload so NaN, negative zero, and integer bit patterns round-trip losslessly."), type.uint32],
98
+ intValue: type.int32,
99
+ floatValue: type.float32,
100
+ stringValue: type.string
101
+ }
93
102
  });
94
- CjsSchema.decorateField(Tr2EffectParameterAnnotation, "name", type.string);
95
- CjsSchema.decorateField(Tr2EffectParameterAnnotation, "type", type.int32, schema.enum("Type"));
96
- CjsSchema.decorateField(Tr2EffectParameterAnnotation, "boolValue", type.boolean);
97
- CjsSchema.decorateField(Tr2EffectParameterAnnotation, "rawValue", impl.adapted, impl.reason("Carbon reads numeric annotations into typed values; the portable source contract retains the exact uint32 payload so NaN, negative zero, and integer bit patterns round-trip losslessly."), type.uint32);
98
- CjsSchema.decorateField(Tr2EffectParameterAnnotation, "intValue", type.int32);
99
- CjsSchema.decorateField(Tr2EffectParameterAnnotation, "floatValue", type.float32);
100
- CjsSchema.decorateField(Tr2EffectParameterAnnotation, "stringValue", type.string);
101
103
 
102
104
  export { Tr2EffectParameterAnnotation };
103
105
  //# sourceMappingURL=Tr2EffectParameterAnnotation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2EffectParameterAnnotation.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectParameterAnnotation.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { dwordToFloat } from \"@carbonenginejs/runtime-utils/math/num\";\nimport {\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\n\n/** Typed annotation attached to a reflected effect parameter. */\nexport class Tr2EffectParameterAnnotation extends CjsModel\n{\n\n /** name (const char*) */\n name = \"\";\n\n /** type (Type - enum Type) */\n type = 0;\n\n /** boolValue (bool) */\n boolValue = false;\n\n /** Exact serialized BOOL, INT, or FLOAT payload bits. */\n rawValue = 0;\n\n /** intValue (int) */\n intValue = 0;\n\n /** floatValue (float) */\n floatValue = 0;\n\n /** stringValue (const char*) */\n stringValue = \"\";\n\n /**\n * Build one typed annotation from its portable JSON reflection record.\n *\n * @param {object} value Portable annotation record.\n * @returns {Tr2EffectParameterAnnotation} Reflected annotation.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect annotation must be an object\");\n }\n if (!isUint32(value.type))\n {\n throw new RangeError(\"Portable annotation type must fit uint32\");\n }\n\n const annotation = new this();\n annotation.name = String(value.name ?? \"\");\n annotation.type = value.type;\n\n switch (annotation.type)\n {\n case this.Type.BOOL:\n if (!isUint32(value.rawValue))\n {\n throw new RangeError(\n \"Portable boolean annotation must fit uint32\"\n );\n }\n annotation.rawValue = value.rawValue;\n annotation.boolValue = annotation.rawValue !== 0;\n break;\n\n case this.Type.INT:\n if (!isUint32(value.rawValue))\n {\n throw new RangeError(\n \"Portable integer annotation must fit uint32\"\n );\n }\n annotation.rawValue = value.rawValue;\n annotation.intValue = annotation.rawValue | 0;\n break;\n\n case this.Type.FLOAT:\n if (!isUint32(value.rawValue))\n {\n throw new RangeError(\n \"Portable float annotation must fit uint32\"\n );\n }\n annotation.rawValue = value.rawValue;\n annotation.floatValue = dwordToFloat(annotation.rawValue);\n break;\n\n case this.Type.STRING:\n annotation.stringValue = String(value.stringValue ?? \"\");\n break;\n\n default:\n throw new Error(\n `Portable annotation type ${annotation.type} is unsupported`\n );\n }\n\n return annotation;\n }\n\n static Type = Object.freeze({\n BOOL: 0,\n INT: 1,\n FLOAT: 2,\n STRING: 3\n });\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectParameterAnnotation, {\n className: \"Tr2EffectParameterAnnotation\",\n family: \"shader\"\n});\nCjsSchema.decorateField(Tr2EffectParameterAnnotation, \"name\", type.string);\nCjsSchema.decorateField(Tr2EffectParameterAnnotation, \"type\", type.int32, schema.enum(\"Type\"));\nCjsSchema.decorateField(Tr2EffectParameterAnnotation, \"boolValue\", type.boolean);\nCjsSchema.decorateField(Tr2EffectParameterAnnotation, \"rawValue\", impl.adapted, impl.reason(\"Carbon reads numeric annotations into typed values; the portable source contract retains the exact uint32 payload so NaN, negative zero, and integer bit patterns round-trip losslessly.\"), type.uint32);\nCjsSchema.decorateField(Tr2EffectParameterAnnotation, \"intValue\", type.int32);\nCjsSchema.decorateField(Tr2EffectParameterAnnotation, \"floatValue\", type.float32);\nCjsSchema.decorateField(Tr2EffectParameterAnnotation, \"stringValue\", type.string);\n"],"names":["Tr2EffectParameterAnnotation","CjsModel","name","type","boolValue","rawValue","intValue","floatValue","stringValue","fromPortable","value","isPlainObject","TypeError","isUint32","RangeError","annotation","String","Type","BOOL","INT","FLOAT","dwordToFloat","STRING","Error","Object","freeze","CjsSchema","define","className","family","decorateField","string","int32","schema","enum","boolean","impl","adapted","reason","uint32","float32"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2EffectParameterAnnotation.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectParameterAnnotation.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { dwordToFloat } from \"@carbonenginejs/runtime-utils/math/num\";\nimport {\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\n\n/** Typed annotation attached to a reflected effect parameter. */\nexport class Tr2EffectParameterAnnotation extends CjsModel\n{\n\n /** name (const char*) */\n name = \"\";\n\n /** type (Type - enum Type) */\n type = 0;\n\n /** boolValue (bool) */\n boolValue = false;\n\n /** Exact serialized BOOL, INT, or FLOAT payload bits. */\n rawValue = 0;\n\n /** intValue (int) */\n intValue = 0;\n\n /** floatValue (float) */\n floatValue = 0;\n\n /** stringValue (const char*) */\n stringValue = \"\";\n\n /**\n * Build one typed annotation from its portable JSON reflection record.\n *\n * @param {object} value Portable annotation record.\n * @returns {Tr2EffectParameterAnnotation} Reflected annotation.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect annotation must be an object\");\n }\n if (!isUint32(value.type))\n {\n throw new RangeError(\"Portable annotation type must fit uint32\");\n }\n\n const annotation = new this();\n annotation.name = String(value.name ?? \"\");\n annotation.type = value.type;\n\n switch (annotation.type)\n {\n case this.Type.BOOL:\n if (!isUint32(value.rawValue))\n {\n throw new RangeError(\n \"Portable boolean annotation must fit uint32\"\n );\n }\n annotation.rawValue = value.rawValue;\n annotation.boolValue = annotation.rawValue !== 0;\n break;\n\n case this.Type.INT:\n if (!isUint32(value.rawValue))\n {\n throw new RangeError(\n \"Portable integer annotation must fit uint32\"\n );\n }\n annotation.rawValue = value.rawValue;\n annotation.intValue = annotation.rawValue | 0;\n break;\n\n case this.Type.FLOAT:\n if (!isUint32(value.rawValue))\n {\n throw new RangeError(\n \"Portable float annotation must fit uint32\"\n );\n }\n annotation.rawValue = value.rawValue;\n annotation.floatValue = dwordToFloat(annotation.rawValue);\n break;\n\n case this.Type.STRING:\n annotation.stringValue = String(value.stringValue ?? \"\");\n break;\n\n default:\n throw new Error(\n `Portable annotation type ${annotation.type} is unsupported`\n );\n }\n\n return annotation;\n }\n\n static Type = Object.freeze({\n BOOL: 0,\n INT: 1,\n FLOAT: 2,\n STRING: 3\n });\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectParameterAnnotation, {\n className: \"Tr2EffectParameterAnnotation\",\n family: \"shader\",\n fields: {\n name: type.string,\n type: [ type.int32, schema.enum(\"Type\") ],\n boolValue: type.boolean,\n rawValue: [ impl.adapted, impl.reason(\"Carbon reads numeric annotations into typed values; the portable source contract retains the exact uint32 payload so NaN, negative zero, and integer bit patterns round-trip losslessly.\"), type.uint32 ],\n intValue: type.int32,\n floatValue: type.float32,\n stringValue: type.string\n }\n});\n"],"names":["Tr2EffectParameterAnnotation","CjsModel","name","type","boolValue","rawValue","intValue","floatValue","stringValue","fromPortable","value","isPlainObject","TypeError","isUint32","RangeError","annotation","String","Type","BOOL","INT","FLOAT","dwordToFloat","STRING","Error","Object","freeze","CjsSchema","define","className","family","fields","string","int32","schema","enum","boolean","impl","adapted","reason","uint32","float32"],"mappings":"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"}
@@ -72,13 +72,15 @@ class Tr2EffectResource extends CjsModel {
72
72
  // would register a static as an instance field.
73
73
  CjsSchema.define(Tr2EffectResource, {
74
74
  className: "Tr2EffectResource",
75
- family: "shader"
75
+ family: "shader",
76
+ fields: {
77
+ isSRGB: type.boolean,
78
+ isAutoregister: type.boolean,
79
+ name: type.string,
80
+ type: [type.int32, schema.enum("Type")],
81
+ arrayElements: type.uint32
82
+ }
76
83
  });
77
- CjsSchema.decorateField(Tr2EffectResource, "isSRGB", type.boolean);
78
- CjsSchema.decorateField(Tr2EffectResource, "isAutoregister", type.boolean);
79
- CjsSchema.decorateField(Tr2EffectResource, "name", type.string);
80
- CjsSchema.decorateField(Tr2EffectResource, "type", type.int32, schema.enum("Type"));
81
- CjsSchema.decorateField(Tr2EffectResource, "arrayElements", type.uint32);
82
84
 
83
85
  export { Tr2EffectResource };
84
86
  //# sourceMappingURL=Tr2EffectResource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2EffectResource.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectResource.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\n\n/** Reflected SRV or UAV resource metadata. */\nexport class Tr2EffectResource extends CjsModel\n{\n\n /** isSRGB (bool) */\n isSRGB = false;\n\n /** isAutoregister (bool) */\n isAutoregister = false;\n\n /** name (const char*) */\n name = \"\";\n\n /** type (Type - enum Type) */\n type = 0;\n\n /** arrayElements (uint32_t) */\n arrayElements = 0;\n\n /**\n * Build one SRV or UAV from its portable JSON reflection record.\n *\n * @param {object} value Portable resource record.\n * @returns {Tr2EffectResource} Reflected resource.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect resource must be an object\");\n }\n if (!isUint32(value.type))\n {\n throw new RangeError(\"Portable resource type must fit uint32\");\n }\n if (!isUint32(value.arrayElements))\n {\n throw new RangeError(\n \"Portable resource array element count must fit uint32\"\n );\n }\n\n const resource = new this();\n resource.name = String(value.name ?? \"\");\n resource.type = value.type;\n resource.arrayElements = value.arrayElements;\n resource.isSRGB = !!value.isSRGB;\n resource.isAutoregister = !!value.isAutoregister;\n return resource;\n }\n\n static BINDLESS_SAMPLER = 100;\n\n static Type = Object.freeze({\n TEXTURE_1D: 1,\n TEXTURE_2D: 2,\n TEXTURE_3D: 3,\n TEXTURE_CUBE: 4,\n TEXTURE_TYPELESS: 5,\n BUFFER: 6,\n STRUCTURED_BUFFER: 7,\n TBUFFER: 8,\n BYTEADDRESS_BUFFER: 9,\n UAV_RWTYPED: 10,\n UAV_RWSTRUCTURED: 11,\n UAV_RWBYTEADDRESS: 12,\n UAV_APPEND_STRUCTURED: 13,\n UAV_CONSUME_STRUCTURED: 14,\n UAV_RWSTRUCTURED_WITH_COUNTER: 15\n });\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectResource, {\n className: \"Tr2EffectResource\",\n family: \"shader\"\n});\nCjsSchema.decorateField(Tr2EffectResource, \"isSRGB\", type.boolean);\nCjsSchema.decorateField(Tr2EffectResource, \"isAutoregister\", type.boolean);\nCjsSchema.decorateField(Tr2EffectResource, \"name\", type.string);\nCjsSchema.decorateField(Tr2EffectResource, \"type\", type.int32, schema.enum(\"Type\"));\nCjsSchema.decorateField(Tr2EffectResource, \"arrayElements\", type.uint32);\n"],"names":["Tr2EffectResource","CjsModel","isSRGB","isAutoregister","name","type","arrayElements","fromPortable","value","isPlainObject","TypeError","isUint32","RangeError","resource","String","BINDLESS_SAMPLER","Type","Object","freeze","TEXTURE_1D","TEXTURE_2D","TEXTURE_3D","TEXTURE_CUBE","TEXTURE_TYPELESS","BUFFER","STRUCTURED_BUFFER","TBUFFER","BYTEADDRESS_BUFFER","UAV_RWTYPED","UAV_RWSTRUCTURED","UAV_RWBYTEADDRESS","UAV_APPEND_STRUCTURED","UAV_CONSUME_STRUCTURED","UAV_RWSTRUCTURED_WITH_COUNTER","CjsSchema","define","className","family","decorateField","boolean","string","int32","schema","enum","uint32"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2EffectResource.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectResource.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\n\n/** Reflected SRV or UAV resource metadata. */\nexport class Tr2EffectResource extends CjsModel\n{\n\n /** isSRGB (bool) */\n isSRGB = false;\n\n /** isAutoregister (bool) */\n isAutoregister = false;\n\n /** name (const char*) */\n name = \"\";\n\n /** type (Type - enum Type) */\n type = 0;\n\n /** arrayElements (uint32_t) */\n arrayElements = 0;\n\n /**\n * Build one SRV or UAV from its portable JSON reflection record.\n *\n * @param {object} value Portable resource record.\n * @returns {Tr2EffectResource} Reflected resource.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect resource must be an object\");\n }\n if (!isUint32(value.type))\n {\n throw new RangeError(\"Portable resource type must fit uint32\");\n }\n if (!isUint32(value.arrayElements))\n {\n throw new RangeError(\n \"Portable resource array element count must fit uint32\"\n );\n }\n\n const resource = new this();\n resource.name = String(value.name ?? \"\");\n resource.type = value.type;\n resource.arrayElements = value.arrayElements;\n resource.isSRGB = !!value.isSRGB;\n resource.isAutoregister = !!value.isAutoregister;\n return resource;\n }\n\n static BINDLESS_SAMPLER = 100;\n\n static Type = Object.freeze({\n TEXTURE_1D: 1,\n TEXTURE_2D: 2,\n TEXTURE_3D: 3,\n TEXTURE_CUBE: 4,\n TEXTURE_TYPELESS: 5,\n BUFFER: 6,\n STRUCTURED_BUFFER: 7,\n TBUFFER: 8,\n BYTEADDRESS_BUFFER: 9,\n UAV_RWTYPED: 10,\n UAV_RWSTRUCTURED: 11,\n UAV_RWBYTEADDRESS: 12,\n UAV_APPEND_STRUCTURED: 13,\n UAV_CONSUME_STRUCTURED: 14,\n UAV_RWSTRUCTURED_WITH_COUNTER: 15\n });\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectResource, {\n className: \"Tr2EffectResource\",\n family: \"shader\",\n fields: {\n isSRGB: type.boolean,\n isAutoregister: type.boolean,\n name: type.string,\n type: [ type.int32, schema.enum(\"Type\") ],\n arrayElements: type.uint32\n }\n});\n"],"names":["Tr2EffectResource","CjsModel","isSRGB","isAutoregister","name","type","arrayElements","fromPortable","value","isPlainObject","TypeError","isUint32","RangeError","resource","String","BINDLESS_SAMPLER","Type","Object","freeze","TEXTURE_1D","TEXTURE_2D","TEXTURE_3D","TEXTURE_CUBE","TEXTURE_TYPELESS","BUFFER","STRUCTURED_BUFFER","TBUFFER","BYTEADDRESS_BUFFER","UAV_RWTYPED","UAV_RWSTRUCTURED","UAV_RWBYTEADDRESS","UAV_APPEND_STRUCTURED","UAV_CONSUME_STRUCTURED","UAV_RWSTRUCTURED_WITH_COUNTER","CjsSchema","define","className","family","fields","boolean","string","int32","schema","enum","uint32"],"mappings":";;;;AAAA;;AAQA;AACO,MAAMA,iBAAiB,SAASC,QAAQ,CAC/C;AAEE;AACAC,EAAAA,MAAM,GAAG,KAAK;;AAEd;AACAC,EAAAA,cAAc,GAAG,KAAK;;AAEtB;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,IAAI,GAAG,CAAC;;AAER;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,YAAYA,CAACC,KAAK,EACzB;AACE,IAAA,IAAI,CAACC,aAAa,CAACD,KAAK,CAAC,EACzB;AACE,MAAA,MAAM,IAAIE,SAAS,CAAC,4CAA4C,CAAC;AACnE,IAAA;AACA,IAAA,IAAI,CAACC,QAAQ,CAACH,KAAK,CAACH,IAAI,CAAC,EACzB;AACE,MAAA,MAAM,IAAIO,UAAU,CAAC,wCAAwC,CAAC;AAChE,IAAA;AACA,IAAA,IAAI,CAACD,QAAQ,CAACH,KAAK,CAACF,aAAa,CAAC,EAClC;AACE,MAAA,MAAM,IAAIM,UAAU,CAClB,uDACF,CAAC;AACH,IAAA;AAEA,IAAA,MAAMC,QAAQ,GAAG,IAAI,IAAI,EAAE;IAC3BA,QAAQ,CAACT,IAAI,GAAGU,MAAM,CAACN,KAAK,CAACJ,IAAI,IAAI,EAAE,CAAC;AACxCS,IAAAA,QAAQ,CAACR,IAAI,GAAGG,KAAK,CAACH,IAAI;AAC1BQ,IAAAA,QAAQ,CAACP,aAAa,GAAGE,KAAK,CAACF,aAAa;AAC5CO,IAAAA,QAAQ,CAACX,MAAM,GAAG,CAAC,CAACM,KAAK,CAACN,MAAM;AAChCW,IAAAA,QAAQ,CAACV,cAAc,GAAG,CAAC,CAACK,KAAK,CAACL,cAAc;AAChD,IAAA,OAAOU,QAAQ;AACjB,EAAA;EAEA,OAAOE,gBAAgB,GAAG,GAAG;AAE7B,EAAA,OAAOC,IAAI,GAAGC,MAAM,CAACC,MAAM,CAAC;AAC1BC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,YAAY,EAAE,CAAC;AACfC,IAAAA,gBAAgB,EAAE,CAAC;AACnBC,IAAAA,MAAM,EAAE,CAAC;AACTC,IAAAA,iBAAiB,EAAE,CAAC;AACpBC,IAAAA,OAAO,EAAE,CAAC;AACVC,IAAAA,kBAAkB,EAAE,CAAC;AACrBC,IAAAA,WAAW,EAAE,EAAE;AACfC,IAAAA,gBAAgB,EAAE,EAAE;AACpBC,IAAAA,iBAAiB,EAAE,EAAE;AACrBC,IAAAA,qBAAqB,EAAE,EAAE;AACzBC,IAAAA,sBAAsB,EAAE,EAAE;AAC1BC,IAAAA,6BAA6B,EAAE;AACjC,GAAC,CAAC;AAEJ;;AAEA;AACA;AACA;AACA;AACA;AACAC,SAAS,CAACC,MAAM,CAACnC,iBAAiB,EAAE;AAClCoC,EAAAA,SAAS,EAAE,mBAAmB;AAC9BC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE;IACNpC,MAAM,EAAEG,IAAI,CAACkC,OAAO;IACpBpC,cAAc,EAAEE,IAAI,CAACkC,OAAO;IAC5BnC,IAAI,EAAEC,IAAI,CAACmC,MAAM;AACjBnC,IAAAA,IAAI,EAAE,CAAEA,IAAI,CAACoC,KAAK,EAAEC,MAAM,CAACC,IAAI,CAAC,MAAM,CAAC,CAAE;IACzCrC,aAAa,EAAED,IAAI,CAACuC;AACtB;AACF,CAAC,CAAC;;;;"}
@@ -220,20 +220,22 @@ class Tr2EffectStageInput extends CjsModel {
220
220
  // would register a static as an instance field.
221
221
  CjsSchema.define(Tr2EffectStageInput, {
222
222
  className: "Tr2EffectStageInput",
223
- family: "shader"
223
+ family: "shader",
224
+ fields: {
225
+ stageType: [impl.adapted, impl.reason("The source format identifies stage inputs by array index; the device-free graph retains the index explicitly for serialization and engine adapters."), type.int32],
226
+ exists: type.boolean,
227
+ resources: type.map("Tr2EffectResource"),
228
+ uavs: type.map("Tr2EffectResource"),
229
+ samplers: type.map("Tr2SamplerSetup"),
230
+ shader: type.uint32,
231
+ constants: type.list("Tr2EffectConstant"),
232
+ constantValueSize: type.uint32,
233
+ constantValues: type.typedArray("Uint8Array"),
234
+ signature: type.rawStruct("Tr2ShaderSignatureAL"),
235
+ annotation: type.list("Tr2EffectParameterAnnotation"),
236
+ sourceProgram: [impl.adapted, impl.reason("Carbon replaces source program data with renderer handles while reading; the device-free resource graph must retain the portable source program for later engine realization."), type.rawStruct("CjsEffectSourceProgram")]
237
+ }
224
238
  });
225
- CjsSchema.decorateField(Tr2EffectStageInput, "stageType", impl.adapted, impl.reason("The source format identifies stage inputs by array index; the device-free graph retains the index explicitly for serialization and engine adapters."), type.int32);
226
- CjsSchema.decorateField(Tr2EffectStageInput, "exists", type.boolean);
227
- CjsSchema.decorateField(Tr2EffectStageInput, "resources", type.map("Tr2EffectResource"));
228
- CjsSchema.decorateField(Tr2EffectStageInput, "uavs", type.map("Tr2EffectResource"));
229
- CjsSchema.decorateField(Tr2EffectStageInput, "samplers", type.map("Tr2SamplerSetup"));
230
- CjsSchema.decorateField(Tr2EffectStageInput, "shader", type.uint32);
231
- CjsSchema.decorateField(Tr2EffectStageInput, "constants", type.list("Tr2EffectConstant"));
232
- CjsSchema.decorateField(Tr2EffectStageInput, "constantValueSize", type.uint32);
233
- CjsSchema.decorateField(Tr2EffectStageInput, "constantValues", type.typedArray("Uint8Array"));
234
- CjsSchema.decorateField(Tr2EffectStageInput, "signature", type.rawStruct("Tr2ShaderSignatureAL"));
235
- CjsSchema.decorateField(Tr2EffectStageInput, "annotation", type.list("Tr2EffectParameterAnnotation"));
236
- CjsSchema.decorateField(Tr2EffectStageInput, "sourceProgram", impl.adapted, impl.reason("Carbon replaces source program data with renderer handles while reading; the device-free resource graph must retain the portable source program for later engine realization."), type.rawStruct("CjsEffectSourceProgram"));
237
239
 
238
240
  export { Tr2EffectStageInput };
239
241
  //# sourceMappingURL=Tr2EffectStageInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2EffectStageInput.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectStageInput.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\n// Source: trinity/trinity/Shader/Tr2EffectDescription.cpp\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { copyBytes } from \"@carbonenginejs/runtime-utils/bytes\";\nimport {\n isArray,\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { cloneCarbonValue } from \"@carbonenginejs/runtime-utils/types\";\nimport {\n clonePortableSourceProgram,\n requirePortableStageType\n} from \"../portable.js\";\nimport { validateEffectBodyInput } from \"../../../formats/hlsl/portable.js\";\nimport { Tr2SamplerSetup } from \"../sampler/Tr2SamplerSetup.js\";\nimport { Tr2EffectConstant } from \"./Tr2EffectConstant.js\";\nimport { Tr2EffectParameterAnnotation } from \"./Tr2EffectParameterAnnotation.js\";\nimport { Tr2EffectResource } from \"./Tr2EffectResource.js\";\n\n/** Complete device-free reflection for one shader stage input. */\nexport class Tr2EffectStageInput extends CjsModel\n{\n\n /** Portable stage index; Carbon otherwise implies this from the containing array. */\n stageType = -1;\n\n /** m_exists (bool) */\n exists = false;\n\n /** resources (Tr2EffectResourceMap) */\n resources = new Map();\n\n /** uavs (Tr2EffectResourceMap) */\n uavs = new Map();\n\n /** samplers (Tr2SamplerSetupMap) */\n samplers = new Map();\n\n /** m_shader (unsigned) */\n shader = 0xffffffff;\n\n /** constants (Tr2EffectConstantVector) */\n constants = [];\n\n /** m_constantValueSize (unsigned) */\n constantValueSize = 0;\n\n /** constantValues (char[SHADER_CONSTANTS_MAX]) */\n constantValues = new Uint8Array(0);\n\n /** signature (Tr2ShaderSignatureAL) */\n signature = null;\n\n /** annotation (Tr2EffectParameterAnnotationMap) */\n annotation = [];\n\n /** Exact source program metadata and owned bytes, before backend realization. */\n sourceProgram = null;\n\n /**\n * Construct one canonical stage input from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2EffectStageInput} Hydrated stage input.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n const maps = new Map();\n for (const [ field, Constructor ] of [\n [ \"resources\", Tr2EffectResource ],\n [ \"uavs\", Tr2EffectResource ],\n [ \"samplers\", Tr2SamplerSetup ]\n ])\n {\n if (values && Object.hasOwn(values, field))\n {\n normalized = normalized === values ? { ...values } : normalized;\n normalized[field] = this.readCanonicalRegisterMap(\n values[field],\n Constructor,\n options,\n field\n );\n maps.set(field, normalized[field]);\n }\n }\n const stage = super.from(normalized, options);\n for (const [ field, value ] of maps)\n {\n stage[field] = value;\n }\n return stage;\n }\n\n /**\n * Build one stage input from its complete portable JSON stage record.\n *\n * @param {object} value Portable stage record.\n * @returns {Tr2EffectStageInput} Reflected stage input.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect stage must be an object\");\n }\n const stageType = requirePortableStageType(value.stageType);\n return this.fromPortableInput(\n value.input,\n stageType,\n value.sourceProgram\n );\n }\n\n /**\n * Build one input record used by a render stage or shader library.\n *\n * @param {object} value Portable input record.\n * @param {number} stageType Stage index, or -1 for a library input.\n * @param {object|null} sourceProgram Optional stage source program.\n * @returns {Tr2EffectStageInput} Reflected input.\n */\n static fromPortableInput(value, stageType = -1, sourceProgram = null)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect stage input must be an object\");\n }\n validateEffectBodyInput(value);\n if (!isArray(value.constants))\n {\n throw new TypeError(\"Portable effect constants must be an array\");\n }\n if (!isArray(value.resources))\n {\n throw new TypeError(\"Portable effect resources must be an array\");\n }\n if (!isArray(value.uavs))\n {\n throw new TypeError(\"Portable effect UAVs must be an array\");\n }\n if (!isArray(value.samplers))\n {\n throw new TypeError(\"Portable effect samplers must be an array\");\n }\n if (!isArray(value.annotations))\n {\n throw new TypeError(\n \"Portable effect stage annotations must be an array\"\n );\n }\n if (!isPlainObject(value.constantDefaults))\n {\n throw new TypeError(\n \"Portable effect constant defaults must be an object\"\n );\n }\n if (!(value.constantDefaults.bytes instanceof Uint8Array))\n {\n throw new TypeError(\n \"Portable effect constant defaults must be Uint8Array bytes\"\n );\n }\n\n const defaults = value.constantDefaults;\n const constantValues = copyBytes(defaults.bytes);\n if (defaults.declaredByteLength !== constantValues.byteLength)\n {\n throw new Error(\n \"Portable effect constant defaults disagree with their declared byte length\"\n );\n }\n\n const input = new this();\n input.stageType = stageType;\n input.exists = true;\n input.constants = value.constants.map(\n entry => Tr2EffectConstant.fromPortable(entry)\n );\n input.resources = this.readPortableResourceMap(value.resources);\n input.uavs = this.readPortableResourceMap(value.uavs);\n input.samplers = this.readPortableSamplerMap(value.samplers);\n input.constantValueSize = constantValues.byteLength;\n input.constantValues = constantValues;\n input.signature = cloneCarbonValue(value.signature);\n input.annotation = value.annotations.map(\n entry => Tr2EffectParameterAnnotation.fromPortable(entry)\n );\n input.sourceProgram = sourceProgram\n ? clonePortableSourceProgram(sourceProgram, \"stage\")\n : null;\n return input;\n }\n\n /**\n * Create one explicit absent stage slot.\n *\n * @param {number} stageType Stage index.\n * @returns {Tr2EffectStageInput} Empty stage input.\n */\n static createEmpty(stageType)\n {\n const stage = new this();\n stage.stageType = requirePortableStageType(stageType);\n return stage;\n }\n\n /** Build one register-indexed portable resource map. */\n static readPortableResourceMap(values)\n {\n const result = new Map();\n for (const value of values)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect resource must be an object\");\n }\n if (!isUint32(value.registerIndex))\n {\n throw new RangeError(\n \"Portable resource register index must fit uint32\"\n );\n }\n const registerIndex = value.registerIndex;\n if (result.has(registerIndex))\n {\n throw new Error(\n `Portable effect resource register ${registerIndex} is duplicated`\n );\n }\n result.set(\n registerIndex,\n Tr2EffectResource.fromPortable(value)\n );\n }\n return result;\n }\n\n /** Build one register-indexed portable sampler map. */\n static readPortableSamplerMap(values)\n {\n const result = new Map();\n for (const value of values)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect sampler must be an object\");\n }\n if (!isUint32(value.registerIndex))\n {\n throw new RangeError(\n \"Portable sampler register index must fit uint32\"\n );\n }\n const registerIndex = value.registerIndex;\n if (result.has(registerIndex))\n {\n throw new Error(\n `Portable effect sampler register ${registerIndex} is duplicated`\n );\n }\n result.set(\n registerIndex,\n Tr2SamplerSetup.fromPortable(value)\n );\n }\n return result;\n }\n\n /** Hydrate one numeric-register map from canonical JS/JSON values. */\n static readCanonicalRegisterMap(values, Constructor, options, field)\n {\n const entries = values instanceof Map\n ? values\n : Object.entries(values ?? {});\n const result = new Map();\n for (const [ key, value ] of entries)\n {\n const registerIndex = Number(key);\n if (!isUint32(registerIndex))\n {\n throw new RangeError(\n `Effect ${field} register index must fit uint32`\n );\n }\n if (result.has(registerIndex))\n {\n throw new Error(\n `Effect ${field} register ${registerIndex} is duplicated`\n );\n }\n result.set(\n registerIndex,\n value instanceof Constructor\n ? value\n : Constructor.from(value, options)\n );\n }\n return result;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectStageInput, {\n className: \"Tr2EffectStageInput\",\n family: \"shader\"\n});\nCjsSchema.decorateField(Tr2EffectStageInput, \"stageType\", impl.adapted, impl.reason(\"The source format identifies stage inputs by array index; the device-free graph retains the index explicitly for serialization and engine adapters.\"), type.int32);\nCjsSchema.decorateField(Tr2EffectStageInput, \"exists\", type.boolean);\nCjsSchema.decorateField(Tr2EffectStageInput, \"resources\", type.map(\"Tr2EffectResource\"));\nCjsSchema.decorateField(Tr2EffectStageInput, \"uavs\", type.map(\"Tr2EffectResource\"));\nCjsSchema.decorateField(Tr2EffectStageInput, \"samplers\", type.map(\"Tr2SamplerSetup\"));\nCjsSchema.decorateField(Tr2EffectStageInput, \"shader\", type.uint32);\nCjsSchema.decorateField(Tr2EffectStageInput, \"constants\", type.list(\"Tr2EffectConstant\"));\nCjsSchema.decorateField(Tr2EffectStageInput, \"constantValueSize\", type.uint32);\nCjsSchema.decorateField(Tr2EffectStageInput, \"constantValues\", type.typedArray(\"Uint8Array\"));\nCjsSchema.decorateField(Tr2EffectStageInput, \"signature\", type.rawStruct(\"Tr2ShaderSignatureAL\"));\nCjsSchema.decorateField(Tr2EffectStageInput, \"annotation\", type.list(\"Tr2EffectParameterAnnotation\"));\nCjsSchema.decorateField(Tr2EffectStageInput, \"sourceProgram\", impl.adapted, impl.reason(\"Carbon replaces source program data with renderer handles while reading; the device-free resource graph must retain the portable source program for later engine realization.\"), type.rawStruct(\"CjsEffectSourceProgram\"));\n"],"names":["Tr2EffectStageInput","CjsModel","stageType","exists","resources","Map","uavs","samplers","shader","constants","constantValueSize","constantValues","Uint8Array","signature","annotation","sourceProgram","from","values","options","normalized","maps","field","Constructor","Tr2EffectResource","Tr2SamplerSetup","Object","hasOwn","readCanonicalRegisterMap","set","stage","value","fromPortable","isPlainObject","TypeError","requirePortableStageType","fromPortableInput","input","validateEffectBodyInput","isArray","annotations","constantDefaults","bytes","defaults","copyBytes","declaredByteLength","byteLength","Error","map","entry","Tr2EffectConstant","readPortableResourceMap","readPortableSamplerMap","cloneCarbonValue","Tr2EffectParameterAnnotation","clonePortableSourceProgram","createEmpty","result","isUint32","registerIndex","RangeError","has","entries","key","Number","CjsSchema","define","className","family","decorateField","impl","adapted","reason","type","int32","boolean","uint32","list","typedArray","rawStruct"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2EffectStageInput.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectStageInput.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\n// Source: trinity/trinity/Shader/Tr2EffectDescription.cpp\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { copyBytes } from \"@carbonenginejs/runtime-utils/bytes\";\nimport {\n isArray,\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { cloneCarbonValue } from \"@carbonenginejs/runtime-utils/types\";\nimport {\n clonePortableSourceProgram,\n requirePortableStageType\n} from \"../portable.js\";\nimport { validateEffectBodyInput } from \"../../../formats/hlsl/portable.js\";\nimport { Tr2SamplerSetup } from \"../sampler/Tr2SamplerSetup.js\";\nimport { Tr2EffectConstant } from \"./Tr2EffectConstant.js\";\nimport { Tr2EffectParameterAnnotation } from \"./Tr2EffectParameterAnnotation.js\";\nimport { Tr2EffectResource } from \"./Tr2EffectResource.js\";\n\n/** Complete device-free reflection for one shader stage input. */\nexport class Tr2EffectStageInput extends CjsModel\n{\n\n /** Portable stage index; Carbon otherwise implies this from the containing array. */\n stageType = -1;\n\n /** m_exists (bool) */\n exists = false;\n\n /** resources (Tr2EffectResourceMap) */\n resources = new Map();\n\n /** uavs (Tr2EffectResourceMap) */\n uavs = new Map();\n\n /** samplers (Tr2SamplerSetupMap) */\n samplers = new Map();\n\n /** m_shader (unsigned) */\n shader = 0xffffffff;\n\n /** constants (Tr2EffectConstantVector) */\n constants = [];\n\n /** m_constantValueSize (unsigned) */\n constantValueSize = 0;\n\n /** constantValues (char[SHADER_CONSTANTS_MAX]) */\n constantValues = new Uint8Array(0);\n\n /** signature (Tr2ShaderSignatureAL) */\n signature = null;\n\n /** annotation (Tr2EffectParameterAnnotationMap) */\n annotation = [];\n\n /** Exact source program metadata and owned bytes, before backend realization. */\n sourceProgram = null;\n\n /**\n * Construct one canonical stage input from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2EffectStageInput} Hydrated stage input.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n const maps = new Map();\n for (const [ field, Constructor ] of [\n [ \"resources\", Tr2EffectResource ],\n [ \"uavs\", Tr2EffectResource ],\n [ \"samplers\", Tr2SamplerSetup ]\n ])\n {\n if (values && Object.hasOwn(values, field))\n {\n normalized = normalized === values ? { ...values } : normalized;\n normalized[field] = this.readCanonicalRegisterMap(\n values[field],\n Constructor,\n options,\n field\n );\n maps.set(field, normalized[field]);\n }\n }\n const stage = super.from(normalized, options);\n for (const [ field, value ] of maps)\n {\n stage[field] = value;\n }\n return stage;\n }\n\n /**\n * Build one stage input from its complete portable JSON stage record.\n *\n * @param {object} value Portable stage record.\n * @returns {Tr2EffectStageInput} Reflected stage input.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect stage must be an object\");\n }\n const stageType = requirePortableStageType(value.stageType);\n return this.fromPortableInput(\n value.input,\n stageType,\n value.sourceProgram\n );\n }\n\n /**\n * Build one input record used by a render stage or shader library.\n *\n * @param {object} value Portable input record.\n * @param {number} stageType Stage index, or -1 for a library input.\n * @param {object|null} sourceProgram Optional stage source program.\n * @returns {Tr2EffectStageInput} Reflected input.\n */\n static fromPortableInput(value, stageType = -1, sourceProgram = null)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect stage input must be an object\");\n }\n validateEffectBodyInput(value);\n if (!isArray(value.constants))\n {\n throw new TypeError(\"Portable effect constants must be an array\");\n }\n if (!isArray(value.resources))\n {\n throw new TypeError(\"Portable effect resources must be an array\");\n }\n if (!isArray(value.uavs))\n {\n throw new TypeError(\"Portable effect UAVs must be an array\");\n }\n if (!isArray(value.samplers))\n {\n throw new TypeError(\"Portable effect samplers must be an array\");\n }\n if (!isArray(value.annotations))\n {\n throw new TypeError(\n \"Portable effect stage annotations must be an array\"\n );\n }\n if (!isPlainObject(value.constantDefaults))\n {\n throw new TypeError(\n \"Portable effect constant defaults must be an object\"\n );\n }\n if (!(value.constantDefaults.bytes instanceof Uint8Array))\n {\n throw new TypeError(\n \"Portable effect constant defaults must be Uint8Array bytes\"\n );\n }\n\n const defaults = value.constantDefaults;\n const constantValues = copyBytes(defaults.bytes);\n if (defaults.declaredByteLength !== constantValues.byteLength)\n {\n throw new Error(\n \"Portable effect constant defaults disagree with their declared byte length\"\n );\n }\n\n const input = new this();\n input.stageType = stageType;\n input.exists = true;\n input.constants = value.constants.map(\n entry => Tr2EffectConstant.fromPortable(entry)\n );\n input.resources = this.readPortableResourceMap(value.resources);\n input.uavs = this.readPortableResourceMap(value.uavs);\n input.samplers = this.readPortableSamplerMap(value.samplers);\n input.constantValueSize = constantValues.byteLength;\n input.constantValues = constantValues;\n input.signature = cloneCarbonValue(value.signature);\n input.annotation = value.annotations.map(\n entry => Tr2EffectParameterAnnotation.fromPortable(entry)\n );\n input.sourceProgram = sourceProgram\n ? clonePortableSourceProgram(sourceProgram, \"stage\")\n : null;\n return input;\n }\n\n /**\n * Create one explicit absent stage slot.\n *\n * @param {number} stageType Stage index.\n * @returns {Tr2EffectStageInput} Empty stage input.\n */\n static createEmpty(stageType)\n {\n const stage = new this();\n stage.stageType = requirePortableStageType(stageType);\n return stage;\n }\n\n /** Build one register-indexed portable resource map. */\n static readPortableResourceMap(values)\n {\n const result = new Map();\n for (const value of values)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect resource must be an object\");\n }\n if (!isUint32(value.registerIndex))\n {\n throw new RangeError(\n \"Portable resource register index must fit uint32\"\n );\n }\n const registerIndex = value.registerIndex;\n if (result.has(registerIndex))\n {\n throw new Error(\n `Portable effect resource register ${registerIndex} is duplicated`\n );\n }\n result.set(\n registerIndex,\n Tr2EffectResource.fromPortable(value)\n );\n }\n return result;\n }\n\n /** Build one register-indexed portable sampler map. */\n static readPortableSamplerMap(values)\n {\n const result = new Map();\n for (const value of values)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect sampler must be an object\");\n }\n if (!isUint32(value.registerIndex))\n {\n throw new RangeError(\n \"Portable sampler register index must fit uint32\"\n );\n }\n const registerIndex = value.registerIndex;\n if (result.has(registerIndex))\n {\n throw new Error(\n `Portable effect sampler register ${registerIndex} is duplicated`\n );\n }\n result.set(\n registerIndex,\n Tr2SamplerSetup.fromPortable(value)\n );\n }\n return result;\n }\n\n /** Hydrate one numeric-register map from canonical JS/JSON values. */\n static readCanonicalRegisterMap(values, Constructor, options, field)\n {\n const entries = values instanceof Map\n ? values\n : Object.entries(values ?? {});\n const result = new Map();\n for (const [ key, value ] of entries)\n {\n const registerIndex = Number(key);\n if (!isUint32(registerIndex))\n {\n throw new RangeError(\n `Effect ${field} register index must fit uint32`\n );\n }\n if (result.has(registerIndex))\n {\n throw new Error(\n `Effect ${field} register ${registerIndex} is duplicated`\n );\n }\n result.set(\n registerIndex,\n value instanceof Constructor\n ? value\n : Constructor.from(value, options)\n );\n }\n return result;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectStageInput, {\n className: \"Tr2EffectStageInput\",\n family: \"shader\",\n fields: {\n stageType: [ impl.adapted, impl.reason(\"The source format identifies stage inputs by array index; the device-free graph retains the index explicitly for serialization and engine adapters.\"), type.int32 ],\n exists: type.boolean,\n resources: type.map(\"Tr2EffectResource\"),\n uavs: type.map(\"Tr2EffectResource\"),\n samplers: type.map(\"Tr2SamplerSetup\"),\n shader: type.uint32,\n constants: type.list(\"Tr2EffectConstant\"),\n constantValueSize: type.uint32,\n constantValues: type.typedArray(\"Uint8Array\"),\n signature: type.rawStruct(\"Tr2ShaderSignatureAL\"),\n annotation: type.list(\"Tr2EffectParameterAnnotation\"),\n sourceProgram: [ impl.adapted, impl.reason(\"Carbon replaces source program data with renderer handles while reading; the device-free resource graph must retain the portable source program for later engine realization.\"), type.rawStruct(\"CjsEffectSourceProgram\") ]\n }\n});\n"],"names":["Tr2EffectStageInput","CjsModel","stageType","exists","resources","Map","uavs","samplers","shader","constants","constantValueSize","constantValues","Uint8Array","signature","annotation","sourceProgram","from","values","options","normalized","maps","field","Constructor","Tr2EffectResource","Tr2SamplerSetup","Object","hasOwn","readCanonicalRegisterMap","set","stage","value","fromPortable","isPlainObject","TypeError","requirePortableStageType","fromPortableInput","input","validateEffectBodyInput","isArray","annotations","constantDefaults","bytes","defaults","copyBytes","declaredByteLength","byteLength","Error","map","entry","Tr2EffectConstant","readPortableResourceMap","readPortableSamplerMap","cloneCarbonValue","Tr2EffectParameterAnnotation","clonePortableSourceProgram","createEmpty","result","isUint32","registerIndex","RangeError","has","entries","key","Number","CjsSchema","define","className","family","fields","impl","adapted","reason","type","int32","boolean","uint32","list","typedArray","rawStruct"],"mappings":"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"}
@@ -55,12 +55,14 @@ class Tr2EffectTechnique extends CjsModel {
55
55
  // would register a static as an instance field.
56
56
  CjsSchema.define(Tr2EffectTechnique, {
57
57
  className: "Tr2EffectTechnique",
58
- family: "shader"
58
+ family: "shader",
59
+ fields: {
60
+ name: type.string,
61
+ passes: type.list("Tr2Pass"),
62
+ libraries: type.list("Tr2EffectLibrary"),
63
+ shaderTypeMask: type.uint32
64
+ }
59
65
  });
60
- CjsSchema.decorateField(Tr2EffectTechnique, "name", type.string);
61
- CjsSchema.decorateField(Tr2EffectTechnique, "passes", type.list("Tr2Pass"));
62
- CjsSchema.decorateField(Tr2EffectTechnique, "libraries", type.list("Tr2EffectLibrary"));
63
- CjsSchema.decorateField(Tr2EffectTechnique, "shaderTypeMask", type.uint32);
64
66
 
65
67
  export { Tr2EffectTechnique };
66
68
  //# sourceMappingURL=Tr2EffectTechnique.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2EffectTechnique.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectTechnique.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isArray,\n isPlainObject\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { Tr2EffectLibrary } from \"./Tr2EffectLibrary.js\";\nimport { Tr2Pass } from \"./Tr2Pass.js\";\n\n/** Reflected effect technique and its passes and libraries. */\nexport class Tr2EffectTechnique extends CjsModel\n{\n\n /** name (BlueSharedString) */\n name = \"\";\n\n /** passes (TrackableStdVector<Tr2Pass>) */\n passes = [];\n\n /** libraries (std::vector<Tr2EffectLibrary>) */\n libraries = [];\n\n /** shaderTypeMask (unsigned int) */\n shaderTypeMask = 0;\n\n /**\n * Build one technique from its portable JSON reflection record.\n *\n * @param {object} value Portable technique record.\n * @returns {Tr2EffectTechnique} Reflected technique.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect technique must be an object\");\n }\n if (!isArray(value.passes))\n {\n throw new TypeError(\n \"Portable effect technique passes must be an array\"\n );\n }\n if (!isArray(value.libraries))\n {\n throw new TypeError(\n \"Portable effect technique libraries must be an array\"\n );\n }\n if (value.passCount !== value.passes.length\n || value.libraryCount !== value.libraries.length)\n {\n throw new Error(\n \"Portable effect technique counts disagree with its collections\"\n );\n }\n\n const technique = new this();\n technique.name = String(value.name ?? \"\");\n technique.passes = value.passes.map(\n entry => Tr2Pass.fromPortable(entry)\n );\n technique.libraries = value.libraries.map(\n entry => Tr2EffectLibrary.fromPortable(entry)\n );\n technique.shaderTypeMask = technique.passes.reduce(\n (mask, pass) => mask | pass.shaderTypeMask,\n 0\n ) >>> 0;\n return technique;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectTechnique, {\n className: \"Tr2EffectTechnique\",\n family: \"shader\"\n});\nCjsSchema.decorateField(Tr2EffectTechnique, \"name\", type.string);\nCjsSchema.decorateField(Tr2EffectTechnique, \"passes\", type.list(\"Tr2Pass\"));\nCjsSchema.decorateField(Tr2EffectTechnique, \"libraries\", type.list(\"Tr2EffectLibrary\"));\nCjsSchema.decorateField(Tr2EffectTechnique, \"shaderTypeMask\", type.uint32);\n"],"names":["Tr2EffectTechnique","CjsModel","name","passes","libraries","shaderTypeMask","fromPortable","value","isPlainObject","TypeError","isArray","passCount","length","libraryCount","Error","technique","String","map","entry","Tr2Pass","Tr2EffectLibrary","reduce","mask","pass","CjsSchema","define","className","family","decorateField","type","string","list","uint32"],"mappings":";;;;;;AAAA;;AAUA;AACO,MAAMA,kBAAkB,SAASC,QAAQ,CAChD;AAEE;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,MAAM,GAAG,EAAE;;AAEX;AACAC,EAAAA,SAAS,GAAG,EAAE;;AAEd;AACAC,EAAAA,cAAc,GAAG,CAAC;;AAElB;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,YAAYA,CAACC,KAAK,EACzB;AACE,IAAA,IAAI,CAACC,aAAa,CAACD,KAAK,CAAC,EACzB;AACE,MAAA,MAAM,IAAIE,SAAS,CAAC,6CAA6C,CAAC;AACpE,IAAA;AACA,IAAA,IAAI,CAACC,OAAO,CAACH,KAAK,CAACJ,MAAM,CAAC,EAC1B;AACE,MAAA,MAAM,IAAIM,SAAS,CACjB,mDACF,CAAC;AACH,IAAA;AACA,IAAA,IAAI,CAACC,OAAO,CAACH,KAAK,CAACH,SAAS,CAAC,EAC7B;AACE,MAAA,MAAM,IAAIK,SAAS,CACjB,sDACF,CAAC;AACH,IAAA;AACA,IAAA,IAAIF,KAAK,CAACI,SAAS,KAAKJ,KAAK,CAACJ,MAAM,CAACS,MAAM,IACtCL,KAAK,CAACM,YAAY,KAAKN,KAAK,CAACH,SAAS,CAACQ,MAAM,EAClD;AACE,MAAA,MAAM,IAAIE,KAAK,CACb,gEACF,CAAC;AACH,IAAA;AAEA,IAAA,MAAMC,SAAS,GAAG,IAAI,IAAI,EAAE;IAC5BA,SAAS,CAACb,IAAI,GAAGc,MAAM,CAACT,KAAK,CAACL,IAAI,IAAI,EAAE,CAAC;AACzCa,IAAAA,SAAS,CAACZ,MAAM,GAAGI,KAAK,CAACJ,MAAM,CAACc,GAAG,CACjCC,KAAK,IAAIC,OAAO,CAACb,YAAY,CAACY,KAAK,CACrC,CAAC;AACDH,IAAAA,SAAS,CAACX,SAAS,GAAGG,KAAK,CAACH,SAAS,CAACa,GAAG,CACvCC,KAAK,IAAIE,gBAAgB,CAACd,YAAY,CAACY,KAAK,CAC9C,CAAC;IACDH,SAAS,CAACV,cAAc,GAAGU,SAAS,CAACZ,MAAM,CAACkB,MAAM,CAChD,CAACC,IAAI,EAAEC,IAAI,KAAKD,IAAI,GAAGC,IAAI,CAAClB,cAAc,EAC1C,CACF,CAAC,KAAK,CAAC;AACP,IAAA,OAAOU,SAAS;AAClB,EAAA;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACAS,SAAS,CAACC,MAAM,CAACzB,kBAAkB,EAAE;AACnC0B,EAAAA,SAAS,EAAE,oBAAoB;AAC/BC,EAAAA,MAAM,EAAE;AACV,CAAC,CAAC;AACFH,SAAS,CAACI,aAAa,CAAC5B,kBAAkB,EAAE,MAAM,EAAE6B,IAAI,CAACC,MAAM,CAAC;AAChEN,SAAS,CAACI,aAAa,CAAC5B,kBAAkB,EAAE,QAAQ,EAAE6B,IAAI,CAACE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3EP,SAAS,CAACI,aAAa,CAAC5B,kBAAkB,EAAE,WAAW,EAAE6B,IAAI,CAACE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACvFP,SAAS,CAACI,aAAa,CAAC5B,kBAAkB,EAAE,gBAAgB,EAAE6B,IAAI,CAACG,MAAM,CAAC;;;;"}
1
+ {"version":3,"file":"Tr2EffectTechnique.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectTechnique.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isArray,\n isPlainObject\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { Tr2EffectLibrary } from \"./Tr2EffectLibrary.js\";\nimport { Tr2Pass } from \"./Tr2Pass.js\";\n\n/** Reflected effect technique and its passes and libraries. */\nexport class Tr2EffectTechnique extends CjsModel\n{\n\n /** name (BlueSharedString) */\n name = \"\";\n\n /** passes (TrackableStdVector<Tr2Pass>) */\n passes = [];\n\n /** libraries (std::vector<Tr2EffectLibrary>) */\n libraries = [];\n\n /** shaderTypeMask (unsigned int) */\n shaderTypeMask = 0;\n\n /**\n * Build one technique from its portable JSON reflection record.\n *\n * @param {object} value Portable technique record.\n * @returns {Tr2EffectTechnique} Reflected technique.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect technique must be an object\");\n }\n if (!isArray(value.passes))\n {\n throw new TypeError(\n \"Portable effect technique passes must be an array\"\n );\n }\n if (!isArray(value.libraries))\n {\n throw new TypeError(\n \"Portable effect technique libraries must be an array\"\n );\n }\n if (value.passCount !== value.passes.length\n || value.libraryCount !== value.libraries.length)\n {\n throw new Error(\n \"Portable effect technique counts disagree with its collections\"\n );\n }\n\n const technique = new this();\n technique.name = String(value.name ?? \"\");\n technique.passes = value.passes.map(\n entry => Tr2Pass.fromPortable(entry)\n );\n technique.libraries = value.libraries.map(\n entry => Tr2EffectLibrary.fromPortable(entry)\n );\n technique.shaderTypeMask = technique.passes.reduce(\n (mask, pass) => mask | pass.shaderTypeMask,\n 0\n ) >>> 0;\n return technique;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectTechnique, {\n className: \"Tr2EffectTechnique\",\n family: \"shader\",\n fields: {\n name: type.string,\n passes: type.list(\"Tr2Pass\"),\n libraries: type.list(\"Tr2EffectLibrary\"),\n shaderTypeMask: type.uint32\n }\n});\n"],"names":["Tr2EffectTechnique","CjsModel","name","passes","libraries","shaderTypeMask","fromPortable","value","isPlainObject","TypeError","isArray","passCount","length","libraryCount","Error","technique","String","map","entry","Tr2Pass","Tr2EffectLibrary","reduce","mask","pass","CjsSchema","define","className","family","fields","type","string","list","uint32"],"mappings":";;;;;;AAAA;;AAUA;AACO,MAAMA,kBAAkB,SAASC,QAAQ,CAChD;AAEE;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,MAAM,GAAG,EAAE;;AAEX;AACAC,EAAAA,SAAS,GAAG,EAAE;;AAEd;AACAC,EAAAA,cAAc,GAAG,CAAC;;AAElB;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,YAAYA,CAACC,KAAK,EACzB;AACE,IAAA,IAAI,CAACC,aAAa,CAACD,KAAK,CAAC,EACzB;AACE,MAAA,MAAM,IAAIE,SAAS,CAAC,6CAA6C,CAAC;AACpE,IAAA;AACA,IAAA,IAAI,CAACC,OAAO,CAACH,KAAK,CAACJ,MAAM,CAAC,EAC1B;AACE,MAAA,MAAM,IAAIM,SAAS,CACjB,mDACF,CAAC;AACH,IAAA;AACA,IAAA,IAAI,CAACC,OAAO,CAACH,KAAK,CAACH,SAAS,CAAC,EAC7B;AACE,MAAA,MAAM,IAAIK,SAAS,CACjB,sDACF,CAAC;AACH,IAAA;AACA,IAAA,IAAIF,KAAK,CAACI,SAAS,KAAKJ,KAAK,CAACJ,MAAM,CAACS,MAAM,IACtCL,KAAK,CAACM,YAAY,KAAKN,KAAK,CAACH,SAAS,CAACQ,MAAM,EAClD;AACE,MAAA,MAAM,IAAIE,KAAK,CACb,gEACF,CAAC;AACH,IAAA;AAEA,IAAA,MAAMC,SAAS,GAAG,IAAI,IAAI,EAAE;IAC5BA,SAAS,CAACb,IAAI,GAAGc,MAAM,CAACT,KAAK,CAACL,IAAI,IAAI,EAAE,CAAC;AACzCa,IAAAA,SAAS,CAACZ,MAAM,GAAGI,KAAK,CAACJ,MAAM,CAACc,GAAG,CACjCC,KAAK,IAAIC,OAAO,CAACb,YAAY,CAACY,KAAK,CACrC,CAAC;AACDH,IAAAA,SAAS,CAACX,SAAS,GAAGG,KAAK,CAACH,SAAS,CAACa,GAAG,CACvCC,KAAK,IAAIE,gBAAgB,CAACd,YAAY,CAACY,KAAK,CAC9C,CAAC;IACDH,SAAS,CAACV,cAAc,GAAGU,SAAS,CAACZ,MAAM,CAACkB,MAAM,CAChD,CAACC,IAAI,EAAEC,IAAI,KAAKD,IAAI,GAAGC,IAAI,CAAClB,cAAc,EAC1C,CACF,CAAC,KAAK,CAAC;AACP,IAAA,OAAOU,SAAS;AAClB,EAAA;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACAS,SAAS,CAACC,MAAM,CAACzB,kBAAkB,EAAE;AACnC0B,EAAAA,SAAS,EAAE,oBAAoB;AAC/BC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE;IACN1B,IAAI,EAAE2B,IAAI,CAACC,MAAM;AACjB3B,IAAAA,MAAM,EAAE0B,IAAI,CAACE,IAAI,CAAC,SAAS,CAAC;AAC5B3B,IAAAA,SAAS,EAAEyB,IAAI,CAACE,IAAI,CAAC,kBAAkB,CAAC;IACxC1B,cAAc,EAAEwB,IAAI,CAACG;AACvB;AACF,CAAC,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import { CjsSchema, type, impl } from '@carbonenginejs/runtime-utils/schema';
1
+ import { CjsSchema, impl, type } from '@carbonenginejs/runtime-utils/schema';
2
2
  import { CjsModel } from '@carbonenginejs/runtime-utils/model';
3
3
  import { isPlainObject, isArray, isUint32 } from '@carbonenginejs/runtime-utils/is';
4
4
  import { requirePortableStageType } from '../portable.js';
@@ -95,15 +95,17 @@ class Tr2Pass extends CjsModel {
95
95
  // would register a static as an instance field.
96
96
  CjsSchema.define(Tr2Pass, {
97
97
  className: "Tr2Pass",
98
- family: "shader"
98
+ family: "shader",
99
+ fields: {
100
+ stageInputs: type.list("Tr2EffectStageInput"),
101
+ renderStates: type.uint32,
102
+ shaderTypeMask: type.uint32,
103
+ shaderProgram: type.uint32,
104
+ resourceSetDesc: type.rawStruct("Tr2ResourceSetDescriptionAL"),
105
+ indirectLayout: type.rawStruct("Tr2IndirectDrawBufferLayout"),
106
+ renderStateValues: [impl.adapted, impl.reason("Carbon stores a renderer-owned render-state handle; the device-free graph retains the authored state/value pairs until an engine realizes them."), type.rawStruct("CjsEffectRenderStateValues")]
107
+ }
99
108
  });
100
- CjsSchema.decorateField(Tr2Pass, "stageInputs", type.list("Tr2EffectStageInput"));
101
- CjsSchema.decorateField(Tr2Pass, "renderStates", type.uint32);
102
- CjsSchema.decorateField(Tr2Pass, "shaderTypeMask", type.uint32);
103
- CjsSchema.decorateField(Tr2Pass, "shaderProgram", type.uint32);
104
- CjsSchema.decorateField(Tr2Pass, "resourceSetDesc", type.rawStruct("Tr2ResourceSetDescriptionAL"));
105
- CjsSchema.decorateField(Tr2Pass, "indirectLayout", type.rawStruct("Tr2IndirectDrawBufferLayout"));
106
- CjsSchema.decorateField(Tr2Pass, "renderStateValues", impl.adapted, impl.reason("Carbon stores a renderer-owned render-state handle; the device-free graph retains the authored state/value pairs until an engine realizes them."), type.rawStruct("CjsEffectRenderStateValues"));
107
109
 
108
110
  export { Tr2Pass };
109
111
  //# sourceMappingURL=Tr2Pass.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2Pass.js","sources":["../../../../../src/resource/shader/reflection/Tr2Pass.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isArray,\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { requirePortableStageType } from \"../portable.js\";\nimport { Tr2EffectStageInput } from \"./Tr2EffectStageInput.js\";\n\nconst SHADER_TYPE_COUNT = 6;\n\n/** Reflected effect pass; backend program and state handles remain engine-owned. */\nexport class Tr2Pass extends CjsModel\n{\n\n /** stageInputs (Tr2EffectStageInput) */\n stageInputs = [];\n\n /** renderStates (unsigned int) */\n renderStates = 0;\n\n /** shaderTypeMask (unsigned int) */\n shaderTypeMask = 0;\n\n /** shaderProgram (unsigned int) */\n shaderProgram = 0;\n\n /** resourceSetDesc (Tr2ResourceSetDescriptionAL) */\n resourceSetDesc = null;\n\n /** indirectLayout (Tr2IndirectDrawBufferLayout) */\n indirectLayout = null;\n\n /** Exact authored render-state pairs retained before an engine creates a state handle. */\n renderStateValues = [];\n\n /**\n * Build one pass from its portable JSON reflection record.\n *\n * @param {object} value Portable pass record.\n * @returns {Tr2Pass} Reflected pass.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect pass must be an object\");\n }\n if (!isArray(value.renderStates))\n {\n throw new TypeError(\n \"Portable effect render states must be an array\"\n );\n }\n if (!isArray(value.stages))\n {\n throw new TypeError(\"Portable effect stages must be an array\");\n }\n if (value.renderStateCount !== value.renderStates.length\n || value.stageCount !== value.stages.length)\n {\n throw new Error(\n \"Portable effect pass counts disagree with its collections\"\n );\n }\n\n const pass = new this();\n const renderStateIds = new Set();\n pass.renderStateValues = value.renderStates.map(entry =>\n {\n if (!isUint32(entry?.state))\n {\n throw new RangeError(\"Portable render-state id must fit uint32\");\n }\n if (!isUint32(entry?.value))\n {\n throw new RangeError(\n \"Portable render-state value must fit uint32\"\n );\n }\n if (renderStateIds.has(entry.state))\n {\n throw new Error(\n `Portable render-state id ${entry.state} is duplicated`\n );\n }\n renderStateIds.add(entry.state);\n return {\n state: entry.state,\n value: entry.value\n };\n });\n\n const stageTypes = new Set();\n value.stages.forEach(stage =>\n {\n const stageType = requirePortableStageType(stage?.stageType);\n if (stageTypes.has(stageType))\n {\n throw new Error(\n `Portable effect stage type ${stageType} is duplicated`\n );\n }\n stageTypes.add(stageType);\n });\n pass.stageInputs = Array.from(\n { length: SHADER_TYPE_COUNT },\n (_, stageType) => Tr2EffectStageInput.createEmpty(stageType)\n );\n pass.shaderTypeMask = 0;\n\n for (const stageValue of value.stages)\n {\n const stage = Tr2EffectStageInput.fromPortable(stageValue);\n pass.stageInputs[stage.stageType] = stage;\n pass.shaderTypeMask = (\n pass.shaderTypeMask | (1 << stage.stageType)\n ) >>> 0;\n }\n\n return pass;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2Pass, {\n className: \"Tr2Pass\",\n family: \"shader\"\n});\nCjsSchema.decorateField(Tr2Pass, \"stageInputs\", type.list(\"Tr2EffectStageInput\"));\nCjsSchema.decorateField(Tr2Pass, \"renderStates\", type.uint32);\nCjsSchema.decorateField(Tr2Pass, \"shaderTypeMask\", type.uint32);\nCjsSchema.decorateField(Tr2Pass, \"shaderProgram\", type.uint32);\nCjsSchema.decorateField(Tr2Pass, \"resourceSetDesc\", type.rawStruct(\"Tr2ResourceSetDescriptionAL\"));\nCjsSchema.decorateField(Tr2Pass, \"indirectLayout\", type.rawStruct(\"Tr2IndirectDrawBufferLayout\"));\nCjsSchema.decorateField(Tr2Pass, \"renderStateValues\", impl.adapted, impl.reason(\"Carbon stores a renderer-owned render-state handle; the device-free graph retains the authored state/value pairs until an engine realizes them.\"), type.rawStruct(\"CjsEffectRenderStateValues\"));\n"],"names":["SHADER_TYPE_COUNT","Tr2Pass","CjsModel","stageInputs","renderStates","shaderTypeMask","shaderProgram","resourceSetDesc","indirectLayout","renderStateValues","fromPortable","value","isPlainObject","TypeError","isArray","stages","renderStateCount","length","stageCount","Error","pass","renderStateIds","Set","map","entry","isUint32","state","RangeError","has","add","stageTypes","forEach","stage","stageType","requirePortableStageType","Array","from","_","Tr2EffectStageInput","createEmpty","stageValue","CjsSchema","define","className","family","decorateField","type","list","uint32","rawStruct","impl","adapted","reason"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2Pass.js","sources":["../../../../../src/resource/shader/reflection/Tr2Pass.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isArray,\n isPlainObject,\n isUint32\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { requirePortableStageType } from \"../portable.js\";\nimport { Tr2EffectStageInput } from \"./Tr2EffectStageInput.js\";\n\nconst SHADER_TYPE_COUNT = 6;\n\n/** Reflected effect pass; backend program and state handles remain engine-owned. */\nexport class Tr2Pass extends CjsModel\n{\n\n /** stageInputs (Tr2EffectStageInput) */\n stageInputs = [];\n\n /** renderStates (unsigned int) */\n renderStates = 0;\n\n /** shaderTypeMask (unsigned int) */\n shaderTypeMask = 0;\n\n /** shaderProgram (unsigned int) */\n shaderProgram = 0;\n\n /** resourceSetDesc (Tr2ResourceSetDescriptionAL) */\n resourceSetDesc = null;\n\n /** indirectLayout (Tr2IndirectDrawBufferLayout) */\n indirectLayout = null;\n\n /** Exact authored render-state pairs retained before an engine creates a state handle. */\n renderStateValues = [];\n\n /**\n * Build one pass from its portable JSON reflection record.\n *\n * @param {object} value Portable pass record.\n * @returns {Tr2Pass} Reflected pass.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect pass must be an object\");\n }\n if (!isArray(value.renderStates))\n {\n throw new TypeError(\n \"Portable effect render states must be an array\"\n );\n }\n if (!isArray(value.stages))\n {\n throw new TypeError(\"Portable effect stages must be an array\");\n }\n if (value.renderStateCount !== value.renderStates.length\n || value.stageCount !== value.stages.length)\n {\n throw new Error(\n \"Portable effect pass counts disagree with its collections\"\n );\n }\n\n const pass = new this();\n const renderStateIds = new Set();\n pass.renderStateValues = value.renderStates.map(entry =>\n {\n if (!isUint32(entry?.state))\n {\n throw new RangeError(\"Portable render-state id must fit uint32\");\n }\n if (!isUint32(entry?.value))\n {\n throw new RangeError(\n \"Portable render-state value must fit uint32\"\n );\n }\n if (renderStateIds.has(entry.state))\n {\n throw new Error(\n `Portable render-state id ${entry.state} is duplicated`\n );\n }\n renderStateIds.add(entry.state);\n return {\n state: entry.state,\n value: entry.value\n };\n });\n\n const stageTypes = new Set();\n value.stages.forEach(stage =>\n {\n const stageType = requirePortableStageType(stage?.stageType);\n if (stageTypes.has(stageType))\n {\n throw new Error(\n `Portable effect stage type ${stageType} is duplicated`\n );\n }\n stageTypes.add(stageType);\n });\n pass.stageInputs = Array.from(\n { length: SHADER_TYPE_COUNT },\n (_, stageType) => Tr2EffectStageInput.createEmpty(stageType)\n );\n pass.shaderTypeMask = 0;\n\n for (const stageValue of value.stages)\n {\n const stage = Tr2EffectStageInput.fromPortable(stageValue);\n pass.stageInputs[stage.stageType] = stage;\n pass.shaderTypeMask = (\n pass.shaderTypeMask | (1 << stage.stageType)\n ) >>> 0;\n }\n\n return pass;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2Pass, {\n className: \"Tr2Pass\",\n family: \"shader\",\n fields: {\n stageInputs: type.list(\"Tr2EffectStageInput\"),\n renderStates: type.uint32,\n shaderTypeMask: type.uint32,\n shaderProgram: type.uint32,\n resourceSetDesc: type.rawStruct(\"Tr2ResourceSetDescriptionAL\"),\n indirectLayout: type.rawStruct(\"Tr2IndirectDrawBufferLayout\"),\n renderStateValues: [ impl.adapted, impl.reason(\"Carbon stores a renderer-owned render-state handle; the device-free graph retains the authored state/value pairs until an engine realizes them.\"), type.rawStruct(\"CjsEffectRenderStateValues\") ]\n }\n});\n"],"names":["SHADER_TYPE_COUNT","Tr2Pass","CjsModel","stageInputs","renderStates","shaderTypeMask","shaderProgram","resourceSetDesc","indirectLayout","renderStateValues","fromPortable","value","isPlainObject","TypeError","isArray","stages","renderStateCount","length","stageCount","Error","pass","renderStateIds","Set","map","entry","isUint32","state","RangeError","has","add","stageTypes","forEach","stage","stageType","requirePortableStageType","Array","from","_","Tr2EffectStageInput","createEmpty","stageValue","CjsSchema","define","className","family","fields","type","list","uint32","rawStruct","impl","adapted","reason"],"mappings":";;;;;;AAAA;AAWA,MAAMA,iBAAiB,GAAG,CAAC;;AAE3B;AACO,MAAMC,OAAO,SAASC,QAAQ,CACrC;AAEE;AACAC,EAAAA,WAAW,GAAG,EAAE;;AAEhB;AACAC,EAAAA,YAAY,GAAG,CAAC;;AAEhB;AACAC,EAAAA,cAAc,GAAG,CAAC;;AAElB;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;AACAC,EAAAA,eAAe,GAAG,IAAI;;AAEtB;AACAC,EAAAA,cAAc,GAAG,IAAI;;AAErB;AACAC,EAAAA,iBAAiB,GAAG,EAAE;;AAEtB;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,YAAYA,CAACC,KAAK,EACzB;AACE,IAAA,IAAI,CAACC,aAAa,CAACD,KAAK,CAAC,EACzB;AACE,MAAA,MAAM,IAAIE,SAAS,CAAC,wCAAwC,CAAC;AAC/D,IAAA;AACA,IAAA,IAAI,CAACC,OAAO,CAACH,KAAK,CAACP,YAAY,CAAC,EAChC;AACE,MAAA,MAAM,IAAIS,SAAS,CACjB,gDACF,CAAC;AACH,IAAA;AACA,IAAA,IAAI,CAACC,OAAO,CAACH,KAAK,CAACI,MAAM,CAAC,EAC1B;AACE,MAAA,MAAM,IAAIF,SAAS,CAAC,yCAAyC,CAAC;AAChE,IAAA;AACA,IAAA,IAAIF,KAAK,CAACK,gBAAgB,KAAKL,KAAK,CAACP,YAAY,CAACa,MAAM,IACnDN,KAAK,CAACO,UAAU,KAAKP,KAAK,CAACI,MAAM,CAACE,MAAM,EAC7C;AACE,MAAA,MAAM,IAAIE,KAAK,CACb,2DACF,CAAC;AACH,IAAA;AAEA,IAAA,MAAMC,IAAI,GAAG,IAAI,IAAI,EAAE;AACvB,IAAA,MAAMC,cAAc,GAAG,IAAIC,GAAG,EAAE;IAChCF,IAAI,CAACX,iBAAiB,GAAGE,KAAK,CAACP,YAAY,CAACmB,GAAG,CAACC,KAAK,IACrD;AACE,MAAA,IAAI,CAACC,QAAQ,CAACD,KAAK,EAAEE,KAAK,CAAC,EAC3B;AACE,QAAA,MAAM,IAAIC,UAAU,CAAC,0CAA0C,CAAC;AAClE,MAAA;AACA,MAAA,IAAI,CAACF,QAAQ,CAACD,KAAK,EAAEb,KAAK,CAAC,EAC3B;AACE,QAAA,MAAM,IAAIgB,UAAU,CAClB,6CACF,CAAC;AACH,MAAA;MACA,IAAIN,cAAc,CAACO,GAAG,CAACJ,KAAK,CAACE,KAAK,CAAC,EACnC;QACE,MAAM,IAAIP,KAAK,CACb,CAAA,yBAAA,EAA4BK,KAAK,CAACE,KAAK,gBACzC,CAAC;AACH,MAAA;AACAL,MAAAA,cAAc,CAACQ,GAAG,CAACL,KAAK,CAACE,KAAK,CAAC;MAC/B,OAAO;QACLA,KAAK,EAAEF,KAAK,CAACE,KAAK;QAClBf,KAAK,EAAEa,KAAK,CAACb;OACd;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,MAAMmB,UAAU,GAAG,IAAIR,GAAG,EAAE;AAC5BX,IAAAA,KAAK,CAACI,MAAM,CAACgB,OAAO,CAACC,KAAK,IAC1B;AACE,MAAA,MAAMC,SAAS,GAAGC,wBAAwB,CAACF,KAAK,EAAEC,SAAS,CAAC;AAC5D,MAAA,IAAIH,UAAU,CAACF,GAAG,CAACK,SAAS,CAAC,EAC7B;AACE,QAAA,MAAM,IAAId,KAAK,CACb,CAAA,2BAAA,EAA8Bc,SAAS,gBACzC,CAAC;AACH,MAAA;AACAH,MAAAA,UAAU,CAACD,GAAG,CAACI,SAAS,CAAC;AAC3B,IAAA,CAAC,CAAC;AACFb,IAAAA,IAAI,CAACjB,WAAW,GAAGgC,KAAK,CAACC,IAAI,CAC3B;AAAEnB,MAAAA,MAAM,EAAEjB;AAAkB,KAAC,EAC7B,CAACqC,CAAC,EAAEJ,SAAS,KAAKK,mBAAmB,CAACC,WAAW,CAACN,SAAS,CAC7D,CAAC;IACDb,IAAI,CAACf,cAAc,GAAG,CAAC;AAEvB,IAAA,KAAK,MAAMmC,UAAU,IAAI7B,KAAK,CAACI,MAAM,EACrC;AACE,MAAA,MAAMiB,KAAK,GAAGM,mBAAmB,CAAC5B,YAAY,CAAC8B,UAAU,CAAC;MAC1DpB,IAAI,CAACjB,WAAW,CAAC6B,KAAK,CAACC,SAAS,CAAC,GAAGD,KAAK;AACzCZ,MAAAA,IAAI,CAACf,cAAc,GAAG,CACpBe,IAAI,CAACf,cAAc,GAAI,CAAC,IAAI2B,KAAK,CAACC,SAAU,MACxC,CAAC;AACT,IAAA;AAEA,IAAA,OAAOb,IAAI;AACb,EAAA;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACAqB,SAAS,CAACC,MAAM,CAACzC,OAAO,EAAE;AACxB0C,EAAAA,SAAS,EAAE,SAAS;AACpBC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE;AACN1C,IAAAA,WAAW,EAAE2C,IAAI,CAACC,IAAI,CAAC,qBAAqB,CAAC;IAC7C3C,YAAY,EAAE0C,IAAI,CAACE,MAAM;IACzB3C,cAAc,EAAEyC,IAAI,CAACE,MAAM;IAC3B1C,aAAa,EAAEwC,IAAI,CAACE,MAAM;AAC1BzC,IAAAA,eAAe,EAAEuC,IAAI,CAACG,SAAS,CAAC,6BAA6B,CAAC;AAC9DzC,IAAAA,cAAc,EAAEsC,IAAI,CAACG,SAAS,CAAC,6BAA6B,CAAC;AAC7DxC,IAAAA,iBAAiB,EAAE,CAAEyC,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC,iJAAiJ,CAAC,EAAEN,IAAI,CAACG,SAAS,CAAC,4BAA4B,CAAC;AACjP;AACF,CAAC,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import { CjsSchema, type, impl } from '@carbonenginejs/runtime-utils/schema';
1
+ import { CjsSchema, impl, type } from '@carbonenginejs/runtime-utils/schema';
2
2
  import { CjsModel } from '@carbonenginejs/runtime-utils/model';
3
3
  import { isPlainObject } from '@carbonenginejs/runtime-utils/is';
4
4
  import { cloneCarbonValue } from '@carbonenginejs/runtime-utils/types';
@@ -64,12 +64,14 @@ class Tr2SamplerSetup extends CjsModel {
64
64
  // would register a static as an instance field.
65
65
  CjsSchema.define(Tr2SamplerSetup, {
66
66
  className: "Tr2SamplerSetup",
67
- family: "shader"
67
+ family: "shader",
68
+ fields: {
69
+ name: type.string,
70
+ hasName: [impl.adapted, impl.reason("The schema string field cannot distinguish an authored null sampler name from an empty name; portable reflection must retain that distinction for static sampler records."), type.boolean],
71
+ sampler: type.rawStruct("Tr2SamplerStateAL"),
72
+ isDynamic: [impl.adapted, impl.reason("The portable effect contract distinguishes dynamic and static sampler declarations before an engine creates sampler state."), type.boolean]
73
+ }
68
74
  });
69
- CjsSchema.decorateField(Tr2SamplerSetup, "name", type.string);
70
- CjsSchema.decorateField(Tr2SamplerSetup, "hasName", impl.adapted, impl.reason("The schema string field cannot distinguish an authored null sampler name from an empty name; portable reflection must retain that distinction for static sampler records."), type.boolean);
71
- CjsSchema.decorateField(Tr2SamplerSetup, "sampler", type.rawStruct("Tr2SamplerStateAL"));
72
- CjsSchema.decorateField(Tr2SamplerSetup, "isDynamic", impl.adapted, impl.reason("The portable effect contract distinguishes dynamic and static sampler declarations before an engine creates sampler state."), type.boolean);
73
75
 
74
76
  export { Tr2SamplerSetup };
75
77
  //# sourceMappingURL=Tr2SamplerSetup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2SamplerSetup.js","sources":["../../../../../src/resource/shader/sampler/Tr2SamplerSetup.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { isPlainObject } from \"@carbonenginejs/runtime-utils/is\";\nimport { cloneCarbonValue } from \"@carbonenginejs/runtime-utils/types\";\n\n/** Reflected sampler name and complete device-free sampler descriptor. */\nexport class Tr2SamplerSetup extends CjsModel\n{\n\n /** name (const char*) */\n name = \"\";\n\n /** Whether the source sampler carried a name rather than authored null. */\n hasName = false;\n\n /** sampler (Tr2SamplerStateAL) */\n sampler = null;\n\n /** Whether the sampler occupies a dynamic register rather than static signature state. */\n isDynamic = false;\n\n /**\n * Construct a canonical sampler record from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2SamplerSetup} Hydrated sampler.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n if (values && Object.hasOwn(values, \"name\")\n && !Object.hasOwn(values, \"hasName\"))\n {\n normalized = {\n ...values,\n hasName: values.name !== null,\n name: values.name === null ? \"\" : values.name\n };\n }\n return super.from(normalized, options);\n }\n\n /**\n * Build one sampler from its portable JSON reflection record.\n *\n * @param {object} value Portable sampler record.\n * @returns {Tr2SamplerSetup} Reflected sampler.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect sampler must be an object\");\n }\n const sampler = new this();\n sampler.hasName = value.name !== null;\n sampler.name = sampler.hasName ? String(value.name ?? \"\") : \"\";\n sampler.sampler = cloneCarbonValue(value.descriptor);\n sampler.isDynamic = !!value.isDynamic;\n return sampler;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2SamplerSetup, {\n className: \"Tr2SamplerSetup\",\n family: \"shader\"\n});\nCjsSchema.decorateField(Tr2SamplerSetup, \"name\", type.string);\nCjsSchema.decorateField(Tr2SamplerSetup, \"hasName\", impl.adapted, impl.reason(\"The schema string field cannot distinguish an authored null sampler name from an empty name; portable reflection must retain that distinction for static sampler records.\"), type.boolean);\nCjsSchema.decorateField(Tr2SamplerSetup, \"sampler\", type.rawStruct(\"Tr2SamplerStateAL\"));\nCjsSchema.decorateField(Tr2SamplerSetup, \"isDynamic\", impl.adapted, impl.reason(\"The portable effect contract distinguishes dynamic and static sampler declarations before an engine creates sampler state.\"), type.boolean);\n"],"names":["Tr2SamplerSetup","CjsModel","name","hasName","sampler","isDynamic","from","values","options","normalized","Object","hasOwn","fromPortable","value","isPlainObject","TypeError","String","cloneCarbonValue","descriptor","CjsSchema","define","className","family","decorateField","type","string","impl","adapted","reason","boolean","rawStruct"],"mappings":";;;;;AAAA;;AAMA;AACO,MAAMA,eAAe,SAASC,QAAQ,CAC7C;AAEE;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,OAAO,GAAG,KAAK;;AAEf;AACAC,EAAAA,OAAO,GAAG,IAAI;;AAEd;AACAC,EAAAA,SAAS,GAAG,KAAK;;AAEjB;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,IAAIA,CAACC,MAAM,GAAG,EAAE,EAAEC,OAAO,GAAG,EAAE,EACrC;IACE,IAAIC,UAAU,GAAGF,MAAM;IACvB,IAAIA,MAAM,IAAIG,MAAM,CAACC,MAAM,CAACJ,MAAM,EAAE,MAAM,CAAC,IACtC,CAACG,MAAM,CAACC,MAAM,CAACJ,MAAM,EAAE,SAAS,CAAC,EACtC;AACEE,MAAAA,UAAU,GAAG;AACX,QAAA,GAAGF,MAAM;AACTJ,QAAAA,OAAO,EAAEI,MAAM,CAACL,IAAI,KAAK,IAAI;QAC7BA,IAAI,EAAEK,MAAM,CAACL,IAAI,KAAK,IAAI,GAAG,EAAE,GAAGK,MAAM,CAACL;OAC1C;AACH,IAAA;AACA,IAAA,OAAO,KAAK,CAACI,IAAI,CAACG,UAAU,EAAED,OAAO,CAAC;AACxC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOI,YAAYA,CAACC,KAAK,EACzB;AACE,IAAA,IAAI,CAACC,aAAa,CAACD,KAAK,CAAC,EACzB;AACE,MAAA,MAAM,IAAIE,SAAS,CAAC,2CAA2C,CAAC;AAClE,IAAA;AACA,IAAA,MAAMX,OAAO,GAAG,IAAI,IAAI,EAAE;AAC1BA,IAAAA,OAAO,CAACD,OAAO,GAAGU,KAAK,CAACX,IAAI,KAAK,IAAI;AACrCE,IAAAA,OAAO,CAACF,IAAI,GAAGE,OAAO,CAACD,OAAO,GAAGa,MAAM,CAACH,KAAK,CAACX,IAAI,IAAI,EAAE,CAAC,GAAG,EAAE;IAC9DE,OAAO,CAACA,OAAO,GAAGa,gBAAgB,CAACJ,KAAK,CAACK,UAAU,CAAC;AACpDd,IAAAA,OAAO,CAACC,SAAS,GAAG,CAAC,CAACQ,KAAK,CAACR,SAAS;AACrC,IAAA,OAAOD,OAAO;AAChB,EAAA;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACAe,SAAS,CAACC,MAAM,CAACpB,eAAe,EAAE;AAChCqB,EAAAA,SAAS,EAAE,iBAAiB;AAC5BC,EAAAA,MAAM,EAAE;AACV,CAAC,CAAC;AACFH,SAAS,CAACI,aAAa,CAACvB,eAAe,EAAE,MAAM,EAAEwB,IAAI,CAACC,MAAM,CAAC;AAC7DN,SAAS,CAACI,aAAa,CAACvB,eAAe,EAAE,SAAS,EAAE0B,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC,2KAA2K,CAAC,EAAEJ,IAAI,CAACK,OAAO,CAAC;AACzQV,SAAS,CAACI,aAAa,CAACvB,eAAe,EAAE,SAAS,EAAEwB,IAAI,CAACM,SAAS,CAAC,mBAAmB,CAAC,CAAC;AACxFX,SAAS,CAACI,aAAa,CAACvB,eAAe,EAAE,WAAW,EAAE0B,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC,4HAA4H,CAAC,EAAEJ,IAAI,CAACK,OAAO,CAAC;;;;"}
1
+ {"version":3,"file":"Tr2SamplerSetup.js","sources":["../../../../../src/resource/shader/sampler/Tr2SamplerSetup.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { isPlainObject } from \"@carbonenginejs/runtime-utils/is\";\nimport { cloneCarbonValue } from \"@carbonenginejs/runtime-utils/types\";\n\n/** Reflected sampler name and complete device-free sampler descriptor. */\nexport class Tr2SamplerSetup extends CjsModel\n{\n\n /** name (const char*) */\n name = \"\";\n\n /** Whether the source sampler carried a name rather than authored null. */\n hasName = false;\n\n /** sampler (Tr2SamplerStateAL) */\n sampler = null;\n\n /** Whether the sampler occupies a dynamic register rather than static signature state. */\n isDynamic = false;\n\n /**\n * Construct a canonical sampler record from JS/JSON model values.\n *\n * @param {object} values Canonical model values.\n * @param {object} options CjsModel import options.\n * @returns {Tr2SamplerSetup} Hydrated sampler.\n */\n static from(values = {}, options = {})\n {\n let normalized = values;\n if (values && Object.hasOwn(values, \"name\")\n && !Object.hasOwn(values, \"hasName\"))\n {\n normalized = {\n ...values,\n hasName: values.name !== null,\n name: values.name === null ? \"\" : values.name\n };\n }\n return super.from(normalized, options);\n }\n\n /**\n * Build one sampler from its portable JSON reflection record.\n *\n * @param {object} value Portable sampler record.\n * @returns {Tr2SamplerSetup} Reflected sampler.\n */\n static fromPortable(value)\n {\n if (!isPlainObject(value))\n {\n throw new TypeError(\"Portable effect sampler must be an object\");\n }\n const sampler = new this();\n sampler.hasName = value.name !== null;\n sampler.name = sampler.hasName ? String(value.name ?? \"\") : \"\";\n sampler.sampler = cloneCarbonValue(value.descriptor);\n sampler.isDynamic = !!value.isDynamic;\n return sampler;\n }\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2SamplerSetup, {\n className: \"Tr2SamplerSetup\",\n family: \"shader\",\n fields: {\n name: type.string,\n hasName: [ impl.adapted, impl.reason(\"The schema string field cannot distinguish an authored null sampler name from an empty name; portable reflection must retain that distinction for static sampler records.\"), type.boolean ],\n sampler: type.rawStruct(\"Tr2SamplerStateAL\"),\n isDynamic: [ impl.adapted, impl.reason(\"The portable effect contract distinguishes dynamic and static sampler declarations before an engine creates sampler state.\"), type.boolean ]\n }\n});\n"],"names":["Tr2SamplerSetup","CjsModel","name","hasName","sampler","isDynamic","from","values","options","normalized","Object","hasOwn","fromPortable","value","isPlainObject","TypeError","String","cloneCarbonValue","descriptor","CjsSchema","define","className","family","fields","type","string","impl","adapted","reason","boolean","rawStruct"],"mappings":";;;;;AAAA;;AAMA;AACO,MAAMA,eAAe,SAASC,QAAQ,CAC7C;AAEE;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,OAAO,GAAG,KAAK;;AAEf;AACAC,EAAAA,OAAO,GAAG,IAAI;;AAEd;AACAC,EAAAA,SAAS,GAAG,KAAK;;AAEjB;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,IAAIA,CAACC,MAAM,GAAG,EAAE,EAAEC,OAAO,GAAG,EAAE,EACrC;IACE,IAAIC,UAAU,GAAGF,MAAM;IACvB,IAAIA,MAAM,IAAIG,MAAM,CAACC,MAAM,CAACJ,MAAM,EAAE,MAAM,CAAC,IACtC,CAACG,MAAM,CAACC,MAAM,CAACJ,MAAM,EAAE,SAAS,CAAC,EACtC;AACEE,MAAAA,UAAU,GAAG;AACX,QAAA,GAAGF,MAAM;AACTJ,QAAAA,OAAO,EAAEI,MAAM,CAACL,IAAI,KAAK,IAAI;QAC7BA,IAAI,EAAEK,MAAM,CAACL,IAAI,KAAK,IAAI,GAAG,EAAE,GAAGK,MAAM,CAACL;OAC1C;AACH,IAAA;AACA,IAAA,OAAO,KAAK,CAACI,IAAI,CAACG,UAAU,EAAED,OAAO,CAAC;AACxC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOI,YAAYA,CAACC,KAAK,EACzB;AACE,IAAA,IAAI,CAACC,aAAa,CAACD,KAAK,CAAC,EACzB;AACE,MAAA,MAAM,IAAIE,SAAS,CAAC,2CAA2C,CAAC;AAClE,IAAA;AACA,IAAA,MAAMX,OAAO,GAAG,IAAI,IAAI,EAAE;AAC1BA,IAAAA,OAAO,CAACD,OAAO,GAAGU,KAAK,CAACX,IAAI,KAAK,IAAI;AACrCE,IAAAA,OAAO,CAACF,IAAI,GAAGE,OAAO,CAACD,OAAO,GAAGa,MAAM,CAACH,KAAK,CAACX,IAAI,IAAI,EAAE,CAAC,GAAG,EAAE;IAC9DE,OAAO,CAACA,OAAO,GAAGa,gBAAgB,CAACJ,KAAK,CAACK,UAAU,CAAC;AACpDd,IAAAA,OAAO,CAACC,SAAS,GAAG,CAAC,CAACQ,KAAK,CAACR,SAAS;AACrC,IAAA,OAAOD,OAAO;AAChB,EAAA;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACAe,SAAS,CAACC,MAAM,CAACpB,eAAe,EAAE;AAChCqB,EAAAA,SAAS,EAAE,iBAAiB;AAC5BC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE;IACNrB,IAAI,EAAEsB,IAAI,CAACC,MAAM;AACjBtB,IAAAA,OAAO,EAAE,CAAEuB,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC,2KAA2K,CAAC,EAAEJ,IAAI,CAACK,OAAO,CAAE;AACjOzB,IAAAA,OAAO,EAAEoB,IAAI,CAACM,SAAS,CAAC,mBAAmB,CAAC;AAC5CzB,IAAAA,SAAS,EAAE,CAAEqB,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC,4HAA4H,CAAC,EAAEJ,IAAI,CAACK,OAAO;AACpL;AACF,CAAC,CAAC;;;;"}