forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   DOF (Depth of Field) (http://forum.boolean.name/showthread.php?t=11939)

moka 17.02.2010 03:20

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

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

Фастэкс вроди как использует дептх карту, но это достигнуто на уровне DirectX.

SKA_DIMKA 17.02.2010 03:35

Ответ: DOF (Depth of Field)
 
Цитата:

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

Этого в полне хватило)
Думаю сделать может черезжопство конешно но все же....

Рендер сцены в текстуру(256х256) - Заблюрить ее - И вывести текстуру на плоскость которая на определенном радиусе?

moka 17.02.2010 03:47

Ответ: DOF (Depth of Field)
 
Угу, можно и так, будет правда резкая грань отсечения размытой текстуры.

Mr_F_ 17.02.2010 09:42

Ответ: DOF (Depth of Field)
 
хм интересно бы зашейдерить реальный доф
который не гауссит а типа разбивает все на такие увеличивающиеся круги (многоугольники, в зависимости от линзы)

moka 18.02.2010 01:54

Ответ: DOF (Depth of Field)
 
Цитата:

Сообщение от Mr_F_ (Сообщение 137828)
хм интересно бы зашейдерить реальный доф
который не гауссит а типа разбивает все на такие увеличивающиеся круги (многоугольники, в зависимости от линзы)

Видел пейперы таких блуров.. Но из-за пикселизации, не так и просто. Нада будет сперва блурить картинку на 50%, а затем использовать дополнительный шейдер, выделяющий такие "кружочки"..
ООчень ресурсоёмко..


Часовой пояс GMT +4, время: 05:11.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot