Ответ: DOF (Depth of Field)
Шейдерами, рендеришь дептх карту в 32 битный, одно канальный формат.
Далее, рендеришь сцену тоже в текстуру (нормальную, 8 бит на канал, rgb).
Затем пост обработка, биллбоард перед экраном, уменьшенное разрешение вьювпорта, используя шейдер gaussian blur, выводишь отрендеренную сцену, и это запекаешь ещё в другую текстуру.
Затем финальный рендер, биллбоард перед камерой, нормальный вьювпорт, смещаешь данное с дептх карты текущего пикселя, исходя из дистанции от камеры, до точки акцента (отнимаешь от исходного значения). Делишь на радиус обзора, от этой точки, и затем это данное используешь как коэффицент размытия, чем он больше тем больше должно быть размыто.
Таким образом используя lerp, фейдишь, между нормальной текстурой экрана, и размытой, исходя из коэффицента размытия.
Я не думаю что тебе это краткое описание что-то дало. Это про шейдеры. Но ты спросил как реализовать - я ответил.
Фастэкс вроди как использует дептх карту, но это достигнуто на уровне DirectX.
|