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

Aktuelle Zeit: So Jun 16, 2024 16:42

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: ShadowBug
BeitragVerfasst: Sa Feb 18, 2012 14:54 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Hey,

Ich habe bei meiner Perspective vom Shadow einen ziemlich kleinen Fov Wert (eher eine Spielerei aktuell) und mir ist folgendes Verhalten aufgefallen, wenn sich der Shadow am Rand des sichtbaren Bereichs befindet (siehe Anhang).

Was ist das (also wie nennt man diesen Bug) und was kann man dagegen tun? :)



MfG
AMD


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ShadowBug
BeitragVerfasst: So Feb 19, 2012 10:00 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Ja das Problem hab ich auch. Liegt irgendwie an der Auflösung der tiefenmap. Das musst mal near und far bissl anpassen. Für Sonne wäre eine ortho Projektion besser..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ShadowBug
BeitragVerfasst: So Feb 19, 2012 11:17 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Also bei glOrtho wird irgendwie kein Schatten mehr dargestellt :roll: Ich arbeite auch an anderer Stelle mit dem Befehl aber beim Shadow klappts nicht so ganz - muss ich nochmal testen.
Zu Far und Near:
gluPerspective(Shadow_Fov, 1.0f, 1.0f, 500.0f);

Eig. nichts besonderes dabei.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ShadowBug
BeitragVerfasst: So Feb 19, 2012 11:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Was verstehst du den unter einem "ziemlich kleinen Fov Wert"?

gluPerspective verwendet nämlich die Co-Tangente, also "1/tan(fov/2)". Für Werte in der Nähe von Null strebt das folglich gegen unendlich. Ich vermute einfach ein nummerisches Problem hier.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ShadowBug
BeitragVerfasst: So Feb 19, 2012 12:21 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Also mein Fov Wert ist in dem Beispiel oben 20 - was ich doch als eher klein empfinde da ich sonst 60 nutze.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ShadowBug
BeitragVerfasst: So Feb 19, 2012 20:27 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Für mich sieht das so aus als ob diese verlängerten schattigen Streifen irrtümlicherweise im Schatten liegen weil dort die Shadowmap nicht mehr hinreicht. Die sind doch das Problem oder?
Zumindest hatte ich bei mir sowas auchmal. Verursacht wird das durch ein GL_TEXTURE_WRAP mit GL_CLAMP_TO_EDGE. Dadurch werden die Randtexel für Punkte außerhalb der Textur fortgesetzt. Ein GL_REPEAT wäre aber auch falsch, dann würden sich die Schatten aber nicht so langziehen.
Wenn man stattdessen GL_CLAMP_TO_BORDER verwendet und die GL_TEXTURE_BORDER_COLOR auf (1,1,1,1) könnte man die Schatten in Bereichen außerhalb der Shadowmap verhindern.
Alles natürlich unter der Voraussetzung, dass ich dein Problem richtig verstanden habe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ShadowBug
BeitragVerfasst: So Feb 19, 2012 20:53 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Genau das ist das Problem! Dieser Bereich ist bereits außerhalb der Shadowmap aber trotzdem entstehen dort so komische Schatten!

Ich nutze bisher eben GL_CLAMP_TO_EDGE und da lag auch das Problem!
Habe es nun mit deine Methode probiert und es funktioniert super :D

Noch der Code falls es mal jemand anderen interessiert:
Code:
  1.         float cp[] = {1,1,1,1};
  2.         glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, cp);
  3.         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
  4.         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);



Also danke für die Hilfe :)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 19 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.047s | 17 Queries | GZIP : On ]