DGL
https://delphigl.com/forum/

Fragen zum Licht
https://delphigl.com/forum/viewtopic.php?f=20&t=6360
Seite 1 von 1

Autor:  Pellaeon [ Sa Feb 10, 2007 12:40 ]
Betreff des Beitrags:  Fragen zum Licht

Hiho,

im Vertexshader hat man ja Zugriff auf die Struktur, in der die gesetzten Lichtquellen abgelegt sind.
In der FixFunction-Pipeline ist es ja wichtig, wo man das Licht setzt, also z.B. vor oder nach gluLookAt.
Da wollt ich mal fragen, wie die Lichtquelle im Shader ankommt? "Roh" oder schon transformiert? Und wenn roh, wie kann man dann unterscheiden, ob z.B. die Lichtquelle vor oder nach der Kamera gesetzt wurde?

Eine andere Frage hätte ich noch zum Flat-Shading. Wie kann man sowas per Shader realisieren? DIe Übergabevariablen von VS zu PS sind doch immer varying, oder?

Autor:  PhoenixGL [ Di Feb 13, 2007 09:29 ]
Betreff des Beitrags: 

morgen,

mal sehen ob ich nich noch zu verschlafen bin... :wink:

ich bin der meinung es ist so das die lichtposition so im shader ankommt wie die vertexposition also wie du sagst roh (nicht transformiert)
und sie zu transformieren musst du sie einfach mit gl_ModelViewProjectionMatrix mulitlizieren

@flat shading
hab ich mir zwar noch nie gedanken drüber gemacht aber ich würde sagen die normalen pro fläche angeben sollte es tun

Autor:  Pellaeon [ Mi Feb 14, 2007 09:15 ]
Betreff des Beitrags: 

PhoenixGL hat geschrieben:
ich bin der meinung es ist so das die lichtposition so im shader ankommt wie die vertexposition also wie du sagst roh (nicht transformiert)
und sie zu transformieren musst du sie einfach mit gl_ModelViewProjectionMatrix mulitlizieren


Wenn dann noch nur mit der gl_ModelView, oder? Um in den Raum der "eye-Koordinaten" zu kommen.

Aber irgendwie muss sich das doch auch unterscheiden lassen, wo die Lichtquelle gesetzt wurde. Ich denke die neuen Grafikkarten haben keine FixFunction-Pipeline mehr sondern emulieren das durch Standard-Shader. Und irgendwie müssen die es ja gemacht haben, dass das Licht vor gluLookAt an einer anderen Stelle ist als nach gluLookAt.

Autor:  PhoenixGL [ Mi Feb 14, 2007 09:45 ]
Betreff des Beitrags: 

Pellaeon hat geschrieben:
Wenn dann noch nur mit der gl_ModelView, oder? Um in den Raum der "eye-Koordinaten" zu kommen.

*räusper* stimmt sorry :roll:

Pellaeon hat geschrieben:
Aber irgendwie muss sich das doch auch unterscheiden lassen, wo die Lichtquelle gesetzt wurde. Ich denke die neuen Grafikkarten haben keine FixFunction-Pipeline mehr sondern emulieren das durch Standard-Shader. Und irgendwie müssen die es ja gemacht haben, dass das Licht vor gluLookAt an einer anderen Stelle ist als nach gluLookAt.

äh... ich glaub ich weis jetzt was du meinst und ich fürchte da musst du deinem shader mitteilen was er wann machen soll

@grafikkarten: da "wissen" die treiber ja was sie in welcher reihenfolge an die graka senden sollen

Autor:  oc2k1 [ So Feb 18, 2007 04:20 ]
Betreff des Beitrags: 

Die Lichtquellenposition wird beim setzten mit der gl_ModelViewMatrix multipliziert. Wenn man mehrere Lichtquellen verwendet sollte man diese nicht als varying an den Fragmentshader weiter geben, da die anzahl der Varyings stark begrenzt ist.

Autor:  Pellaeon [ So Feb 18, 2007 10:09 ]
Betreff des Beitrags: 

oc2k1 hat geschrieben:
Die Lichtquellenposition wird beim setzten mit der gl_ModelViewMatrix multipliziert. Wenn man mehrere Lichtquellen verwendet sollte man diese nicht als varying an den Fragmentshader weiter geben, da die anzahl der Varyings stark begrenzt ist.


Erstmal danke für die Antwort.
Da hab ich gleich noch ein paar Fragen zu^^

Wo steht das denn? Ich hab mir mal die Spec von der offiziellen Seite zu glSlang grob durchgelesen, habe dazu aber nichts gefunden(kanns natürlich auch überlesen haben)

Wegen der Übergabe: die Lichtdaten gibt man doch eh nicht an den Fragmentshader weiter, oder? Na gut außer beim Bumpmapping. Aber Rendern mehrerer Lichtquellen macht man doch eh über mehrere Renderpasses, soweit ich gelesen habe(über Transparenz).

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/