diff options
author | omniscient <17525998+omnisci3nce@users.noreply.github.com> | 2024-10-19 13:24:31 +1100 |
---|---|---|
committer | omniscient <17525998+omnisci3nce@users.noreply.github.com> | 2024-10-19 13:24:31 +1100 |
commit | 6182860f1b1aba4128b4f66eda7977600e60d1a0 (patch) | |
tree | 388d9aff8ca19ef324633ac1bea43f1548675150 /assets/shaders/blinn_phong.frag | |
parent | 5d1750d9adfc45b53c75310c58e31dfdbd8a6e15 (diff) | |
parent | d6d742f8a24490f885e4a1ae3fea7ec46b01f58c (diff) |
fix merge
Diffstat (limited to 'assets/shaders/blinn_phong.frag')
-rw-r--r-- | assets/shaders/blinn_phong.frag | 97 |
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); -} |