
Em um esforço notável para otimizar a experiência de desenvolvedores de jogos, a equipe por trás do motor gráfico Mach mostra um avanço impressionante ao reconstruir o compilador de sombreadores DirectX (DXC) de forma mais eficiente do que a Microsoft. O projeto, que utiliza a linguagem de programação Zig, visa criar uma API gráfica experimental chamada sysgpu, que pretende suceder o WebGPU para gráficos nativos, suportando Metal, Vulkan, Direct3D e OpenGL.
A iniciativa surge em resposta à lenta e subótima geração de código pelo antigo compilador FXC, tornando a compilação e execução de sombreadores HLSL uma tarefa desafiadora. A Microsoft substituiu o FXC pelo DXC com o lançamento do Direct3D 12 e Shader Model 6.0, adotando uma abordagem baseada em LLVM/Clang com anotações minuciosas que delimitam as alterações específicas para HLSL.
Apesar da evolução para o DXC, a documentação sobre o processo de compilação e os formatos de bytecode, como DXIL, permanecem notoriamente escassos, deixando os desenvolvedores à mercê do próprio compilador da Microsoft. O DXIL, aceito pelos fabricantes de drivers do DirectX 12, é um formato de bytecode pós-otimização não documentado e uma continuação da política de formatos proprietários, como o antigo DXBC.
Os desafios se estendem além da complexidade técnica. A dependência de bibliotecas dinâmicas (DLLs) e a assinatura de código proprietária em dxil.dll limitam a capacidade de compilação offline e a distribuição de jogos em diferentes plataformas. Isso levou muitos desenvolvedores independentes e motores de jogos a se aterem ao antigo e menos eficiente compilador FXC, apesar de suas limitações.
Com a intenção de resolver esses problemas e facilitar a vida dos desenvolvedores, a equipe Mach empreendeu a tarefa de refatorar o sistema de compilação e remover a dependência de bibliotecas dinâmicas, além de contornar a necessidade do dxil.dll. O resultado é uma versão estática do compilador DXC, que pode ser construída a partir da fonte para qualquer sistema operacional usando apenas Zig e Git.
Embora o trabalho seja promissor, há advertências: a compatibilidade com a ABI do MSVC ainda está em desenvolvimento, e o suporte para saída SPIRV não é uma prioridade. No entanto, a iniciativa representa um passo significativo para um ecossistema de desenvolvimento de jogos mais aberto e acessível.
Stephen, o desenvolvedor por trás do Mach, reflete sobre seu trabalho após o expediente e sua visão de software livre e de qualidade. Ele faz um pedido sincero para que aqueles que acreditam em sua visão considerem apoiar seu trabalho, destacando o valor da independência e do poder de possuir as ferramentas que utilizamos.
Confira os últimos vídeos publicados no canal