È noto da un po’che The Khronos Group e il suo gruppo di lavoro Vulkan hanno lavorato su un’estensione cross-vendor per mesh shader simile a ciò che è già offerto da Direct3D 12 e con NVIDIA dalla loro estensione VK_NV_mesh_shader. Alcuni dettagli in più sul prossimo supporto per lo shader mesh Vulkan sono stati dettagliati oggi.
È stato pubblicamente notato che il gruppo di lavoro Vulkan sta perseguendo un’estensione dello shader mesh cross-vendor per l’API Vulkan ora che anche le GPU AMD RDNA2 e le GPU Intel Arc”Alchemist”hanno il supporto necessario per gli shader mesh, seguendo l’esempio di NVIDIA in quest’area. Gli shader mesh combinano l’elaborazione dei vertici e delle primitive come modifica fondamentale alla pipeline di rendering grafico. Ma i dettagli sull’estensione API Vulkan ancora da pubblicare sono stati chiari. Abbiamo visto gli sviluppatori Mesa lavorare sui preparativi per gli shader mesh Vulkan di artisti del calibro di Intel e gli sviluppatori di Valve che hanno contribuito al driver Radeon”RADV”.
Timur Kristóf del team di driver grafici Linux di Valve è stato in grado di confermare pubblicamente oggi alcuni dettagli relativi a questo supporto per lo shader mesh Vulkan. La cosa più significativa ad alto livello è che l’estensione dello shader mesh Vulkan assomiglierà molto all’approccio e alle capacità con ciò che è disponibile in Direct3D 12. Timur ha commentato pubblicamente Biglietto GitHub:
Abbiamo concordato in Khronos che ora possiamo condividere pubblicamente alcune informazioni sull’imminente estensione dello shader mesh cross-vendor (anche se non posso fare promesse su quando verrà rilasciato). Per questa estensione, la compatibilità con DirectX 12 è stata molto importante per noi, quindi seguiamo le stesse capacità e restrizioni principali. Anche il modello di programmazione dello shader è molto simile. In poche parole: se puoi fare qualcosa con gli shader mesh DirectX, potrai farlo anche in Vulkan.
Ci sono due nuove fasi dello shader: mesh shader e task shader (opzionale, noto anche come amplification shader in DirectX), che possono sostituire l’attuale pipeline grafica. La nuova estensione supporterà le spedizioni tridimensionali (invece di 1D in NV_mesh_shader) e gli output degli shader mesh sono più simili a DirectX 12 (lo shader deve dichiarare prima il numero di vertici/primitive di output, in modo simile a SetMeshOutputCounts).
-Entrambe le nuove fasi dello shader seguono un modello di programmazione simile al calcolo.
-Gli shader mesh supporteranno gli attributi di output per vertice e per primitivo. Il loro output è prodotto in modo cooperativo da gruppi di lavoro e consumato direttamente dal rasterizzatore.
-Gli shader delle attività hanno lo scopo principale di inviare gruppi di lavoro di mesh shader e un output di payload opzionale che funziona come la memoria condivisa.
Essere così vicini al design dello shader mesh di Direct3D 12 sarà vantaggioso per la portabilità tra le API e anche per aiutare artisti del calibro di VKD3D-Proton con la possibilità di mappare in modo efficiente da D3D12 a Vulkan per i moderni giochi Windows.
La semplice panoramica di alto livello di Microsoft degli shader mesh DirectX 12.
Non ci sono commenti su quando questa estensione dello shader mesh Vulkan di diversi fornitori dovrebbe essere resa pubblica. Almeno quando sarà reso pubblico, i driver Intel e RADV Mesa Vulkan non dovrebbero essere molto indietro nel loro supporto e presumibilmente NVIDIA avrà un driver beta in giornata.