При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Разработка игр > Paranoia 2: Savior
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.09.2018, 00:03  #61
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

В рамках обучения новым технологиям решил проштудировать код Tesseract. Ну вы его знаете, это Cube2 с новым рендерером. Поправде говоря я несколько разочарован. В плане технологий и готовых реализаций мне там заимствовать решительно нечего, а некоторые вещи я сделаю (или уже сделал) на порядок оптимальнее. Собственно на уровне идей есть кое-что -вот этот вот атлас для теневых карт ну и самое интересное - PCF-фильтр для них. В чём там суть - код фильтра обычный, но коэффициенты так хитро подобраны с учётом специфики аппаратной реализации, что на выходе получаются очень мягкие и приятные тени без артефактов. Ну и VSDCT конечно, хотя я про него и раньше говорил.

Дядя Миша, подумав, добавил 04.09.2018 в 01:38
Хех. Вы себе даже не представляете насколько сильно вся отложка завязана на радиус лайта. Это краеугольный камень всех оптимизаций, убери его и всё посыплется. Но мне очевидно полагаться на радиус нельзя ни в коем случае - даже у самых простейших лайтов он находится где-то в раёне 2250. А ведь на этом радиусе держится адаптивное разрешение шадовмап. И тут само-собой назревает логичное решение - отфильтровав по PVS и куллингу лайта все видимые ему сурфейсы мы автоматически получим размеры ббокса, в которых наш лайт действует, ну а вычислить радиус из ббокса несложно. Таким образом мы получим конструкцию наподобие той, что используется для солнечных каскадов, там ведь тоже подтяжка камеры базируется на ббоксе всей видимой геометрии. Ну а поскольку лайты статичны, нам достаточно рассчитать её всего один раз. Единственное что я опасаюсь что качество теневых карт будет визуально гулять от источника к источнику.

Кстати забавная подробность. У тессеракта при тайловом рендеринге макс. ограничение на кол-во лайтов в тайле - 8 штук. Пожалуй и мне стоит придерживаться аналогичного лимита.

Дядя Миша, подумав, добавил 04.09.2018 в 03:17
И кстати насчёт оптимизаций и безусловной возможности отложки рендерить множество источников в кадре. Скриншот с Тессеракта, лайты на скриншоте лишены теней, чистый свет. Вода, равно как и её отражение на фпс не влияют, проверял. Слишком много источников в кадре. Не спасает даже плитка.
[ Миниатюры ]
2018-09-04_02.07.49_Temple_edit.JPG Просмотров: 225 Размер:  121.3 Кбайт  

Последний раз редактировалось Дядя Миша, 04.09.2018 в 03:17.
Дядя Миша вне форума Ответить с цитированием
Старый 04.09.2018, 05:39  #62
crystallize
crystallize
Генерал-Лейтенант
Регистрация: 06.06.2014
Сообщения: 1,486


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Хех. Вы себе даже не представляете насколько сильно вся отложка завязана на радиус лайта. Это краеугольный камень всех оптимизаций, убери его и всё посыплется. Но мне очевидно полагаться на радиус нельзя ни в коем случае - даже у самых простейших лайтов он находится где-то в раёне 2250.
Это при том что Зирокс на просьбу рисовать в Джекхаммере радиус лайта отвечал "да поймите вы что нет никакого радиуса, яркость просто плавно затухает до нуля, а это где-то на бесконечности". (хотя конечно не до нуля а до "меньше 0.5/255" т.е. радиус всё же существует)

Последний раз редактировалось crystallize, 04.09.2018 в 06:02.
crystallize вне форума Ответить с цитированием
Старый 04.09.2018, 14:03  #63
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

Радиус можно посчитать так: Length( intensity ) * 0.5 што даёт довольно точные результаты. Ну как я уже и говорил, например для лайта 255 255 255 с радиусом 150 реальный радиус будет 2250. Насчёт бесконечного стремления к нулю, ну достаточно предположить, что яркость менее 0.003 уже несуществена (в диапазоне 0-255 это будет 1).
Дядя Миша вне форума Ответить с цитированием
Старый 04.09.2018, 14:45  #64
FiEctro
FiEctro
Регистрация: 28.07.2006
Адрес: Эквестрия
Возраст: 29
Сообщения: 17,146


По умолчанию

[ Цитата ] Сообщение от crystallize: Это при том что Зирокс на просьбу рисовать в Джекхаммере радиус лайта отвечал "да поймите вы что нет никакого радиуса, яркость просто плавно затухает до нуля, а это где-то на бесконечности". (хотя конечно не до нуля а до "меньше 0.5/255" т.е. радиус всё же существует)

Всё правильно он говорит, при том что этот радиус может еще плавать в зависимости от настроек компилятора.
FiEctro вне форума Ответить с цитированием
Старый 04.09.2018, 14:51  #65
crystallize
crystallize
Генерал-Лейтенант
Регистрация: 06.06.2014
Сообщения: 1,486


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Радиус можно посчитать так: Length( intensity ) * 0.5 што даёт довольно точные результаты. Ну как я уже и говорил, например для лайта 255 255 255 с радиусом 150 реальный радиус будет 2250. Насчёт бесконечного стремления к нулю, ну достаточно предположить, что яркость менее 0.003 уже несуществена (в диапазоне 0-255 это будет 1).
Я сейчас кстати сообразил табличку в Экселе чтобы проверить ту странную формулу из темы "радиус освещения в Half-Life" где у тебя получалась яркость 9 на расстоянии в 900 юнитов и больше нуля на расстоянии в 1800. У меня не получилось воспроизвести результат, яркость всё время получается намного меньше.
[ Вложения ]
Тип файла: zip HLHL2_lights.zip (71.2 Кбайт, 27 просмотров)
crystallize вне форума Ответить с цитированием
Старый 04.09.2018, 15:40  #66
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 crystallize: так ты яркость считал или радиус?
Дядя Миша вне форума Ответить с цитированием
Старый 04.09.2018, 15:47  #67
nemyax
nemyax
тндайпц тра
Регистрация: 30.07.2015
Сообщения: 639


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: intensity

для лайта 255 255 255
А что, интенсити это вектор из трёх чяров?
nemyax вне форума Ответить с цитированием
Старый 04.09.2018, 15:50  #68
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 nemyax:
я здесь всё расписал.
Дядя Миша вне форума Ответить с цитированием
Старый 04.09.2018, 15:54  #69
crystallize
crystallize
Генерал-Лейтенант
Регистрация: 06.06.2014
Сообщения: 1,486


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: 2 crystallize: так ты яркость считал или радиус?
Яркость.
crystallize вне форума Ответить с цитированием
Старый 04.09.2018, 19:36  #70
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

Заметил забавную вещь. На рендерах с отложенным освещением, достаточно увидеть картинку с раскладкой G-буффера, чтобы получить исчерпывающее представление о внутреннем устройстве рендерера.
Дядя Миша вне форума Ответить с цитированием
Старый 20.10.2018, 12:52  #71
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

Работы над модом Рейда завершены и я вновь могу вернуться к рендеру Паранои. Увеличил лимит на кол-во влияющих источников на пиксель с четырёх до восьми. В принципе это уже предельное значение, хоть и не всегда достаточное, с халфовскими-то лайтами. В Тессеракте их тоже 8 штук, но не на пиксель, а на плитку. Это разумеется без учёта подвижных динамических источников, только статичные лайты из карты. А вот общее кол-во источников вероятно так и останется равным 255. Поясню почему - номера лайтов хранятся в RGBA-каналах текстуры, а каналы у нас unsigned char, т.е. лимит в каждом канале 0-255. Можно попробовать использовать half-float или unsigned short текстуры, но во первых пострадает совместимость, а во вторых - производительность. Так что пока ограничимся 255-ю лампочками на уровень, тем более что на картах паранои их значительно меньше, от 30-80, обычно. А рендер, напоминаю, делается всё же для паранои.

Дядя Миша, подумав, добавил 20.10.2018 в 13:01
Ну а теперь уже приступим к теням. Отререндить и нарисовать тени несложно, но надо придумать их расположение в атласе с удобным доступом. На первый взгляд атлас 4096х4096 как раз позволит вместить тени для 256 лайтов, но ведь это без учёта всенаправленных источников, у которых шадовмапу надо умножать на 6.
Можно отказаться от строгой привязки нумерации к положению в атласе и записывать оффсеты начала прямо в текстуру с лайтом, но это не слишком удобно. К тому же для солнца желательно хранить каскадные тени и тоже в единой шадовмапе. А каскады съедят три четверти от объема атласа. Впрочем нам в данной ситуации важна не столько чёткость теней, сколько сходство с результатом работы hlrad. А чёткость мы всегда накрутить успеем

Последний раз редактировалось Дядя Миша, 20.10.2018 в 13:01.
Дядя Миша вне форума Ответить с цитированием
Старый 20.10.2018, 15:07  #72
npocTo_LaM
npocTo_LaM
Генерал-Лейтенант
Регистрация: 27.10.2012
Сообщения: 1,474


По умолчанию

"на картах паранои их значительно меньше, от 30-80, обычно. А рендер, напоминаю, делается всё же для паранои"
хех, то есть для игры с подгрузкой уровней. Я правильно понял?
255 лампочек - это объектов типа light, без учета освещения от светящихся текстур и сценариев (режимов) освещения от светящихся текстур?
npocTo_LaM вне форума Ответить с цитированием
Старый 20.10.2018, 16:52  #73
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 npocTo_LaM: солнце = 1 лампочка, светящаяся текстура = 1 лампочка, энтитя лайт = 1 лампочка. Я конечно пошёл на некоторые упрощения, в раде светящаяся текстура обычно представлена целой кучей лампочек, но эта подмена малозаметна, если светотекстура не слишком протяжённая.
[ Цитата ] хех, то есть для игры с подгрузкой уровней
Не вижу связи. Если игра это один большой полигон, то как правило он на свежем воздухе и там всего один источник - солнце. В таком случае куда отнести ad_sepulcher, по которому можно часов 8 блуждать. Но там конечно лампочек сильно больше чем 255.
Дядя Миша вне форума Ответить с цитированием
Старый 20.10.2018, 17:13  #74
crystallize
crystallize
Генерал-Лейтенант
Регистрация: 06.06.2014
Сообщения: 1,486


По умолчанию

А лампочке-светотекстуре можно будет выставить блюр по осям?
crystallize вне форума Ответить с цитированием
Старый 21.10.2018, 13:50  #75
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

[ Цитата ] А лампочке-светотекстуре можно будет выставить блюр по осям?
Иш!
Дядя Миша вне форума Ответить с цитированием
Старый 21.10.2018, 21:11  #76
Lev
Lev
Младший сержант
Регистрация: 09.12.2011
Адрес: Оренбург
Возраст: 27
Сообщения: 109


По умолчанию

А для точечных источников будет возможность выставить режим свечения? Ну например мигание или плавная смена интенсивности?
Lev вне форума Ответить с цитированием
Старый 22.10.2018, 14:10  #77
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 Lev: лайтстили будут работать так же, как и в статическом рендерере.
Дядя Миша вне форума Ответить с цитированием
Старый 23.10.2018, 13:20  #78
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

Мне надо продумать концепцию согласно которой будет настраиваться разрешение теней, отчего напрямую будет зависеть их чёткость. Радиус я не могу использовать, как вы понимаете. Вышеозвученный вариант - собрать все видимые лайтом фейсы и вычислить их ббокс, тоже мне не совсем нравится, вполне возможны ситуации, когд лайт стоит у стены, а значит напротив стенки разрешение шмапы будет избыточным, а в другую сторону - недостаточным. Но использовать шмапы разного разрешения для шести сторон всенаправленного лайта тоже не получится - во впервых это усложняет VSDCT-лукап с последующим подением производительности, а во вторых будут хорошо заметны швы на стыках кубемапы. Впрочем VSDCT их провоцирует даже на сторонах одинакового разрешения. Ааналогов такой задаче, понятное дело нет ни у кого, подсмотреть не получится.
Дядя Миша вне форума Ответить с цитированием
Старый 05.11.2018, 23:29  #79
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

Давайте немного оживим тему. Завтра расскажу что это такое.
[ Миниатюры ]
test_dyn_0001.JPG Просмотров: 151 Размер:  24.2 Кбайт  p_savior1_new_0000.JPG Просмотров: 144 Размер:  40.7 Кбайт  p_savior3_0000.JPG Просмотров: 155 Размер:  67.7 Кбайт  p_savior4_0000.JPG Просмотров: 178 Размер:  62.8 Кбайт  p_savior4_0001.JPG Просмотров: 134 Размер:  66.7 Кбайт  p_savior4_0002.JPG Просмотров: 133 Размер:  69.8 Кбайт  

p_savior4_0003.JPG Просмотров: 156 Размер:  37.6 Кбайт  p_savior4_0004.JPG Просмотров: 151 Размер:  35.8 Кбайт  p_savior4_0005.JPG Просмотров: 158 Размер:  60.0 Кбайт  p_savior4_0006.JPG Просмотров: 161 Размер:  84.2 Кбайт  
Дядя Миша вне форума Ответить с цитированием
Старый 06.11.2018, 13:37  #80
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

Ну вообще можете писать свои варианты, интересно послушать.
Дядя Миша вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 01:17.


Designed by FT-502, [email protected] Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2020 by CS-Mapping.com.ua Community