if(light.type==DIRECTIONAL)
{
v.camera.set_object_matrix(*light.light->get_matrix());
- v.camera.set_position(target);
+ Vector4 pos = v.camera.get_view_matrix()*compose(target, 0.0f);
+ LinAl::Vector<float, 2> texel_size = { radius*2.0f/light.region.width, radius*2.0f/light.region.height };
+ pos = { round(pos.x/texel_size.x)*texel_size.x, round(pos.y/texel_size.y)*texel_size.y, pos.z, 0.0f };
+ v.camera.set_position((v.camera.get_object_matrix()*pos).slice<3>(0));
v.camera.set_orthographic(radius*2, radius*2);
v.camera.set_depth_clip(-radius, radius);
}