]> git.lizzy.rs Git - irrlicht.git/blob - media/Shaders/Reflection2Layer.vsh
Fix mistake in a677f5a01ac428d16e0e83b021dd0e8cb1ee9f53
[irrlicht.git] / media / Shaders / Reflection2Layer.vsh
1 #version 100
2
3 /* Attributes */
4
5 attribute vec3 inVertexPosition;
6 attribute vec3 inVertexNormal;
7 attribute vec4 inVertexColor;
8 attribute vec2 inTexCoord0;
9 attribute vec2 inTexCoord1;
10
11 /* Uniforms */
12
13 uniform mat4 uWVPMatrix;
14 uniform mat4 uWVMatrix;
15 uniform mat4 uNMatrix;
16 uniform mat4 uTMatrix0;
17
18 uniform vec4 uGlobalAmbient;
19 uniform vec4 uMaterialAmbient;
20 uniform vec4 uMaterialDiffuse;
21 uniform vec4 uMaterialEmissive;
22 uniform vec4 uMaterialSpecular;
23 uniform float uMaterialShininess;
24
25 uniform float uThickness;
26
27 /* Varyings */
28
29 varying vec2 vTextureCoord0;
30 varying vec2 vTextureCoord1;
31 varying vec4 vVertexColor;
32 varying vec4 vSpecularColor;
33 varying float vFogCoord;
34
35 void main()
36 {
37         gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
38         gl_PointSize = uThickness;
39
40         vec4 TextureCoord0 = vec4(inTexCoord0.x, inTexCoord0.y, 1.0, 1.0);
41         vTextureCoord0 = vec4(uTMatrix0 * TextureCoord0).xy;
42
43         vec3 Position = (uWVMatrix * vec4(inVertexPosition, 1.0)).xyz;
44         vec3 P = normalize(Position);
45         vec3 N = normalize(vec4(uNMatrix * vec4(inVertexNormal, 0.0)).xyz);
46         vec3 R = reflect(P, N);
47
48         float V = 2.0 * sqrt(R.x*R.x + R.y*R.y + (R.z+1.0)*(R.z+1.0));
49         vTextureCoord1 = vec2(R.x/V + 0.5, R.y/V + 0.5);
50
51         vVertexColor = inVertexColor.bgra;
52         vSpecularColor = vec4(0.0, 0.0, 0.0, 0.0);
53
54         vFogCoord = length(Position);
55 }