summaryrefslogtreecommitdiffstats
path: root/src/render/shaders
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-12-01 10:00:19 +0100
committerLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-12-01 14:05:48 +0000
commit40c2346f137623629983de94ffcb045f5f8ce35e (patch)
treeaff056737f71b2d65e1f1f5231ee9072294a7ba8 /src/render/shaders
parentd763a69c9c2e55f7d358c538335ebf5c62cb5445 (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.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;