PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was sind Shader?


huha
2004-04-03, 12:14:03
Morgen!

Eine etwas irreführende Überschrift vielleicht, aber trotzdem würde ich mir einen Artikel über Shader wünschen. Es wird ständig von irgendwelchen Shadern gesprochen, doch was Shader sind und was mit ihnen konkret möglich ist, wird nicht erwähnt. Shader sind ja, soweit ich das verstanden habe, in der GPU ablaufende Programme.

Können Shader nur die auf ein Polygon oder ein Pixel applizierte Textur verändern oder sind sie auch in der Lage, Geometrie zu erzeugen bzw. Renderbefehle zu steuern?
Auf welche Resourcen können sie zugreifen?
Für welche Aufgaben lassen sich Shader nutzen? Was können sie manipulieren?

Über einen Artikel o.Ä. dazu würde ich mich sehr freuen, da IMO da noch etwas Erklärungsbedarf besteht.

-huha

Coda
2004-04-03, 12:44:59
Kurz und knapp können sie die Position und die Informationen der Eckpunkte und die Farben der Dreiecke verändern.

Also z.B. pro Pixel das Licht korrekt berechnen

Sie können keine neue Geometrie erschaffen, oder an beliebigen Punkten auf den Bildschirm malen

Kakarot
2004-04-03, 15:49:06
http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=125623

huha
2004-04-03, 16:05:44
Hmm, ich würde mir eben einen Grundsatzartikel zu diesem Thema wünschen. Können Shader nur die Texturierung oder auch die Geometrie verändern?

Läßt sich ein nicht in Hardware implementiertes Displacement-Mapping per Shader "nachrüsten" oder können Shader nicht schreibend auf Geometriedaten zugreifen?

-huha

tombman
2004-04-03, 16:11:27
pixel shader verändern die Farbe von pixeln
vertex shader verändern Geometriedaten, also die Eckpunkte im Raum.

Die werden aber bald zusammenfließen und sind dann einfach mathematische Coprozessoren.

Und klar können sie neue Geometrie erschaffen, zb durch Tesselation.

BavariaBlade
2004-04-03, 19:53:23
Original geschrieben von tombman
pixel shader verändern die Farbe von pixeln
vertex shader verändern Geometriedaten, also die Eckpunkte im Raum.


DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE! DANKE!

Endlich blick ich durch;)
Jetzt wo Du es sagst ist es ja eigentlich offensichtlich, allein die Namen veraten ja fast alles.

Servus

ShadowXX
2004-04-03, 20:50:10
Original geschrieben von tombman
pixel shader verändern die Farbe von pixeln
vertex shader verändern Geometriedaten, also die Eckpunkte im Raum.

Die werden aber bald zusammenfließen und sind dann einfach mathematische Coprozessoren.

Und klar können sie neue Geometrie erschaffen, zb durch Tesselation.

Tesselation kommt AFAIK erst mir DX-Next(10)...es gab dafür wohl zwar schon frühere Ansätze (TruForm??), aber die waren meist Propitär...

Und sie sind auch wohl mehr sehr spezielle DSPs als "simple" mathematische CoPros...

StefanV
2004-04-03, 21:34:30
Original geschrieben von ShadowXX
Tesselation kommt AFAIK erst mir DX-Next(10)...es gab dafür wohl zwar schon frühere Ansätze (TruForm??), aber die waren meist Propitär...

Und sie sind auch wohl mehr sehr spezielle DSPs als "simple" mathematische CoPros...

Nö, sind in der DX Spec vorhanden, nur hat sich niemand so recht getraut, das konsequent duchzusetzen, weder ATI noch NV...

PS: Truform = N-Patches.

ShadowXX
2004-04-03, 21:40:33
Original geschrieben von Stefan Payne
Nö, sind in der DX Spec vorhanden, nur hat sich niemand so recht getraut, das konsequent duchzusetzen, weder ATI noch NV...

PS: Truform = N-Patches.

Was im Prinzip aufs gleiche hinausläuft...aber ist Tesselation ab Dx10 nicht bindend??? (Also ein Muss-Feature??)

Knoskoloz
2004-04-03, 22:15:52
Original geschrieben von tombman
pixel shader verändern die Farbe von pixeln
vertex shader verändern Geometriedaten, also die Eckpunkte im Raum.

Die werden aber bald zusammenfließen und sind dann einfach mathematische Coprozessoren.

Und klar können sie neue Geometrie erschaffen, zb durch Tesselation.
Hm für sowas brauch man doch aber keine Vertex und Pixelshader oder? Z.B. die Lava in Q3 läuft über shaderprogramme(hat wohl nix mit Vertex und Pixel shadern zu tun), die Lava kann die höhe ändern und die position der textur damit es fließend aussieht und der Lavashader wird ja ganz normal wie ne textur auf nen brush(würfel) draugesetzt. Die Hardware shader müssten doch noch mehr können sowas war ja schon früher möglich. Waren die nicht irgendwie frei programmierbar oder so? Oder hab ich da jetzt irgendwas falsch? Das mit den Q3 shadern kann man ja leicht mitn Q3 radianten machen dabei bin ich mir sicher.

ShadowXX
2004-04-03, 22:30:32
Original geschrieben von Knoskoloz
Hm für sowas brauch man doch aber keine Vertex und Pixelshader oder? Z.B. die Lava in Q3 läuft über shaderprogramme(hat wohl nix mit Vertex und Pixel shadern zu tun), die Lava kann die höhe ändern und die position der textur damit es fließend aussieht und der Lavashader wird ja ganz normal wie ne textur auf nen brush(würfel) draugesetzt. Die Hardware shader müssten doch noch mehr können sowas war ja schon früher möglich. Waren die nicht irgendwie frei programmierbar oder so? Oder hab ich da jetzt irgendwas falsch? Das mit den Q3 shadern kann man ja leicht mitn Q3 radianten machen dabei bin ich mir sicher.

Das was heutige Vertexshader können, kann im Prinzip auch die CPU erledigen (weshalb auch manch ein IHV nur per SW VertexShader emuliert)...und eigentlich jeder PS < 2.0 Effekt kann auch durch Multi-Texturing erreicht werden (was aber imense Power der GraKa vorraussetzt) (auch die meisten PS2.0 Effekte könnte man durch MT ersetzen..noch mehr Power erforderlich).

Die Vertex und Pixel Shader können dies nun aber viel schneller als Brachialgewalt-GPUs per MT bzw. sollen die CPU entlasten.

Knoskoloz
2004-04-03, 22:46:03
k, thx für die infos :>

Coda
2004-04-04, 16:08:44
Original geschrieben von tombman
Und klar können sie neue Geometrie erschaffen, zb durch Tesselation.
Nein. Können sie nicht.
Das geht vielleicht durch patches etc., hat aber nichts mit den Shadern zu tun.

Shader können keine neuen Vertices oder Pixel erschaffen, das gibt's erst in DX10

Tesseract
2004-04-04, 19:58:18
Original geschrieben von Coda
Nein. Können sie nicht.
Das geht vielleicht durch patches etc., hat aber nichts mit den Shadern zu tun.

Shader können keine neuen Vertices oder Pixel erschaffen, das gibt's erst in DX10

patches? was hat ein patch bitte mit dem thema zu tun?

ein vertexshader kann natürlich geomertie erschaffen, sonst ist er komplett sinnfrei

was bis jetzt nicht geht ist die gesammte geometrie auf der GPU erschaffen, sondern nur vorhandene geometrie mit einem shader "bearbeiten"

im prinzip ist displacement mapping und truform auch schon tessellation

ein beispiel für tessellation über den vertexshader: truform am R300 (dieser hat eigendlich keine truform einheit)

MeLLe
2004-04-05, 08:57:25
Original geschrieben von Tesseract
patches? was hat ein patch bitte mit dem thema zu tun?

ein vertexshader kann natürlich geomertie erschaffen, sonst ist er komplett sinnfrei

was bis jetzt nicht geht ist die gesammte geometrie auf der GPU erschaffen, sondern nur vorhandene geometrie mit einem shader "bearbeiten"

im prinzip ist displacement mapping und truform auch schon tessellation

ein beispiel für tessellation über den vertexshader: truform am R300 (dieser hat eigendlich keine truform einheit)
AFAIK kann keine zur Zeit am Consumer-Markt verfügbare Vertex-Shading-HW Geometriedaten erzeugen, sondern wie du richtig sagst nur verändern.
DM ist genau die gleiche Story, da wird ja auch nur vorhandene Geometrie displaced, und nicht erzeugt.

Wird TruForm nicht treiber- (=CPU-) seitig auf der R3xx-Serie emuliert, und läuft deswegen auch so grottig langsam?

Edit: Ein Patch ist eine Curved Surface, die durch Eckpunkte definiert und zur Laufzeit tesseliert wird. Sowas wie TruForm eben.

Gast
2004-04-05, 09:45:14
nV hatte die Bezier Patches ab der GF3 im Programm.

Genutzt werden können n-patches mit der Unreal und der Quake(2/3) Engine

Gast
2004-04-05, 09:59:36
Original geschrieben von MeLLe

Wird TruForm nicht treiber- (=CPU-) seitig auf der R3xx-Serie emuliert, und läuft deswegen auch so grottig langsam?


Jo, der VS emuliert den schluntz...

Demirug
2004-04-05, 10:53:22
Vertexshader und Pixelshader haben ein strenges 1:1 Verhältniss was Eingabe:Ausgabe angeht. Ein Datensatz geht rein einer kommt dafür wieder raus.

Truform mit dem R300 macht im wesentlichen die CPU durch den Treiber.

tombman
2004-04-05, 11:12:48
Original geschrieben von Demirug
Vertexshader und Pixelshader haben ein strenges 1:1 Verhältniss was Eingabe:Ausgabe angeht. Ein Datensatz geht rein einer kommt dafür wieder raus.

Truform mit dem R300 macht im wesentlichen die CPU durch den Treiber.

Jo, bei der r300 haben die Schweine das aus der "hardware" wieder rausgenommen, aber auf der 8500er lief das doch recht gut, oder? Wurden da nicht Poligone "erzeugt" von der die cpu nix wußte?

ShadowXX
2004-04-05, 11:46:23
Original geschrieben von Gast
nV hatte die Bezier Patches ab der GF3 im Programm.

Genutzt werden können n-patches mit der Unreal und der Quake(2/3) Engine

Und AFAIK beim GF4 gleich wieder rausgeschmissen, weil keiner sie benutzt..