real-time depth-of-field?



  • Hi Leute,

    Ich such ne Möglichkeit, depth-of-field in meine Applikation einzubauen, d.h. Objekte vor und nach dem fokusierten Objekt sollten verschwommen sein.. Sachen wie "mehrmals aus verschiedenen Blickwinkeln rendern" liegt dabei aber aus performancegründen nicht drin.
    Kennt Ihr da ne gute Möglichkeit? Evt. Erfahrung damit? Tutorials?

    thx



  • Es gibt doch ein Beispielprogramm dafür im DirectX-SDK ("DepthOfField").
    Man rendert die Szene in ein Render-Target und die Tiefe in den Alphakanal. In einem Pixel-Shader vergleicht man dann die Tiefe eines Pixels mit der "Fokustiefe" und je nach Differenz verwischt man den Pixel. Das funktioniert so, indem man die Render-Target-Textur z.B. gleich 10-mal sampelt. Wenn es unscharf sein soll, dann liegen diese 10 Sampling-Punkte weiter auseinander um den Pixel herum (und einer genau drauf). Wenn es 100% scharf sein soll, dann liegen sie alle genau auf dem einen Pixel drauf. Natürlich gibt's dann noch Zwischenstufen.



  • Mist, Riker hats schond as SDK sample erwähnt. 😎

    Bye, TGGC (Reden wie die Großen)



  • TomasRiker schrieb:

    Es gibt doch ein Beispielprogramm dafür im DirectX-SDK ("DepthOfField").
    Man rendert die Szene in ein Render-Target und die Tiefe in den Alphakanal. In einem Pixel-Shader vergleicht man dann die Tiefe eines Pixels mit der "Fokustiefe" und je nach Differenz verwischt man den Pixel. Das funktioniert so, indem man die Render-Target-Textur z.B. gleich 10-mal sampelt. Wenn es unscharf sein soll, dann liegen diese 10 Sampling-Punkte weiter auseinander um den Pixel herum (und einer genau drauf). Wenn es 100% scharf sein soll, dann liegen sie alle genau auf dem einen Pixel drauf. Natürlich gibt's dann noch Zwischenstufen.

    Hm, ichvergess es immer wieder: Ich benutz OpenGL 🙂 Aber das Prinzip ist wohl dennoch dasselbe. Ich kuck mir die DX SDK in diesem Fall wiedermal an.
    Hast Du sowas schon mal gemacht? Scheint ziemlich performancehungrig zu sein, oder?
    nVidia hat n'Demo wo sie auch so vorgehen, aber davon rücken sie leider nur die .exe raus, kein Quellcode..

    thx

    PS: Ich schuld Dir n'Bier 🙂 Dein Buch hat mir während des Studium mal ne gute Note bei ner Projektarbeit eingebracht 😃



  • *Thread push*

    Hmmm.. Ich weiss hier nicht mehr weiter.. Alle depth-of-field demos (DX, nVidia, ATI) legen die Tiefeninformation im alpha-Kanal ab. Ich brauch den aber fuer die alpha-Information. Irgendeine Idee, wie ich dem Shader die Tiefeninformation mitteile?.. 😕


Log in to reply