mirror of
https://github.com/RaindropViewer/RaindropViewer.git
synced 2026-07-29 19:03:10 +00:00
43 lines
1.3 KiB
GLSL
43 lines
1.3 KiB
GLSL
varying vec4 refrCoords;
|
|
varying vec4 normCoords;
|
|
varying vec4 viewCoords;
|
|
varying vec4 viewTangetSpace;
|
|
varying vec4 lightTangetSpace;
|
|
varying vec4 reflUV;
|
|
uniform vec4 lightPos, cameraPos;
|
|
|
|
|
|
void main()
|
|
{
|
|
// Because we have a flat plane for water we already know the vectors for tangent space
|
|
vec4 normal = vec4(0.0, 0.0, 1.0, 0.0);
|
|
vec4 tangent = vec4(1.0, 0.0, 0.0, 0.0);
|
|
vec4 biTangent = vec4(0.0, 1.0, 0.0, 0.0);
|
|
|
|
// Calculate the vector coming from the vertex to the camera
|
|
vec4 viewDir = cameraPos - gl_Vertex;
|
|
|
|
// Compute tangent space for the view direction
|
|
viewTangetSpace.x = dot(viewDir, tangent);
|
|
viewTangetSpace.y = dot(viewDir, biTangent);
|
|
viewTangetSpace.z = dot(viewDir, normal);
|
|
viewTangetSpace.w = 1.0;
|
|
|
|
// Calculate the vector that the light hits the vertex
|
|
vec4 lightDir = lightPos - gl_Vertex;
|
|
|
|
// Compute tangent space for the light direction
|
|
lightTangetSpace.x = dot(lightDir, tangent);
|
|
lightTangetSpace.y = dot(lightDir, biTangent);
|
|
lightTangetSpace.z = dot(lightDir, normal);
|
|
lightTangetSpace.w = 1.0;
|
|
|
|
refrCoords = gl_MultiTexCoord1;
|
|
normCoords = gl_MultiTexCoord2;
|
|
reflUV = gl_MultiTexCoord0;
|
|
|
|
// This calculates our current projection coordinates
|
|
viewCoords = gl_ModelViewProjectionMatrix * gl_Vertex;
|
|
|
|
gl_Position = viewCoords;
|
|
} |