Quantos shaders geralmente estão ativos, ao mesmo tempo em uma cena, nos jogos modernos? Eu sei que vários shaders estão sendo usados, com os jogos alternando entre eles em cada quadro, e é comum desenhar objetos através do shader:
- Desenhar todos os objetos com um sombreador
- Mude de shader one para shader two
- Desenhe todos os objetos com shader two
Ainda assim, eu sei que não é tão simples, especialmente com efeitos como um efeito de brilho para toda a cena, renderização para textura, etc., mas acho que podemos assumir que funciona dessa maneira na maioria das vezes, certo? A abordagem "agrupar por sombreador" é boa, porque a troca de sombreadores é uma operação cara.
De um lado, você não pode ter muitos shaders, porque deseja renderizar a cena rapidamente. Por outro lado, você precisa de muitos shaders diferentes (ou super shader com galhos - bastante semelhantes) para pele, metal, água etc.
Quantos (e quais) shaders diferentes o jogo teórico, moderno e de terceira pessoa em 3D de detetive para PC (DirectX 11, se necessário) usa? Seria 5, 20 ou mais como 100 shaders ativos, contando apenas ativos, em algum "quadro X"? Sei que não é um número, mas me pergunto que escala e fatores são importantes, considerando um jogo para PC.
No meu exemplo de jogo, eu usaria de 9 a 11 por quadro (conte como diferente, pequenos shaders ou um uber-shader - não importa agora):
- Tonalizador de pele
- Shader dos olhos (não muito? Mas eles são diferentes)
- Shader metálico
- Shader de solo
- Shader neve / chuva (se necessário)
- Shader de água (se a água existir em cena)
- Glow shader (somente quando alguns efeitos especiais estão envolvidos)
- Sombra do emitador de luz (lâmpadas de rua etc.)
- Shader padrão (para todos os outros, apenas sombreamento padrão)
- Shader padrão com mapas normais
- Sombreador 2D (para GUI etc.)
É "muito" ou "não muitos"? Esqueci alguns shaders importantes que eu precisaria?