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?
compute-shader
opencl
cuda
FrickeFresh
quelle
quelle
Antworten:
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
quelle