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:
Die Aufgabe:
- Rendering 'Menge von Scheitelpunkten'
- 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
- Rendering 'Menge von Scheitelpunkten' ( behandelt von OpenGL )
- 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:
- Rendern mit OpenGL nach PBO ( irgendwie, ich weiß nicht wie, es könnte auch unmöglich sein, dies zu tun )
- 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... )
- 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...