HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Страницы (247): « Первая ... « 243 244 245 246 [247]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32324
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Ещё в Юнити был очень прикольный шейдер фейковых спотлайтов, ты их мог ставить практически неограниченное количество и это даже работало на древних мобильниках.

Это обычные прожекторы. В Хл2 фонарик устроен таким образом. Естественно, если вместо текстуры фонаря выбрать другую, то это будет некоторым образом похоже на тень. Ну то есть это не настоящая тень конечно. Это тень от окклюдера, который расположен на бесконечно малом удалении от источника света, если выражаться корректно. Но понятно, что там рисуют всё что угодно на ней.

Цитата:
FiEctro писал:
Вот да, в Юнити это тоже проблема, сортировка и освещение моделей с 8ми битной альфой

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

Цитата:
FiEctro писал:
С монохромной альфой сортируются они неплохо, и освещение и тени есть.

Ты опять всё напутал. Во первых монохромная альфа - это такой же мем как колоизация с рандомным англированием. Очевидно что речь идёт об однобитной альфе. Которую тоже никто не мешает рисовать в прозрачном проходе. Но её обычно рисуют через альфа-тест со включённым тестом глубины. Поэтому с ней и нет никаких проблем. Разумеется можно и восьмибитную альфу рисовать через альфа-тест, почему нет. Это даже красивее выглядит, чем в случае с однобитной.

Цитата:
FiEctro писал:
как мне объяснили это ограничение Z-буфера

Неправильно тебе объяснили. Z-буффер только для непрозрачных объектов, которые перекрывают друг-друга. Он не учитывает прозрачность отдельных пикселей внутри полигона. Такую штуку тоже можно сделать, но для этого придётся для каждого экранного пикселя хранить набор пикселей с их цветом, прозрачностью и глубиной. То есть фактически под каждый пиксель придётся завести массив пикселей для корректного смешивания. И перед отрисовкой их надо отсортировать, а уже потом сложить\предумножить. Такой буффер занимает чертовски много места (особенно в 4K) и не очень хорошо ложится на архитектуру GPU. Проще говоря - тормозно это всё, даже сейчас. Но если тебя заинтерисовала эта тема, погугли Order Independent Transparency (Translucency). Строго говоря, если бы такой буффер поддержали на аппаратном уровне, то проблема сортировки и правильного вывода полупрозрачных поверхностей была бы наконец-то решена, но это видимо никому нахрен не нужно, т.к. сейчас все делают только то, что приносит быстрые деньги - например тензорные ядра для ИИ.
И да, кстати - проблема с сортировкой полупрозрачных поверхностей, это не проблема Юнити. Это фундаментальная проблема рендеринга, которая в общем случае не имеет решения.

Цитата:
FiEctro писал:
Надеюсь в Ксаше проработаешь этот момент.

У меня сортировка на уровне поверхностей. Это лучше чем полное её отсутствие, но понятное дело, хуже, чем попиксельная сортировка OIT.
Некий разумный баланс между качеством и скоростью. То есть, если налепить стеклянный лабиринт, то выглядеть он будет правильно. А вот какой-нибудь стеклянный дракончик уже будет выглядеть далеко не так красиво.

Добавлено сегодня в 17:32:

А с отложенным освещением я не хочу связываться по очень простой причине. В основе самой техники отложенного освещения лежит допущение, что наши источники света - это либо спотлайты, либо поинтлайты, непременно с линейным затуханием. И крайне желательно чтобы радиус этого затухания всегда был меньше размера экрана, а в случае когда он больше - чтобы в радиусе прямой видимости находилось совсем немного источников. Действительно, если рисовать источники света классическим способом - через повторный рендеринг геометрии, как это делали во времена GeForce 6600GT, то отложка показывает чудеса оптимизации. Но во первых обратите внимание на любую демку отложенного освещения - там стараются впихнуть сотни микроскопических источников света без теней, тогда как в реальной игровой ситуации подобного просто не встречается. Аналогично можно бросить камень в огород в сторону физических движков, у которых в демках показывают громадную пирамиду из кубиков - что тоже в реальной игровой ситуации никогда не встречается.
Так вот, моя идея в том, что у нас используются лампочки с квадратичным затуханием - те самые, которые изначально запекались в лайтмапу и поэтому не тормозили. Но отложка с такими лампочками не подружится, потому что фактически каждый из таких источников гарантированно перекрывает весь экран. Т.е. мы получим чудовищный overdraw в любом случае.
Моё решение на данный момент заключается в использовании предрассчитанной визлайт-матрицы, которая совершенно точно позволяет определить все лампочки, которые светят на тот или иной полигон и сделать это за пренебрежимо малое время. Минус только в том, что эти лампы статичные, они не двигаются. Но для динамических источников как раз используются лайты с линейным радиусом затухания.
Просто с моими предрассчитанными данными, у меня всегда есть возможность найти и собрать все лампочки, которыми освещена та или иная поверхность и передать их прямо в шейдер, но не в виде настройек этих лампочек, а в виде их уникальных индексов. А дальше в шейдере мы читаем шареную текстуру где хранятся уже сами настройки лампочек и освещаем полигоны. Таким образом рендеринг и освещение осуществляется в один проход и это гораздо быстрее по факту. К тому же у нас есть приятная возможность выбирать между повертексным и попиксельным освещением, чего с отложкой сделать не представляется возможным.
Этот подход я опробовал ещё во время разработки второй паранои и он показал удовлетворительные результаты. Единственное ограничение - это кол-во лампочек, которыми может быть освещена поверхность.
Я стараюсь не передавать слишком много, чтобы не израсходовать юниформы. Других недостатков у технологии нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221154

Старое сообщение сегодня 14:32
-
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4464
Возраст: 34

Рейтинг



Цитата:
Дядя Миша писал:
Строго говоря, если бы такой буффер поддержали на аппаратном уровне, то проблема сортировки и правильного вывода полупрозрачных поверхностей была бы наконец-то решена, но это видимо никому нахрен не нужно

Это было аппаратно на Sega Dreamcast в 1998. Но не факт что кто-то юзал.

Сообщить модератору | | IP: Записан
Сообщение: 221155

Старое сообщение сегодня 15:03
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32324
Нанёс повреждений: 392 ед.

Рейтинг



Crystallize приватку проверь

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221156

Старое сообщение сегодня 15:07
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 16:13. Новая тема    Ответить
Страницы (247): « Первая ... « 243 244 245 246 [247]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024