PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bennung von Effektpfaden bei Engines


Demirug
2004-07-29, 20:45:21
Da die Diskussion dort (http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=157931) in diese Richtung gelaufen ist hier dazu ein eigener Thread.

Kurz gesagt geht es darum wie man bei einer Engine/Spiel die unterschiedliche Renderpfade zur Darstellung von Effekten bezeichnen soll.

Demirug
2004-07-29, 20:54:10
Original geschrieben von micki
ich finde es ok wenn man etwas am renderpfad extra für einen zweck ändert, den renderpfad entsprechend zu benennen. wenn FC mal die ATI texturkompression nutzt, fände ich es nicht falsch den renderpfad danach zu benennen.
Das machen viele andere engines auch (siehe D3(nv,ati,arb),Unreal(software,d3d,ogl,3dfx),...)

MfG
micki

Bei D3 haben wir aber den Fall das hier unterschiedliche Extensions zum Einsatz kommen. Das ist teilweise ja schon mit unterschiedlichen DX Versionen vergleichbar. Der vergleich hinkt zwar etwas passt aber IMHO durchaus noch.

Bei Unreal haben wir es ja sogra mit komplett unterschiedlichen APIs zu tun.

Das sind IMHO ganz andere Diemensionen wie das einfache ändern des Compilerprofils.

IVN
2004-07-29, 23:33:18
@Demirug

As you said-MultiLight 2=r3xx,ML3=nv3x+r420,ML4=nv40


OR (lights 3+3dc)Path r420,(lights 4+some capabilities of
sm3.0)path nv40 and unified r3xx+nv3x path with 2
lights per pass.

Mave@Work
2004-07-30, 09:46:26
Original geschrieben von IVN
@Demirug



OR (lights 3+3dc)Path r420,(lights 4+some capabilities of
sm3.0)path nv40 and unified r3xx+nv3x path with 2
lights per pass.

I thing this is a good idea. Maybe a little complicated for
the normal users but who cares ?

The problem is that the "unified r3xx+nv3x path with 2
lights per pass." also runs on r420 and nv40 so it should just be called "unified path" or "basic path"

Radeonator
2004-07-30, 10:32:00
Keep it simple :

Je nach GPU auch den Pfad bennenen, ist doch logisch oder?
Oder die Extensions so zusammenschreiben, das man erkennt was wozu gehört (wie in Basic die REMs halt)

Demirug
2004-07-30, 10:32:25
In the case of Farcry the list should look a little bit different:

Light mode:

4 lights: NV40
3 lights: R420+NV3X
2 lights: all Chips with PS 2.0 support

with a little bit more work at the shaderlevel NV40,R420 and NV3X can support one light more per pass as minimum.

Mave, better chips can allways use the effectsetup for weaker chips. This is a part of the dx design.

Demirug
2004-07-30, 10:39:53
Original geschrieben von Radeonator
Keep it simple :

Je nach GPU auch den Pfad bennenen, ist doch logisch oder?
Oder die Extensions so zusammenschreiben, das man erkennt was wozu gehört (wie in Basic die REMs halt)

Und was machst du wenn mehr als eine GPU einen Pfad benutzten kann? Ich denke es ist noch verwirrender wenn ein NV3X plötzlich einen R420 Pfad ausführt oder anders herum. Was ist mit Chips die es zum Zeitpunkt als das Spiel herausgekommen ist noch gar nicht gegeben hat? Welchen Pfad benutzen die? Eigentlich sollte man die Device und Vendor ID einer Karte niemals dazu benutzen um entscheidungen bezüglich der Effektwahl zu trefen. Das führt zwangsläufig immer zu Ärger.

Radeonator
2004-07-30, 11:03:43
Naja, das ist wohl auch etwas übertrieben. In die Zukunft zu planen(ohne vorab Info über geplante GPUs) ist weder möglich, noch IMO nötig.

Vielleicht sollte man die Pfade viel eher zu Effekt Gruppen zusammenfassen, damit ersparrt man sich eine Menge Ärger und Zeit.
(Bsp SM2.0a/b, SM3.0, 3dC usw.)

Mave@Work
2004-07-30, 11:04:59
Original geschrieben von Demirug

Mave, better chips can allways use the effectsetup for weaker chips. This is a part of the dx design.

Das weiss ich schon aber in diesem speziellen Fall mit 2.0
2.a 2.b. und 3 ist für einige nicht mehr durchzusteigen was denn nun von nv oder ati benutzt werden kann daher sollte man das r3xx/nv3xx lieber weglassen und meinetwegen unified SM2 oder sowas als name nehmen.

Mave@Work
2004-07-30, 11:07:01
Original geschrieben von Radeonator
Naja, das ist wohl auch etwas übertrieben. In die Zukunft zu planen(ohne vorab Info über geplante GPUs) ist weder möglich, noch IMO nötig.

Vielleicht sollte man die Pfade viel eher zu Effekt Gruppen zusammenfassen, damit ersparrt man sich eine Menge Ärger und Zeit.
(Bsp SM2.0a/b, SM3.0, 3dC usw.)

Aber genau da steigen doch viele wieder nicht durch.

Demirug
2004-07-30, 11:23:39
Original geschrieben von Mave@Work
Das weiss ich schon aber in diesem speziellen Fall mit 2.0
2.a 2.b. und 3 ist für einige nicht mehr durchzusteigen was denn nun von nv oder ati benutzt werden kann daher sollte man das r3xx/nv3xx lieber weglassen und meinetwegen unified SM2 oder sowas als name nehmen.

Bei der Liste ging es ja nur darum welchen Pfad die einzelnen Chips nutzen könnten.

In ein Log würde ich dann ja eher sowas schreiben

Multi Light mode: x Lights.

x ist eine zahl von 1 bis 4.

Demirug
2004-07-30, 11:29:06
Original geschrieben von Radeonator
Naja, das ist wohl auch etwas übertrieben. In die Zukunft zu planen(ohne vorab Info über geplante GPUs) ist weder möglich, noch IMO nötig.

Vielleicht sollte man die Pfade viel eher zu Effekt Gruppen zusammenfassen, damit ersparrt man sich eine Menge Ärger und Zeit.
(Bsp SM2.0a/b, SM3.0, 3dC usw.)

Da gibt es dann doch wieder Überschneidungen. Man kann ja unterschiedliche Texturformate mit unterschiedlichen Shader kombinieren.

Zudem verändert sich IMHO eine Technik ja nicht dadurch das man ein anderes Shaderprofil benutzt. So würde man einen 3 Lichtquellen pro Pass Modus für einen NV3X ja als 2.A compileren und für den R420 als 2.B. Da ist dann die verlockung gross das ganze als 2A und dann nochmal als 2B Pfad zu verkaufen obwohl es genau das gleiche ist.

Das war ja auch der Punkt den ich bereits kritisiert habe. Wenn man will kann man einen HLSL Shader schreiben diesen dann mit 2.0, 2.A, 2.B und 3.0 kompilieren und das ganze als 4 unterschiedliche Shaderpfade verkaufen. Deswegen macht es eben IMHO keinen Sinn Shaderpfade nach Shadermodelen zu bezeichnen.

Mave@Work
2004-07-30, 11:34:08
Original geschrieben von Demirug
Bei der Liste ging es ja nur darum welchen Pfad die einzelnen Chips nutzen könnten.

In ein Log würde ich dann ja eher sowas schreiben

Multi Light mode: x Lights.

x ist eine zahl von 1 bis 4.

Dann wäre meine Frage wozu Du das Log brauchts/Was Du hier mit dem Log genau meinst ?
Wenn es für den normalen Enduser ist der will wahrscheinlich schon wissen welcher Chip welchen Pfad kann.

Corrail
2004-07-30, 12:06:10
Original geschrieben von Demirug
In the case of Farcry the list should look a little bit different:

Light mode:

4 lights: NV40
3 lights: R420+NV3X
2 lights: all Chips with PS 2.0 support

with a little bit more work at the shaderlevel NV40,R420 and NV3X can support one light more per pass as minimum.

Rein theoretische Frage:
Mit dem R420 und NV3X müssten sich doch mehr als 3 Lichter berechnen lassen. Scheitern tut es ja hier "nur" an der Interpolatoren, oder?
Man könnte doch auch die Pixel-Position dem Fragment/Pixel Shader übergeben und der berechnet dann die Vektoren zum Licht. Ich würd mal sagen, dass bei dieser Methode maximal 100 Instruktionen pro Licht im Pixel/Fragment Shader anfallen, was auf dem NV3x bis zu 10 Lichter und auf dem R420 (in günstigsten Fällen) bis zu 15 Lichter macht. Man kann natürlich auch optimieren, indem man für ein paar Lichter im Vertexshader einige Sachen vorberechnet.
Ob sich das performance-technisch rentiert, ist natürlich eine andere Frage, aber wenn im Vergleich zu mehreren Passes wäre das sicher eine Alternative.

Demirug
2004-07-30, 12:48:03
Original geschrieben von Mave@Work
Dann wäre meine Frage wozu Du das Log brauchts/Was Du hier mit dem Log genau meinst ?
Wenn es für den normalen Enduser ist der will wahrscheinlich schon wissen welcher Chip welchen Pfad kann.

Der normale Enduser will sowas eher weniger wissen. Der will nur das sein Spiel läuft und das möglichst spielbar.

Ich meine eine Logdatei in der protokuliert wird welche Effekte in welcher Variante benutzt werden. Haben ja die meisten Spiele irgendwie.

Mave@Work
2004-07-30, 12:56:51
Original geschrieben von Demirug
1. Der normale Enduser will sowas eher weniger wissen. Der will nur das sein Spiel läuft und das möglichst spielbar.

2. Ich meine eine Logdatei in der protokuliert wird welche Effekte in welcher Variante benutzt werden. Haben ja die meisten Spiele irgendwie.

1. Naja da hab ich so meine Zweifel. Nach dem Motto meine Graka kann ... und Deine nur ... kennt man ja aus diversen Thread in gewissen Foren *g*

2. Dafür wäre eine Namensgebung nach Deinem Schema wohl ausreichend

Demirug
2004-07-30, 13:04:38
Original geschrieben von Corrail
Rein theoretische Frage:
Mit dem R420 und NV3X müssten sich doch mehr als 3 Lichter berechnen lassen. Scheitern tut es ja hier "nur" an der Interpolatoren, oder?

Ja, die Resource die zuerst knapp wird bei dem Verfahren das Crytek benutzt sind die Interpolatoren.

Man könnte doch auch die Pixel-Position dem Fragment/Pixel Shader übergeben und der berechnet dann die Vektoren zum Licht. Ich würd mal sagen, dass bei dieser Methode maximal 100 Instruktionen pro Licht im Pixel/Fragment Shader anfallen, was auf dem NV3x bis zu 10 Lichter und auf dem R420 (in günstigsten Fällen) bis zu 15 Lichter macht. Man kann natürlich auch optimieren, indem man für ein paar Lichter im Vertexshader einige Sachen vorberechnet.

Ja das kann man. Allerdings muss man aufpassen das man das ganze nicht im Worldspace macht. Im VS kann man da nicht wirklich was grossartig vorrechnen zudem das ja alles wieder Interpolatoren belegen würde.

Warum kommst du beim NV3X und beim R420 auf eine unterschiedliche Anzahl von Lichtquellen? Bei DX können beide Shader bis zu 512 Anweisungen. Zudem sind 100 schon sehr grosszügig geschätzt.

Ob sich das performance-technisch rentiert, ist natürlich eine andere Frage, aber wenn im Vergleich zu mehreren Passes wäre das sicher eine Alternative.

Eine zusätzlicher Subtraktion pro Lichtquelle sollte nicht so stark ins Gewicht Fallen. Günstiger als ein zusätzlicher Pass wäre es auf jeden Fall. Allerdings muss man natürlich auch der anderen Seite sehen das ich bisher bei Farcry noch keine stelle gesehen habe bei der man einen der 3.0 Shader welcher 9 Interpolatoren benötigt benutzt. So gesehen also möglicherweise gar keine Lösung mit mehr als 4 Lichtquellen benötigt wird. HL2 zum Beispiel begrenzte zumindestens damals die Anzahl der Lichtquellen pro Objekt auf 2.

Demirug
2004-07-30, 13:06:17
Original geschrieben von Mave@Work
1. Naja da hab ich so meine Zweifel. Nach dem Motto meine Graka kann ... und Deine nur ... kennt man ja aus diversen Thread in gewissen Foren *g*

2. Dafür wäre eine Namensgebung nach Deinem Schema wohl ausreichend

Die Spieler die sich in Hardware-Foren rumtreiben gehören eigentlich schon nicht mehr zur Gruppe der normalen Spieler. Viele der normale Spieler wissen noch nicht mal genau welche Hardware sie eigentlich in iherem Rechner haben.

Corrail
2004-07-30, 13:26:26
Original geschrieben von Demirug
Warum kommst du beim NV3X und beim R420 auf eine unterschiedliche Anzahl von Lichtquellen? Bei DX können beide Shader bis zu 512 Anweisungen. Zudem sind 100 schon sehr grosszügig geschätzt.

Sorry, ich denke da in OpenGL... ;)

Back @ Topic
Also ich finde ein Rendering-Pfad sollte IMHO nach den Technologien (also z.B. Shaderprofil, MRT, FP-Blending, ...) und nach den Techniken (z.B. Anzahl der Lichtquellen, Lichtalgorithmus), die verwendet worden sind.

Mave@Work
2004-07-30, 13:39:44
Original geschrieben von Demirug
Die Spieler die sich in Hardware-Foren rumtreiben gehören eigentlich schon nicht mehr zur Gruppe der normalen Spieler. Viele der normale Spieler wissen noch nicht mal genau welche Hardware sie eigentlich in iherem Rechner haben.

Naja da hab ich manchmal meine Zweifel ob das bei einigen Hardware Forenteilnehmern nicht auch so ist.
(Das war jetzt etwas überspitzt aber mit den Fähigkeiten der verschiedenen Chip durchzusteigen scheint wirklich einige zu überfordern, ist ja auch langsam etwas kompliziert)

Aber das wird langsam Off Topic oder wolltest Du eben gerade auf eine Namensgebung raus auf die wir hier im Forum uns einigen können oder die wir für sinnvoll halten, auf das sie die Spieleentwickler dann nach möglichkeit benutzten?

Demirug
2004-07-30, 14:00:46
Original geschrieben von Mave@Work
Naja da hab ich manchmal meine Zweifel ob das bei einigen Hardware Forenteilnehmern nicht auch so ist.
(Das war jetzt etwas überspitzt aber mit den Fähigkeiten der verschiedenen Chip durchzusteigen scheint wirklich einige zu überfordern, ist ja auch langsam etwas kompliziert)

Aber das wird langsam Off Topic oder wolltest Du eben gerade auf eine Namensgebung raus auf die wir hier im Forum uns einigen können oder die wir für sinnvoll halten, auf das sie die Spieleentwickler dann nach möglichkeit benutzten?

Ich will auf nichts bestimmtes hinaus.

Die primäre Frage die sich mir nur zur Zeit stellt ist ob es sinnvoll ist einen Renderpfad nach Shadermodelen zu bezeichnen wo man doch dann dank HLSL aus einem SM20 Pfad in Sekunden einem SM30 Pfad gemacht hat. Darum halte ich den Aussagegehalt einer solchen Bezeichnung eben für so gering das die Bezeichnung überhaupt nichts über die tatsächlichen technischen begebenheiten des Pfads aussagt.

Mave@Work
2004-07-30, 14:06:23
O.K. das hatte ich auch so verstanden.

Das sehe ich genauso, dass es eben nicht sinnvoll ist es nach dem Shadermodel zu benennen.

IVN
2004-07-30, 14:29:23
What name wuld you give to all those rendering paths in the
Unreal 3 engine ? One for r420,nv40,nv3x and r3xx.And if
thay decide to support older DX8 chips it wuld be even more
complicated.

Coda
2004-08-01, 16:21:35
AFAIK the Unreal Engine 3 doesn't use multiple render paths, but one that compiles the shaders as needed.

Bringhimup
2004-08-01, 18:36:11
Was ich mich frage ist, in wie fern so etwas heute eine Rolle spielt. Im Prinzip kann einem doch die Benennung total egal sein. Oder sehe ich hier eine größere Relevanz nicht?

Demirug
2004-08-01, 18:40:35
Original geschrieben von Bringhimup
Was ich mich frage ist, in wie fern so etwas heute eine Rolle spielt. Im Prinzip kann einem doch die Benennung total egal sein. Oder sehe ich hier eine größere Relevanz nicht?

Es gibt IMHO den gefährlichen Trend Pfadbezeichnungen für Werbezwege einzusetzten. Ein "Shader Model 3 Pfad" hat dabei natürlich den Beigeschmak von Hightech. Ob dann allerdings wirklich Hightech dahinter steckt ist was anderes.