diff options
Diffstat (limited to 'src/extras/shaders/es2/light.inc.frag')
-rw-r--r-- | src/extras/shaders/es2/light.inc.frag | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/src/extras/shaders/es2/light.inc.frag b/src/extras/shaders/es2/light.inc.frag index 2c41bb37b..9d29648bd 100644 --- a/src/extras/shaders/es2/light.inc.frag +++ b/src/extras/shaders/es2/light.inc.frag @@ -13,82 +13,3 @@ struct Light { }; uniform Light lights[MAX_LIGHTS]; uniform int lightCount; - -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 diffuseColor, out FP vec3 specularColor) -{ - diffuseColor = vec3(0.0); - specularColor = vec3(0.0); - - FP vec3 n = normalize( vnormal ); - - FP vec3 s; - Light light; - for (int i = 0; i < MAX_LIGHTS; ++i) { - if (i >= lightCount) // Make brcm happy with the for loop - break; - if (i == 0) - light = lights[0]; - else if (i == 1) - light = lights[1]; - else if (i == 2) - light = lights[2]; - else if (i == 3) - light = lights[3]; - else if (i == 4) - light = lights[4]; - else if (i == 5) - light = lights[5]; - else if (i == 6) - light = lights[6]; - else if (i == 7) - light = lights[7]; - - FP float att = 1.0; - if ( light.type != TYPE_DIRECTIONAL ) { - s = light.position - vpos; - if (length( light.attenuation ) != 0.0) { - FP float dist = length(s); - att = 1.0 / (light.attenuation.x + light.attenuation.y * dist + light.attenuation.z * dist * dist); - } - s = normalize( s ); - if ( light.type == TYPE_SPOT ) { - if ( degrees(acos(dot(-s, normalize(light.direction))) ) > light.cutOffAngle) - att = 0.0; - } - } else { - s = normalize( -light.direction ); - } - - FP float diffuse = max( dot( s, n ), 0.0 ); - - FP float specular = 0.0; - if (diffuse > 0.0 && shininess > 0.0 && att > 0.0) { - FP vec3 r = reflect( -s, n ); - FP float normFactor = ( shininess + 2.0 ) / 2.0; - specular = normFactor * pow( max( dot( r, vview ), 0.0 ), shininess ); - } - - diffuseColor += att * light.intensity * diffuse * light.color; - specularColor += att * light.intensity * specular * light.color; - } -} - -FP vec4 phongFunction(const in FP vec4 ambient, - const in FP vec4 diffuse, - const in FP vec4 specular, - const in FP float shininess, - const in FP vec3 worldPosition, - const in FP vec3 worldView, - 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); - - // Combine spec with ambient+diffuse for final fragment color - FP vec3 color = (ambient.rgb + diffuseColor) * diffuse.rgb - + specularColor * specular.rgb; - - return vec4(color, diffuse.a); -} |