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

Aktuelle Zeit: Di Jul 08, 2025 10:50

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



Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Mo Feb 13, 2012 20:16 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Mhh ich weis auch nich was da genau passiert. Ich weis nur das da die abtastrate erhöht wird, das hat weniger mit einer größeren Textur zu tun wenn ich das richtig verstanden habe. Normalerweise kann die Tiefe ja genauso geblittet werden..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Mo Feb 13, 2012 22:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Durch die höhere auflösung ist die abtastrate höher und damit könen bei kanten mehr informationen verwendet werden, um die treppen zu zeichnen.
Bei einer 1024 Auflösung und einem 2048 rendertarget würde sich die abtastrate verdoppeln umd damit auch bei treppen werte von doppelter genauigkeit zur verfühung stehen.
Natürlich hast du nicht doppelt so genaue werte zur verfügung, sondern ein von der gpu linear runter interpoloeetes bild. Es sollte 4x AA entsprechen, da 4 samples pro pixel verwendet werden. Die bilder sollten bei einem pixelgenauen vergleich unterschiedlich sein, da AA auf den x und y Achsen um 1/N Abstand Samples rendert und anschliessend mixed. Super sampling rendert aber nicht unbedingt im 1/N abstand, da es nicht pot beschränkt ist, wie AA. Man könnte z.B 1536x1024 rendern, dann wäre die frequenz auf X-Achse nur 1,5 und auf Y-Achse 1,0. Was in smoothen horizontalen linen aber ekeligen vertikalen linien resultieren würde.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Di Feb 14, 2012 06:33 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
TAK2004 hat geschrieben:
Durch die höhere auflösung ist die abtastrate höher und damit könen bei kanten mehr informationen verwendet werden, um die treppen zu zeichnen.
Bei einer 1024 Auflösung und einem 2048 rendertarget würde sich die abtastrate verdoppeln umd damit auch bei treppen werte von doppelter genauigkeit zur verfühung stehen.
Natürlich hast du nicht doppelt so genaue werte zur verfügung, sondern ein von der gpu linear runter interpoloeetes bild. Es sollte 4x AA entsprechen, da 4 samples pro pixel verwendet werden. Die bilder sollten bei einem pixelgenauen vergleich unterschiedlich sein, da AA auf den x und y Achsen um 1/N Abstand Samples rendert und anschliessend mixed. Super sampling rendert aber nicht unbedingt im 1/N abstand, da es nicht pot beschränkt ist, wie AA. Man könnte z.B 1536x1024 rendern, dann wäre die frequenz auf X-Achse nur 1,5 und auf Y-Achse 1,0. Was in smoothen horizontalen linen aber ekeligen vertikalen linien resultieren würde.


Nun was bedeutet das jetzt für mein Problem?? Der Tiefenpuffer ist doch nix anderes wie eine "Textur" mit Tiefenwerten von Near bis Far Plane. Also denk ich mal das diese auch mit Antialised sein sollte oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Di Feb 14, 2012 10:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ja.

Die skybox brwauchst du nicht in den tiefenpuffer schreiben, da du diese eh als letztes nicht transparentes objekt renderst und weist, das es das tiefste objekt ist. Das ist auch eine optimierungsgeschichte.
Hast du mal die einzelnen rendertargets raus gerendert?
Vieleicht ist einfach der tiefenpuffer , die dimensionen und skalierung zu klein und damit die präzission dahin. Wobei natürlich auch eine zu kleine nearclipping plane zu ungenauigkeit auf den wiet weg entfernten punkten führt.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Di Feb 14, 2012 10:52 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
bei Skybox magst du recht haben, aber ich render da ja noch viel mehr.. Z.b. Partikel, Transparente Objekte, Wasseroberflächen etc.. und überall zu den übergängen hab ich diese hässlichen Kanten.. Auch an meinem SSAO merk ich das der Tiefebuffer nicht AA ist..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Di Feb 14, 2012 16:12 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
http://www.humus.name/index.php?page=3D&ID=64 Humus hat in dem Bereich viel gemacht und bietet viele Demos und Erweiterungen an.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Mi Feb 15, 2012 20:30 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Könntest du mal ein Bild posten, damit man die "Kanten" sehen kann? Ein Bild sagt ja bekanntlich mehr als 1000 Worte.
Ich hatte selbst auch mal ein Problem mit Artefakten an den Rändern zur Skybox, was irgendwie durch anisotropen Filter verursacht wurde. Allerdings nur bei einer ATI-Karte, auf den NVidia-Grakas bei mir zuhause funktionierte es normal. Das hat vllt nichts mit deinem Problem zu tun, aber es zeigt wie vielfältig die Problemursachen sein können.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Do Feb 16, 2012 10:14 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
so hier nun ein paar Bildchen. Nun die Kanten zur Skybox hab ich jetzt erstmal nicht mehr, da ich jetzt die Skybox auch im GBuffer mit rendere... Aber dennoch hab ich probleme bei SSAO und bei den Wasserflächen.

Hier mal ein Bild vom SSAO mit MSAA:
Dateianhang:
SSAO_MSAA.JPG


und hier ohne MSAA:
Dateianhang:
SSAO_OMSSA.JPG


hier noch ein bild, wo ich die Skybox noch nicht im GBuffer hatte. Da hab ich diese mit dem Depthbuffer aus dem GBuffer gerendert. Den Depthbuffer hab ich mir einfach im neuen FBO über:
Code:
  1.  
  2.   glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, TMultisampleFBO(gBuffer).DepthBuffer);
  3.  


wieder reingeholt.
Dateianhang:
MSAA_1.JPG


hier kann man sehen das die Tiefenmap immernoch kantik ist. ADD: .DepthBuffer ist der Tiefenpuffer vom ZielFBO nicht vom MultisampleFBO.


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Do Feb 16, 2012 10:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Wieso ist in der tiefenmap farbe ? Die skybox ist obenrechts zu sehen.
Wegen den kanten kann ich nur sagen, das sieht wirklich schlecht aus.
Kann es sein, dass die Konfiguration des Tiefenpuffers nicht ganz korrekt ist?
Da fehlt mir ein bisschen farbvarianz in den tiefenwerten.
Wie sieht das Diffusetarget und normaltarget buffer aus ?
Sind dort auch die treppen drin ?

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Do Feb 16, 2012 10:48 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
nee das MSAA_1.jpg ist nicht direkt die Tiefenmap.. das ist wie folgt gerendert:
hier PseudoCode:
Code:
  1.  
  2.  BindMultisampleFBO;
  3.   RenderScene
  4.  BlitToZielFBO
  5.  ...
  6.  BindOtherNotMultiSampledFBO
  7.  bindDepthBufferFromZielFBO
  8.  RenderSkyBox;
  9.  GetDepthTextureForSSAO //über glCopyTexImage2D
  10. ...
  11.  


Ich mach gleich mal nochn paar bilder der einzelnen Attachments. Das NormalAttachment und ColorAttachments des MS FBOs sehen alle TOP aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: So Feb 19, 2012 19:04 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Ich hoffe mal es ist okay da ich meine Frage gleich an dem Thema anschließe aber es geht auch um FBO's und Antialising.
Zum Test wollte ich einfach nur einen DepthBuffer mit 4 samples bearbeiten - folgender Code:
Code:
  1.         glGenTextures(1, &depth);
  2.         glBindTexture(GL_TEXTURE_2D, depth);
  3.         glTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, Size, Size, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0);
  4.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  5.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  6.         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  7.         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
  8.         glBindTexture(GL_TEXTURE_2D, 0);
  9.  
  10.         glGenRenderbuffers(1, &depthAA);
  11.         glBindRenderbuffer(GL_RENDERBUFFER, depthAA);
  12.         glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4, GL_DEPTH_COMPONENT, Size, Size);
  13.         glBindRenderbuffer(GL_RENDERBUFFER, 0);
  14.  
  15.         glGenFramebuffers(1, &fbo);
  16.         glBindFramebuffer(GL_FRAMEBUFFER, fbo);
  17.         glDrawBuffer(GL_NONE);
  18.         glReadBuffer(GL_NONE);
  19.         glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthAA);
  20.         glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,GL_TEXTURE_2D, depth, 0);
  21.         glBindFramebuffer(GL_FRAMEBUFFER, 0);


Dann das rendern:
Code:
  1. glBindFramebuffer(GL_FRAMEBUFFER, fbo);
  2. -Viewport anpassen
  3. - Rendern
  4. glBindFramebuffer(GL_FRAMEBUFFER, 0);


Funktioniert nur leider nicht, kann mir jemand sagen was ich falsch mache?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Mo Feb 20, 2012 07:39 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Was funktioniert nicht? Willst du direkt im Shader auf die Samples zugreifen? Wenn nein musst du den MultiSample FBO am ende in ein normales FBO blitten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Mo Feb 20, 2012 08:10 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Vllt. war nur der Depth-Buffer ein schlechtes Beispiel!

Ich dachte ich kann einfach ein FBO erstellen mit Color+Depth und füge dann eben jeweils den Teil mit glRenderbufferStorageMultisample hinzu (so wie im Code oben schon gezeigt). Dann binde ich eben mein FBO, rende etwas meiner Wahl, FBO unbinden und stelle dann die FBO Texture einfach auf einem Quad da und würde dort dann eben gerne den AA Effekt sehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Mo Feb 20, 2012 08:29 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
ne so einfach ist das nich.. Du kannst auch direkt keine Texturen an ein Multisample FBO binden, sondern du musst dir ein Weiteres FBO (ohne Samples) erstellen, dort die Texturen binden und am Ende via glBlitFramebufferEXT die Daten vom MSFBO in den Zielfbo kopieren, dabei wird erst "runterscaliert" und sozusagen das AA angewendet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBO + MRT + Antialising
BeitragVerfasst: Mo Feb 20, 2012 22:31 
Offline
DGL Member

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

Ich wüsste nochmal gerne, ob folgendes Szenario überhaupt klappen würde:
Wegen dem Shadowmapping erstelle ich mir ein Depth-Image in einem FBO, da es allerdings einen Treppeneffekt (Aliasing) gibt, dachte ich es liese sich vllt. mit dem Multisample vom FBO verbessern. Würde das denn klappen?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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.010s | 16 Queries | GZIP : On ]