#version 430 core float AMBIENT = 0.2; uniform vec3 color; uniform vec3 lightPos; uniform sampler2D colorTexture; const float PI = 3.14159265359; in vec3 vecNormal; in vec3 worldPos; in vec2 texCoord; out vec4 outColor; void main() { vec3 lightDir = normalize(lightPos - worldPos); vec3 normal = normalize(vecNormal); float diffuse = max(0.0, dot(normal, lightDir)); diffuse = clamp(diffuse + 0.2, 0.0, 1.0); vec3 viewDir = normalize(-worldPos); vec3 halfwayDir = normalize(lightDir + viewDir); float specularStrength = 0.7; // Increase specular strength float specular = pow(max(0.0, dot(normal, halfwayDir)), 32); vec4 textureColor = texture(colorTexture, texCoord); vec3 finalColor = textureColor.rgb * (AMBIENT + diffuse) + specularStrength * specular; outColor = vec4(finalColor, textureColor.a); }