]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programbuilder.cpp
Improvements for shadow mapping
[libs/gl.git] / source / programbuilder.cpp
index 46f7c153b5fbb9132910875a48a13353a2941e68..1e07c1e555b03af9e271db964d398a72dbab95f8 100644 (file)
@@ -53,7 +53,8 @@ const ProgramBuilder::StandardVariable ProgramBuilder::standard_variables[] =
        { FRAGMENT, "rgb_light", "vec3", "vec3(l_diffuse+l_specular)", "!mp" },
        { FRAGMENT, "rgb_light", "vec3", "l_diffuse*gl_FrontLightProduct[0].diffuse.rgb", "m!p" },
        { FRAGMENT, "rgb_light", "vec3", "l_diffuse*gl_FrontLightProduct[0].diffuse.rgb+l_specular*gl_FrontLightProduct[0].specular.rgb", "mp" },
-       { FRAGMENT, "l_shadow", "float", "shadow2D(shadow, shd_vertex).r", 0 },
+       { FRAGMENT, "l_shadow", "float", "mix(1.0, shadow_sample, shadow_darkness)", 0 },
+       { FRAGMENT, "shadow_sample", "float", "shadow2D(shadow, shd_vertex).r", 0 },
        { FRAGMENT, "l_diffuse", "float", "max(dot(n_zzz_normal, n_zzz_light_dir), 0.0)", 0 },
        { FRAGMENT, "l_specular", "float", "pow(max(dot(n_zzz_half_vec, n_zzz_normal), 0.0), gl_FrontMaterial.shininess)", 0 },
        { FRAGMENT, "n_zzz_half_vec", "vec3", "normalize(zzz_light_dir-zzz_incident_dir)", 0 },
@@ -87,6 +88,7 @@ const ProgramBuilder::StandardVariable ProgramBuilder::standard_variables[] =
        { UNIFORM, "shadow_unit", "int", 0, 0 },
        { UNIFORM, "texture", "sampler2D", 0, 0 },
        { UNIFORM, "shadow", "sampler2DShadow", 0, 0 },
+       { UNIFORM, "shadow_darkness", "float", 0, 0 },
        { UNIFORM, "normalmap", "sampler2D", 0, 0 },
 
        // Terminator entry