diff options
author | jvech <jmvalenciae@unal.edu.co> | 2022-11-03 14:50:17 -0500 |
---|---|---|
committer | jvech <jmvalenciae@unal.edu.co> | 2022-11-03 14:50:17 -0500 |
commit | 02b8093bf0c09b838650f96d3d86be5d3231490e (patch) | |
tree | a4fd3fe3d31fc963c500a7eaf8d2146e043b7db7 /shaders/dummy.fsh | |
parent | 45584a1c39c699e2bc68638fe2402e590631e3a3 (diff) |
add: material and illumnation render implemented
shaders now render the models using ambient, diffuse and specular
properties and react to directional light.
Diffstat (limited to 'shaders/dummy.fsh')
-rw-r--r-- | shaders/dummy.fsh | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/shaders/dummy.fsh b/shaders/dummy.fsh index 472bb26..75c7ef2 100644 --- a/shaders/dummy.fsh +++ b/shaders/dummy.fsh @@ -1,17 +1,47 @@ #version 330 core - struct Material { vec3 ambient; vec3 diffuse; vec3 specular; + int illum; float Ns; }; -uniform Material mtl; +struct DirLight { + vec3 direction; + + vec3 ambient; + vec3 diffuse; + vec3 specular; +}; + out vec4 FragColor; +in vec3 FragPos; +in vec3 Normal; +in vec2 TexCoords; + +uniform vec3 viewPos; +uniform DirLight dirLight; +uniform Material mtl; + + + void main() { - FragColor = vec4(mtl.diffuse, 1.0); + vec3 norm = normalize(Normal); + vec3 viewDir = normalize(viewPos - FragPos); + + vec3 lightDir = normalize(-dirLight.direction); + float diff = max(dot(norm, lightDir), 0.0); + + vec3 reflectDir = normalize(reflect(-lightDir, norm)); + float spec = pow(max(dot(viewDir, reflectDir), 0.0), mtl.Ns); + + vec3 ambient = dirLight.ambient * mtl.ambient; + vec3 diffuse = diff * dirLight.diffuse * mtl.diffuse; + vec3 specular = spec * dirLight.specular * mtl.specular; + + FragColor = vec4(ambient + diffuse + specular, 1.0); } |