TG
Size: a a a
VK
VK
D
VK
D
D
D
AP

D
AP
D
D
YS
AP
float sampleShadowMap(sampler2D depthMap, vec2 coords, float lod, float compare)
{
return step(compare, texture(depthMap, coords, lod).r);
}
float sampleShadowMapLinear(sampler2D depthMap, vec2 coords, float compare)
{
const int lod = 0;
vec2 texelSize = 1.0 / textureSize(depthMap, lod);
vec2 pixelPos = coords / texelSize + vec2(0.5);
vec2 fracPart = fract(pixelPos);
vec2 startTexel = (pixelPos - fracPart) * texelSize;
vec4 samples;
samples[0] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 0.0) * texelSize, lod, compare);
samples[1] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 0.0) * texelSize, lod, compare);
samples[2] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 1.0) * texelSize, lod, compare);
samples[3] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 1.0) * texelSize, lod, compare);
float sampleA = mix(samples[0], samples[2], fracPart.y);
float sampleB = mix(samples[1], samples[3], fracPart.y);
return mix(sampleA, sampleB, fracPart.x);
}
D
float sampleShadowMap(sampler2D depthMap, vec2 coords, float lod, float compare)
{
return step(compare, texture(depthMap, coords, lod).r);
}
float sampleShadowMapLinear(sampler2D depthMap, vec2 coords, float compare)
{
const int lod = 0;
vec2 texelSize = 1.0 / textureSize(depthMap, lod);
vec2 pixelPos = coords / texelSize + vec2(0.5);
vec2 fracPart = fract(pixelPos);
vec2 startTexel = (pixelPos - fracPart) * texelSize;
vec4 samples;
samples[0] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 0.0) * texelSize, lod, compare);
samples[1] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 0.0) * texelSize, lod, compare);
samples[2] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 1.0) * texelSize, lod, compare);
samples[3] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 1.0) * texelSize, lod, compare);
float sampleA = mix(samples[0], samples[2], fracPart.y);
float sampleB = mix(samples[1], samples[3], fracPart.y);
return mix(sampleA, sampleB, fracPart.x);
}
D
float sampleShadowMap(sampler2D depthMap, vec2 coords, float lod, float compare)
{
return step(compare, texture(depthMap, coords, lod).r);
}
float sampleShadowMapLinear(sampler2D depthMap, vec2 coords, float compare)
{
const int lod = 0;
vec2 texelSize = 1.0 / textureSize(depthMap, lod);
vec2 pixelPos = coords / texelSize + vec2(0.5);
vec2 fracPart = fract(pixelPos);
vec2 startTexel = (pixelPos - fracPart) * texelSize;
vec4 samples;
samples[0] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 0.0) * texelSize, lod, compare);
samples[1] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 0.0) * texelSize, lod, compare);
samples[2] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 1.0) * texelSize, lod, compare);
samples[3] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 1.0) * texelSize, lod, compare);
float sampleA = mix(samples[0], samples[2], fracPart.y);
float sampleB = mix(samples[1], samples[3], fracPart.y);
return mix(sampleA, sampleB, fracPart.x);
}
AP