Demirug
2003-06-12, 22:03:37
Von Generation zu Generation werden die "Shader" in den Grafikkarten flexibler und sind in der Lage immer mehr in nur einem einzigen Pass zu berechnen. Trotzdem bleiben immer noch begrenzungen zurück. So gibt es nach wie vor viele Teile eines Chips welche sich nicht durch die Shader Kontrolieren lassen. Als Beispiel möchte ich hier einmal die Alphablending Operationen oder auch die Texturefilter nennen.
Daraus ergibt sich nun das zum Rendern eines Effekts heute mindestens 3 Dinge benötigt werden:
- Ein Vertexshader (oder alternativ die HT&L Einstellung)
- Ein Pixelshader (bzw eine DX7 Texturestage konfiguration)
- Ein ganzen Rudel von Einstellungen für einzelne Settings welche nicht durch die Shader kontrolliert werden können.
Und damit haben wir dann für genau einen Effekt für eine Technologie einen Pass beschrieben.
Mehr Effekte = Mehr dieser Beschreibungen und man braucht schon für zwei unterschiedliche Arten von Licht mindestens zwei Effekte
Mehrere Technologien (DX7, DX8, DX9) = Mehr Beschreibungen
Multipass = Mehr Beschreibungen.
Shaderhochsprachen können hierbei zwar die Wiederverwendbarkeit einzelner Codefragmente erleichtern und damit den Zeitbedarf für das entwickeln der Effekte reduzieren aber anfassen muss man doch noch jeden einzelnen Effekt.
Wenn wir also die gleiche Effektvielfallt wie in gerenderten Kinofilmen haben wollen muss dieses Verfahren durch etwas einfacheres ersetzt werden. Vorallem müssen die Grafiker/Designer in die Lage versetzt werden einen Grossteil der anfallenden Arbeiten ohne die ständige Unterstützung der Entwickler zu erledigen.
Um Spiele wie Kinofilme aussehen zu lassen reicht es einfach nicht das wir Hardware mit genügend Rechenleistung haben. Vielmehr müssen Lösungen geschaffen werden welche es auch erlauben die Rechenleistung richtig zu nutzen.
Vor etwas länger Zeit hatten wir schon mal einen Thread mit einem ähnlichen Thema. Ich möchte hier nun nocheinmal meinen Wüschen bezüglich programmierbarer Grafikhardware wiederholen.
- Vollständige Kontrolle der Renderpipeline über eine Hochsprache.
- Die programmierbare Renderpipeline sollte schon bei der Objekterzeugung anfangen.
- Weg von den Einheiten orientierten Shadern (Vertex, Pixel, ...) hin zu den Funktions orientierten Shadern (Geometrie, Licht, Oberfläche, ...)
- Multipass zerlegung und zuweisung der Arbeiten auf die Funktionseinheiten sollte automatisch ablaufen.
Ich weiss das ich viel möchte aber das ist IMHO der einzige Weg schneller Kinoeffekte auch in Spielen zu bekommen. Leider sehe ich derzeit keinerlei Bewegung in diese Richtung bei OpenGL oder D3D.
Andere Meinungen, Wünsche, Ergänzungen usw. sind ausdrücklich erwünscht. Möglicherweise stehe ich mit meinen Ansätzen auch aleine auf weiter Flur.
Daraus ergibt sich nun das zum Rendern eines Effekts heute mindestens 3 Dinge benötigt werden:
- Ein Vertexshader (oder alternativ die HT&L Einstellung)
- Ein Pixelshader (bzw eine DX7 Texturestage konfiguration)
- Ein ganzen Rudel von Einstellungen für einzelne Settings welche nicht durch die Shader kontrolliert werden können.
Und damit haben wir dann für genau einen Effekt für eine Technologie einen Pass beschrieben.
Mehr Effekte = Mehr dieser Beschreibungen und man braucht schon für zwei unterschiedliche Arten von Licht mindestens zwei Effekte
Mehrere Technologien (DX7, DX8, DX9) = Mehr Beschreibungen
Multipass = Mehr Beschreibungen.
Shaderhochsprachen können hierbei zwar die Wiederverwendbarkeit einzelner Codefragmente erleichtern und damit den Zeitbedarf für das entwickeln der Effekte reduzieren aber anfassen muss man doch noch jeden einzelnen Effekt.
Wenn wir also die gleiche Effektvielfallt wie in gerenderten Kinofilmen haben wollen muss dieses Verfahren durch etwas einfacheres ersetzt werden. Vorallem müssen die Grafiker/Designer in die Lage versetzt werden einen Grossteil der anfallenden Arbeiten ohne die ständige Unterstützung der Entwickler zu erledigen.
Um Spiele wie Kinofilme aussehen zu lassen reicht es einfach nicht das wir Hardware mit genügend Rechenleistung haben. Vielmehr müssen Lösungen geschaffen werden welche es auch erlauben die Rechenleistung richtig zu nutzen.
Vor etwas länger Zeit hatten wir schon mal einen Thread mit einem ähnlichen Thema. Ich möchte hier nun nocheinmal meinen Wüschen bezüglich programmierbarer Grafikhardware wiederholen.
- Vollständige Kontrolle der Renderpipeline über eine Hochsprache.
- Die programmierbare Renderpipeline sollte schon bei der Objekterzeugung anfangen.
- Weg von den Einheiten orientierten Shadern (Vertex, Pixel, ...) hin zu den Funktions orientierten Shadern (Geometrie, Licht, Oberfläche, ...)
- Multipass zerlegung und zuweisung der Arbeiten auf die Funktionseinheiten sollte automatisch ablaufen.
Ich weiss das ich viel möchte aber das ist IMHO der einzige Weg schneller Kinoeffekte auch in Spielen zu bekommen. Leider sehe ich derzeit keinerlei Bewegung in diese Richtung bei OpenGL oder D3D.
Andere Meinungen, Wünsche, Ergänzungen usw. sind ausdrücklich erwünscht. Möglicherweise stehe ich mit meinen Ansätzen auch aleine auf weiter Flur.