PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pixel und Vertex Shader


Seppi
2002-02-26, 07:52:32
1) Kann man Pixel und Vertex Shader emulieren ?

2) Haben die GeForce 2 (pixel) und GeForce 4 MX (vertex) shader ?

nggalai
2002-02-26, 08:05:17
Hi Seppi,

1) Kann man Pixel und Vertex Shader emulieren ?

2) Haben die GeForce 2 (pixel) und GeForce 4 MX (vertex) shader ?1) Vertex Shader können auch auf der CPU laufen gelassen werden. Pixel Shader benötigen (zumindest unter D3D) echten Hardware-Support, Grafikkartenseitig.

2) Sowohl GF2 als auch GF4MX haben keine Pixel Shader nach DX8.(1). Beide Karten haben aber Formen von per-pixel shading/lighting (DOT3), was zu Missverständnissen führen kann.

Beide Karten können mit Vertex Shadern umgehen (da die dann auf der CPU laufen ;) ), und die GF4MX scheint laut CAPS-Viewer eine Art Geometry Assist zu haben--jedenfalls wird der Applikation vorgegaukelt, dass die Karte selbst VS1.1 unterstütze.

Unter OpenGL sieht die Sache natürlich ein wenig anders aus, aber da kann ich nicht viel dazu sagen. XMas, vielleicht?

ta,
-Sascha.rb

nggalai
2002-02-26, 08:22:03
Nachtrag zu 2:

Link (http://216.12.218.25/domain/www.beyond3d.com/forum/viewtopic.php?topic=250&forum=2&11)

Interessanteste Quote:GeForce4 MX accelerates vertex shaders, and can run vertex programs, but with less overall performance than GeForce4 Ti. Some functions are executed on CPU, some on the GPU - a hybrid model.

Brian Burke
NVIDIA Corp.

ta,
.rb

ow
2002-02-26, 09:33:45
Originally posted by nggalai
Nachtrag zu 2:

Link (http://216.12.218.25/domain/www.beyond3d.com/forum/viewtopic.php?topic=250&forum=2&11)

Interessanteste Quote:

ta,
.rb

Deckt sich mit der Feststellung auf Digit-life, dass die GF4MX Vertexshader 1.1 unterstuetzt.

aths
2002-02-26, 13:55:17
Interessanterweise lassen sich eine Menge PixelShader-Effekte (bishin zu prozeduralen Texturen) auch auf der Kyro gestalten, die ja keinen PixelShader hat.

Man könnte natürlich PixelShader auf der CPU emulieren. Die Performance wäre allerdings dermaßen schlecht, dass das überhaupt nicht infrage kommt. Wie nggalai schon sagte, wird VertexShader-Funktionalität problemlos auch auf Karten zur Verfügung gestellt, die nicht mal über DX7 T&L-Fähigkeiten verfügen müssen. VertexShader lassen sich ganz gut auch von der CPU emulieren.

PixelShader werden übrigens erst dann richtig sinnvoll, wenn sie zusammen mit VertexShadern eingesetzt werden.

Piffan
2002-02-26, 14:04:31
Originally posted by aths

PixelShader werden übrigens erst dann richtig sinnvoll, wenn sie zusammen mit VertexShadern eingesetzt werden.

Wieso?! Spart das Verkehr auf dem AGP? Ähnlich wie HOS?

ow
2002-02-26, 14:14:16
Originally posted by aths
Interessanterweise lassen sich eine Menge PixelShader-Effekte (bishin zu prozeduralen Texturen) auch auf der Kyro gestalten, die ja keinen PixelShader hat.




Sind EMBM und DOT3 nicht zwei Pixelshader-Spezialfaelle?

aths
2002-02-26, 14:16:12
PixelShader erlauben, auf vielfältige Art Texturen und interpolierte Eckpunkt-Daten zu kombinieren. Um eben diese Eckpunkt-Daten zu erzeugen sind VertexShader gut geeignet.

aths
2002-02-26, 14:17:55
ow,

beides läßt sich auch mit PS-Programmen machen (so dass ich btw annehme, dass NSR im GF3/4Ti via integrierten PS-Programmen realisiert wird.) Vernünftiges Bumpmapping erfordert die Fähigkeit zur pixelgenauen Beleuchtung, was ja auch *eine* Eigenschaft des PS ist.

ow
2002-02-26, 14:54:06
Ich dachte nur, mich dunkenl an eine Aussage von Mr. Carmack zu erinnern, der seinerzeit MS gescholten hat, weil sie EMBM als PS-Spezialfall in DX6 einfuehrten. Aber sonst eben keine PS.

nggalai
2002-02-26, 15:03:13
Hi ow,

da muss man aufpassen, wie denn der Ausdruck "Pixel Shader" verwendet wird--ob damit das DX-Feature gemeint ist, oder eine "Technik".

aths spricht hier, wenn er "Pixel Shader" oder "PS" sagt, vom DX-Feature (resp. dem OpenGL Äquivalent, welches e.g. bei ATi "Fragment Shader" heisst); das, worauf Du anspielst, sind seine "Pixel Shader Effekte". Momentan gibt's ja wieder viel Verwirrung ob der GF4MX (NV17), welche zwar "per-pixel shading" kann, aber eben keine "Pixel Shader" unterstützt.

Und eigentlich sind "Pixel Shader" auch kein Hardware-Feature, sondern Programme, "Shader" eben, welche auf PS-fähiger Hardware laufen können. Leider spricht man dann auch schnell davon, dass GF4MX keine "Pixel Shader" hat o.ä., was dem allgemeinen Verständnis auch nicht sonderlich gut tut . . .

ta,
-Sascha.rb

Quasar
2002-02-26, 16:03:13
Vorweg:
Ist das hier überhaupt das richtige Forum?....

Hinterher:
Also hab ich das bisherige richtig verstanden, wenn ich resümiere, daß prinzipiell sowohl PS als auch VS auf der CPU emuliert werden können, VS dabei praktikabler sind, weil sie nicht so aufwendig sind/eher den normalen Aufgaben der CPU nahekommen?
Problematisch scheint nur die Emulation der PS per Grafikkarte zu sein, da einige Funktionen (multiple Dependant Texture Reads etc.) die Fähigkeiten der jeweiligen Pipeline übersteigen, i.e. aufgrund der Rigidität des Grafikchips im Gegensatz zur CPU-Emulation verunmöglicht werden...?

Weiterhin:
Wenn die GF4MX einige VS-Programme/Funktionen in HW ausführen kann, welches wären Beispiele dafür und wie kann man sich dieses mit dem DX8-SDK mal zu Gemüte führen? (Hab' ansonsten keine Ahnung vom Programmieren und/oder dem SDK....)

nggalai
2002-02-26, 16:12:02
Hi Quasar,
Also hab ich das bisherige richtig verstanden, wenn ich resümiere, daß prinzipiell sowohl PS als auch VS auf der CPU emuliert werden können, VS dabei praktikabler sind, weil sie nicht so aufwendig sind/eher den normalen Aufgaben der CPU nahekommen?Prinzipiell, ja. Unter DX8 ist es jedoch unmöglich, Pixel Shader zu emulieren--die API blockt da komplett. Einen Treiber zu schreiben, welcher sämtliche PS Befehle korrekt und kompatibel abbildet stelle ich mir sehr schwierig vor . . .

Wenn die GF4MX einige VS-Programme/Funktionen in HW ausführen kann, welches wären Beispiele dafür und wie kann man sich dieses mit dem DX8-SDK mal zu Gemüte führen? (Hab' ansonsten keine Ahnung vom Programmieren und/oder dem SDK....)Das sollte eigentlich komplett transparent geschehen und nicht vom Programmierer beeinflussbar sein, via die API. DX hat ja das Gefühl, dass NV17 VS in Hardware unterstütze, fertig. Du schreibst also einen Vertex Shader als wär's für eine NV20 oder R200 (oder CPU ;) ).

Welche Teile dann von der GPU und welche von der CPU erledigt werden kann dir nur der Treiberprogrammierer beantworten. Ein Beispiel wäre, dass die CPU sich ums matrix skinning kümmert und dann die Daten and die GPU zum TnL schickt. Der Programmierer merkt aber nichts davon.

Jedenfalls interpretiere ich so die Aussagen von NV. Und ja, das ist echt das falsche Forum; das sollte event. ins Tech-Forum verschoben werden.

ta,
-Sascha.rb

Edit: :lol: da hab' ich doch glatt zweimal [quasar] anstelle von [ quote ] geschrieben . . .rb

Quasar
2002-02-26, 16:22:23
Thx, ich werd's mir nachher mal mit dem SDK ein bißchen gemütlich machen....

Ach ja, @nggalai: :D (schreibe ich so verwirrend?)

nggalai
2002-02-26, 16:27:14
Hi Quasar,Ach ja, @nggalai: :D (schreibe ich so verwirrend?)Hehehe . . . nöö. Aber ich quäle mich gerade mit XML Custom Tags rum, da passiert sowas schonmal . . . ;)

ta,
.rb

nggalai
2002-02-26, 16:27:55
Oh, fast vergessen:Thx, ich werd's mir nachher mal mit dem SDK ein bißchen gemütlich machen.... Wäre cool, wenn Du deine Ergebnisse hier kommentieren könntest.

ta,
-Sascha.rb

Quasar
2002-02-26, 18:12:45
Tja, mein Ausflug in die Programmier-Gefilde ist leider etwas kürzer geworden, als ich gedacht hätte....

Viel läßt sich aus dem DX8-SDK ohne viel Einarbeitung etc. wohl nicht herausholen. Für ein paar Tips, insbesondere, wie man sich die in Hardware Unterstützten Funktionen (ausser mit dem Caps-Viewer, der scheint irgendwie zu spinnen) anzeigen lassen kann, wär' ich dankbar. Bislang sieht's so aus, daß eine GF4MX bis auf Materialsource7 alle VTXPCaps einer GF3 auch kann....komisch, oder?

Doomtrain
2002-02-26, 21:28:20
Originally posted by aths
PixelShader erlauben, auf vielfältige Art Texturen und interpolierte Eckpunkt-Daten zu kombinieren. Um eben diese Eckpunkt-Daten zu erzeugen sind VertexShader gut geeignet.

Das heißt eines von beiden ist scheiße! Nur zusammen als Einheit funktionieren sie gut.

ow
2002-02-27, 09:08:34
Originally posted by Doomtrain


Das heißt eines von beiden ist scheiße! Nur zusammen als Einheit funktionieren sie gut.

???

aths
2002-02-27, 12:34:39
Quasar,

in welchen Programmiersprachen kennst du dich (etwas) aus? (Was mich btw interessieren würde, ob man mit einer GF4Ti *alle* DX8.1-SDK-Beispiele über HAL laufen lassen kann... aber du hast wohl nicht zufällig gerade ne 4Ti rumliegen?)


Doomtrain,

ich denke, dass ein gepflegtes Forum auf Fäkalausdrücke verzichten kann.

Quasar
2002-02-27, 22:23:19
Also auskennen ist in Bezug auf Programmiersprachen und meine Person deutlich übertrieben, aber ein paar Kleinigkeiten habe ich früher mal in TurboPascal ('tschuldigung ;) ) und Prolog resp. LisP gemacht.

Leider nichts, was irgendwie verwertbar wäre, und das ist wohl auch gut so.

Wenn du die vorkompilierten Beispiele aus dem SDK meinst: Gilt dann nur "pure HW" oder auch Dinge wie "HW vp" o.ä.?

Eine 4Ti hab' ich leider noch nicht....nur die 4MX.

aths
2002-02-28, 12:00:45
Quasar,

ich wüsste jetzt nicht dass Beispiele bereits kompiliert ausgeliefert werden (allerdings habe ich nicht das komplette SDK installiert, sondern vor allem die C++-Beispiele.) Xmas hat gesagt dass der HOS-Teaport auf der GF3 (und dann wohl auch auf der GF4) nicht über HAL läuft, sondern REF nutzen muss. Damit ist meine Frage eigentlich schon geklärt (nämlich ob man mit einer GF4 alle Demos aus dem DX8.1 SDK mit HW-Support laufen lassen kann. Die PixelShader-Demos nutzen ja von sich aus nur Version 1.0.)

Quasar
2002-02-28, 18:24:34
Im Verzeichnis Samples/Multimedia/Direct3D gibt's eine Reihe (z.B. den Teapot) in ausführbarer Form.

Die Geschichte mit den RT-Patches sind rein Treiberseitig auf der GF3. Mit Treibern unterhalb der 20.80er sind die RT-Patches noch aktiviert. Wie selbiges mit der GF4 aussieht, kann ich nicht sagen, da diese nicht ohne größere Verrenkungen mit solch alten Treibern nicht laufen.

Wo finde ich denn die C++-Beispiele?

aths
2002-02-28, 19:03:21
Kann ich erst sagen, wenn ich wieder vor der eigenen Kiste sitze (sprich Freitag abends/nachts)

tb
2002-03-01, 03:23:32
Noch ein Hinweis zu den Vertex Shadern, die können keine Eckpunkte erzeugen, leider....

Thomas

aths
2002-03-02, 03:17:14
Quasar:

Bei mir finden sich die in

\DXSDK\samples\Multimedia\Direct3D

Quasar
2002-03-02, 13:11:42
Jup, da sind sie bei mir auch....aber da es ausführbare Beispiele sind, bin ich einfach mal davon ausgegangen, daß sie vorkompiliert sind...

Allerdings werden nicht alle mit "pure HW" ausgeführt auf einer GF3. Erstaunlicherweise gibt es aber einige, die auch Vertexshader in "pure HW" auf einer GF4MX nutzen wollen....

P.S.:
Versuche niemals Airhockey in den Visual Basic Demos....Das Spiel macht echt süchtig...