Сержант дело говорит, слушайте его.
Основной плюс CSM как раз и есть в том что можно отказаться от перспективных искажений, которые просто танцы с бубнами, и нормально работают для конкретных случаев,
а для других увы нет.
Аврелий
Не догнал как учитывается расстояние от камеры до фрагмента при построении shadow map'ы?
Здесь как-то глубины нет:
OUT.position.x=OUT.position.x/(abs(OUT.position.x)+1.0f); OUT.position.y=OUT.position.y/(abs(OUT.position.y)+1.0f);
В каком пространстве OUT.position?
Аврелий
> D3DXMatrixOrthoLH( &matProj, Radius, Radius, -200.0f, 200.0f );
А радиус как вычисляется? От размеров сцены зависит или как?
Executor
наверное у него magic number, исходя из предыдущих постов. :)
eagle
> OUT.position
это уже выходные данных после домнажения на матрицу WVP
Сержант
> Но при смещении камеры дрожать будет и там и там, поэтому лучше пользовать CSM.
в моем методе дрожания настраиваемые. и в статье есть место об этом. просто "шаг" при котором SM будет смещаться - тоже можно настроить.
eagle
> В каком пространстве OUT.position?
в экранном
Executor
> А радиус как вычисляется? От размеров сцены зависит или как?
надо выставить так чтобы в шедоумапе, с учетом искажений - влезлась вся желаемая сцена, этот аргумент также будет влиять на качество теней возле самой камеры.
Chaos_Optima
> это уже выходные данных после домнажения на матрицу WVP
Камеры или лампочки?
eagle
в статье написано что преобразование делается в 2 местах, и для камеры, и для лампочки.
Аврелий
> в статье написано что преобразование делается в 2 местах, и для камеры, и для
> лампочки.
Это понятно. Второй раз просто восстанавливаем этот сдвиг.
Вопрос в другом. В статье:
> Суть проста, чем
дальше геометрия,
> тем ближе ее надо притянуть к центру теневой карты
В коде же я вижу только сдвиг пропорциональный проекции точки на плоскость лампочки:
OUT.position.x=OUT.position.x/(abs(OUT.position.x)+1.0f); OUT.position.y=OUT.position.y/(abs(OUT.position.y)+1.0f);
Причем, я абсолютно не понимаю смысл этой формулы.
eagle
> Это понятно. Второй раз просто восстанавливаем этот сдвиг.
не надо ничего восстанавливать! два разы это первый для шедоумапы, а второй - при наложении шадоумапы.
eagle
> В коде же я вижу только сдвиг пропорциональный проекции точки на плоскость
> лампочки:
что ты имеешь в виду под словом "лампочка"?
Аврелий
> что ты имеешь в виду под словом "лампочка"?
Вид на сцену из источника света
eagle
ну вот второй скрин в статье наглядно показывает как работает формула, без нее мы бы видели только кусочек сцены, а так - вся влезет в теневую карту.
Аврелий
> ну вот второй скрин в статье наглядно показывает как работает формула, без нее
> мы бы видели только кусочек сцены, а так - вся влезет в теневую карту.
Да я прошу смысл формулы объяснить.
Вот, например, у тебя в статье есть ссылка на pdf c RTW. Там честно строится карта значимости (один из критериев - расстояние от камеры до точки ) каждого тексела SM. В зависимости от нее и двигаются точки.
У тебя же какой-то фейк и я хочу понять как он работает.
eagle
чем дальше точка от центра экрана при рендере SM тем ближе ее присунуть в центр. В итоге те кто в центре почти не поменяются, а те что дальше - сожмутся и станут видимыми.
Аврелий
> чем дальше точка от центра экрана при рендере SM тем ближе ее присунуть в
> центр. В итоге те кто в центре почти не поменяются, а те что дальше - сожмутся
> и станут видимыми.
Мои худшие подозрения подтвердились.
Какой в этом смысл? Хочется чтобы точки близкие к камере получали в SM больше места, а дальние меньше.
А запихивая всю сцену в SM вместо кусочка ты только ухудшаешь распределение текселей.
Тема в архиве.