Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jun 04, 2024 08:02

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Normalenglättung
BeitragVerfasst: Mi Mär 09, 2011 18:09 
Offline
DGL Member

Registriert: Mi Mär 09, 2011 16:53
Beiträge: 3
Hi,
es gibt ein Problem mit der Glättung der Normalen. Ich hab mir jetzt einen kleinen Shader geschrieben:

Der Vertex Shader:
Code:
varying vec4 vert_pos;
varying vec3 vert_nor;

void main() {
   vert_pos = ftransform();
   vert_nor = normalize(gl_NormalMatrix * gl_Normal);
   gl_Position = vert_pos;
}


Der Fragment Shader:
Code:
varying vec3 vert_nor;
varying vec4 vert_pos;

const vec3 light_pos = vec3(1.0, 1.0, 1.0);

void main() {
   float brightness = max(dot(vert_nor, light_pos) / (length(vert_nor) * length(light_pos)), 0.0);
   gl_FragColor = vec4(brightness, brightness, brightness, 1.0);
}


Ich habe eine mit Blender generierte Kugel mit Normalen als OBJ eingelesen. Das ist die Antwort:
Dateianhang:
wieesist.png
wieesist.png [ 10.77 KiB | 4919-mal betrachtet ]

Warum werden die Normalen nicht für jedes Face in dem Fragment Shader interpoliert?

Liebe Grüße,
Raz


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normalenglättung
BeitragVerfasst: Mi Mär 09, 2011 18:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Warum werden die Normalen nicht für jedes Face in dem Fragment Shader interpoliert?

Die Normalen werden interpoliert. Allerdings bringt das nur etwas wenn die Normalen auch unterschiedlich sind. Du scheinst für alle vier Vertices eines Quads jeweils die gleiche Normale zu setzen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normalenglättung
BeitragVerfasst: Mi Mär 09, 2011 18:18 
Offline
DGL Member

Registriert: Mi Mär 09, 2011 16:53
Beiträge: 3
Also werden sie von Blender falsch gesetzt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normalenglättung
BeitragVerfasst: Mi Mär 09, 2011 18:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Gut möglich.

Tipp: Falls du zufällig sowieso nur einfache Kugelen rendern möchtest: Nimm doch einfach im Shader die normalisierte Vertexposition als Normale. Idealerweise hat dann natürlich die Kugel bereits den Radius 1 und wird erst später auf die gewünschte Größe skaliert.

_________________
Yeah! :mrgreen:


Zuletzt geändert von Coolcat am Mi Mär 09, 2011 18:27, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normalenglättung
BeitragVerfasst: Mi Mär 09, 2011 18:26 
Offline
DGL Member

Registriert: Mi Mär 09, 2011 16:53
Beiträge: 3
Ich sehs gerade. Stimmt. Also muss ich die mir wohl selber generieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normalenglättung
BeitragVerfasst: Mi Mär 09, 2011 21:13 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hast du mal versucht in Blender das Mesh auszuwählen und dann F9 (Editing) zu drücken, unter Links and Materials gibts nen schönen Button Set Smooth.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 16 Queries | GZIP : On ]