Wie viele Shader sind in modernen Spielen normalerweise gleichzeitig in einer Szene aktiv? Ich weiß, dass mehrere Shader verwendet werden, wobei die Spiele in jedem Frame zwischen ihnen wechseln, und es ist üblich, Objekte über den Shader zu zeichnen:
- Zeichnen Sie alle Objekte mit Shader eins
- Wechseln Sie von Shader eins zu Shader zwei
- Zeichnen Sie alle Objekte mit Shader zwei
Ich weiß immer noch, dass es nicht so einfach ist, insbesondere bei Effekten wie einem Glow-Effekt für die gesamte Szene, Rendering auf Textur usw., aber ich denke, wir können davon ausgehen, dass es die meiste Zeit so funktioniert, oder? Der "Group by Shader" -Ansatz ist gut, da das Wechseln von Shadern eine teure Operation ist.
Von einer Seite können Sie nicht zu viele Shader haben, da Sie die Szene schnell rendern möchten. Auf der anderen Seite benötigen Sie viele verschiedene Shader (oder Uber-Shader mit Zweigen - ziemlich ähnlich) für Haut, Metall, Wasser usw.
Wie viele (und welche) unterschiedlichen Shader würde das theoretische, moderne 3D-Detektivspiel für PC (DirectX 11, wenn es darauf ankommt) für Dritte verwenden? Es wären 5, 20 oder mehr wie 100 aktive Shader, die bei einem "Frame X" nur aktiv zählen? Ich weiß, dass es nicht nur eine Zahl ist, aber ich frage mich, welche Größenordnung und Faktoren für ein PC-Spiel wichtig sind.
In meinem Beispielspiel würde ich ungefähr 9-11 pro Frame verwenden (zähle es als verschiedene, kleine Shader oder einen Über-Shader - spielt jetzt keine Rolle):
- Skin Shader
- Lidschatten (nicht zu viel? Aber sie sind unterschiedlich)
- Metal Shader
- Ground Shader
- Schnee / Regen Shader (falls erforderlich)
- Water Shader (falls das Wasser in der Szene vorhanden ist)
- Glow-Shader (nur bei einigen Spezialeffekten)
- Lichtsender Shader (Straßenlaternen etc.)
- Standard-Shader (für alle anderen nur Standard-Shading)
- Standard-Shader mit normalen Maps
- 2D Shader (für GUI etc.)
Ist es "viel" oder "nicht viele"? Habe ich einige wichtige Shader vergessen, die ich brauchen würde?