DGL https://delphigl.com/forum/ |
|
unerklärlicher Beleuchtungs winkel https://delphigl.com/forum/viewtopic.php?f=20&t=7181 |
Seite 1 von 1 |
Autor: | Sellmann [ So Jan 06, 2008 00:13 ] |
Betreff des Beitrags: | unerklärlicher Beleuchtungs winkel |
Hi, ich habe mich gerade gefreut, dass ich einen Phongshader in glsl geschrieben habe und der auch soweit richtig gut aussieht, allerdings will ich nicht nur diffuse und specular texturabhängig haben, sondern auch die normalen, also bump mapping (oder normal mapping, kA was richtiger ist). Ich habe dazu diverse papers im Netz durchgelesen und verschieden Varianten ausprobiert aus dem phong shader einen bump shader zu machen. Im Prinzip habe ich den light und den View vector mit der TBN matrix an den Normalspace angepasst und berechne ansonsten alles so wie vorher. Die Texturen und Daten werden komplett richtig übergeben, aber irgendwie scheint in dem bumpshader ein Problem mit dem Beleuchtungswinkel aufzutauchen. ebenfalls verändert sich as verhalten der Specular auf der Oberfläche erheblich. Wenn jemand eine Ahnung hat, was ich falschgemacht habe, oder so, dann darf er mich das ruhig wissen lassen. Das phong shader vertex object: Code:
Das phong shader fragment object: Code:
Das bump shader vertex object: Code:
Das bump shader fragment object: Code:
Ich denke, es ist offensichtlich, dass sich kaum etwas geändert hat, trotzdem strahlt das Lich aus einer falschen Richtung. dank vorweg; [Edit] -> falsch c&p; |
Autor: | oc2k1 [ So Jan 06, 2008 03:52 ] |
Betreff des Beitrags: | |
Beim dot3 bumpmapping gibt es zwei Varianten: Eine arbeitet im texturspace das war füher nötig, da Register combiner keine matrixmultiplikation durchführen konnten, Der nachteil ist, das jede Lichtquelle ebenfalls in den texturspace transformiert werden muss. Heute kann man es sich ohne Probleme erlauben. Den Normalvektor aus der normalmap in den modelviewspace zu projezieren. Über gib einfach die TBN matrix an den Fragmentshader. Da dieser Code immer wieder gebraucht wird hab ich ihn hier als Tutorial abgelegt: http://lumina.sourceforge.net/?id=23 |
Autor: | Sellmann [ So Jan 06, 2008 14:20 ] |
Betreff des Beitrags: | |
Aller besten Dank! Ich habe nichtbeachtet, dass die Normalmap einen Bereich von 0 bis 1 besitzt, die normalen aber einen bereich von -1 bis +1. Richtig siehts so aus: Code:
wichtig ist das -0.5 am ende der Zeile gewesen, die den Bereich verschiebt/korrigiert. Ja dumm gelaufen, dieser Fehler hat mich verfolgt. Danke du hast mir sehr geholfen!! Freude~ |
Autor: | Lord Horazont [ So Jan 06, 2008 14:44 ] |
Betreff des Beitrags: | |
Moment, fehlt da nicht noch ein * 2.0? Wenn du werte von 0 bis 1 hast und diese -0.5 nimmst, hast du werte von -0.5 bis 0.5. Da müsstest du doch noch mal zwei nehmen, damit du werte von -1.0 bis 1.0 hast, oder? Gruß Lord Horazont |
Autor: | oc2k1 [ So Jan 06, 2008 15:00 ] |
Betreff des Beitrags: | |
in dem Fall nicht, da in der nächten Zeile. der normalmapvektor aus dem texturspace ind den Modelviewspace rotiert wird und dann anschließend normalisiert wird. Noch besser wäre die variante ein signed texture format zu verweden... |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |