Problem bei einer Animation auf einem Billboard mit HLSL
Verfasst: 21.03.2013, 12:25
Hallo liebe ZFX-Community
Es wird versucht eine "Animationssequenz" auf einem Billboard zu zeichnen. Die Idee ist zur Laufzeit des Programms
im GPU Programm die Texturkoordinaten zu manipulieren. Das soll in der Form geschehen, dass die Bildoffsets auf
die Texturkoordinaten addiert werden. Zuvor müssen natürlich die Texturkoordinaten der vier Billboard-vertices auf das Anfangsbild
gesetzt werden.

Nun wollte ich im Vertexshader diesen Ausdruck einsetzen:
fl2TextureAnimationOffset => Diese GPU-Variable ist vom Typ float2
Da wollte ich die beiden Skalare float fTextureOffsetX; float fTextureOffsetY; hineinkopieren. Diese werden von der aufrufenden Animations-Billboard-Klasse zur Laufzeit des Programms gesetzt, um das entsprechende Animationsbild "anzusteuern".
Das ganze scheitert daran weil ich nicht weiss wie ich die beiden Skalare in den zwei dimensionalen Vektor fl2TextureAnimationOffset bekomme.
Bevor mich jemand darauf hinweist, die Manual zu lesen oder diverse Suchmaschinen zu verwenden => wurde getan, ICH FIND DIE INFORMATION EINFACH NICHT. :( Das muss doch möglich sein mit HLSL zwei triviale Skalare in einen zweidimensionalen Vektor zu kopieren.
Bitte um Unterstützung
Es wird versucht eine "Animationssequenz" auf einem Billboard zu zeichnen. Die Idee ist zur Laufzeit des Programms
im GPU Programm die Texturkoordinaten zu manipulieren. Das soll in der Form geschehen, dass die Bildoffsets auf
die Texturkoordinaten addiert werden. Zuvor müssen natürlich die Texturkoordinaten der vier Billboard-vertices auf das Anfangsbild
gesetzt werden.
Nun wollte ich im Vertexshader diesen Ausdruck einsetzen:
Code: Alles auswählen
//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
VS_OUTPUT VS( VS_INPUT input )
{
VS_OUTPUT output = (VS_OUTPUT)0;
// Basic transformation of untransformed vertex into clip-space
output.position = mul( input.position, World );
output.position = mul( output.position, View );
output.position = mul( output.position, Projection );
// basic texture stuff
output.light = vLightDir[0];//LightDirection;
// calculate the normal vector
output.normal = mul( input.normal, World );
// calcutlate the view vector
output.camview = CameraPosition - mul(input.position, World);
// Texture
output.texCoord = input.texCoord + fl2TextureAnimationOffset; <= "HIER"
return output;
}
Da wollte ich die beiden Skalare float fTextureOffsetX; float fTextureOffsetY; hineinkopieren. Diese werden von der aufrufenden Animations-Billboard-Klasse zur Laufzeit des Programms gesetzt, um das entsprechende Animationsbild "anzusteuern".
Das ganze scheitert daran weil ich nicht weiss wie ich die beiden Skalare in den zwei dimensionalen Vektor fl2TextureAnimationOffset bekomme.
Bevor mich jemand darauf hinweist, die Manual zu lesen oder diverse Suchmaschinen zu verwenden => wurde getan, ICH FIND DIE INFORMATION EINFACH NICHT. :( Das muss doch möglich sein mit HLSL zwei triviale Skalare in einen zweidimensionalen Vektor zu kopieren.
Bitte um Unterstützung