![]() |
Страницы (255): « Первая ... « 123 124 125 126 [127] 128 129 130 131 » ... Последняя » Показать все 3825 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- XashNT: блог разработчика (https://hlfx.ru/forum/showthread.php?threadid=5297)
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша как сложно с вашим радом. Тогда да, наверное, способ со хранением прямоугольников проще. Еще можно было бы искать по соприкасающимся ребрам на развертке. В таком случае лайтгруппы могли бы быть невыпуклыми. В смысле не надо было бы под лайтгруппу отдавать целый прямоугольник.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Переделал концепцию, как описано выше. Стало на порядок удобнее.
Во первых, реконструкция групп - очень быстрая, пару секунд буквально.
Во вторых, с учётом сделанных изменений, лайтмаппер вообще не модифицирует BSP, ему это просто не нужно. Только сами лайтмапы.
Правда остаётся еще вопрос с повертексным освещением, но прежде чем его решить, надо придумать что делать с дубликатами. Как им накладывать лайтмапу, как повертексное. Причём этот момент вообще самый сложный, надо очень многое продумать. Как это всё рисовать, как выполнять коллизию.
Добавлено 05-12-2020 в 13:37:
Единственное, с чем я лажанулся в своей концепции - исходил из того, что в атласе не может быть более 65к кусочков. А тут лайтмапы.
Не, ну для шрифтов и картинок худа это условие полностью выполнялось.
Хидер менять - это заново все шрифты и худ пересобирать. Ох, блин.
Добавлено 05-12-2020 в 13:37:
Ну да ладно, пособираю статистику, как часто происходит это превышение.
Добавлено 05-12-2020 в 14:25:
Что еще любопытно - я полагал что уменьшение размера вертекса хорошо уменьшит конечный размер BSP-файла. Но по факту снижение произошло всего на 1/6. Все эти дубликаты дают такой чудовищный размер.
Впрочем я неплохо оптимизировал компилятор по потреблению памяти и даже с таким негативным сценарием он отлично справляется, среднее потребление всего 700 мегабайт на сталкеровских картах.
Так я уже и лост-альфовские пробую.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ncuxonaT кстати ты был частично прав, действительно запись кусков в лайтмапу занимает часть времени от построения атласа. 56 страниц 1024х1024 писались почти 2 минуты.
Добавлено 06-12-2020 в 11:16:
И да, я ради интереса перекроил этот механизм, выделил память под ноды одним большим куском. Сразу под все ноды. Кусок лайтмапы с бордюром занимает 3х3 пикселя, страница 1024х1024, значит выделяем (width / 3)* (height / 3) + 1 (корневая нода), около 17 мегабайт. Ну не фатально.
И время построения вообще не поменялось. Как было пару минут так и осталось. Значит рекурсия всё убивает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Разобрался как в сталкере устроено освещение. Вообщем для солнца лайтмапа в явном виде не хранится. Оно и понятно, нужна смена времени суток. Хранится hemisperical lighting и теневая карта. Hemispherical годится для любого времени суток, а вот теневая карта, увы только для одного направления. Впрочем, я думаю, можно рассчитать тени для всех положений солнца. Освещение по полусфере получается от виртуальных hemi-источников. В q3map2 была настройка q3map_skyLight, вот это оно и есть.
Просто генерятся лайты с равномерным распределением в несколько сторон, по окружности, симулируя непрямой свет. Если на ландшафте, допустим стоял какой-нибудь столб, то на лайтмапе прямо видно эти нечёткие тени от разных направлений и их можно посчитать. Чем больше равномерно распределённых таких источников, тем более качественной получается hemi-лайтмапа. Ну и в шейдере всё это смешивается - цвет от солнца (деномический), умножить на теневую карт плюс индирект + амбиент.
Для точечных лайтов хранится просто RGB-мапа с запечённым индиректом.
Этот же подход объясняет как при такой угробищной схеме построения атласа практически не видно швов. Индирект равномерный и его переходы не видны. Прямой свет накладывается попиксельно. А тени редко попадают в стрёмные места. Остаётся еще свет в помещениях, но там во первых VPLS для радиосити, а во вторых, в большинстве помещений - пусто. Голые стены и немного предметов. Так что заметить швы нереально. Но мне конечно такой способ построения атласа не годится. У Микрософта есть UVAtlas какой-то, он раньше был частью DXSDK, но они апублековали сорцы. И вот все кто юзал DX с незапамятных времен его использовали для генерации. Помоему это одна из первых имплементаций LSCM (статья от 2002-го года). Конечно это занимает порядочно времени, но с другой стороны - это всё равно сохранится в статик-мешах моего формата. Так что пофиг. Один раз посчитать и всё.
А для брашей можно и мои hashed LM axis юзать, они хорошо спровляются.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ncuxonaT напомни как твоя затиралка швов работает.
Всю тему пересмотрел - не могу найти упоминания.
Единственное что нашёл, это про какой-то уровень качества, по дефолту равный 100.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша https://www.sebastiansylvan.com/pos...esTextureSeams/
Единственное что, направление градиента нужно сбрасывать периодически. Я в ConjugateGradientOptimize на каждой 10 итерации ставлю beta = 0.0;
Дядя Миша
Эти сталкеровские карты как-то делятся (на сектора?) или это всё один огромный кусок геометрии?
__________________
http://www.moddb.com/mods/monorail-quest
ncuxonaT я делал немного по другому. Просто находил соседние эджы и биинтерполировал их люксели. А эджы находил вообще перебором, но поскольку меш индексированный, это было достаточно быстро. Но есть большая проблема. Для брашей это работает плохо из-за T-Junc.
А градиенты вообще можно применять изолировано.
Но использовать Conjugate Gradient Solver мне как-то в голову не пришло.
Да дело вообще не в солверах, я уверен. Дело в том, что я вероятно не понимаю истинной природы швов этих. К тому жы там как минимум два варианта может быть - несовпадение цветов люкселей и несовпадение их оригинов. И вторая проблема куда серъезнее. Вот у нас допустим пятно света. Переходит на два полигона. И на втором люксели сдвинуты относительно первых на половинку. Ну и всё - пятно со швом. И это уже никакими градиентами не поправишь.
Кстати, непомню кто, но кто-то авторитетный говорил - пофиг на повороты лайтмапы, главное чтобы не было швов. То есть, если у нас лайтмапа повернута даже на 45 градусов, то это ок. Но я не согласен. Повернутые люксели тоже выглядят как говно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Хех, ну чтож я оказался прав. Солверу критически важны входные данные.
Иными словами, если подать ему на вход уже существующую параметризацию в виду текстурных координат, то и на выходе мы получим ну примерно такие же текстурные координаты, только в профиль.
То есть впустую потратим время. Решение заключается в том, чтобы убрать из вертексов текстурные и лайтмапные координаты и перенести их в структуру фейса. Тогда мы сможем абсолютно точно подсчитать кол-во уникальных вертексов, сгенерить абстрактную проекцию в качестве начальной параметризации (просто выберем какой-нибудь произвольный угол или короткую сторону ббокс, это вообще плевать, солвер сам растянет квадраты правильно), и подать это на вход. И вот тогда у нас получится что-то нормальное. Вот такой симпатичный лёва у меня тепреь получился.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 02:06. | Страницы (255): « Первая ... « 123 124 125 126 [127] 128 129 130 131 » ... Последняя » Показать все 3825 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024