nach dem ich meine Normals-Probleme gelöst habe, bekomme ich jetzt eine recht ansehnliche Darstellung. Runde Modelle zeigen einen deutlichen Lichtreflex vom Specular Light. Allerdings sehen größere gerade Flächen noch ein wenig matschig aus, vermutlich weil ich bisher noch keinerlei Diffuse Light berechne.
Das ist aktuell mein Shader mit fester Richtung und Stärke des Specular Light und mit einem Ambient Light das einfach per "+0.05" in der letzten Zeile erzeugt wird:
Code: Alles auswählen
#version 130
uniform vec4 inputColor;\n"
in vec3 Normal;\n"
in vec3 fPos;\n"
out vec4 FragColor;\n"
const vec3 lightPos = vec3(0.0,0.0,5.0);
const vec3 specColor = vec3(0.7,0.7,0.7);
void main()
{
vec3 normal = normalize(Normal);
vec3 viewDir = normalize(-fPos);
if (dot(normal,viewDir)<0.0) normal*=-1.0;
vec3 lightDir = normalize(lightPos - fPos);
float lamb = max(dot(lightDir, normal), 0.0);
float spec = 0.0;
if (lamb > 0.0)
{
vec3 refDir = reflect(-lightDir, normal);
float specAngle = max(dot(refDir, viewDir), 0.0);
spec = pow(specAngle, 4.0);
}
FragColor=inputColor+vec4(spec*specColor,0.0)+0.05;
}
Danke!