Que parte do pipeline de renderização compila os shaders?

1

Geralmente, videogames e outros softwares gráficos que usam sombreadores de vértice e de fragmento terão os ditos shaders na forma de código-fonte de shader real (normalmente em glsl ou hlsl) e os compilarão para uso com o hardware de exibição em tempo de execução. (Entendo que shaders não podem ser pré-compilados no binário do jogo porque o código real da máquina do shader que o hardware da tela usa depende da marca da placa gráfica e até mesmo do seu modelo / geração, e eles podem ser incompatíveis entre si.)

Embora eu mesmo trabalhe no campo de programação de jogos e use shaders, na verdade não sei exatamente qual parte do pipeline gráfico compila os shaders no código de máquina que a placa gráfica usa. Compilar shaders é essencialmente uma caixa preta: jogue o código fonte do shader na biblioteca que você estiver usando e faça sua mágica nos bastidores.

Eu estaria interessado em saber exatamente onde esse processo de compilação acontece. Qual parte exata de todo o sistema usa o código fonte do shader e produz o código da máquina do shader?

Meu (louco) palpite é que isso é feito pelo driver da placa de vídeo (porque o driver sabe que tipo de código de máquina deve produzir, e como otimizá-lo, para a marca e modelo da placa gráfica).

(Se isso for verdade, explicaria, pelo menos parcialmente, porque o driver gráfico é tão crucial na eficiência com que os jogos rodam, já que a otimização do código da máquina de sombreamento teria grande impacto na velocidade de renderização.)

    
por Warp 28.05.2018 / 09:33

0 respostas