To add the PCF technique to the shadow mapping algorithm, use the following steps:
- When setting up the FBO for the shadow map, make sure to use linear filtering on the depth texture. Replace the corresponding lines with the following code:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- Use the following code for the shadeWithShadow function within the fragment shader:
subroutine (RenderPassType) void shadeWithShadow() { vec3 ambient = vec3(0.2); vec3 diffSpec = diffAndSpec(); // The sum of the comparisons with nearby texels float sum = 0; // Sum contributions from texels around ShadowCoord sum += textureProjOffset(ShadowMap, ShadowCoord, ...