lygia
/sample
/shadowLerp
)sample shadow map using PCF
Dependencies:
Use:
<float> sampleShadowLerp(<SAMPLER_TYPE> depths, <vec2> size, <vec2> uv, <float> compare)
#ifndef FNC_SAMPLESHADOWLERP
#define FNC_SAMPLESHADOWLERP
float sampleShadowLerp(SAMPLER_TYPE depths, vec2 size, vec2 uv, float compare) {
vec2 texelSize = vec2(1.0)/size;
vec2 f = fract(uv*size+0.5);
vec2 centroidUV = floor(uv*size+0.5)/size;
float lb = sampleShadow(depths, centroidUV+texelSize*vec2(0.0, 0.0), compare);
float lt = sampleShadow(depths, centroidUV+texelSize*vec2(0.0, 1.0), compare);
float rb = sampleShadow(depths, centroidUV+texelSize*vec2(1.0, 0.0), compare);
float rt = sampleShadow(depths, centroidUV+texelSize*vec2(1.0, 1.0), compare);
float a = mix(lb, lt, f.y);
float b = mix(rb, rt, f.y);
float c = mix(a, b, f.x);
return c;
}
#endif
Dependencies:
Use:
<float> sampleShadowLerp(<SAMPLER_TYPE> depths, <float2> size, <float2> uv, <float> compare)
#ifndef FNC_SAMPLESHADOWLERP
#define FNC_SAMPLESHADOWLERP
float sampleShadowLerp(SAMPLER_TYPE depths, float2 size, float2 uv, float compare) {
float2 texelSize = 1.0/size;
float2 f = frac(uv*size+0.5);
float2 centroidUV = floor(uv*size+0.5)/size;
float lb = sampleShadow(depths, centroidUV+texelSize*float2(0.0, 0.0), compare);
float lt = sampleShadow(depths, centroidUV+texelSize*float2(0.0, 1.0), compare);
float rb = sampleShadow(depths, centroidUV+texelSize*float2(1.0, 0.0), compare);
float rt = sampleShadow(depths, centroidUV+texelSize*float2(1.0, 1.0), compare);
float a = lerp(lb, lt, f.y);
float b = lerp(rb, rt, f.y);
float c = lerp(a, b, f.x);
return c;
}
#endif
LYGIA is dual-licensed under the Prosperity License and the Patron License for sponsors and contributors.
Sponsors and contributors are automatically added to the Patron License and they can ignore the any non-commercial rule of the Prosperity Licensed software (please take a look to the exception).
It's also possible to get a permanent comercial license hook to a single and specific version of LYGIA.
Sign up for the news letter bellow, joing the LYGIA's channel on Discord or follow the Github repository