mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-28 23:06:41 +00:00
Merge branch 'optimise-groundcover-lighting' into 'master'
Optimise groundcover lighting See merge request OpenMW/openmw!600
This commit is contained in:
commit
5566f2b06b
1 changed files with 5 additions and 14 deletions
|
@ -13,22 +13,13 @@ void perLight(out vec3 ambientOut, out vec3 diffuseOut, int lightIndex, vec3 vie
|
||||||
#ifndef GROUNDCOVER
|
#ifndef GROUNDCOVER
|
||||||
lambert = max(lambert, 0.0);
|
lambert = max(lambert, 0.0);
|
||||||
#else
|
#else
|
||||||
|
float eyeCosine = dot(normalize(viewPos), viewNormal.xyz);
|
||||||
|
if (lambert < 0.0)
|
||||||
{
|
{
|
||||||
float cosine = dot(normalize(viewPos), normalize(viewNormal.xyz));
|
lambert = -lambert;
|
||||||
if (lambert >= 0.0)
|
eyeCosine = -eyeCosine;
|
||||||
cosine = -cosine;
|
|
||||||
|
|
||||||
float mult = 1.0;
|
|
||||||
float divisor = 8.0;
|
|
||||||
|
|
||||||
if (cosine < 0.0 && cosine >= -1.0/divisor)
|
|
||||||
mult = mix(1.0, 0.3, -cosine*divisor);
|
|
||||||
else if (cosine < -1.0/divisor)
|
|
||||||
mult = 0.3;
|
|
||||||
|
|
||||||
lambert *= mult;
|
|
||||||
lambert = abs(lambert);
|
|
||||||
}
|
}
|
||||||
|
lambert *= clamp(-8.0 * (1.0 - 0.3) * eyeCosine + 1.0, 0.3, 1.0);
|
||||||
#endif
|
#endif
|
||||||
diffuseOut = gl_LightSource[lightIndex].diffuse.xyz * lambert;
|
diffuseOut = gl_LightSource[lightIndex].diffuse.xyz * lambert;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue