HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Страницы (240): « Первая ... « 100 101 102 103 [104] 105 106 107 108 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
nemyax писал:
Сравнивать у вершин сразу x, y, z, u, v.

Индексацией вертексов занимается BSP, который оперирует двойной точностью, лайтмаппер одинарной. Мне нет нужды сравнивать их координаты, я сравниваю сразу их индексы.

Цитата:
nemyax писал:
Можно перегнать треугольники в структуру данных, которая оперирует смежностью

да я просто построил bordering-матрицу для смежных рёбер, рекурсивно.
Это очень просто и быстро. Чем-то виз напоминает

Добавлено 04-07-2020 в 17:18:

Лайтмаппер к слову полностью самописный, на тех принципах, на которых я его делаю, мне просто неоткуда взять код, такого нигде нет.

Добавлено 04-07-2020 в 19:23:

Давайте расскажу вам принцип работы лайтмаппера на CPU. Ничего особенного сложного в целом там нет, дьявол кроется в деталях реализации.
И если реализация делает что-то не то - полезут швы. Швы это неизбежное зло лайтмаппинга, потому что освещение низкого разрешения, как правило. Если считать в полном, то швов практически не бывает, но это слишком долго, там смысл теряется. Лайтмапы-то размытые, приятные глазу.

Для выделенного сурфейса делается проекция в 2д, эта проекция у нас будет соответствовать нашей лайтмапе. Разумеется. предпочитительнее делать квадрат или прямоугольник, чтобы не было швов на стыке треугольников, да и экономнее во всех смыслах. Далее, для этой плоскости выделяются два массива векторов. Первый массив - это точки, второй - цвета лайтмапы. Можно еще и третий - делюкс-векторы или еще какую-нибудь инфу, типа теней. Принцип понятен. Самое главное зло лайтмап - это вот эти точки. Это как бы переходное пространство из 3д в 2д. Позиции точки в массиве соответствует точно такой же пиксель яркости лайтмапы.
Сами точки должны быть спроецированы на плоскость в 3д. Собственно на этом этапе и начинается всякая чертовищна. Почему она происходит?

1. полигон неаксиальный, из-за конечной точности флоата, часть точек может оказаться за полигоном. И трасса естественно туда не достанет и пиксель станет чёрным. Это бы конечно не проблема, если бы лайтмапы считались в полном разрешении, но точки-то гигантские! Вот эта чернота и залезет на соседа, появится шов-не шов, но пятно, переходящее в черноту.

2. полигон сложной формы, опять таки часть точек на него не попадает, но те, которые заденут хоть краешком - здрасти приехали. С подобными вещами хорошо бороться консервативной растеризацией, насколько это понятие вообще применимо к лайтмаппингу. Или взять срнедневзвешенные значения с девяти соседей (так ку3 поступает).

3. полигон размером меньше одного люкселя! В q3map2 додумались такие полики аппроксимировать повертексным освещением, ну кстати неплохое решение, вполне.

4. швы в основном вылазят, если считать лайтмапу не в родном разрешении. Почему так происходит? Благие намерения. Сделаем разрешение в 2-4 раза больше, чтобы точки на поверхность легли более точно. И посчитаем для них лайтмапу. Прекрасно. Теперь начинается самая чертовщина - мы скейлим нашу лайтмапу обратно вниз. Так вот можете себе представить, что алгоритмов, которые бы эффективно и средневзвешенно это сделали таким образом, чтобы пограничные света у соседних полигонов совпали - в приоде не существует. Причём, дело похоже даже совсем не в алгоритме, просто ресемпл идёт изолоировано для каждого полигона, но при этом учитывает яркость своих соседей. Вот на соседнем полигоне в центре темнее, а на первом - светлее. Лайтмапу с обоих полигонов ресемплили. И так получилось, что края, где они соприкасаются - тоже получились разной яркости. Причём разница там может быть порядка нескольких едениц. ну скажем 233 233 233 и 240 240 240. Выглядит это именно как шов. Хотя если эти картинки показать вам по отдельности, каждый скажет, что на них одинаковый оттенок.
Психопат рассказывал про какой-то алгоритм, который эти швы замазывает, но помоему он сам домазался до того, что убил всё освещение своими замазками. Впрочем и китаец делал нечто подобное с похожим результатом.

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

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

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

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

Добавлено 04-07-2020 в 21:50:

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

[ Вложение ]
patch_collision_0000.jpg

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 04-07-2020 20:50
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
Психопат рассказывал про какой-то алгоритм, который эти швы замазывает, но помоему он сам домазался до того, что убил всё освещение своими замазками.

Это где это я убил освещение замазками?

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

Старое сообщение 04-07-2020 21:24
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



ncuxonaT на CSM ты скрины выкладывал, вспоминай. Это кажется был скрин с грасс_теста.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 04-07-2020 21:57
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Дядя Миша вот же грасс тест, без нормальных нормалей запеклось всё треугольниками, а замазывание швов только сделало переходы плавнее
https://csm.dev/threads/novye-kompi...603/post-939327
https://csm.dev/threads/lightbaker3...434/post-941138
https://csm.dev/attachments/grass_test_0000-jpg.120668/https://csm.dev/attachments/grass_test2-jpg.120992/

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

Старое сообщение 04-07-2020 22:50
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



ncuxonaT

Цитата:
А что за окантовка вокруг тёмных треугольников?

Цитата:
это швы удалялись, но вышло не очень

Я же помню, там какая-то гадость была.

Цитата:
-seam_quality n - Качество удаления швов. Больше - лучше. По умолчанию n = 100.

Zopa! Это чтожы для каждой карты вручную подбирать параметр?

Добавлено 05-07-2020 в 13:44:

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

[ Вложение ]
shaderlab_terrain_0000.jpg

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-07-2020 10:44
-
 Дядя Миша
racing for fish

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

Рейтинг



А вот я сделал локальную трассу в пределах группы и опустил точки в места их пересечения с плоскостями.

ЗЫ. Надеюсь вам всё это интересно, а то пишу-пишу, никто не камментит.

[ Вложение ]
shaderlab_terrain_0000.jpg

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-07-2020 12:04
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Дядя Миша
Что такое нон-планарная поверхность? Это патч? Процедурно генерируемая хейтмэпа?

__________________
http://www.moddb.com/mods/monorail-quest

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

Старое сообщение 05-07-2020 14:43
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

Добавлено 05-07-2020 в 18:39:

Да, грасс_тест поидее тоже превратится в одну сплошную поверхность, но я его давно уже не собирал, надо будет проверить.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-07-2020 15:39
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Дядя Миша
Это автоматически объединяется?

__________________
http://www.moddb.com/mods/monorail-quest

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

Старое сообщение 05-07-2020 18:30
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



thambs если вертексы шареные, то да.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-07-2020 18:49
-
Raid
Офисный шакал

Дата регистрации: Jul 2012
Проживает: Где попало
Сообщений: 534
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
Надеюсь вам всё это интересно, а то пишу-пишу, никто не камментит.

Никто не пони-мает о чем речь рискну предположить. А это чо, ландшафты какие были в играх вот старых? Полигонов не видать.

Добавлено 06-07-2020 в 09:31:

А вообще вон total tris. Ну, раз такие пироги то и вопрос: помнится была игра такая - Z.A.R. Называется. Там вот как раз пиксельные ландшафты были. А если им например разрешение увеличить и сглаживание по горизонту добавить, чо будет? Но там, правда, и монстры и оружие спрайтовые были.

__________________
Ты себя ведёшь как маленький ребёнок, который на улице увидел говно и обрадовался - говно-говно, смотрите кто-то насрал, ну и дела! © Дядя Миша

лиса.забирать.сыр.кусочек = ворона.уронить.сыр.кусочек( 1шт ); © FiEctro

Отредактировано Raid 06-07-2020 в 06:35

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

Старое сообщение 06-07-2020 06:31
- За что?
Crystallize
Житель форума

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

Рейтинг



Цитата:
Raid писал:
А это чо, ландшафты какие были в играх вот старых?

Воксели чтоли?

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

Старое сообщение 06-07-2020 07:19
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12882
Возраст: 32

Рейтинг



Почему на скринах оно полосатое? И планируется ли решить вопрос бензиновых разводов на лайтмапах?

Отредактировано FiEctro 06-07-2020 в 08:49

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

Старое сообщение 06-07-2020 08:48
- За что?
Crystallize
Житель форума

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

Рейтинг



FiEctro если ты про то когда яркой лампочке диапазона не хватает то это в компиляторе решается в три строчки.

Добавлено 06-07-2020 в 16:20:

но на самом деле я такие разводы жёлтые вижу у реальных лампочек.

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

Старое сообщение 06-07-2020 09:20
- За что?
Raid
Офисный шакал

Дата регистрации: Jul 2012
Проживает: Где попало
Сообщений: 534
Возраст: 32

Рейтинг



Цитата:
Crystallize писал:
но на самом деле я такие разводы жёлтые вижу у реальных лампочек.

Профдеформацыя.

__________________
Ты себя ведёшь как маленький ребёнок, который на улице увидел говно и обрадовался - говно-говно, смотрите кто-то насрал, ну и дела! © Дядя Миша

лиса.забирать.сыр.кусочек = ворона.уронить.сыр.кусочек( 1шт ); © FiEctro

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

Старое сообщение 06-07-2020 09:42
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 01:03. Новая тема    Ответить
Страницы (240): « Первая ... « 100 101 102 103 [104] 105 106 107 108 » ... Последняя »   Предыдущая тема   Следующая тема
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