AtomTressFX_MainPipeline.pass 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. {
  2. "Type": "JsonSerialization",
  3. "Version": 1,
  4. "ClassName": "PassAsset",
  5. "ClassData": {
  6. "PassTemplate": {
  7. "Name": "MainPipeline",
  8. "PassClass": "ParentPass",
  9. "Slots": [
  10. {
  11. "Name": "SwapChainOutput",
  12. "SlotType": "InputOutput",
  13. "ScopeAttachmentUsage": "RenderTarget"
  14. }
  15. ],
  16. "PassRequests": [
  17. {
  18. "Name": "MorphTargetPass",
  19. "TemplateName": "MorphTargetPassTemplate"
  20. },
  21. {
  22. "Name": "SkinningPass",
  23. "TemplateName": "SkinningPassTemplate",
  24. "Connections": [
  25. {
  26. "LocalSlot": "SkinnedMeshOutputStream",
  27. "AttachmentRef": {
  28. "Pass": "MorphTargetPass",
  29. "Attachment": "MorphTargetDeltaOutput"
  30. }
  31. }
  32. ]
  33. },
  34. {
  35. "Name": "RayTracingAccelerationStructurePass",
  36. "TemplateName": "RayTracingAccelerationStructurePassTemplate"
  37. },
  38. {
  39. "Name": "DiffuseProbeGridUpdatePass",
  40. "TemplateName": "DiffuseProbeGridUpdatePassTemplate",
  41. "ExecuteAfter": [
  42. "RayTracingAccelerationStructurePass"
  43. ]
  44. },
  45. {
  46. "Name": "DepthPrePass",
  47. "TemplateName": "DepthMSAAParentTemplate",
  48. "Connections": [
  49. {
  50. "LocalSlot": "SkinnedMeshes",
  51. "AttachmentRef": {
  52. "Pass": "SkinningPass",
  53. "Attachment": "SkinnedMeshOutputStream"
  54. }
  55. },
  56. {
  57. "LocalSlot": "SwapChainOutput",
  58. "AttachmentRef": {
  59. "Pass": "Parent",
  60. "Attachment": "SwapChainOutput"
  61. }
  62. }
  63. ]
  64. },
  65. {
  66. "Name": "MotionVectorPass",
  67. "TemplateName": "MotionVectorParentTemplate",
  68. "Connections": [
  69. {
  70. "LocalSlot": "SkinnedMeshes",
  71. "AttachmentRef": {
  72. "Pass": "SkinningPass",
  73. "Attachment": "SkinnedMeshOutputStream"
  74. }
  75. },
  76. {
  77. "LocalSlot": "Depth",
  78. "AttachmentRef": {
  79. "Pass": "DepthPrePass",
  80. "Attachment": "Depth"
  81. }
  82. },
  83. {
  84. "LocalSlot": "SwapChainOutput",
  85. "AttachmentRef": {
  86. "Pass": "Parent",
  87. "Attachment": "SwapChainOutput"
  88. }
  89. }
  90. ]
  91. },
  92. {
  93. "Name": "LightCullingPass",
  94. "TemplateName": "LightCullingParentTemplate",
  95. "Connections": [
  96. {
  97. "LocalSlot": "SkinnedMeshes",
  98. "AttachmentRef": {
  99. "Pass": "SkinningPass",
  100. "Attachment": "SkinnedMeshOutputStream"
  101. }
  102. },
  103. {
  104. "LocalSlot": "DepthMSAA",
  105. "AttachmentRef": {
  106. "Pass": "DepthPrePass",
  107. "Attachment": "DepthMSAA"
  108. }
  109. },
  110. {
  111. "LocalSlot": "SwapChainOutput",
  112. "AttachmentRef": {
  113. "Pass": "Parent",
  114. "Attachment": "SwapChainOutput"
  115. }
  116. }
  117. ]
  118. },
  119. {
  120. "Name": "ShadowPass",
  121. "TemplateName": "ShadowParentTemplate",
  122. "Connections": [
  123. {
  124. "LocalSlot": "SkinnedMeshes",
  125. "AttachmentRef": {
  126. "Pass": "SkinningPass",
  127. "Attachment": "SkinnedMeshOutputStream"
  128. }
  129. },
  130. {
  131. "LocalSlot": "SwapChainOutput",
  132. "AttachmentRef": {
  133. "Pass": "Parent",
  134. "Attachment": "SwapChainOutput"
  135. }
  136. },
  137. {
  138. "LocalSlot": "Depth",
  139. "AttachmentRef": {
  140. "Pass": "DepthPrePass",
  141. "Attachment": "DepthMSAA"
  142. }
  143. }
  144. ]
  145. },
  146. {
  147. "Name": "OpaquePass",
  148. "TemplateName": "OpaqueParentTemplate",
  149. "Connections": [
  150. {
  151. "LocalSlot": "DirectionalShadowmap",
  152. "AttachmentRef": {
  153. "Pass": "ShadowPass",
  154. "Attachment": "DirectionalShadowmap"
  155. }
  156. },
  157. {
  158. "LocalSlot": "DirectionalESM",
  159. "AttachmentRef": {
  160. "Pass": "ShadowPass",
  161. "Attachment": "DirectionalESM"
  162. }
  163. },
  164. {
  165. "LocalSlot": "ProjectedShadowmap",
  166. "AttachmentRef": {
  167. "Pass": "ShadowPass",
  168. "Attachment": "ProjectedShadowmap"
  169. }
  170. },
  171. {
  172. "LocalSlot": "ProjectedESM",
  173. "AttachmentRef": {
  174. "Pass": "ShadowPass",
  175. "Attachment": "ProjectedESM"
  176. }
  177. },
  178. {
  179. "LocalSlot": "TileLightData",
  180. "AttachmentRef": {
  181. "Pass": "LightCullingPass",
  182. "Attachment": "TileLightData"
  183. }
  184. },
  185. {
  186. "LocalSlot": "LightListRemapped",
  187. "AttachmentRef": {
  188. "Pass": "LightCullingPass",
  189. "Attachment": "LightListRemapped"
  190. }
  191. },
  192. {
  193. "LocalSlot": "DepthLinear",
  194. "AttachmentRef": {
  195. "Pass": "DepthPrePass",
  196. "Attachment": "DepthLinear"
  197. }
  198. },
  199. {
  200. "LocalSlot": "DepthStencil",
  201. "AttachmentRef": {
  202. "Pass": "DepthPrePass",
  203. "Attachment": "DepthMSAA"
  204. }
  205. },
  206. {
  207. "LocalSlot": "SwapChainOutput",
  208. "AttachmentRef": {
  209. "Pass": "Parent",
  210. "Attachment": "SwapChainOutput"
  211. }
  212. }
  213. ]
  214. },
  215. {
  216. // NOTE: HairParentPass does not write into Depth MSAA from Opaque Pass. If new passes downstream
  217. // of HairParentPass will need to use Depth MSAA, HairParentPass will need to be updated to use Depth MSAA
  218. // instead of regular Depth as DepthStencil. Specifically, HairResolvePPLL.pass and the associated
  219. // .azsl file will need to be updated.
  220. "Name": "HairParentPass",
  221. // Note: The following two lines represent the choice of rendering pipeline for the hair.
  222. // You can either choose to use PPLL or ShortCut and accordingly change the flag
  223. // 'm_usePPLLRenderTechnique' in the class 'HairFeatureProcessor.cpp'
  224. // "TemplateName": "HairParentPassTemplate",
  225. "TemplateName": "HairParentShortCutPassTemplate",
  226. "Enabled": true,
  227. "Connections": [
  228. // Critical to keep DepthLinear as input - used to set the size of the Head PPLL image buffer.
  229. // If DepthLinear is not availbale - connect to another viewport (non MSAA) image.
  230. {
  231. "LocalSlot": "DepthLinearInput",
  232. "AttachmentRef": {
  233. "Pass": "DepthPrePass",
  234. "Attachment": "DepthLinear"
  235. }
  236. },
  237. {
  238. "LocalSlot": "Depth",
  239. "AttachmentRef": {
  240. "Pass": "DepthPrePass",
  241. "Attachment": "Depth"
  242. }
  243. },
  244. {
  245. "LocalSlot": "RenderTargetInputOutput",
  246. "AttachmentRef": {
  247. "Pass": "OpaquePass",
  248. "Attachment": "Output"
  249. }
  250. },
  251. {
  252. "LocalSlot": "RenderTargetInputOnly",
  253. "AttachmentRef": {
  254. "Pass": "OpaquePass",
  255. "Attachment": "Output"
  256. }
  257. },
  258. // Shadows resources
  259. {
  260. "LocalSlot": "DirectionalShadowmap",
  261. "AttachmentRef": {
  262. "Pass": "ShadowPass",
  263. "Attachment": "DirectionalShadowmap"
  264. }
  265. },
  266. {
  267. "LocalSlot": "DirectionalESM",
  268. "AttachmentRef": {
  269. "Pass": "ShadowPass",
  270. "Attachment": "DirectionalESM"
  271. }
  272. },
  273. {
  274. "LocalSlot": "ProjectedShadowmap",
  275. "AttachmentRef": {
  276. "Pass": "ShadowPass",
  277. "Attachment": "ProjectedShadowmap"
  278. }
  279. },
  280. {
  281. "LocalSlot": "ProjectedESM",
  282. "AttachmentRef": {
  283. "Pass": "ShadowPass",
  284. "Attachment": "ProjectedESM"
  285. }
  286. },
  287. // Lighting Resources
  288. {
  289. "LocalSlot": "TileLightData",
  290. "AttachmentRef": {
  291. "Pass": "LightCullingPass",
  292. "Attachment": "TileLightData"
  293. }
  294. },
  295. {
  296. "LocalSlot": "LightListRemapped",
  297. "AttachmentRef": {
  298. "Pass": "LightCullingPass",
  299. "Attachment": "LightListRemapped"
  300. }
  301. }
  302. ]
  303. },
  304. {
  305. "Name": "TransparentPass",
  306. "TemplateName": "TransparentParentTemplate",
  307. "Connections": [
  308. {
  309. "LocalSlot": "DirectionalShadowmap",
  310. "AttachmentRef": {
  311. "Pass": "ShadowPass",
  312. "Attachment": "DirectionalShadowmap"
  313. }
  314. },
  315. {
  316. "LocalSlot": "DirectionalESM",
  317. "AttachmentRef": {
  318. "Pass": "ShadowPass",
  319. "Attachment": "DirectionalESM"
  320. }
  321. },
  322. {
  323. "LocalSlot": "ProjectedShadowmap",
  324. "AttachmentRef": {
  325. "Pass": "ShadowPass",
  326. "Attachment": "ProjectedShadowmap"
  327. }
  328. },
  329. {
  330. "LocalSlot": "ProjectedESM",
  331. "AttachmentRef": {
  332. "Pass": "ShadowPass",
  333. "Attachment": "ProjectedESM"
  334. }
  335. },
  336. {
  337. "LocalSlot": "TileLightData",
  338. "AttachmentRef": {
  339. "Pass": "LightCullingPass",
  340. "Attachment": "TileLightData"
  341. }
  342. },
  343. {
  344. "LocalSlot": "LightListRemapped",
  345. "AttachmentRef": {
  346. "Pass": "LightCullingPass",
  347. "Attachment": "LightListRemapped"
  348. }
  349. },
  350. {
  351. "LocalSlot": "InputLinearDepth",
  352. "AttachmentRef": {
  353. "Pass": "HairParentPass",
  354. "Attachment": "DepthLinear"
  355. }
  356. },
  357. {
  358. "LocalSlot": "DepthStencil",
  359. "AttachmentRef": {
  360. "Pass": "HairParentPass",
  361. "Attachment": "Depth"
  362. }
  363. },
  364. {
  365. "LocalSlot": "InputOutput",
  366. "AttachmentRef": {
  367. "Pass": "HairParentPass",
  368. "Attachment": "RenderTargetInputOutput"
  369. }
  370. }
  371. ]
  372. },
  373. {
  374. "Name": "DeferredFogPass",
  375. "TemplateName": "DeferredFogPassTemplate",
  376. "Enabled": false,
  377. "Connections": [
  378. {
  379. "LocalSlot": "InputLinearDepth",
  380. "AttachmentRef": {
  381. "Pass": "HairParentPass",
  382. "Attachment": "DepthLinear"
  383. }
  384. },
  385. {
  386. "LocalSlot": "InputDepthStencil",
  387. "AttachmentRef": {
  388. "Pass": "HairParentPass",
  389. "Attachment": "Depth"
  390. }
  391. },
  392. {
  393. "LocalSlot": "RenderTargetInputOutput",
  394. "AttachmentRef": {
  395. "Pass": "HairParentPass",
  396. "Attachment": "RenderTargetInputOutput"
  397. }
  398. }
  399. ],
  400. "PassData": {
  401. "$type": "FullscreenTrianglePassData",
  402. "ShaderAsset": {
  403. "FilePath": "Shaders/ScreenSpace/DeferredFog.shader"
  404. },
  405. "BindViewSrg": true
  406. }
  407. },
  408. {
  409. "Name": "ReflectionCopyFrameBufferPass",
  410. "TemplateName": "ReflectionCopyFrameBufferPassTemplate",
  411. "Enabled": false,
  412. "Connections": [
  413. {
  414. "LocalSlot": "Input",
  415. "AttachmentRef": {
  416. "Pass": "DeferredFogPass",
  417. "Attachment": "RenderTargetInputOutput"
  418. }
  419. }
  420. ]
  421. },
  422. {
  423. "Name": "PostProcessPass",
  424. "TemplateName": "PostProcessParentTemplate",
  425. "Connections": [
  426. {
  427. "LocalSlot": "LightingInput",
  428. "AttachmentRef": {
  429. "Pass": "DeferredFogPass",
  430. "Attachment": "RenderTargetInputOutput"
  431. }
  432. },
  433. {
  434. "LocalSlot": "Depth",
  435. "AttachmentRef": {
  436. "Pass": "HairParentPass",
  437. "Attachment": "Depth"
  438. }
  439. },
  440. {
  441. "LocalSlot": "MotionVectors",
  442. "AttachmentRef": {
  443. "Pass": "MotionVectorPass",
  444. "Attachment": "MotionVectorOutput"
  445. }
  446. },
  447. {
  448. "LocalSlot": "SwapChainOutput",
  449. "AttachmentRef": {
  450. "Pass": "Parent",
  451. "Attachment": "SwapChainOutput"
  452. }
  453. }
  454. ]
  455. },
  456. {
  457. "Name": "AuxGeomPass",
  458. "TemplateName": "AuxGeomPassTemplate",
  459. "Enabled": true,
  460. "Connections": [
  461. {
  462. "LocalSlot": "ColorInputOutput",
  463. "AttachmentRef": {
  464. "Pass": "PostProcessPass",
  465. "Attachment": "Output"
  466. }
  467. },
  468. {
  469. "LocalSlot": "DepthInputOutput",
  470. "AttachmentRef": {
  471. "Pass": "HairParentPass",
  472. "Attachment": "Depth"
  473. }
  474. }
  475. ],
  476. "PassData": {
  477. "$type": "RasterPassData",
  478. "DrawListTag": "auxgeom",
  479. "BindViewSrg": true
  480. }
  481. },
  482. {
  483. "Name": "DebugOverlayPass",
  484. "TemplateName": "DebugOverlayParentTemplate",
  485. "Connections": [
  486. {
  487. "LocalSlot": "TileLightData",
  488. "AttachmentRef": {
  489. "Pass": "LightCullingPass",
  490. "Attachment": "TileLightData"
  491. }
  492. },
  493. {
  494. "LocalSlot": "RawLightingInput",
  495. "AttachmentRef": {
  496. "Pass": "PostProcessPass",
  497. "Attachment": "RawLightingOutput"
  498. }
  499. },
  500. {
  501. "LocalSlot": "LuminanceMipChainInput",
  502. "AttachmentRef": {
  503. "Pass": "PostProcessPass",
  504. "Attachment": "LuminanceMipChainOutput"
  505. }
  506. },
  507. {
  508. "LocalSlot": "InputOutput",
  509. "AttachmentRef": {
  510. "Pass": "AuxGeomPass",
  511. "Attachment": "ColorInputOutput"
  512. }
  513. }
  514. ]
  515. },
  516. {
  517. "Name": "UIPass",
  518. "TemplateName": "UIParentTemplate",
  519. "Connections": [
  520. {
  521. "LocalSlot": "InputOutput",
  522. "AttachmentRef": {
  523. "Pass": "DebugOverlayPass",
  524. "Attachment": "InputOutput"
  525. }
  526. },
  527. {
  528. "LocalSlot": "DepthInputOutput",
  529. "AttachmentRef": {
  530. "Pass": "HairParentPass",
  531. "Attachment": "Depth"
  532. }
  533. }
  534. ]
  535. },
  536. {
  537. "Name": "CopyToSwapChain",
  538. "TemplateName": "FullscreenCopyTemplate",
  539. "Connections": [
  540. {
  541. "LocalSlot": "Input",
  542. "AttachmentRef": {
  543. "Pass": "UIPass",
  544. "Attachment": "InputOutput"
  545. }
  546. },
  547. {
  548. "LocalSlot": "Output",
  549. "AttachmentRef": {
  550. "Pass": "Parent",
  551. "Attachment": "SwapChainOutput"
  552. }
  553. }
  554. ]
  555. }
  556. ]
  557. }
  558. }
  559. }