[Vertex Shader] Key Frame Interpolation



  • Hallo,

    ich versuche gerade anhand eines Tutorials durch Interpolieren zwischen zwei Frames eine Animation auf den Schirm zu bringen. Als Shading Language nehme ich Cg. Position A und die Normale dazu soll in POSITION und NORMAL stehen, Position B und die Normale in TEXCOORD1 und TEXCOORD2, die jeweils vom Typ float4 bzw. float3 sind.

    Jetzt weiß ich allerdings nicht, wie ich mit OpenGL mehrere TexCoords einem Vertex zuweisen kann, es sollten jedenfalls mal mind. drei sein (TEXCOORD0 ist die Texturkoordinate).

    Außerdem ist, wenn man ein fertiges Rendering-Framework nimmt (zB Irrlicht), die Beleuchtung futsch, d.h. die müsste ich jetzt selbst im Vertex-/Pixel-Shader nachbilden. Gibt es eine Möglichkeit, die Beleuchtung/Schatten usw. so zu belassen wie sie sind (Fixed Function) und nur ausgewählte Teile im Shader zu berechnen oder gibt es nur ein entweder - oder?



  • Hab mich ein bisschen schlau gemacht, bin etwas weitergekommen... Um die TexCoords mit den höheren Indizes anzusprechen, kann man mittels glActiveTexture jeweils die gerade aktive Textureinheit ändern. Werde aber trotzdem auf Ogre als Rendering-Engine umsteigen.

    Jetzt wollte ich mal fragen, wo man die Daten pro Vertex am besten unterbringt. Das Model komplett kopieren und mit zusätlichen Semantics ausstatten? Oder besser die Daten in Texturen schreiben, diese über das Model legen und dann innerhalb des Vertex Programms mit einem Texture Lookup wieder auslesen? Wie übergibt man zusätzliche Per-Vertex-Data üblicherweise?


Anmelden zum Antworten