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

Aktuelle Zeit: Do Mai 16, 2024 19:45

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Aug 25, 2012 17:09 
Offline
DGL Member

Registriert: Do Mär 04, 2010 22:45
Beiträge: 13
Programmiersprache: Delphi
Ich wollte in ein Projekt einen Blurshader integrieren. Das ging auch alles noch gut solange ich kein FBO verwendet habe.
Aber da ein FBO einige Vorteile bringt, wollte ich das Bild erst ins FBO rendern und dann ausgeben. Hat auch alles funktioniert nur waren danach solche Artefakte zu sehen(Bei diesem Bild render ich einfach ein weißes Quad und lass dann den Shader laufen, der das ganze ausblendet und verwischt, dabei entstehen jedoch ungewollt diese Linien):
Bild
Wenn ich den Shader nicht benutze treten diese Linien nicht auf, ebenso wenn ich im Shader die Blurfunktion weglasse.
Ich habe 2 verschiedene Blurshader versucht (einen von mir und einen aus der Shadersammlung). Beide erzeugen Linien, jedoch unterschiedliche. Als ich das Programm auf einem anderen PC getestet habe, sind wieder andere Linien (meist eine Diagonale) enstanden.
Ich hoffe ich hab mich nicht zu unverständlich ausgedrückt und dass jemand vllt das Problem kennt und/oder eine Lösung weiß.


Dateianhänge:
Unbenannt.png [62.92 KiB]
Noch nie heruntergeladen


Zuletzt geändert von Lom am Sa Aug 25, 2012 17:50, insgesamt 1-mal geändert.
Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Aug 25, 2012 17:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Häng das bild bitte als Anhang an, da es so nicht angezeigt wird.

grüße

_________________
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  
BeitragVerfasst: Di Aug 28, 2012 07:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
da scheint aber was ganz schön schief zu laufen, kannst du Code posten?

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Aug 28, 2012 11:58 
Offline
DGL Member

Registriert: Do Mär 04, 2010 22:45
Beiträge: 13
Programmiersprache: Delphi
Das mit dem Code wird ein bisschen schwer, weil der ziemlich unübersichtlich ist. Ich versuch es trotzdem Mal:
Also der Shader:
Code:
  1.  
  2. #version 120
  3.  
  4. uniform sampler2D uTexture;
  5. uniform vec2 uShift;
  6.  
  7. void main()
  8. {
  9.     vec2 texCoord = gl_TexCoord[0].xy;
  10.     vec3 color = vec3(0.0, 0.0, 0.0);
  11.     for (int i=-1;i < 2; ++i)
  12.     {
  13.     for (int j=-1;j < 2; ++j)
  14.     {
  15.     color += texture2D(uTexture,texCoord.xy+vec2(i,j)*uShift).rgb/9.0;
  16.     }
  17.     }
  18.     gl_FragColor = vec4(color,1.0)*gl_Color;
  19. }
  20.  


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Aug 29, 2012 06:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
es ging mir eher ums FBO usw, der Shader selbst interessiert bei sowas eher selten :)

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Aug 29, 2012 12:56 
Offline
DGL Member

Registriert: Do Mär 04, 2010 22:45
Beiträge: 13
Programmiersprache: Delphi
Aber das komische ist ja, wenn ich einen Standardshader benutze tritt der Effekt nicht auf.
Code:
  1. uniform sampler2D Texture0;
  2.  
  3. void main(void)
  4. {
  5.   gl_FragColor = texture2D(Texture0, gl_TexCoord[0].xy);
  6. }


Hier der Code mit dem ich das FBO erstelle (ein bisschen vereinfacht):
Code:
  1.  glGenFramebuffers(1, @fbo);
  2.  glBindFramebuffer(GL_FRAMEBUFFER, fbo);
  3.  glGenRenderbuffers(1, @depthbuffer);
  4.  glBindRenderbuffer(GL_RENDERBUFFER, depthbuffer);
  5.  glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, Width,Height);
  6.  glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthbuffer);
  7.  glGenTextures(1, @tex);  
  8.  glBindTexture(GL_TEXTURE_2D, tex);
  9.  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  10.  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  11.  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,  Width, Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil);
  12.  glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0);
  13.  glBindFramebuffer(GL_FRAMEBUFFER, 0);    


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Aug 29, 2012 17:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ist das uShift-Uniform korrekt gesetzt? Es sollte 1/texWidth bzw. 1/texHeight sein.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Aug 29, 2012 18:26 
Offline
DGL Member

Registriert: Do Mär 04, 2010 22:45
Beiträge: 13
Programmiersprache: Delphi
Ja, ist es


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Aug 30, 2012 08:23 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Lom hat geschrieben:
der das ganze ausblendet und verwischt,


Was heisst denn "ausblendet"?

hast du evtl nur vermeintlich relevante Teile des Shaders gepostet?


Mal abgesehen davon, würde ich die Division durch 9.0 aus der Schleife rausziehen und ans Ende packen. Spart 8 Divisionen.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Aug 30, 2012 15:10 
Offline
DGL Member

Registriert: Do Mär 04, 2010 22:45
Beiträge: 13
Programmiersprache: Delphi
damadmax hat geschrieben:
Mal abgesehen davon, würde ich die Division durch 9.0 aus der Schleife rausziehen und ans Ende packen. Spart 8 Divisionen.
Ja stimmt, ich bin noch ziemlich Anfänger bei Shadern

Ausblenden hatte ich mal im Shader, da hatte ich noch die Zeile eigefügt:
Code:
  1. color -= 0.005
aber dann hab ich das geändert und mach das jetzt außerhalb vom Shader mit glcolor3f(0.99,0.99,0.99);
und ich hab den ganzen Shader gepostet(bzw. die auskommentierten Teile weggelassen).
Und mit Ausblenden meine ich langsam alles dunkler machen, zu schwarz ausblenden.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.031s | 18 Queries | GZIP : On ]