2012-04-13 13 views
1

Ich habe GPU-Skinning für Collada-Dateien mit Assimp und meinem eigenen OpenGL-Renderer implementiert. Das funktioniert gut.GLSL-GPU-Skinning mit Drittanbieter-Shader

Jetzt, Meine Anwendung sollte ermöglichen, 3rd Party Vertex und Fragment Shader angegeben werden, und sollte mit Skinning arbeiten.

Ein Beispiel für einen Anwendungsfall könnte sein, dass dieser Fremde Shader den Raum um die Y-Achse biegt und der Szene Nebel hinzufügt ... usw.

Ist es bei der Verwendung von GPU-Skinning möglich?

Antwort

1

Möglich? Ja. Aber nicht einfach.

Der am wenigsten schmerzhafte Weg, dies zu tun, besteht darin, den Shader mit mehreren Strings auszustatten. Machen Sie Ihren "Skinning-Shader" zu einer Funktion, die die Kameraraumposition des Scheitelpunkts zurückgibt. Sie könnten sogar mehrere Variationen dieser Funktion haben. Eine Version, die eine Position zurückgibt, eine, die eine Position und eine Normale zurückgibt, und eine, die eine Positions- und TBN-Tangentialraum-Basismatrix zurückgibt.

Der vom Benutzer bereitgestellte Shader würde diese Funktion einfach aufrufen, um die Kameraplatzpositionen/Normalen zu erhalten. Wenn du den Shader kompilierst, lege einfach deine Skinning-Shader-Zeichenfolge vor dem Shader in den Aufruf von glShaderSource.