Джедай Миха
Заработала карта теней! Сколько я с ней бился? Хм... недели две где-то. Ужас. А проблема была в том, что во фрагментном шейдере неправильно сравнивались глубины:

if (depth < z + 0.00001)
return 0.5;
else
return 1.0;

Вот тут должен стоять не плюс, а минус. Дело в том, что я зачем-то камеру направил по оси z в ЛСК камеры. А везде (и в OpenGL) направляют против.