[3824] | 1 | varying vec4 refrCoords; |
---|
| 2 | varying vec4 normCoords; |
---|
| 3 | varying vec4 viewCoords; |
---|
| 4 | varying vec4 viewTangetSpace; |
---|
| 5 | varying vec4 lightTangetSpace; |
---|
| 6 | |
---|
| 7 | uniform vec4 lightPos, cameraPos; |
---|
| 8 | |
---|
| 9 | |
---|
| 10 | void main() |
---|
| 11 | { |
---|
| 12 | // Because we have a flat plane for water we already know the vectors for tangent space |
---|
| 13 | vec4 tangent = vec4(1.0, 0.0, 0.0, 0.0); |
---|
| 14 | vec4 normal = vec4(0.0, 1.0, 0.0, 0.0); |
---|
| 15 | vec4 biTangent = vec4(0.0, 0.0, 1.0, 0.0); |
---|
| 16 | |
---|
| 17 | // Calculate the vector coming from the vertex to the camera |
---|
| 18 | vec4 viewDir = cameraPos - gl_Vertex; |
---|
| 19 | |
---|
| 20 | // Compute tangent space for the view direction |
---|
| 21 | viewTangetSpace.x = dot(viewDir, tangent); |
---|
| 22 | viewTangetSpace.y = dot(viewDir, biTangent); |
---|
| 23 | viewTangetSpace.z = dot(viewDir, normal); |
---|
| 24 | viewTangetSpace.w = 1.0; |
---|
| 25 | |
---|
| 26 | // Calculate the vector that the light hits the vertex |
---|
| 27 | vec4 lightDir = lightPos - gl_Vertex; |
---|
| 28 | |
---|
| 29 | // Compute tangent space for the light direction |
---|
| 30 | lightTangetSpace.x = dot(lightDir, tangent); |
---|
| 31 | lightTangetSpace.y = dot(lightDir, biTangent); |
---|
| 32 | lightTangetSpace.z = dot(lightDir, normal); |
---|
| 33 | lightTangetSpace.w = 1.0; |
---|
| 34 | |
---|
| 35 | refrCoords = gl_MultiTexCoord1; |
---|
| 36 | normCoords = gl_MultiTexCoord2; |
---|
| 37 | |
---|
| 38 | // This calculates our current projection coordinates |
---|
| 39 | viewCoords = gl_ModelViewProjectionMatrix * gl_Vertex; |
---|
| 40 | |
---|
| 41 | gl_Position = viewCoords; |
---|
| 42 | } |
---|