Pull to refresh

Comments 12

Интересная техника, спасибо за подробную статью. Скажите, а Вы не рассматривали Geometry Pitch Shadow Mapping (GPSM)? В своё время тоже надо было сделать качественный рендеринг теней на большом расстоянии. Думал использовать GPSM, техника показалась очень интересной. К сожалению пощупать ручками не получилось, сменили рабочую задачу. =(
К слову, может кто нить дать направление поисков… Мне нужно вот что. Так сказать, затенить то, что персонаж не видит, абсолютно чёрным цветом, уже после прохода теневого. Насколько я понимаю, это можно реализовать любым теневым алгоритмом, предполагая, что виртуальный «источник света» находится в районе глаз этого персонажа… Как можно повторно обработать сцену с уже просчитанными тенями и светом? В этом есть какие-то особенности?

Извините что сумбурно, если непонятно постараюсь уточнить.

PS: камера — вид сверху, при этом надо графически затенить то, что не видит именно персонаж, а не камера.
Фактически Вы сами ответили на свой вопрос. Проблемы могут быть только если вы по каким-либо причинам не можете изменить шейдер.

Что Вы имеете ввиду под «сценой с уже просчитанными тенями и светом»? В этой ситуации нужно считать что глаза персонажа — это такой-же источник света (строится теневая карта, как для точечного источника света — «прожектора», с перспективной матрицей проекции), с той разницей что «затенённые» места абсолютно черные, а освещение в «незатененных» местах зависит от остальных источников света.
Вот как сделать
«затенённые» места абсолютно черные, а освещение в «незатененных» местах зависит от остальных источников света

пока не очень понимаю… К тому же мне нужно строить немного иную карту теней в таком случае — ибо мне не нужно, чтобы «тени» отбрасывались от некоторых объектов.

Я мягко говоря новичок и немного запутался во всём этом… :)
Я не знаю особенностей вашей игры, но если вы сделаете так, как описали, то получите на виде сверху дополнительные тени позади всех объектов, на которые смотрит игрок. Например, игрок стоит перед другим игровым персонажем, а за последним длиннющая тень (действительно, игрок же не видит этот участок пространства). Рискну предположить, что нужно не это, а просто показать поле зрения игрока. В этом случае я бы в постпроцессинге проецировал пирамиду зрения игрока на плоскость зрения камеры. В самом простом случае можно подготовить текстуру с белым усеченным треугольником на черном фоне, и накладывать ее как декаль на всю сцену. Если предполагается, что на виде сверху мы видим комнаты без крыш (как в старых рпг) и внутри них должно быть темно, даже если мы смотрим куда-то в их направлении, то тут уже отдельная история. В общем, все зависит от требований.
Беда в том, что я хочу сделать полноценный 3D вариант этого механизма :) В любом случае спасибо. Может помочь сообразить в каком направлении двигаться.
Скажите, а почему бы не рисовать бекфейсы, при рендере из источника света? Самозатенение все еще будет, на бекфейсах, но bias для тени можно будет выставлять отрицательным, и исчезнет эффект отрыва тени. В целом будет смотреться как некоторый ambient occlusion.
Да, знаю такой подход. Правда, будет работать хорошо только для замкнутых тел.
Насколько я вижу — у вас как раз только такие тела.
Конкретно в моем случае, да, это сработает, вы совершенно правы
Sign up to leave a comment.

Articles