MultiGPUCopyTestPipeline.pass 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. {
  2. "Type": "JsonSerialization",
  3. "Version": 1,
  4. "ClassName": "PassAsset",
  5. "ClassData": {
  6. "PassTemplate": {
  7. "Name": "MultiGPUCopyTestPipeline",
  8. "PassClass": "ParentPass",
  9. "Slots": [
  10. {
  11. "Name": "PipelineOutput",
  12. "SlotType": "InputOutput",
  13. "ScopeAttachmentUsage": "RenderTarget"
  14. }
  15. ],
  16. "ImageAttachments": [
  17. {
  18. "Name": "TriangleAttachment1",
  19. "ImageDescriptor": {
  20. "Format": "R8G8B8A8_UNORM",
  21. "Size": {
  22. "Width": 320,
  23. "Height": 480,
  24. "Depth": 1
  25. }
  26. }
  27. },
  28. {
  29. "Name": "TriangleAttachment2",
  30. "ImageDescriptor": {
  31. "Format": "R8G8B8A8_UNORM",
  32. "Size": {
  33. "Width": 320,
  34. "Height": 480,
  35. "Depth": 1
  36. }
  37. }
  38. }
  39. ],
  40. "PassRequests": [
  41. {
  42. "Name": "TrianglePass1",
  43. "TemplateName": "MultiGPUTrianglePassTemplate",
  44. "Connections": [
  45. {
  46. "LocalSlot": "Output",
  47. "AttachmentRef": {
  48. "Pass": "Parent",
  49. "Attachment": "TriangleAttachment1"
  50. }
  51. }
  52. ],
  53. "PassData": {
  54. "$type": "FullscreenTrianglePassData",
  55. "ShaderAsset": {
  56. "FilePath": "Shaders/MultiGPURPIExample/Triangle.shader"
  57. },
  58. "ShaderDataMappings": {
  59. "Matrix4x4Mappings": [
  60. {
  61. "Name": "m_objectMatrix",
  62. "Value": [
  63. 2.0,
  64. 0.0,
  65. 0.0,
  66. 0.0,
  67. 0.0,
  68. 1.0,
  69. 0.0,
  70. 0.0,
  71. 0.0,
  72. 0.0,
  73. 1.0,
  74. 0.0,
  75. 1.0,
  76. 0.0,
  77. 0.0,
  78. 1.0
  79. ]
  80. }
  81. ]
  82. }
  83. }
  84. },
  85. {
  86. "Name": "TrianglePass2",
  87. "TemplateName": "MultiGPUTrianglePassTemplate",
  88. "Connections": [
  89. {
  90. "LocalSlot": "Output",
  91. "AttachmentRef": {
  92. "Pass": "Parent",
  93. "Attachment": "TriangleAttachment2"
  94. }
  95. }
  96. ],
  97. "PassData": {
  98. "$type": "FullscreenTrianglePassData",
  99. "ShaderAsset": {
  100. "FilePath": "Shaders/MultiGPURPIExample/Triangle.shader"
  101. },
  102. "DeviceIndex": 1,
  103. "ShaderDataMappings": {
  104. "Matrix4x4Mappings": [
  105. {
  106. "Name": "m_objectMatrix",
  107. "Value": [
  108. 2.0,
  109. 0.0,
  110. 0.0,
  111. 0.0,
  112. 0.0,
  113. 1.0,
  114. 0.0,
  115. 0.0,
  116. 0.0,
  117. 0.0,
  118. 1.0,
  119. 0.0,
  120. -1.0,
  121. 0.0,
  122. 0.0,
  123. 1.0
  124. ]
  125. }
  126. ]
  127. }
  128. }
  129. },
  130. {
  131. "Name": "CopyPass1",
  132. "TemplateName": "MultiGPUCopyImageToBufferPassTemplate",
  133. "Connections": [
  134. {
  135. "LocalSlot": "Input",
  136. "AttachmentRef": {
  137. "Pass": "TrianglePass2",
  138. "Attachment": "Output"
  139. }
  140. }
  141. ],
  142. "PassData": {
  143. "$type": "CopyPassData",
  144. "CloneInput": false,
  145. "SourceDeviceIndex": 1,
  146. "DestinationDeviceIndex": 0
  147. }
  148. },
  149. {
  150. "Name": "CopyPass2",
  151. "TemplateName": "MultiGPUCopyBufferToBufferPassTemplate",
  152. "Connections": [
  153. {
  154. "LocalSlot": "Input",
  155. "AttachmentRef": {
  156. "Pass": "CopyPass1",
  157. "Attachment": "Output"
  158. }
  159. }
  160. ],
  161. "PassData": {
  162. "$type": "CopyPassData",
  163. "CloneInput": false,
  164. "SourceDeviceIndex": 0,
  165. "DestinationDeviceIndex": 1
  166. }
  167. },
  168. {
  169. "Name": "CopyPass3",
  170. "TemplateName": "MultiGPUCopyBufferToImagePassTemplate",
  171. "Connections": [
  172. {
  173. "LocalSlot": "Input",
  174. "AttachmentRef": {
  175. "Pass": "CopyPass2",
  176. "Attachment": "Output"
  177. }
  178. }
  179. ],
  180. "PassData": {
  181. "$type": "CopyPassData",
  182. "CloneInput": false,
  183. "SourceDeviceIndex": 1,
  184. "DestinationDeviceIndex": 0,
  185. "BufferSourceOffset": 0,
  186. "BufferSourceBytesPerRow": 1280,
  187. "BufferSourceBytesPerImage": 614400,
  188. "ImageSourceSize": {
  189. "Width": 320,
  190. "Height": 480
  191. }
  192. }
  193. },
  194. {
  195. "Name": "CopyPass4",
  196. "TemplateName": "CopyPassTemplate",
  197. "Connections": [
  198. {
  199. "LocalSlot": "Input",
  200. "AttachmentRef": {
  201. "Pass": "CopyPass3",
  202. "Attachment": "Output"
  203. }
  204. }
  205. ],
  206. "PassData": {
  207. "$type": "CopyPassData",
  208. "CloneInput": true,
  209. "SourceDeviceIndex": 0,
  210. "DestinationDeviceIndex": 1
  211. }
  212. },
  213. {
  214. "Name": "CopyPass5",
  215. "TemplateName": "CopyPassTemplate",
  216. "Connections": [
  217. {
  218. "LocalSlot": "Input",
  219. "AttachmentRef": {
  220. "Pass": "CopyPass4",
  221. "Attachment": "Output"
  222. }
  223. }
  224. ],
  225. "PassData": {
  226. "$type": "CopyPassData",
  227. "CloneInput": true,
  228. "SourceDeviceIndex": 1,
  229. "DestinationDeviceIndex": 0
  230. }
  231. },
  232. {
  233. "Name": "CompositePass",
  234. "TemplateName": "MultiGPUCompositePassTemplate",
  235. "Connections": [
  236. {
  237. "LocalSlot": "Input1",
  238. "AttachmentRef": {
  239. "Pass": "TrianglePass1",
  240. "Attachment": "Output"
  241. }
  242. },
  243. {
  244. "LocalSlot": "Input2",
  245. "AttachmentRef": {
  246. "Pass": "CopyPass5",
  247. "Attachment": "Output"
  248. }
  249. }
  250. ],
  251. "PassData": {
  252. "$type": "FullscreenTrianglePassData",
  253. "ShaderAsset": {
  254. "FilePath": "Shaders/MultiGPURPIExample/Composite.shader"
  255. }
  256. }
  257. },
  258. {
  259. "Name": "ImGuiPass",
  260. "TemplateName": "ImGuiPassTemplate",
  261. "Enabled": true,
  262. "Connections": [
  263. {
  264. "LocalSlot": "InputOutput",
  265. "AttachmentRef": {
  266. "Pass": "CompositePass",
  267. "Attachment": "Output"
  268. }
  269. }
  270. ],
  271. "PassData": {
  272. "$type": "ImGuiPassData",
  273. "IsDefaultImGui": true
  274. }
  275. },
  276. {
  277. "Name": "CopyToSwapChain",
  278. "TemplateName": "FullscreenCopyTemplate",
  279. "Connections": [
  280. {
  281. "LocalSlot": "Input",
  282. "AttachmentRef": {
  283. "Pass": "ImGuiPass",
  284. "Attachment": "InputOutput"
  285. }
  286. },
  287. {
  288. "LocalSlot": "Output",
  289. "AttachmentRef": {
  290. "Pass": "Parent",
  291. "Attachment": "PipelineOutput"
  292. }
  293. }
  294. ]
  295. }
  296. ]
  297. }
  298. }
  299. }