Files
starruler-linux/data/shaders/source/pl_normal_vs.txt
T
2018-07-17 14:15:37 +02:00

41 lines
863 B
Plaintext

attribute vec4 in_position;
attribute vec3 in_normal;
attribute vec2 in_uv;
varying vec3 npos;
varying vec3 normal, binormal, tangent;
varying vec2 uv;
uniform float flipState;
void main()
{
normal = normalize(gl_NormalMatrix * in_normal);
binormal = normalize(cross(normal, gl_NormalMatrix * vec3(0.0,0.999,0.04471017781)));
tangent = normalize(cross(normal, binormal));
vec4 pos = gl_ModelViewMatrix * in_position;
npos = -pos.xyz;
vec2 baseUV = in_uv;
if(flipState < 0.5) {
if(flipState < 0.25) {
baseUV.x = 1.0 - baseUV.x;
binormal = -binormal;
}
}
else {
if(flipState < 0.75) {
baseUV.y = 1.0 - baseUV.y;
tangent = -tangent;
}
else {
baseUV = vec2(1.0) - baseUV;
binormal = -binormal;
tangent = -tangent;
}
}
uv = baseUV;
gl_Position = gl_ProjectionMatrix * pos;
}