2010-03-31 09:11:44 +00:00
|
|
|
// -*- mode: C; -*-
|
|
|
|
// Licence: GPL v2
|
2010-04-02 14:02:48 +00:00
|
|
|
// Author: Vivian Meazza.
|
2010-03-31 09:11:44 +00:00
|
|
|
|
2011-02-16 08:48:58 +00:00
|
|
|
varying vec3 rawpos;
|
2010-03-28 11:17:51 +00:00
|
|
|
varying vec3 VNormal;
|
|
|
|
varying vec4 constantColor;
|
|
|
|
varying vec3 vViewVec;
|
|
|
|
varying vec3 reflVec;
|
|
|
|
|
2010-03-29 09:50:54 +00:00
|
|
|
varying vec4 Diffuse;
|
2011-02-16 08:48:58 +00:00
|
|
|
varying float alpha;
|
|
|
|
varying float fogCoord;
|
2010-03-28 11:17:51 +00:00
|
|
|
|
|
|
|
uniform mat4 osg_ViewMatrixInverse;
|
|
|
|
|
|
|
|
//attribute vec3 tangent, binormal, normal;
|
|
|
|
|
|
|
|
void main(void)
|
|
|
|
{
|
2011-02-16 08:48:58 +00:00
|
|
|
rawpos = gl_Vertex.xyz / gl_Vertex.w;
|
|
|
|
vec4 ecPosition = gl_ModelViewMatrix * gl_Vertex;
|
|
|
|
ecPosition.xyz = ecPosition.xyz / ecPosition.w;
|
2010-03-28 11:17:51 +00:00
|
|
|
|
|
|
|
vec3 t = normalize(cross(gl_Normal, vec3(1.0,0.0,0.0)));
|
|
|
|
vec3 b = normalize(cross(gl_Normal,t));
|
|
|
|
vec3 n = normalize(gl_Normal);
|
|
|
|
|
|
|
|
VNormal = normalize(gl_NormalMatrix * gl_Normal);
|
|
|
|
|
|
|
|
Diffuse = gl_Color * gl_LightSource[0].diffuse;
|
|
|
|
//Diffuse= gl_Color.rgb * max(0.0, dot(normalize(VNormal), gl_LightSource[0].position.xyz));
|
|
|
|
// Super hack: if diffuse material alpha is less than 1, assume a
|
|
|
|
// transparency animation is at work
|
|
|
|
if (gl_FrontMaterial.diffuse.a < 1.0)
|
|
|
|
alpha = gl_FrontMaterial.diffuse.a;
|
|
|
|
else
|
|
|
|
alpha = gl_Color.a;
|
|
|
|
|
2011-02-16 08:48:58 +00:00
|
|
|
fogCoord = abs(ecPosition.z);
|
2010-03-28 11:17:51 +00:00
|
|
|
|
|
|
|
// Vertex in eye coordinates
|
|
|
|
vec3 vertVec = ecPosition.xyz;
|
|
|
|
|
|
|
|
vViewVec.x = dot(t, vertVec);
|
|
|
|
vViewVec.y = dot(b, vertVec);
|
|
|
|
vViewVec.z = dot(n, vertVec);
|
|
|
|
|
|
|
|
// calculate the reflection vector
|
|
|
|
vec4 reflect_eye = vec4(reflect(vertVec, VNormal), 0.0);
|
2010-03-29 09:50:54 +00:00
|
|
|
reflVec = normalize(gl_ModelViewMatrixInverse * reflect_eye).xyz;
|
2010-03-28 11:17:51 +00:00
|
|
|
|
|
|
|
gl_FrontColor = gl_Color;
|
|
|
|
constantColor = gl_FrontMaterial.emission
|
|
|
|
+ gl_Color * (gl_LightModel.ambient + gl_LightSource[0].ambient);
|
|
|
|
|
|
|
|
gl_Position = ftransform();
|
|
|
|
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
|
2011-02-16 08:48:58 +00:00
|
|
|
}
|