summaryrefslogtreecommitdiffstats
path: root/src/render/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/shaders')
-rw-r--r--src/render/shaders/es2/light.inc.frag6
-rw-r--r--src/render/shaders/gl3/light.inc.frag6
2 files changed, 8 insertions, 4 deletions
diff --git a/src/render/shaders/es2/light.inc.frag b/src/render/shaders/es2/light.inc.frag
index 43e94b743..2879f189d 100644
--- a/src/render/shaders/es2/light.inc.frag
+++ b/src/render/shaders/es2/light.inc.frag
@@ -10,7 +10,8 @@ struct Light {
uniform Light lights[MAX_LIGHTS];
uniform int lightCount;
-void adsModel(FP vec3 vpos, FP vec3 vnormal, FP vec3 eye, FP float shininess, out FP vec3 diffuseColor, out FP vec3 specularColor)
+void adsModel(const in FP vec3 vpos, const in FP vec3 vnormal, const in FP vec3 eye, const in FP float shininess,
+ out FP vec3 diffuseColor, out FP vec3 specularColor)
{
diffuseColor = vec3(0.0);
specularColor = vec3(0.0);
@@ -35,7 +36,8 @@ void adsModel(FP vec3 vpos, FP vec3 vnormal, FP vec3 eye, FP float shininess, ou
if (diffuse > 0.0 && shininess > 0.0) {
FP vec3 r = reflect( -s, n );
FP vec3 v = normalize( eye - vpos );
- specular = ( shininess / ( 8.0 * 3.14 ) ) * pow( max( dot( r, v ), 0.0 ), shininess );
+ FP float normFactor = ( shininess + 2.0 ) / 2.0;
+ specular = normFactor * pow( max( dot( r, v ), 0.0 ), shininess );
}
diffuseColor += att * lights[0].intensity * diffuse * lights[0].color;
diff --git a/src/render/shaders/gl3/light.inc.frag b/src/render/shaders/gl3/light.inc.frag
index 633dea7fd..acd28b550 100644
--- a/src/render/shaders/gl3/light.inc.frag
+++ b/src/render/shaders/gl3/light.inc.frag
@@ -10,7 +10,8 @@ struct Light {
uniform Light lights[MAX_LIGHTS];
uniform int lightCount;
-void adsModel(vec3 vpos, vec3 vnormal, vec3 eye, float shininess, out vec3 diffuseColor, out vec3 specularColor)
+void adsModel(const in vec3 vpos, const in vec3 vnormal, const in vec3 eye, const in float shininess,
+ out vec3 diffuseColor, out vec3 specularColor)
{
diffuseColor = vec3(0.0);
specularColor = vec3(0.0);
@@ -36,7 +37,8 @@ void adsModel(vec3 vpos, vec3 vnormal, vec3 eye, float shininess, out vec3 diffu
if (diffuse > 0.0 && shininess > 0.0) {
vec3 r = reflect( -s, n );
vec3 v = normalize( eye - vpos );
- specular = ( shininess / ( 8.0 * 3.14 ) ) * pow( max( dot( r, v ), 0.0 ), shininess );
+ float normFactor = ( shininess + 2.0 ) / 2.0;
+ specular = normFactor * pow( max( dot( r, v ), 0.0 ), shininess );
}
diffuseColor += att * lights[i].intensity * diffuse * lights[i].color;