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..
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
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?
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
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..
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.
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:
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
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:
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.
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.
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.
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?
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.