Показать сообщение отдельно
Старый 17.02.2010, 03:20   #16
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: DOF (Depth of Field)

Шейдерами, рендеришь дептх карту в 32 битный, одно канальный формат.
Далее, рендеришь сцену тоже в текстуру (нормальную, 8 бит на канал, rgb).
Затем пост обработка, биллбоард перед экраном, уменьшенное разрешение вьювпорта, используя шейдер gaussian blur, выводишь отрендеренную сцену, и это запекаешь ещё в другую текстуру.
Затем финальный рендер, биллбоард перед камерой, нормальный вьювпорт, смещаешь данное с дептх карты текущего пикселя, исходя из дистанции от камеры, до точки акцента (отнимаешь от исходного значения). Делишь на радиус обзора, от этой точки, и затем это данное используешь как коэффицент размытия, чем он больше тем больше должно быть размыто.
Таким образом используя lerp, фейдишь, между нормальной текстурой экрана, и размытой, исходя из коэффицента размытия.

Я не думаю что тебе это краткое описание что-то дало. Это про шейдеры. Но ты спросил как реализовать - я ответил.

Фастэкс вроди как использует дептх карту, но это достигнуто на уровне DirectX.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SKA_DIMKA (17.02.2010)