PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [GLSL] Vektor-Zuweisung


Matti
2005-10-28, 19:32:08
eigentlich stammt das Problem aus diesem Trhead: http://www.forum-3dcenter.org/vbulletin/showthread.php?t=256436 aber da's nicht ins Benchmark-Forum paßt, mache ich hier mal einen neuen Thread auf...

mit Forceware 71.25 ist folgende Zuweisung im Vertex-Shader kein Problem:

varying vec3 position;
void main(void)
{
position = gl_Vertex;
...
}

...aber Forceware 81.85 meint "assignment of incompatible types". Das Problem könnte man zwar folgendermaßen lösen:

position.x = gl_Vertex.x;
position.y = gl_Vertex.y;
position.z = gl_Vertex.z;

...aber das ist umständlich und wahrscheinlich auch weniger performant als eine direkte Vektor-Zuweisung. Also ... kann man das auch eleganter lösen?

Trap
2005-10-28, 19:52:09
GLSLangSpec sagt:
attribute vec4 gl_Vertex;

Du sagst:
varying vec3 position;
position = gl_Vertex;

Was fällt dir auf? ;)

Edit:
Probier mal
position = gl_Vertex.xyz;

Matti
2005-11-01, 18:40:19
Danke :)

Coda
2005-11-01, 18:43:41
Die Register werden übrigens auch automatisch mit (x,y,z,1) aufgefüllt, wenn im Vertex-Stream nur 3 Komponenten verwendet werden - zumindest ist es in DX so.

Also einfach den Input als vec4 deklarieren und es sollte gut sein.