4 Stimmen

Mona Lisa nach PBO rendern

Nach der Lektüre este Artikel wollte ich versuchen, das Gleiche zu tun, aber um die Dinge zu beschleunigen das Rendering Teil habe ich wollte auf der GPU durchgeführt werden, unnötig zu sagen, warum die Dreiecke oder andere geometrische Objekte sollten auf GPU statt CPU gerendert werden.

Hier ist ein schönes Bild des Prozesses:

Mona Lisa

Die Aufgabe:

  1. Rendering 'Menge von Scheitelpunkten'
  2. Schätzen Sie die Differenz Pixel für Pixel Pixel für Pixel zwischen der gerenderten "Scheitelpunktmenge" und dem Mona-Lisa-Bild (die Mona Lisa befindet sich auf der GPU in der Textur oder im PBO, kein großer Unterschied)

Das Problem:

Bei Verwendung von OpenCL oder Cuda mit OpenGL FBO (Frame Buffer Object) Erweiterung.

In diesem Fall gemäß unserer Aufgabe

  1. Rendering 'Menge von Scheitelpunkten' ( behandelt von OpenGL )
  2. Schätzen Sie die Differenz Pixel für Pixel Pixel für Pixel zwischen der gerenderten "Scheitelpunktmenge" und dem Bild der Mona Lisa ( von OpenCL oder Cuda verarbeitet )

In diesem Fall bin ich also gezwungen, Kopien von FBO zu PBO (Pixel Buffer Object) zu machen, um die gerenderte 'Menge von Vertices' für OpenCL/Cuda verfügbar zu machen. Ich weiß, wie schnell sind Device to Device Speicher Kopien, aber nach der Tatsache, dass ich Tausende von diesen Kopien tun müssen, macht es Sinn, dies nicht zu tun...

Dieses Problem lässt drei Möglichkeiten offen:

  1. Rendern mit OpenGL nach PBO ( irgendwie, ich weiß nicht wie, es könnte auch unmöglich sein, dies zu tun )
  2. Rendern Sie das Bild und schätzen Sie den Unterschied zwischen den Bildern mit OpenGL ( irgendwie, ich weiß nicht wie, vielleicht mit Hilfe von Shadern, das einzige Problem ist, dass ich noch nie einen Shader geschrieben habe und das könnte Monate Arbeit für mich bedeuten... )
  3. Rendern Sie das Bild und schätzen Sie den Unterschied zwischen den Bildern mit OpenCL/Cuda ( Ich weiß, wie man das macht, aber es wird auch Monate dauern, bis eine stabile und mehr oder weniger optimierte Version des Renderers in OpenCL oder Cuda implementiert ist )

Die Frage

Kann mir jemand dabei helfen, einen Shader für den obigen Prozess zu schreiben, oder vielleicht einen Weg aufzeigen, wie man die Mona Lisa nach PBO rendert, ohne Kopien von FBO...

1voto

Russ Clarke Punkte 16993

Mein Bauchgefühl ist, dass der Shader-Ansatz auch das gleiche IO-Problem haben wird, können Sie sicherlich Texturen in einem Shader vergleichen, solange die GPU PS 4.0 oder höher unterstützt; aber Sie haben immer noch, um die Quelltextur (Mona Lisa) auf das Gerät in erster Linie zu bekommen.

Edit: Ich habe ein bisschen herumgestöbert und dieser Forumsbeitrag könnte einen Einblick geben:

http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=221384&page=1 .

Das Poster, Komat, bietet ein Beispiel für den Shader auf der 2. Seite.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X