DGL https://delphigl.com/forum/ |
|
Wieso funktioniert dies ? https://delphigl.com/forum/viewtopic.php?f=20&t=11045 |
Seite 3 von 3 |
Autor: | mathias [ Mi Dez 18, 2013 00:36 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Wieso ist dies nur bei Position der Fall und bei Normal nicht ? |
Autor: | damadmax [ Mi Dez 18, 2013 07:09 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Bei der Normalen interessiert nur die Rotation, die Translation in der 4. Spalte der Matrix wird nicht gebraucht. Deshalb wird mit mat3(xxx) der Rotationsteil 'herausgeschnitten' und auf die Normale angewendet. |
Autor: | mathias [ Mi Dez 18, 2013 18:23 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Mein nächstes Problem, die Seiten des Würfels, welche eigentlich im Schatten sein müssten wird voll angeleuchtet. Ich dachte ich könnte diese Problem mit folgenden Befehlen lösen. Die Rückseite der Dreiecke wird nicht mehr gezeichnet, dies ist richtig, aber auf die Farbe hat es leider keine Einfluss. Code:
|
Autor: | glAwesome [ Mi Dez 18, 2013 18:31 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Dann zeigen die Normalen wahrscheinlich genau in die falsche Richtung. Also statt von ihr weg, zeigen sie zu der Lichtquelle hin. Wenn das Backface-Culling korrekt funktioniert, ist das schonmal gut. Vertausche mal bei der Berechnung der Normalen die Parameter des Kreuzproduktes bzw. negiere die Normalen. |
Autor: | mathias [ Mi Dez 18, 2013 19:01 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Meinst du die Vorzeichen bei der Normalen vertauschen ? Etwa so: Vector[i] := Vector[i] * -1; |
Autor: | glAwesome [ Mi Dez 18, 2013 19:04 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Genau. |
Autor: | mathias [ Mi Dez 18, 2013 22:50 ] | ||
Betreff des Beitrags: | Re: Wieso funktioniert dies ? | ||
Woher kommt der helle Fleck oben auf dem Linken Würfel ? Das Licht währe mit 10.0 ziemlich weit weg. Folgende Werte habe ich im FragmentShader eingesetzt: Code:
|
Autor: | damadmax [ Mi Dez 18, 2013 23:06 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Da Zitat: vec3 LightDirection = normalize(Position - LightPosition); normalisiert wird, bringt es IMHO nichts das Licht weiter weg zu setzen. Deswegen heisst die Variable wohl auch LightDirection. Poste uns doch mal die Werte, die du aktuell in deinen Vertex und Normal Arrays hast. |
Autor: | mathias [ Do Dez 19, 2013 18:32 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Hier meine Daten des Würfels. Wen ich es richtig verstehe müssten diese richtig sein. Code:
|
Autor: | glAwesome [ Do Dez 19, 2013 19:29 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Die Vertexdaten sehen gut aus. Was mir allerdings gerade aufgefallen ist: Hiermit Code:
Code:
|
Autor: | mathias [ Do Dez 19, 2013 22:18 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Code:
Linker Würfel. Der Umfang bleibt gleich, nur die Seiten Links und Rechts verändern sich. |
Autor: | mathias [ Mo Dez 23, 2013 21:32 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Mit dem Licht klappt es jetzt. Code:
|
Autor: | mathias [ Di Okt 07, 2014 17:23 ] |
Betreff des Beitrags: | Re: Wieso funktioniert dies ? |
Ich habe die Ursache des Problemes im 1. Posting raus gefunden. Der Auslöser war dieses Tutorial, dort werden Werte im Shader festgelegt. Code:
Den Pascal-Code, habe ich anhand des C-Code dieses Tutorial geschrieben. Den Shader habe ich aus dem Forum genommen viewtopic.php?f=10&t=11037&start=15 5. Post auf der 2. Seite. Man lernt immer mehr dazu. |
Seite 3 von 3 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |