diff options
Diffstat (limited to 'engine-ocean/Resources/Shaders/phong.vert')
-rw-r--r-- | engine-ocean/Resources/Shaders/phong.vert | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/engine-ocean/Resources/Shaders/phong.vert b/engine-ocean/Resources/Shaders/phong.vert new file mode 100644 index 0000000..75d2aa1 --- /dev/null +++ b/engine-ocean/Resources/Shaders/phong.vert @@ -0,0 +1,41 @@ +#version 330 core + +// All in object space +layout (location = 0) in vec3 pos; +layout (location = 1) in vec3 norm; +layout (location = 2) in vec2 uv; +layout (location = 3) in vec3 color; + +uniform mat4 model, view, projection; +uniform vec3 worldSpace_camPos; + +out vec3 worldSpace_pos; +out vec3 worldSpace_norm; +out vec2 tex_coord; +out vec3 vertColor; +out float visibility; + +// fog +const float density = .01f; +const float gradient = 4.f; + +// REFLECTION/REFRACTION +uniform vec4 plane; // horizontal plane + +void main() { + worldSpace_pos = vec3(view*model*vec4(pos, 1.0)); + worldSpace_norm = vec3(transpose(inverse(model))*vec4(norm, 0.0)); + + vec4 positionRelationToCam = view * vec4(pos, 1.f); + float distance = length(positionRelationToCam.xyz); + visibility = exp(-pow((distance*density), gradient)); + visibility = clamp(visibility, 0.f, 1.f); + + // gl_ClipDistance[0]=dot(vec4(worldSpace_pos, 1.f), plane); + + + tex_coord = uv; + vertColor = color; + + gl_Position = projection*view*model*vec4(pos, 1.0); +} |