Apply surface angle to sun light

This commit is contained in:
Magnus Norddahl 2023-10-04 00:46:29 +02:00
commit bbf73c2766
2 changed files with 11 additions and 3 deletions

View file

@ -29,7 +29,7 @@ void main()
vec3 origin = worldpos + normal * 0.1;
#if defined(USE_SUNLIGHT)
vec3 incoming = TraceSunLight(origin);
vec3 incoming = TraceSunLight(origin, normal, SurfaceIndex);
#else
vec3 incoming = vec3(0.0);
#endif

View file

@ -1,8 +1,16 @@
vec2 getVogelDiskSample(int sampleIndex, int sampleCount, float phi);
vec3 TraceSunLight(vec3 origin)
vec3 TraceSunLight(vec3 origin, vec3 normal, int surfaceIndex)
{
float angleAttenuation = 1.0f;
if (surfaceIndex >= 0)
{
angleAttenuation = max(dot(normal, SunDir), 0.0);
if (angleAttenuation == 0.0)
return vec3(0.0);
}
const float minDistance = 0.01;
vec3 incoming = vec3(0.0);
const float dist = 32768.0;
@ -45,5 +53,5 @@ vec3 TraceSunLight(vec3 origin)
#endif
return incoming;
return incoming * angleAttenuation;
}