PostProcessing
-
Ich habe mich nun einige Zeit mit Shadern beschäftigt und auch Shader beim Rendern von einzelnen Objekten verwenden können. Jetzt wollte ich mich mal ans PostProcessing wagen. Für den Anfang wollte ich einfach die Farbe umkehren, doch gleich das erste Problem: Wie kann ich mit einem Shader das ganze Bild beeinflussen?
Ich dachte mir, ich könnte ja ein Rechteck über den ganzen Bildschirm zeichnen, aber dann wird ja nur das Rechteck bzw. dessen Farbe vom Shader verändert.
Mein zweiter Lösungsansatz war, eine Textur über das Rechteck zu legen. Aber was, wenn man eine Auflösung von z.B. 800x600 hat. Dann müsste man eine 1024x1024 Textur erstellen, was reine Verschwendung wäre.
Kennt ihr da eine bessere Lösung?
-
die loesung ist eine 800*600 textur zu nutzen.
-
Wird das denn von jeder Graka unterstützt? Ich dachte, Texturen sollten immer Pow2 sein.
-
sollte jede die pixelshader2 kann auch koennen denk ich mir.
-
Danke, es funktioniert jetzt.
Eine Frage habe ich noch: Den Shader habe ich jetzt als kompilierten Bytecode. Kann ich den auch irgendwie in der .exe meines Programms speichern, sodass ich nicht alle möglichen Shader-Dateien separat mitiefern muss?
-
Du kannst Daten als Ressource in deine Exe mit einbinden.
-
Super, danke! Das funktioniert.

-
Ich würde eher eine RECT-Textur nehmen, die ist weiter verbreitet, und für Anwendungen wie Postprocessing, Vollbild-Bilder oder Capturing gedacht.
-
Was ist eine Rect-Textur und gibt's die auch in DirectX?
-
gibt es nicht und es ist eine textur die dem treiber mitteilt dass der shader die texturcoordinaten so umstellt dass du nicht von 0. bis 1. sondern von 0 bis texturaufloesung indizieren kannst.
meiner erfahrung nach ist es angenehmer mit normalen texturen zu arbeiten, da du bei posteffekten vielleicht auch mal die textur auf ein objekt projezieren moechtest z.b. um ein refraktierendes objekt zu simulieren oder weil du verzerrungen durch rumfliegende munition willst und das macht man dann nicht im screenspace (also 0|0-800|600) sondern im projection space (-1 bis +1).
-
Dann kommt das für mich leider nicht in Frage. Aber trotzdem danke für den Tipp und die Erklärung.
-
Ist ja auch irgendwie bloede, das bei jeder Aufloesung wieder umrechnen zu muessen. Klar, ist simpel, aber warum soll man sich den Aufwand machen? f'`8k
Gruß, TGGC (making great games since 1992)