summaryrefslogtreecommitdiff
path: root/assets/shaders/blinn_phong.frag
diff options
context:
space:
mode:
Diffstat (limited to 'assets/shaders/blinn_phong.frag')
-rw-r--r--assets/shaders/blinn_phong.frag97
1 files changed, 0 insertions, 97 deletions
diff --git a/assets/shaders/blinn_phong.frag b/assets/shaders/blinn_phong.frag
deleted file mode 100644
index 267c71b..0000000
--- a/assets/shaders/blinn_phong.frag
+++ /dev/null
@@ -1,97 +0,0 @@
-#version 430 core
-out vec4 FragColor;
-
-// A Blinn-Phong material with textures for diffuse and specular
-// lighting maps and a numeric shininess factor.
-struct Material {
- sampler2D diffuse;
- sampler2D specular;
- float shininess;
-};
-
-struct DirLight {
- vec3 direction;
- vec3 ambient;
- vec3 diffuse;
- vec3 specular;
-};
-
-struct PointLight {
- vec3 position;
- // fall off properties
- float constant;
- float linear;
- float quadratic;
-
- vec3 ambient;
- vec3 diffuse;
- vec3 specular;
-};
-
-in VS_OUT {
- vec3 FragPos;
- vec3 Normal;
- vec2 TexCoords;
- // vec4 FragPosLightSpace;
- vec4 Color;
-} fs_in;
-
-// --- Uniforms
-#define NUM_POINT_LIGHTS 4
-uniform vec3 viewPos;
-uniform Material material;
-uniform DirLight dirLight;
-uniform PointLight pointLights[NUM_POINT_LIGHTS];
-
-// --- Function prototypes
-vec3 CalcDirLight(DirLight light, vec3 normal, vec3 viewDir);
-vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir);
-
-void main() {
- vec3 norm = normalize(fs_in.Normal);
- vec3 viewDir = normalize(viewPos - fs_in.FragPos);
-
- vec3 result = CalcDirLight(dirLight, norm, viewDir);
- for (int i = 0; i < 4; i++) {
- result += CalcPointLight(pointLights[i], norm, fs_in.FragPos, viewDir);
- }
-
-// FragColor = vec4(result, 1.0);
- FragColor = fs_in.Color + 0.5;
-}
-
-vec3 CalcDirLight(DirLight light, vec3 normal, vec3 viewDir)
-{
- vec3 lightDir = normalize(-light.direction);
- // diffuse shading
- float diff = max(dot(normal, lightDir), 0.0);
- // specular shading
- vec3 reflectDir = reflect(-lightDir, normal);
- float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);
- // combine result
- vec3 ambient = light.ambient * vec3(texture(material.diffuse, fs_in.TexCoords));
- vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, fs_in.TexCoords));
- vec3 specular = light.specular * spec * vec3(texture(material.specular, fs_in.TexCoords));
- return (ambient + diffuse + specular);
-}
-
-vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir)
-{
- vec3 lightDir = normalize(light.position - fragPos);
- // diffuse
- float diff = max(dot(normal, lightDir), 0.0);
- // specular
- vec3 reflectDir = reflect(-lightDir, normal);
- float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);
- // attentuation
- float distance = length(light.position - fragPos);
- float attentuation = 1.0 / (light.constant + light.linear * distance * light.quadratic * (distance * distance));
- // result
- vec3 ambient = light.ambient * vec3(texture(material.diffuse, fs_in.TexCoords));
- vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, fs_in.TexCoords));
- vec3 specular = light.specular * spec * vec3(texture(material.specular, fs_in.TexCoords));
- ambient *= attentuation;
- diffuse *= attentuation;
- specular *= attentuation;
- return (ambient + diffuse + specular);
-}