aboutsummaryrefslogtreecommitdiff
path: root/shaders/dummy.fsh
diff options
context:
space:
mode:
authorjvech <jmvalenciae@unal.edu.co>2022-11-03 14:50:17 -0500
committerjvech <jmvalenciae@unal.edu.co>2022-11-03 14:50:17 -0500
commit02b8093bf0c09b838650f96d3d86be5d3231490e (patch)
treea4fd3fe3d31fc963c500a7eaf8d2146e043b7db7 /shaders/dummy.fsh
parent45584a1c39c699e2bc68638fe2402e590631e3a3 (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.fsh36
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);
}
Feel free to download, copy and edit any repo