X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=shaderlib%2Fshadow.glsl;h=04cf6832dcffd19a6a4949c1049b98e0f2b64a40;hb=82282de52e8e8f3bbafefaf92bf76f53f2c2495e;hp=0a20b3a513998272fc13d14f386f621f32864e8d;hpb=5ca47579de51342ac3e8ecda2cbb9be2f8b4643a;p=libs%2Fgl.git diff --git a/shaderlib/shadow.glsl b/shaderlib/shadow.glsl index 0a20b3a5..04cf6832 100644 --- a/shaderlib/shadow.glsl +++ b/shaderlib/shadow.glsl @@ -1,18 +1,28 @@ import msp_interface; -const bool use_shadow_map = false; +uniform ShadowMap +{ + float shadow_darkness; + mat4 shd_world_matrix; +}; + +uniform sampler2DShadow shadow_map; + +layout(constant_id=auto) const bool use_shadow_map = false; #pragma MSP stage(vertex) -void shadow_transform(vec4 eye_vertex) +void shadow_transform(vec4 world_vertex) { - out vec3 shadow_coord = (shd_eye_matrix*eye_vertex).xyz; + out vec3 shadow_coord = (shd_world_matrix*world_vertex).xyz; } #pragma MSP stage(fragment) -float get_shadow_factor(int index) +virtual float get_shadow_factor(int index) { if(use_shadow_map) { + if(shadow_coord.x<0 || shadow_coord.x>1 || shadow_coord.y<0 || shadow_coord.y>1) + return 1.0; float shadow_sample = texture(shadow_map, shadow_coord); return mix(1.0, shadow_sample, shadow_darkness); }