summaryrefslogtreecommitdiffstats
path: root/src/extras/shaders/es2/phong.inc.frag100
diff options
context:
space:
mode:
Diffstat (limited to 'src/extras/shaders/es2/phong.inc.frag100')
-rw-r--r--src/extras/shaders/es2/phong.inc.frag10012
1 files changed, 8 insertions, 4 deletions
diff --git a/src/extras/shaders/es2/phong.inc.frag100 b/src/extras/shaders/es2/phong.inc.frag100
index 7d395dd4b..7b651f904 100644
--- a/src/extras/shaders/es2/phong.inc.frag100
+++ b/src/extras/shaders/es2/phong.inc.frag100
@@ -4,8 +4,10 @@
#pragma include light.inc.frag
void adsModel(const in FP vec3 vpos, const in FP vec3 vnormal, const in FP vec3 vview, const in FP float shininess,
+ out FP vec3 ambientColor,
out FP vec3 diffuseColor, out FP vec3 specularColor)
{
+ ambientColor = vec3(0.0);
diffuseColor = vec3(0.0);
specularColor = vec3(0.0);
@@ -75,6 +77,7 @@ void adsModel(const in FP vec3 vpos, const in FP vec3 vnormal, const in FP vec3
specular = normFactor * pow( max( dot( r, vview ), 0.0 ), shininess );
}
+ ambientColor += att * lights[1].intensity * 1.0 * lights[1].color;
diffuseColor += att * lights[1].intensity * diffuse * lights[1].color;
specularColor += att * specular;
}
@@ -88,11 +91,12 @@ FP vec4 phongFunction(const in FP vec4 ambient,
const in FP vec3 worldNormal)
{
// Calculate the lighting model, keeping the specular component separate
- FP vec3 diffuseColor, specularColor;
- adsModel(worldPosition, worldNormal, worldView, shininess, diffuseColor, specularColor);
+ FP vec3 ambientColor, diffuseColor, specularColor;
+ adsModel(worldPosition, worldNormal, worldView, shininess, ambientColor, diffuseColor, specularColor);
- // Combine spec with ambient+diffuse for final fragment color
- FP vec3 color = (ambient.rgb + diffuseColor) * diffuse.rgb
+ // Combine ambient, diffuse and specular components for final fragment color
+ FP vec3 color = ambientColor * ambient.rgb
+ + diffuseColor * diffuse.rgb
+ specularColor * specular.rgb;
return vec4(color, diffuse.a);