@@ -10,6 +10,9 @@ in vec3 vertexNormal;
1010in vec3 primNormal;
1111in float num;
1212
13+ in vec3 diffuseColor;
14+ in float specStrength;
15+
1316in vec3 cam_pos;
1417in vec3 cam_dir;
1518
@@ -26,11 +29,12 @@ float remap(float iMin, float iMax, float oMin, float oMax, float v) {
2629}
2730
2831void main() {
29- int mode = 1 ;
30- // vec3 viewDir = normalize(viewspacePos.xyz-cam_pos);
3132 vec3 illumLightSum = vec3 (0 );
3233 vec3 normal = normalize (primNormal);
3334
35+ // diffuseColor = p3d_Material.diffuse.xyz;
36+ // specStrength = p3d_Material.specular.x;
37+
3438 for (int i = 0 ; i < p3d_LightSource.length ; i++ ) {
3539 vec3 lightDir = p3d_LightSource[i].position.xyz;
3640 if (p3d_LightSource[i].position.w != 0 ) lightDir -= viewspacePos;
@@ -49,26 +53,14 @@ void main() {
4953 vec3 halfDir = normalize (lightDir + viewDir);
5054 float specAngle = max (dot (halfDir, normal), 0.0 );
5155 specular = pow (specAngle, p3d_Material.shininess);
52-
53- // this is phong (for comparison)
54- if (mode == 2 ) {
55- vec3 reflectDir = reflect (- lightDir, normal);
56- specAngle = max (dot (reflectDir, viewDir), 0.0 );
57- // note that the exponent is different here
58- specular = pow (specAngle, p3d_Material.shininess/ 4.0 );
59- }
6056 }
61- vec3 illumDiffuse = (p3d_Material.diffuse.xyz) * lambertian * p3d_LightSource[i].color.xyz * 1 / distance ;
62- vec3 illumSpecular = p3d_Material.diffuse.xyz * p3d_Material.specular * specular * p3d_LightSource[i].color.xyz * 1 / distance ;
57+ vec3 illumDiffuse = diffuseColor * lambertian * p3d_LightSource[i].color.xyz * 1 / distance ;
58+ vec3 illumSpecular = diffuseColor * specStrength * specular * p3d_LightSource[i].color.xyz * 1 / distance ;
6359
6460 illumLightSum += illumDiffuse+ illumSpecular;
6561 }
6662
67- // vec3 reflectDir = reflect(-lightDir, normalize(primNormal));
68- // float spec = pow(max(dot(viewDir, reflectDir), 0.0), 64);
69- // vec3 specular = specularStrength * spec * specColor;
70-
71- vec3 colorGammaCorrected = pow (p3d_LightModel.ambient.xyz* p3d_Material.ambient.xyz+ illumLightSum, vec3 (0.49504950495 ));
63+ vec3 colorGammaCorrected = pow (p3d_LightModel.ambient.xyz* diffuseColor+ illumLightSum, vec3 (0.49504950495 ));
7264 // use the gamma corrected color in the fragment0
7365 outputColor = vec4 (colorGammaCorrected, 1.0 );
7466}
0 commit comments