UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

3 lines (2 loc) 3.01 kB
declare const _default: "\n// http://the-witness.net/news/2013/09/shadow-mapping-summary-part-1/\nfn _getShadowPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec3f) -> f32 {\n\n let z: f32 = shadowCoord.z;\n let uv: vec2f = shadowCoord.xy * shadowParams.x; // 1 unit - 1 texel\n let shadowMapSizeInv: f32 = 1.0 / shadowParams.x;\n let base_uv_temp: vec2f = floor(uv + 0.5);\n let s: f32 = (uv.x + 0.5 - base_uv_temp.x);\n let t: f32 = (uv.y + 0.5 - base_uv_temp.y);\n let base_uv: vec2f = (base_uv_temp - vec2f(0.5)) * shadowMapSizeInv;\n\n let uw0: f32 = (4.0 - 3.0 * s);\n let uw1: f32 = 7.0;\n let uw2: f32 = (1.0 + 3.0 * s);\n\n let u0_offset: f32 = (3.0 - 2.0 * s) / uw0 - 2.0;\n let u1_offset: f32 = (3.0 + s) / uw1;\n let u2_offset: f32 = s / uw2 + 2.0;\n\n let vw0: f32 = (4.0 - 3.0 * t);\n let vw1: f32 = 7.0;\n let vw2: f32 = (1.0 + 3.0 * t);\n\n let v0_offset: f32 = (3.0 - 2.0 * t) / vw0 - 2.0;\n let v1_offset: f32 = (3.0 + t) / vw1;\n let v2_offset: f32 = t / vw2 + 2.0;\n\n var sum: f32 = 0.0;\n\n let u0: f32 = u0_offset * shadowMapSizeInv + base_uv.x;\n let v0: f32 = v0_offset * shadowMapSizeInv + base_uv.y;\n\n let u1: f32 = u1_offset * shadowMapSizeInv + base_uv.x;\n let v1: f32 = v1_offset * shadowMapSizeInv + base_uv.y;\n\n let u2: f32 = u2_offset * shadowMapSizeInv + base_uv.x;\n let v2: f32 = v2_offset * shadowMapSizeInv + base_uv.y;\n\n sum = sum + uw0 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v0), z);\n sum = sum + uw1 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v0), z);\n sum = sum + uw2 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v0), z);\n\n sum = sum + uw0 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v1), z);\n sum = sum + uw1 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v1), z);\n sum = sum + uw2 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v1), z);\n\n sum = sum + uw0 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v2), z);\n sum = sum + uw1 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v2), z);\n sum = sum + uw2 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v2), z);\n\n sum = sum * (1.0 / 144.0);\n sum = saturate(sum);\n\n return sum;\n}\n\nfn getShadowPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n return _getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\n\nfn getShadowSpotPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n return _getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\n"; export default _default;