É conhecido há algum tempo que o Grupo Khronos e seu grupo de trabalho Vulkan estão trabalhando em uma extensão de vários fornecedores para shaders de malha semelhante ao que já é oferecido pelo Direct3D 12 e com a NVIDIA por sua extensão VK_NV_mesh_shader. Mais alguns detalhes sobre o próximo suporte ao sombreador de malha Vulkan foram detalhados hoje.
Foi notado publicamente que o grupo de trabalho Vulkan está buscando uma extensão de shader de malha de vários fornecedores para a API Vulkan agora que as GPUs AMD RDNA2 e as GPUs Intel Arc”Alchemist”também têm o suporte necessário para shaders de malha, seguindo a liderança da NVIDIA em esta área. Os shaders de malha combinam o processamento de vértices e primitivos como uma mudança fundamental no pipeline de renderização de gráficos. Mas os detalhes sobre a extensão da API Vulkan ainda a ser publicada foram leves. Vimos que os desenvolvedores do Mesa trabalhando nas preparações do sombreador de malha Vulkan de empresas como Intel e Valve contribuindo para o driver Radeon”RADV”.
Timur Kristóf, da equipe de drivers gráficos Linux da Valve, conseguiu confirmar publicamente alguns detalhes hoje em torno desse suporte ao sombreador de malha Vulkan. O mais significativo em alto nível é que a extensão do sombreador de malha Vulkan se assemelhará muito à abordagem e aos recursos com o que está disponível no Direct3D 12. Timur comentou no público Ticket do GitHub:
Concordamos em Khronos que agora podemos compartilhar publicamente algumas informações sobre a próxima extensão de sombreador de malha de vários fornecedores (embora eu não possa dar nenhuma promessa sobre quando será lançado). Para esta extensão, a compatibilidade com DirectX 12 foi muito importante para nós, portanto seguimos os mesmos recursos e restrições principais. O modelo de programação do shader também é muito semelhante. Em poucas palavras: se você pode fazer algo com os shaders de malha DirectX, também poderá fazê-lo no Vulkan.
Há dois novos estágios de sombreamento: sombreadores de malha e sombreadores de tarefa (opcional, também conhecido como sombreador de amplificação no DirectX), que podem substituir o pipeline gráfico atual. A nova extensão suportará despachos tridimensionais (em vez de 1D em NV_mesh_shader) e as saídas do sombreador de malha são mais parecidas com o DirectX 12 (o sombreador precisa declarar primeiro o número de vértices/primitivos de saída, semelhante a SetMeshOutputCounts).
-Ambos os novos estágios de sombreamento seguem um modelo de programação semelhante à computação.
-Os shaders de malha suportarão atributos de saída por vértice e por primitivo. Sua saída é produzida cooperativamente por grupos de trabalho e consumida diretamente pelo rasterizador.
-Task shaders têm o objetivo principal de despachar grupos de trabalho de mesh shader e uma saída de carga útil opcional que funciona como memória compartilhada.
Estar tão próximo do design de mesh shader Direct3D 12 será benéfico para portabilidade entre APIs e também ajudando empresas como VKD3D-Proton a mapear com eficiência de D3D12 para Vulkan para jogos modernos do Windows.
A visão geral simples e de alto nível da Microsoft dos shaders de malha DirectX 12.
Não há comentários sobre quando essa extensão de shader de malha Vulkan de vários fornecedores deve ser tornada pública. Pelo menos quando for divulgado, os drivers Intel e RADV Mesa Vulkan não devem ficar muito atrás em seu suporte, e presumivelmente a NVIDIA terá um driver beta no mesmo dia.