43 lines
1.0 KiB
GLSL
43 lines
1.0 KiB
GLSL
#version 130
|
|
|
|
out vec3 src_normal, normal, et;
|
|
out vec4 pos, col;
|
|
out float fogCoord, fs_gid;
|
|
|
|
uniform bool acc_fog;
|
|
uniform vec2 dt;
|
|
uniform vec3 eye;
|
|
|
|
void main(void) {
|
|
normal = (gl_NormalMatrix * gl_Normal);
|
|
|
|
pos.xyz = vec3(gl_ModelViewMatrix * gl_Vertex);
|
|
col = gl_Color;
|
|
if (acc_fog) {
|
|
fogCoord = (gl_Fog.end - length(pos.xyz) * 0.85) / (gl_Fog.end - gl_Fog.start);
|
|
fogCoord = 1. - clamp(fogCoord, 0., 1.);
|
|
}
|
|
gl_TexCoord[0] = gl_MultiTexCoord0;
|
|
gl_TexCoord[1] = gl_MultiTexCoord1;
|
|
gl_Position = ftransform();
|
|
src_normal = normalize(/*gl_NormalMatrix * */vec3(pos.xy * dt * 2., 0));
|
|
//pos = gl_Position;
|
|
|
|
vec3 v = normalize(-pos.xyz); // vector to the eye
|
|
|
|
/*vec3 t = gl_NormalMatrix * vec3(1., 0., 0.);
|
|
vec3 b = gl_NormalMatrix * vec3(0., 1., 0.);
|
|
et = vec3(dot(v, t), dot(v, b), dot(v, normal));*/
|
|
|
|
vec3 t = normalize(gl_NormalMatrix * vec3(gl_MultiTexCoord0.yx, 1));
|
|
vec3 b = cross(normal, t);
|
|
|
|
mat3 tbnMatrix = mat3(t.x, b.x, normal.x,
|
|
t.y, b.y, normal.y,
|
|
t.z, b.z, normal.z);
|
|
et = tbnMatrix * v;
|
|
|
|
|
|
pos.w = gl_Position.w;
|
|
}
|