Combien de shaders sont généralement actifs, en même temps dans une scène, dans les jeux modernes? Je sais que plusieurs shaders sont utilisés, les jeux basculant entre eux dans chaque image, et il est courant de dessiner des objets via le shader:
- Dessinez tous les objets avec le shader one
- Passer du shader un au shader deux
- Dessinez tous les objets avec le shader deux
Pourtant, je sais que ce n'est pas aussi simple, en particulier avec des effets comme un effet de lueur pour toute la scène, le rendu à la texture, etc., mais je suppose que nous pouvons supposer que cela fonctionne de cette façon la plupart du temps, non? L'approche "grouper par shader" est bonne, car la commutation des shaders est une opération coûteuse.
D'un côté, vous ne pouvez pas avoir trop de shaders, car vous voulez rendre la scène rapidement. D'autre part, vous avez besoin de nombreux shaders différents (ou uber-shader avec des branches - assez similaires) pour la peau, le métal, l'eau, etc.
Combien (et quels) shaders différents le jeu de détective 3D théorique, moderne, à la troisième personne pour PC (DirectX 11, le cas échéant) utiliserait-il? Ce serait 5, 20 ou plus comme 100 shaders actifs, ne comptant que les actifs, à une certaine "trame X"? Je sais que ce n'est pas un chiffre, mais je me demande quelle échelle et quels facteurs sont importants, en considération pour un jeu PC.
Dans mon exemple de jeu, j'utiliserais environ 9-11 par image (comptez-le comme différent, de petits shaders ou un uber-shader - ça n'a plus d'importance maintenant):
- Shader de peau
- Shader des yeux (pas trop? Mais ils sont différents)
- Shader métal
- Shader au sol
- Shader neige / pluie (si nécessaire)
- Shader d'eau (si l'eau existe dans la scène)
- Glow shader (uniquement lorsque certains effets spéciaux sont impliqués)
- Shader émetteur de lumière (lampadaires, etc.)
- Ombrage standard (pour tous les autres, juste ombrage standard)
- Shader standard avec des cartes normales
- Shader 2D (pour GUI etc.)
Est-ce «beaucoup» ou «pas beaucoup»? Ai-je oublié certains shaders importants dont j'aurais besoin?