summaryrefslogtreecommitdiffstats
path: root/src/render/shaders/es2/light.inc.frag100
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/shaders/es2/light.inc.frag100')
-rw-r--r--src/render/shaders/es2/light.inc.frag100176
1 files changed, 1 insertions, 175 deletions
diff --git a/src/render/shaders/es2/light.inc.frag100 b/src/render/shaders/es2/light.inc.frag100
index 50adedc76..b4988ad82 100644
--- a/src/render/shaders/es2/light.inc.frag100
+++ b/src/render/shaders/es2/light.inc.frag100
@@ -1,4 +1,4 @@
-const int MAX_LIGHTS = 4;
+const int MAX_LIGHTS = 2; // RPi: cannot use more than two as we run out of uniforms
const int TYPE_POINT = 0;
const int TYPE_DIRECTIONAL = 1;
const int TYPE_SPOT = 2;
@@ -87,70 +87,6 @@ void adsModelNormalMapped(const in FP vec3 vpos, const in FP vec3 vnormal, const
diffuseColor += att * lights[1].intensity * diffuse * lights[1].color;
specularColor += att * specular;
-
- // 2
- if (lightCount < 3)
- return;
- att = 1.0;
- if ( lights[2].type != TYPE_DIRECTIONAL ) {
- s = tangentMatrix * ( lights[2].position - vpos );
- if (length( lights[2].attenuation ) != 0.0) {
- FP float dist = length(s);
- att = 1.0 / (lights[2].attenuation.x + lights[2].attenuation.y * dist + lights[2].attenuation.z * dist * dist);
- }
- s = normalize( s );
- if ( lights[2].type == TYPE_SPOT ) {
- if ( degrees(acos(dot(-s, normalize(lights[2].direction))) ) > lights[2].cutOffAngle)
- att = 0.0;
- }
- } else {
- s = normalize( tangentMatrix * -lights[2].direction );
- }
-
- diffuse = max( dot( s, n ), 0.0 );
-
- specular = 0.0;
- if (diffuse > 0.0 && shininess > 0.0 && att > 0.0) {
- FP vec3 r = reflect( -s, n );
- FP vec3 v = normalize( tangentMatrix * ( eye - vpos ) );
- FP float normFactor = ( shininess + 2.0 ) / 2.0;
- specular = normFactor * pow( max( dot( r, v ), 0.0 ), shininess );
- }
-
- diffuseColor += att * lights[2].intensity * diffuse * lights[2].color;
- specularColor += att * specular;
-
- // 3
- if (lightCount < 4)
- return;
- att = 1.0;
- if ( lights[3].type != TYPE_DIRECTIONAL ) {
- s = tangentMatrix * ( lights[3].position - vpos );
- if (length( lights[3].attenuation ) != 0.0) {
- FP float dist = length(s);
- att = 1.0 / (lights[3].attenuation.x + lights[3].attenuation.y * dist + lights[3].attenuation.z * dist * dist);
- }
- s = normalize( s );
- if ( lights[3].type == TYPE_SPOT ) {
- if ( degrees(acos(dot(-s, normalize(lights[3].direction))) ) > lights[3].cutOffAngle)
- att = 0.0;
- }
- } else {
- s = normalize( tangentMatrix * -lights[3].direction );
- }
-
- diffuse = max( dot( s, n ), 0.0 );
-
- specular = 0.0;
- if (diffuse > 0.0 && shininess > 0.0 && att > 0.0) {
- FP vec3 r = reflect( -s, n );
- FP vec3 v = normalize( tangentMatrix * ( eye - vpos ) );
- FP float normFactor = ( shininess + 2.0 ) / 2.0;
- specular = normFactor * pow( max( dot( r, v ), 0.0 ), shininess );
- }
-
- diffuseColor += att * lights[3].intensity * diffuse * lights[3].color;
- specularColor += att * specular;
}
void adsModel(const in FP vec3 vpos, const in FP vec3 vnormal, const in FP vec3 eye, const in FP float shininess,
@@ -225,70 +161,6 @@ void adsModel(const in FP vec3 vpos, const in FP vec3 vnormal, const in FP vec3
diffuseColor += att * lights[1].intensity * diffuse * lights[1].color;
specularColor += att * specular;
-
- // 2
- if (lightCount < 3)
- return;
- att = 1.0;
- if ( lights[2].type != TYPE_DIRECTIONAL ) {
- s = lights[2].position - vpos;
- if (length( lights[2].attenuation ) != 0.0) {
- FP float dist = length(s);
- att = 1.0 / (lights[2].attenuation.x + lights[2].attenuation.y * dist + lights[2].attenuation.z * dist * dist);
- }
- s = normalize( s );
- if ( lights[2].type == TYPE_SPOT ) {
- if ( degrees(acos(dot(-s, normalize(lights[2].direction))) ) > lights[2].cutOffAngle)
- att = 0.0;
- }
- } else {
- s = normalize( -lights[2].direction );
- }
-
- diffuse = max( dot( s, n ), 0.0 );
-
- specular = 0.0;
- if (diffuse > 0.0 && shininess > 0.0 && att > 0.0) {
- FP vec3 r = reflect( -s, n );
- FP vec3 v = normalize( eye - vpos );
- FP float normFactor = ( shininess + 2.0 ) / 2.0;
- specular = normFactor * pow( max( dot( r, v ), 0.0 ), shininess );
- }
-
- diffuseColor += att * lights[2].intensity * diffuse * lights[2].color;
- specularColor += att * specular;
-
- // 3
- if (lightCount < 4)
- return;
- att = 1.0;
- if ( lights[3].type != TYPE_DIRECTIONAL ) {
- s = lights[3].position - vpos;
- if (length( lights[3].attenuation ) != 0.0) {
- FP float dist = length(s);
- att = 1.0 / (lights[3].attenuation.x + lights[3].attenuation.y * dist + lights[3].attenuation.z * dist * dist);
- }
- s = normalize( s );
- if ( lights[3].type == TYPE_SPOT ) {
- if ( degrees(acos(dot(-s, normalize(lights[3].direction))) ) > lights[3].cutOffAngle)
- att = 0.0;
- }
- } else {
- s = normalize( -lights[3].direction );
- }
-
- diffuse = max( dot( s, n ), 0.0 );
-
- specular = 0.0;
- if (diffuse > 0.0 && shininess > 0.0 && att > 0.0) {
- FP vec3 r = reflect( -s, n );
- FP vec3 v = normalize( eye - vpos );
- FP float normFactor = ( shininess + 2.0 ) / 2.0;
- specular = normFactor * pow( max( dot( r, v ), 0.0 ), shininess );
- }
-
- diffuseColor += att * lights[3].intensity * diffuse * lights[3].color;
- specularColor += att * specular;
}
void adModel(const in FP vec3 vpos, const in FP vec3 vnormal, out FP vec3 diffuseColor)
@@ -343,50 +215,4 @@ void adModel(const in FP vec3 vpos, const in FP vec3 vnormal, out FP vec3 diffus
diffuse = max( dot( s, n ), 0.0 );
diffuseColor += att * lights[1].intensity * diffuse * lights[1].color;
-
- // 2
- if (lightCount < 3)
- return;
- att = 1.0;
- if ( lights[2].type != TYPE_DIRECTIONAL ) {
- s = lights[2].position - vpos;
- if (length( lights[2].attenuation ) != 0.0) {
- FP float dist = length(s);
- att = 1.0 / (lights[2].attenuation.x + lights[2].attenuation.y * dist + lights[2].attenuation.z * dist * dist);
- }
- s = normalize( s );
- if ( lights[2].type == TYPE_SPOT ) {
- if ( degrees(acos(dot(-s, normalize(lights[2].direction))) ) > lights[2].cutOffAngle)
- att = 0.0;
- }
- } else {
- s = normalize( -lights[2].direction );
- }
-
- diffuse = max( dot( s, n ), 0.0 );
-
- diffuseColor += att * lights[2].intensity * diffuse * lights[2].color;
-
- // 3
- if (lightCount < 4)
- return;
- att = 1.0;
- if ( lights[3].type != TYPE_DIRECTIONAL ) {
- s = lights[3].position - vpos;
- if (length( lights[3].attenuation ) != 0.0) {
- FP float dist = length(s);
- att = 1.0 / (lights[3].attenuation.x + lights[3].attenuation.y * dist + lights[3].attenuation.z * dist * dist);
- }
- s = normalize( s );
- if ( lights[3].type == TYPE_SPOT ) {
- if ( degrees(acos(dot(-s, normalize(lights[3].direction))) ) > lights[3].cutOffAngle)
- att = 0.0;
- }
- } else {
- s = normalize( -lights[3].direction );
- }
-
- diffuse = max( dot( s, n ), 0.0 );
-
- diffuseColor += att * lights[3].intensity * diffuse * lights[3].color;
}