20 Мая 2024, 12:42:07
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Контент > Как запечь RAWReflection в текстуру?
Как запечь RAWReflection в текстуру?
(Прочитано 13984 раз)
  [1] 2
Печать
dfx | ** | Пользователь | Сообщений: 95 | « 18 Мая 2011, 20:04:04 »
Как запечь RAWReflection в текстуру? |
0
Всем привет.
 
Нужны глосси-отражения, в условиях статичной сцены и освещения.
Достаточно в GrayScale и приличным размытием. Я так понимаю, что можно обойтись двумя RGBA текстурами, но запечь отражения в тектуру vray не может, т.к. просто не существует такого рендер-элемента для RTT.

Делать материалы полностью отражающими - не выход, т.к. они примамают тени. А сделать так, что бы объект не приниал тени если виден в камеру, но принимал, если в отражении нельзя.)

Есть у кого какие-нибудь идеи?
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #1 18 Мая 2011, 20:19:44 »
Re: Как запечь RAWReflection в текстуру? |
1
Привет!
не совсем понял о чем речь, особенно про тени
может стоит сделать дополнительную нормалку (шумовую), делать из нее выборку вектора, умножать на коэффициент и учитывать дополнительно этот вектор при выборке из кубмапы, возможно, что таким образом можно будет добиться эффекта глосси
« Последнее редактирование: 18 Мая 2011, 20:41:50 от Ruslan »
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #2 18 Мая 2011, 20:20:29 »
Re: Как запечь RAWReflection в текстуру? |
2
Юзай имэйдж спэйс  рефлекены

и вокруг детерминированной точки делай   гаус выборку.


естественно  у тебя должен быть полный G-буффер.



Если реалистичность не нужна , то вполне подойдёт дедовский способ   - сблюренная кубамапа.Хорошо умеет блюрить кубамапы    старая  тулся  от ATI по кубамапам (точного названия не помню).
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #3 18 Мая 2011, 21:01:11 »
Re: Как запечь RAWReflection в текстуру? |
3
Ruslan
Цитировать
возможно, стоит сделать нормалку шумовую, подстроить коэффициент, тогда отражения с кубмапы будут выбираться с небольшим отклонением, возможно, что таким образом можно будет добиться эффекта глосси
Для блура кубамапы в реалтайм я делал выборки по скринспэйс нормалке, т.к. локальная работала совсем не так - при включенном мипмапинге весь шум терялся и разблуренность пропадала. При отключенном - жуткая каша пикселей. Но реалтайм-блур алгоритм очень тяжелый, использовался только потому, что нужны были размытия для анизотропных материалов.
Кроме всего некий шум таки остается. Чем больше пассов, тем глаже, но тормознее. Грустный

Кстати, видел ролик, где чел демонстривал такие размытия, но у него они были очень гладенькие и работало все шутро. Если в курсе его магии, намекни, кде копать. Подмигивающий

Кубамапу я не хочу применять в силу отсутствия локализации отражающихся элементов и отсутствия самоотражения.

Sqwer

Цитировать
Юзай имэйдж спэйс  рефлекены
При том, что я в эффектах далеко не начинающий, после такой фразы так и хочется сказать: "Вот ты сейчас с кем разговаривал?" Смеющийся
Можно ссылочку? Если есть что то, что считает отражение на криволинейных поверхностях в реалтайме, то я первый в очереди! Улыбающийся

На самом деле Нужны глосси-селф-рефлекшнс. Хотел бы обойтись предпросчитанными, т.к. свет не меняется, объекты не двигаются, объектов в сцене мало, нехотелось бы сильно грузить гпу математикой.

Пока есть мысль хранить 2-3 предпросчитанных текстур с отражением. Т.е. 8-12 каналов для полусферы в тангентспэйс и интерполировать их взависимости от вектора камеры. Это, конечно, не сферические функции, но типа того. Другое дело, что нарендерить это в врей нельзя. Я хотел подменять нормали для каждого канала, но тогда и в отражениях они будут тоже изменены, а значит не корректно освещенный объект в своем отражении. Видимо, поможет, либо смена технологии, либо врей-сдк. Грустный

Спасибо Вам, за помощь.
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #4 18 Мая 2011, 21:16:12 »
Re: Как запечь RAWReflection в текстуру? |
4
на мой взгляд, запечение глосси лишено смысла, так как они зависят от вектора взгляда, то-есть, я вообще сомневаюсь, что их можно запечь.
по поводу IBR, о которых говорил Sqwer, можно посмотреть здесь:
http://www.gamedev.ru/code/forum/?id=147202&page=36
там Che@ter и Chaos_Optima их реализовали в своих демках.
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #5 18 Мая 2011, 21:23:14 »
Re: Как запечь RAWReflection в текстуру? |
5
Цитировать
При том, что я в эффектах далеко не начинающий, после такой фразы так и хочется сказать: "Вот ты сейчас с кем разговаривал?"
Тогда тем более слова: имэйдж, спэйс, рефлекшнс  должны в крови сидеть!

да и  сочетания  (имэйдж спэйс и  скрин спэйс   в пост эффектах означают одно и то же)

Цитировать
Можно ссылочку?
Пжста.  
http://www.gamedev.ru/code/forum/?id=147202&page=26

пэйперов не встречал, но  код и так не хитрый. Там трассеры  нужно делать в 1ом направлении. как узнать направление - не беда  если есть Г буффер с нормалями.

постепенно трассируя лучами мы приближемся к исходной точки отражания.
на этом можно и остановиться , если нужны чёткие отражения, но если нужно именно глосс отражения, то рядом  с этой  искомой точкой можно сделать выборки  и блюрить по гаусу.
Чем дальше  точка обработки от целевой точки  отражения   - тем больше радиус выборок блюра.

Поскольку это всё таки  скрин спэйс, то проблема перекрытых (за кадровых)   объектов  остаётся.
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #6 18 Мая 2011, 21:25:02 »
Re: Как запечь RAWReflection в текстуру? |
6
Цитировать
Пока есть мысль хранить 2-3 предпросчитанных текстур с отражением. Т.е. 8-12 каналов для полусферы в тангентспэйс и интерполировать их взависимости от вектора камеры. Это, конечно, не сферические функции, но типа того. Другое дело, что нарендерить это в врей нельзя.

Мы эксперементировали  с примерно подобным алгоритмом,   получилось примерно как в клипе:
http://www.youtube.com/watch?v=CuMjeiDSCOY&feature=BFa&list=PLDA11CB4D56624B23
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #7 18 Мая 2011, 21:42:21 »
Re: Как запечь RAWReflection в текстуру? |
7
Sqwer
Цитировать
Мы эксперементировали  с примерно подобным алгоритмом,   получилось примерно как в клипе
Смеющийся Да, у меня тоже подобное было с тремя коэффициентами в тангентспейс. Вы сколько коэффициентов использовали? Если больше 16 на полусферу, то придется отказаться, наверное. - дороговато будет по ресурсам и по выборкам.
Теоритически, с 8-12 должно быть намного лучше. Я видел PRT глосси отражения, вертексные. Непомню, сколько они коэффициентов использовали, но смотрелось более или менее. Кроме того, в таких алгоритмах используется полная сфера в ворлдспейс. Непонравилось только то, что сетка все же прослеживалась по отражениям.
 
За ссылку на ветку спасибо! Смутило требование дх11. Попробую в алгоритм вникнуть. Но 45 фпс на дх11 картах..  Строит глазки
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #8 18 Мая 2011, 21:47:45 »
Re: Как запечь RAWReflection в текстуру? |
8
dx11 для этого алгоритма не обязателен, на dx9 реализуется
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #9 18 Мая 2011, 21:55:29 »
Re: Как запечь RAWReflection в текстуру? |
9
dfx
раз ты в теме   OpenCL  , не мог бы подсказать,  как долго биндинг 1024*1024  текстуры    из ОЗУшки в  текстуру ДХ   и обратно  идёт?

и можно ли прям  с видяхи минуя ОЗУ это сделать.


Есть идеи как сделать не фэйковый  ГИ, но нужны выч шейдеры или GPUориентированная реализация  для трассировки лучей.
Corpic | * | Новичок | Сообщений: 23 | «Ответ #10 18 Мая 2011, 22:45:34 »
Re: Как запечь RAWReflection в текстуру? |
10
Встретилась ссылочка http://www.clockworkcoders.com/oglsl/rt/gpurt1.htm,  может подойдет?
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #11 18 Мая 2011, 22:56:32 »
Re: Как запечь RAWReflection в текстуру? |
11
Цитировать
может подойдет?
нет ,это вьюв  спэйс реализация.

Суть ГИ -  это моделирование отскока. прямой  ортогональный  световой поток  сделать простоЮ но после встречи с препятствием (например чайник)   лучи  света   хаотично распространяются во всех направлениях.  Вью спэйс - это одно направление. Хоть и можно сделать конечное число однопиксельных рендеров вью спейса по направлению лучей отскока, но вот на DIP ах  вся производительность загнётся.


Вторая причина: -  в примере  разберается простейший случай 1 объект.  а если их 20  и каждый перекрывает друг друга, а соответсвенно затирает Z.

Обычный рендер не приемлем.
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #12 19 Мая 2011, 00:16:42 »
Re: Как запечь RAWReflection в текстуру? |
12
Sqwer
Цитировать
раз ты в теме   OpenCL  , не мог бы подсказать,  как долго биндинг 1024*1024  текстуры    из ОЗУшки в  текстуру ДХ   и обратно  идёт 
К сожалению, я не настолько в теме, что бы ответить.

Оффлан рендеры сильно отличаются от реалтайм. То, что они теперь могут использовать гпу, не значит, что они работают полностью на гпу. ЦПУ выступает неким менеджером, который формирует задачи и отправляет их гпу. Т.е. гпу уже получает все необходимые данные для того, что бы сделать вычисления и после возвращает результат. При построении одного кадра таких задач, формируется, огромное количество.
 
В теории,если на дх10 картах, можно копировать, создавать и удалять геометрию, то ничего не мешает в цикле проводить махинации с позициями вершин в геометрическом жейдере и можно посчитать ГИ на уровне одного объекта только в шейдере за один вызов. Только всеравно это будет дорогим удовольствием.

Во вьюспейс полноценный ГИ сделать проблематично. Рендер несколько слоев вьюспейс тоже не поможет, а только займет ресурсы. Как ты верно заметил, надо делать множество вызовов геометрии что превратит реалтайм рендер в офлайн, с реалтайм подходом) Можно сделать некий встроенный предпросчет в 3д текстуры при загрузке, а в процессе делать выборки из нее. Но в этом случае динамики не получится.

Проблема всех вьюспейс техник - недостаток информации, что остается за пределами кадра. С другой стороны, информацию в радиусе камеры получить можно за вызов. Вроде, ты сам говорил, что в дх10 можно считать кубамап за один проход. Если принимать во внимание то, что для ГИ не нужно высокого разрешения, то можно считать кубомапу - G-буфер в небольшом разрешении и таскать данные еще и из нее. Конечно, добавится еще один проход, но все зависит от цели. Информацию за перекрытыми объетами так не получить, но отскоки в зоне сферы камеры посчитать уже можно.

Правда, из-за такого хаотичного гуляния луча могут быть частые кеш-промахи.

Я бы сам не против реализовать ГИ, используя один Г-буфер.
 Пока ничего не придумал. Обеспокоенный
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #13 19 Мая 2011, 00:27:29 »
Re: Как запечь RAWReflection в текстуру? |
13
Цитировать
В теории,если на дх10 картах, можно копировать, создавать и удалять геометрию, то ничего не мешает в цикле проводить махинации с позициями вершин в геометрическом жейдере и можно посчитать ГИ на уровне одного объекта только в шейдере за один вызов. Только всеравно это будет дорогим удовольствием.

можно , но на уровне примитивов.  т.е.  склить меши там никак не получится.

Цитировать
Если принимать во внимание то, что для ГИ не нужно высокого разрешения, то можно считать кубомапу - G-буфер в небольшом разрешении и таскать данные еще и из нее. Конечно, добавится еще один проход, но все зависит от цели. Информацию за перекрытыми объетами так не получить, но отскоки в зоне сферы камеры посчитать уже можно.
делали такое (кубамаповый G-buffer),  появляется информация   о объектах  которые  оружают  вью спэйс, что помогает решать проблемы  ореола по контуру  скрина, но не более.
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #14 19 Мая 2011, 01:02:20 »
Re: Как запечь RAWReflection в текстуру? |
14
Цитировать
делали такое (кубамаповый G-buffer),  появляется информация   о объектах  которые  оружают  вью спэйс, что помогает решать проблемы  ореола по контуру  скрина, но не более.

Дороговато делать проход, что бы убрать этот артифакт) Проще кропить картинку, наверное...
Народ в ветке, куда вы ссылку дали, юзают такую кубамапу для скринспейс рефлектов. Так, что не только, что бы убарть ореол она может пригодиться.
Значит пробовали считать ГИ с кубомапой? Чем результат не устроил? А то вот меня заинтриговали, хотел попробовать реализовать. Теперь сомневаюсь.
 
  [1] 2
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Контент > Как запечь RAWReflection в текстуру?
Перейти в: