Misanthrope
Ну по факту да. По z буферу восстановить позицию
Во многих движках используется техника контактных теней: Unreal Engine 4, Unity, CryEngine, Unigine.
Лучше использовать их вместе с обычными тенями для устранения эффекта Peter Panning и для добавления теней от мелких объектов, установив небольшое значение длины луча. Если их использовать отдельно, то артефакты сразу же будут бросаться в глаза.
Я пробовал реализовать контактные тени из Unreal Engine 4, но у меня была проблема с тем, что я не мог корректно перевести вектор направления источника света в пространство вида. Оказывается нужно было немного по-другому строить матрицу вида:
Пришлось немного переписать шейдер, так как я восстанавливаю позицию из буфера глубины. Вот как шейдер должен выглядеть в идеале:
Self-Shadowing of Parallax Occlusion Mapping
Скоро упрешься в пропускную способность с таким фанатизмом к скринспейсу. А так, ENAleksey дельный вариант предлагает. Сам подобное случайно реализовал, когда впервые попытался запилить HBAO. Пригодно только для освещения мелких (относительно вида) объектов, максимум - теней от мелких ламп и светильников, или случаев с жестко фиксированной камерой. Да и то с артефактами.
ENAleksey
Благодарю то что мне нужно
Тема в архиве.