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

Aktuelle Zeit: Mi Apr 24, 2024 19:30

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Cascaded Shadow Mapping Artefakt
BeitragVerfasst: Mo Mai 04, 2015 14:49 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Hi,

Habe kürzlich CSM implementiert, leider treten an den Trennlinien unschöne Artefakte auf.
Auf dem Bild kann man gut erkennen, dass die Auflösung der shadow map abnimmt, um so weiter die Pixel entfernt sind.
Leider sind die Trennlinien auch sehr gut an den mir unbekannten Artefakten zu erkennen.
Weiß jemand, was das ist?
Glaube, es hat nix mit z-fighting zu tun.
Die Schattenwerte werden über variance shadow maps erzeugt, blurren der Schattentexturen ändert nix, auch verschiedene far- und nearplanes hab ich sowohl für die Licht- als auch für die Kameraprojektionsmatrix probiert, ändert auch nix.
Wenn ich im Fragmentshader die Maps einzeln anzeigen lasse, sind dort keine Artefakte zu sehen.
Bild
Grüße,
Vinz

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cascaded Shadow Mapping Artefakt
BeitragVerfasst: Mo Mai 04, 2015 16:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Mhh keine Ahnung, aber du kannst dir ja mal die beiden MSDN Artikel zu Problemen bei Shadowmapping:
https://msdn.microsoft.com/en-us/library/windows/desktop/ee416324%28v=vs.85%29.aspx
 

und Cascaded Shadow Mapping:
 https://msdn.microsoft.com/en-us/library/windows/desktop/ee416307(v=vs.85).aspx

anschauen vielleicht hilft es ja. Vermutlich kommt es beim Blending der einzelnen Steps?

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cascaded Shadow Mapping Artefakt
BeitragVerfasst: Mo Mai 04, 2015 17:06 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Geblendet wird noch gar nicht, sondern nur der Entfernung entsprechend ein Index für die Textur und die Texturkoordinaten gesetzt.
Code:
  1. if(gl_FragCoord.z < far_d.x) index = 0;
  2. else if (gl_FragCoord.z < far_d.y) index = 1;
  3. else if(gl_FragCoord.z < far_d.z) index = 2;

So wie hier beschrieben: http://developer.download.nvidia.com/SD ... w_maps.pdf

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cascaded Shadow Mapping Artefakt
BeitragVerfasst: Di Mai 05, 2015 09:33 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Hab weiter rumprobiert.
Es liegt nicht daran, dass es Variance Shadow Maps sind und es tritt auch auf wenn ich die MAG und MIN-Filter auf Nearest setze...
Wirklich seltsam: Wenn ich mir die Bereiche anzeigen lasse, in denen ein gewisser Index vorliegen soll passt alles, ebenso wenn ich die Maps einzeln anzeigen lasse.
Das Ganze ist mal wieder mehr als die Summe seiner Teile...
Weiß jemand was? Zumindest, was ich ausprobieren könnte, um den Fehler zu finden?

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cascaded Shadow Mapping Artefakt
BeitragVerfasst: Di Mai 05, 2015 09:38 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Habs grad auch ausprobiert mit einem extra FBO für jede Shadowmap, keine Veränderung.

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cascaded Shadow Mapping Artefakt
BeitragVerfasst: Di Mai 05, 2015 13:24 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
So, Entwarnung, jetzt klappts.

Ich hatte die Texturen so übergeben:
Code:
  1.  
  2.  
  3.             for(int i = 0; i < Nshmaps; ++i)
  4.             { glActiveTexture(GL_TEXTURE9+i);
  5.                glBindTexture(GL_TEXTURE_2D,  depthTexture[i]);
  6.                char buf[32];
  7.                sprintf(buf, "shadowTexture[%d]", i);
  8.                texture_location = glGetUniformLocation(program, buf);
  9.                glUniform1i(texture_location, 9+i);
  10.             }
  11.  
  12.  


und dann im Shader mit uniform sampler2D shadowTexture[4];
deklariert. Warum das zu den Artefakten führt, keine Ahnung.
Wenn ich die Texturen so übergebe
Code:
  1.  
  2.             for(int i = 0; i < Nshmaps; ++i)
  3.             { glActiveTexture(GL_TEXTURE9+i);
  4.                glBindTexture(GL_TEXTURE_2D,  depthTexture2[i]);
  5.                char buf [32];
  6.                sprintf(buf, "shadowTexture%d", i);
  7.                texture_location = glGetUniformLocation(program, buf);
  8.                glUniform1i(texture_location, 9+i);
  9.             }
  10.  

und dann im Shader so aufrufe:
sampler2D shadowTexture0;
sampler2D shadowTexture1; ...
klappt es.
Wollte eh auf 3D-Textur umstellen, hätte ich das mal früher gemacht... :roll:

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


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 » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 57 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 : 3.328s | 17 Queries | GZIP : On ]