Kann ich Shader für die Berechnung einiger Werte verwenden und sie dann zur weiteren Verwendung zurückgeben?Verwenden von Shader für Berechnungen
Zum Beispiel sende ich Mesh auf GPU, mit einigen Parametern darüber, wie es geändert werden soll (Position der Scheitelpunkte ändern), und zurück resultierende Mesh? Ich sehe das eher unmöglich, weil ich keine Variable für die Kommunikation von Shadern zu CPU gesehen habe. Ich benutze GLSL, also gibt es nur Uniform, Attribute und Unterschiede. Sollte ich ein Attribut oder eine Uniform verwenden, wären sie nach dem Rendern noch gültig? Kann ich die Werte dieser Variablen ändern und sie in der CPU lesen? Es gibt Methoden zum Mapping von Daten in GPU, aber würden diese geändert und gültig sein?
So denke ich darüber nach, obwohl es auch andere Wege geben könnte, die mir unbekannt sind. Ich würde mich freuen, wenn mir jemand dies erklären könnte, da ich gerade ein paar Bücher über GLSL gelesen habe und jetzt möchte ich komplexere Shader programmieren, und ich möchte keine Methoden lindern, die zu dieser Zeit unmöglich sind.
Dank
Wie Testalino schrieb, ist CUDA nVidia-spezifisch. Wenn ich Radeon betreibe, würde ich nicht langsamer werden, oder ist es sogar möglich, CUDA auf Radeon auszuführen? Ist OpenCL weniger effektiv oder warum empfehlen Sie es nicht als erstes zu verwenden? – Raven
@Raven Ja, CUDA ist vollständig nVidia-spezifisch.Wenn ich wählen sollte, würde ich CUDA + nVidia bevorzugen. Da Sie ATI haben, müssen Sie OpenCL auswählen. Soweit ich weiß, ist CUDA ausgereifter, Werkzeuge sind besser usw. In Bezug auf die Leistung denke ich nicht, dass es einen signifikanten Unterschied gibt. – Andrey
@Raven, ich würde Direct Compute wählen, wenn ich bereits Direct X verwende, Open CL, wenn ich Open GL verwende. Ich würde CUDA niemals aus dem angegebenen Grund verwenden. Sie können nicht sicherstellen, dass jeder, der Ihre Anwendung verwendet, über eine NVIDIA-Karte verfügt. – testalino