andreasMank
05-26-2004, 04:39 AM
i tried a little rim light shader .. no big problem, but i found a really mysterious thing .. i'm not sure if it should be like this ..
first my vertex shader:
uniform vec4 lightPos;
uniform vec4 eyePos;
varying vec3 N;
varying vec3 V;
void main(void)
{
gl_TexCoord[0] = gl_MultiTexCoord0;
vec3 P = vec3(gl_ModelViewMatrix * gl_Vertex);
N = gl_NormalMatrix * gl_Normal;
V = vec3 (gl_ModelViewMatrix * eyePos) - P;
gl_Position = ftransform();
}
no problem in here .. everything is really fine ..
so lets have a look in the fragment shader code .. its what we know from dawn demo ..
uniform vec4 rimColor;
uniform float rimPower;
varying vec3 N;
varying vec3 V;
void main (void)
{
gl_TexCoord[0];
vec3 nN = normalize(N);
vec3 nV = normalize(V);
float rim = pow(1.0 - max(dot(nV, nN), 0.0), rimPower);
gl_FragColor = rimColor * rim;
}
.. this one is working .. but if i delete the sensless gl_TexCoord[0]; in the fragment shader, i get different results .. ??? .. why do i need this line of code ???
thx
first my vertex shader:
uniform vec4 lightPos;
uniform vec4 eyePos;
varying vec3 N;
varying vec3 V;
void main(void)
{
gl_TexCoord[0] = gl_MultiTexCoord0;
vec3 P = vec3(gl_ModelViewMatrix * gl_Vertex);
N = gl_NormalMatrix * gl_Normal;
V = vec3 (gl_ModelViewMatrix * eyePos) - P;
gl_Position = ftransform();
}
no problem in here .. everything is really fine ..
so lets have a look in the fragment shader code .. its what we know from dawn demo ..
uniform vec4 rimColor;
uniform float rimPower;
varying vec3 N;
varying vec3 V;
void main (void)
{
gl_TexCoord[0];
vec3 nN = normalize(N);
vec3 nV = normalize(V);
float rim = pow(1.0 - max(dot(nV, nN), 0.0), rimPower);
gl_FragColor = rimColor * rim;
}
.. this one is working .. but if i delete the sensless gl_TexCoord[0]; in the fragment shader, i get different results .. ??? .. why do i need this line of code ???
thx