Compute Shader gegen CUDA / OpenCL


8

Ich habe erst kürzlich etwas über den Compute Shader gelernt und es sieht so aus, als hätte ich die gleiche Idee wie die parallele Programmierung, die Sie mit CUDA oder OpenCL machen würden, aber in der Shader-Pipeline.

Wenn ich eine Million Würfel in einer Szene zeichnen möchte, sollte ich eine Methode über die andere oder beide anwenden. Wenn beides, wie können Sie das aufteilen, damit die GPU nicht versucht, sowohl den Shader als auch einen anderen Prozess gleichzeitig zu berechnen?


2
Warum möchten Sie GPGPU überhaupt zum Zeichnen von Millionen Würfeln verwenden?
Derag

3
Compute-Shader werden zum Berechnen von Workloads verwendet, nicht zum Rendern. Als Faustregel gilt, dass Sie die Rendering-Pipeline verwenden sollten, wenn Sie eine Rasterung benötigen (dh die Verarbeitung der triangulierten Geometrie in Pixel). Wenn Sie nur große Datenmengen verarbeiten müssen, sollten Sie compute verwenden. Ich interessiere mich auch für fundierte Argumente für und gegen Compute Shader und CUDA / OpenCL (mit Grafik-API-Interop). Eine, von der ich gehört habe, ist eine bessere Warteschlange für Computer-Workloads mit der rechnerspezifischen API, aber ich würde gerne mehr wissen (dh wie kommt asynchrones Rechnen ins Spiel).
IneQuation

@Derag Ich versuche nur, meinen Würfelfetisch so schnell wie möglich zu füttern
FrickeFresh

Wenn Sie wollen eine Million Würfel, verwenden ray-Marsch :) zeichnen
russ

Antworten:


7

Es ist heutzutage nicht ganz richtig, sich Compute-Shader als "in der Shader-Pipeline" vorzustellen, in dem Sinne, dass Ihre Vertex- und Fragment-Shader buchstäblich in eine Pipeline eingebunden sind. Compute-Shader sind derzeit an nichts "angeschlossen", können die Rasterisierung nicht steuern oder die Ausgaben der Rasterisierung direkt verbrauchen.

Sie können jedoch Speicherressourcen verbrauchen und produzieren, die auch von Zeichnungsaufrufen auf relativ effiziente Weise verwendet werden. OpenCL macht dies ziemlich schwierig (siehe zum Beispiel https://software.intel.com/en-us/articles/opencl-and-opengl-interoperability-tutorial ). So können Sie effizient berechnen integrieren Pässe in Ihrem Renderer, aber es wird nicht in die Rendering integrierte Pipeline

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.