diff options
author | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-12-01 10:00:19 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-12-01 14:05:48 +0000 |
commit | 40c2346f137623629983de94ffcb045f5f8ce35e (patch) | |
tree | aff056737f71b2d65e1f1f5231ee9072294a7ba8 /src/render/shaders | |
parent | d763a69c9c2e55f7d358c538335ebf5c62cb5445 (diff) |
Update specular normalization factor and fix parameter lists
Change-Id: I2cde7e7aca754efb8a0ca4bb81716e6b42169e62
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/shaders')
-rw-r--r-- | src/render/shaders/es2/light.inc.frag | 6 | ||||
-rw-r--r-- | src/render/shaders/gl3/light.inc.frag | 6 |
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; |