From 707c5557e471836c7c12413d54abcee212a63e7e Mon Sep 17 00:00:00 2001 From: Thyme1 Date: Thu, 30 Dec 2021 18:06:40 +0100 Subject: [PATCH] add specular lighting based on cw5 earlier shaders --- grafika_projekt/shaders/shader_tex.frag | 15 ++++++++++++--- grafika_projekt/shaders/shader_tex.vert | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/grafika_projekt/shaders/shader_tex.frag b/grafika_projekt/shaders/shader_tex.frag index 6ea96e2..5ec1fe9 100644 --- a/grafika_projekt/shaders/shader_tex.frag +++ b/grafika_projekt/shaders/shader_tex.frag @@ -1,17 +1,26 @@ #version 410 core uniform sampler2D textureSampler; -uniform vec3 lightDir; +//uniform vec3 lightDir; +uniform vec3 lightPos; +uniform vec3 cameraPos; +uniform vec3 objectColor; +in vec3 fragPos; in vec3 interpNormal; in vec2 interpTexCoord; void main() { + vec3 lightDir = normalize(lightPos-fragPos); + vec3 V = normalize(cameraPos-fragPos); vec2 modifiedTexCoord = vec2(interpTexCoord.x, 1.0 - interpTexCoord.y); // Poprawka dla tekstur Ziemi, ktore bez tego wyswietlaja sie 'do gory nogami' vec3 color = texture2D(textureSampler, modifiedTexCoord).rgb; vec3 normal = normalize(interpNormal); + float diffuse = max(0,dot(normal,normalize(lightDir))); + vec3 R = reflect(-normalize(lightDir),normal); float ambient = 0.2; - float diffuse = max(dot(normal, -lightDir), 0.1); - gl_FragColor = vec4(color * (ambient + (1-ambient) * diffuse * 0.6 ), 1.0); + float specular = pow(max(0,dot(R,V)),1000); + gl_FragColor = vec4(color*(ambient + (1-ambient)*diffuse)+vec3(1)*specular*0.2, 1.0); + } diff --git a/grafika_projekt/shaders/shader_tex.vert b/grafika_projekt/shaders/shader_tex.vert index c0e1d86..b289b49 100644 --- a/grafika_projekt/shaders/shader_tex.vert +++ b/grafika_projekt/shaders/shader_tex.vert @@ -9,10 +9,12 @@ uniform mat4 modelMatrix; out vec3 interpNormal; out vec2 interpTexCoord; +out vec3 fragPos; void main() { gl_Position = modelViewProjectionMatrix * vec4(vertexPosition, 1.0); interpNormal = (modelMatrix * vec4(vertexNormal, 0.0)).xyz; + fragPos = (modelMatrix*vec4(vertexPosition,1)).xyz; interpTexCoord = vertexTexCoord; }