Diskussion:Tiefenunschärfe

Aus DGL Wiki
Version vom 25. Dezember 2009, 13:51 Uhr von Coolcat (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Hi, das ganze ist insgesamt ein schöner Artikel und Tiefenunschärfe ist auch ein schöner Effekt. Unter anderem weiß ich nun endlich wozu der Accum-Buffer gut …“)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Hi, das ganze ist insgesamt ein schöner Artikel und Tiefenunschärfe ist auch ein schöner Effekt. Unter anderem weiß ich nun endlich wozu der Accum-Buffer gut ist. Juhu! :) Da es sich aber um einen allgemeinen Artikel und nicht um ein Tutorial handelt (oder?), solltest du vielleicht einen Satz der Art "eine Möglichkeit zur Implementierung ist..." einbauen. Es gibt immer andere Techniken, zum Beispiel fällt mir spontan die folgende ein, wobei ich diese allerdings nicht probiert habe. Das Ergebnis müsste aber ähnlich sein und könnte bei einer komplexen Szene sogar etwas schneller in der Berechnung sein.

  • Szene mit Hilfe eines FBO in die Texturen "Color" und den Tiefenbuffer "Depth" rendern.
  • Textur "Color" bluren, z.B. mit diesem Blur-Shader => Textur "Color-Blur"
  • Die Texturen "Color", "Depth" und "Color-Blur" binden und ein Bildschirmfüllendes Quad rendern. Im Shader kannst du die Position eines Pixels mit Hilfe von gl_FragCoord und dem Tiefenwert aus der Textur "Depth" rekonstruieren. Diese Position wird durch Anwendung der inversen Projektionsmatrix und anschließendem durch w Teilen zurück in den View-Space transformiert. Die Entfernung dieser Position vom Fokus-Punkt (ebenfalls im View-Space) ist dann der Blur-Radius. Entsprechend dem Blur-Radius interpolierst zwischen den Texturen "Color" und "Color-Blur".

Das widerspricht natürlich deiner Aussage, dass es zu Umständlich wäre den Radius für jeden Punkt zu berechnen. ;)
--Coolcat 13:51, 25. Dez. 2009 (CET)