Неудивительно отчего в халфе такое освещение всратое.
Оно там сначала клипается, а уже потом умножается на гамму.
Чёрт его знает как оно после этого выходит за границы Byte.
Главное и у меня в P2St точно так же. Я этот момент вообще не трогал.
ncuxonaT ну я выразился немного некорректно. Я про последовательность действий.
Опробовал VTF для симуляции повертексного освещения. Ну как я и предполагал - всё сработало отлично. На ландшафте, понятное дело, всё превратилось в пятна, на ёлках-соснах в целом без особых изменений.
Но есть два момента. Во первых фпс упал почти на 1/8. Т.е. было 800 фпс, стало 700. Может быть это GT640 не слишком любит VTF.
Второй важный момент - повертексное тут не решит ничего, потому что для лайтмапы и для вертекса, во всяком случае на граничных точках, считаются те же самые позиции, те же самые нормали и та же самая окклюзия.
То есть повертексное само по себе тут разве что уберёт швы на лайтмапе, а больше от него толку не будет. А на деревьях нам надо рассчитать нормали по полусфере или взять какой-то зазор у источника света, ну халф-ламберт или что-то такое. Но с нормалями вообще тяжко. Они как правило невалидные все, мусор. Редко-редко когда попадется модель с исправными.
Я полагаю, чем генерить для листвы эти хитрые нормали, проще в материал дать подсказку. Ну то потом.
Добавлено 23-12-2020 в 19:15:
Набрался хабразде и решил повторить подвиг Элбера - собрать объединённую ЧАЭС из двух карт. Но, т.к. редакторами я не владею, решил пообъединять их в блокноте, посмотрел и понял, что это довольно-таки просто сделать. Пропсы на двух картах не пересекаются, а значит можно смело добавлять их в одну. Террайн взял тот, что поподробнее, проблема только в статик меше, то что есть в одном - отсутствует в другом.
Добавил сразу оба, а в компилятор ввёл проверку на дублирующуюся геометрию. Чтобы он мне просто повыкидывал лишние полигоны с этого же места. И это таки сработало! Собралась такая карта, весит 132 мегабайта.
Причём потребление компилятора во время работы не превысило даже 1 гигабайт, а ведь это пожалуй самая гигантская карта из всех, даже в лост-альфе нет такого ужоса. Всё прекрасно скомпилилось, правда свет я не считал еще.
Добавлено 23-12-2020 в 20:48:
Кстати, к вопросу о швах. Вот пример шва:
Кажется что всё ужасно. Но давайте включим диффузку.
А если посмотреть с другого ракурса, становится понятна и причина:
Там не просто шов, там еще и выступ. Конечно в идеале даже этого быть не должно, но уже вполне юзабельно.
Добавлено 23-12-2020 в 20:50:
Основная причина этих швов - неравномерность и сдвиги люксельной сетки.
Если мне удасться решить эту задачку, швов вообще не будет.
Ну вот, если кому-то интересно, как выглядит повертексное через VTF
Добавлено 24-12-2020 в 09:57:
Способ хорош тем, что имея лайтмапу мы всегда сможем превратить её в повертексное освещение, например для маскировки швов на маленьких моделях. А вот наоборот уже хрена. Поэтому предпочтительнее считать и хранить лайтмапу вообще для всего, а повертексное не считать вовсе.
Тем более что, я вообще не планирую хранить значения освещённости в самих вертексах, я не представляю как это грамотно сделать для инстанс-моделей. В параное, как вы помните, при загрузке из оригинальной модели и массива повертексного освещения, налиту создавался дубликат, отчего потребление видеопамяти зашкаливало. Вероятно есть какие-то средства, чтобы объединять налету два массива. Скорее всего если массивы сгруппированы по атрибутам. Массив вертексов, массив текстурных координат, массив цветов. Вот в таком раскладе это работает. Но я не планирую так делать, это устаревший подход.
Подшаманил мержинг сурфейсов, теперь ЧАЭС собирается 20 минут вместо часа. Причём 16 минут - это построение атласа. Очень уж этот уголок тормозной даже удивительно. Надо бы с этим что-то сделать.
Но тут двояко. Любой модный прогрессивный алгоритм с эвристикой чую будет работать еще дольше, сталкеровское попиксельное построение атласа вообще дико медленное, вот и фиг знает что его делать.
Добавлено 24-12-2020 в 13:58:
Кстати у меня тут есть одна любопытная идейка насчёт Кармаковского алгоритма, надо будет проверить.
Добавлено 24-12-2020 в 14:00:
Цитата:
Crystallize писал: И ты ещё говорил что там индирект ядовитый. Хотя я лично ни того ни другого не замечал.
дело еще и в том, что менять местами клиппинг и гамму нельзя, тогда у теней появляется белая окантовка.
Добавлено 24-12-2020 в 15:52:
Запустил ради интереса свет на объединённой ЧАЭС (это походу будет устоявшийся термин, ну навроде как объединённая Каста), думал он весь день считать будет, однако за час управился. Ну теперь чаэс настоящая, а не то что там Элбер клеил вручную, 4 миллиона полигонов! Только травы нехватает для полного щастья, ну это потом уже.
Тут еще вот какое дело. Во первых одна лайтмапа под террейн 2048х2048 явно недостаточна. Тут размер карты 60 х 90 килоюнитов. Но это предел для самого иксрея, он не генерит лайтмапы большего разрешения. Не потому что не может, скорее сознательное ограничение для совсем древних карточек. Сталкер-то по современным меркам способен на лютом хламе запускаться.
Второй важный момент - если лайтгруппа не влезает в атлас, я её рескейлю вниз, а икс-рей делит на две части. Это принципиальная разница в подходе. Так что кое-где у меня тень может размыться внезапно. Может потом переделаю. Для меня сейчас самое главное - это стресс-тесты. Компилятор должен сожрать все карты из лост-альфы и уложиться в 32-х битные лимиты по потреблению памяти. Пока ему это очень хорошо удаётся, к примеру создание карты отняло всего-навсего 700 мегабайт, а лайтмаппер зохавал 1.5 гигабайта, а ведь это одна из самых гигантских карт.
Добавлено 24-12-2020 в 17:39:
Ну чтож. MU-модели успешно внедрены и помогли здорово уменьшить финальный размер карты, да и вроде как рассчеты света немного ускорили.
Опять же моя реализация позволяет запекать на таких моделях лайтмапу, а в сталкере - только повертексное. Самое смешное, что мне лайтмапу было на них запечь даже проще, чтобы держать всё в юниформе.
Следующий этап - автоматические прогрессивные мешы. Возьму из сталкера тоже реализацию, а там она, как я понял от Tom Forsyth.
Собственно, чем прогрессивные мешы отличаются от обычных лодов?
Лоды требуют собственные вертексы, для них нужна собственная развертка, для них поидее требуется новая развертка лайтмапы, это тихий ужос.
Прогрессив-мешы наоборот, коллапсят исходный меш таким образом, чтобы всегда используя уже имеющиеся вертексы образовывать новые валидные треугольники, то есть в таком вот меше поменяется только набор индексов, а вертекс-дата останется неизменной. И в этом громадный плюс такого подхода. К тому же их можно и нужно использовать и для персонажей тоже.
Единственное с чем я пока не определился - нужны ли импосторы. С одной стороны, если у тебя ТЛез32 это единственный способ удержать производительность, с другой, они не в юниформе, то есть были мешы-мешы и вдруг - вот такая хрень. В самом сталкере, как я понял их чуть ли не вручную расставляют в местах нахождения деревьев и прочих пропсов. Плюс им нужна эта текстура - вид с восьми углов. Плюс с высоты они понятно как будут выглядеть (по этой же причине, к слову в дууме и прыгать не дают игроку). Так что пока введу прогрессивные мешы и будем дальше думать. Скажу, к примеру, что ЧАЭС с угла максимального обзора, когда в кадре все четыре миллиона полигонов на GT640 у меня выдаёт 49 фпс. Так что в целом не всё так уж и плохо даже совсем без лодов. Но с ними должно стать совсем хорошо.
Я сам вот удивился, но у меня и без того хлопот полон кот, некогда разбираться, потом.
Цитата:
ncuxonaT писал: Какое суммарное разрешение лайтмапы получилось?
на чаэс? да фиг его знает. 40 страниц 1024х1024 + ландшафт 2048х2048.
На болотах из чистого неба, получилось 82 страницы, но там пропсов аж 5 тысяч, а на чаэс - всего 500. И болота 2.5 часа считались.
Внедрил прогрессив-мешы. Спорная штука. Во первых она почти не поддаётся контролю. На параметры реагирует слабо. Во вторых, она сама решает насколько меш может быть симплифицирован, вот на одних прямо втрое получается, а на других - дай бог чтобы на 20%.
Не угадаешь. От топологии вероятно зависит. В некоторых случаях вообще полный фейл, т.е. работа проделана, а симплификации - нет.
Но результат в целом очень деликатный. Одно скользящее окно удаляет из исходного меша 1 вертекс, поэтому заметить деградацию с расстоянием игроку невозможно в принципе, как бы он не присматривался. Другое дело, что в среднем такие лоды снижают поликаунт ну максимум на треть, даже не вдвое. Ну я еще потыкаю, может сделаю алгоритм более агрессивным.
Кстати, вот какая еще мысль мне пришла в голову. Для MU-моделей можно использовать ковариантную проекцию лайтмапы, она пытается из облака точек вычленить уникальную нормаль проекции, даже если объект замкнут сам на себя. Т.е. сфейлить она не может никогда. Но такая проекция обычно бывает очень растянута. Но для MU-моделей, которые в большинстве своём ёлки-метёлки, это даже лучше, т.к. будет чем-то напоминать повертексное освещение, только с большим разрешением. Ну и естественно - никаких швов. Впрочем. наверное там лучше завести переключатели всякие в материале.
Добавлено 26-12-2020 в 13:34:
Опробовал. Ну да, ковариантная проекция на MU-моделях выглядит очень растянуто, освещение перезатекает аж назад на дерево, но зато нету швов.
И очень-очень похоже на повертексное.
Я думаю надо сделать вот как. По дефолту - пусть остается ковариантная.
А если юзер прямо создал крутую текстурную развертку, из которой не стыдно строить лайтмапу, то можно переключиться на нее.
nemyax без самопересечений, без дегенеративных UV-островков.
Добавлено 26-12-2020 в 19:34:
ну чтож, финальный штрих - радиосити.
В данном случае надо просто наспавнить вторичных аналитических источников света от поинтлайтов. Ну можно и от лайтспотов тоже.
А потом эти лайты будут участвовать в общем процессе освещения.
Т.е. свет посчитается сразу как прямой, так и отражённый, не надо будет ничего там вымучивать в несколько проходов.
Добавлено 26-12-2020 в 21:26:
Кстати, насчёт завершения истории с прогрессив-мешами.
У меня тут, собственно, было два варианта. Bunnylod от Stan Melax, ну вы его все видели. И jmspmesh от Jeff Somers. второй - это вьювер с четырьмя самыми известными методами - QEM, QEM weighted by area, реализация от Stan Melax и shortest path (не знаю кто автор).
QEM и QEM weighted by area представлены так же библиотекой qSlim.
Пока я совал этому вьюверу модельки, идущие с ним в комплекте - всё было хорошо. Даже отлично. Но как только я переконвертил сталкеровские модельки и начал совать их - тут же начался тихий ужос. Оно вообще не в состоянии их адекватно обработать. Так что SWPM от Tom Forsyth, которую юзает сталкер - наименьшее зло. Да, оно симлифицирует до определённого порога. Но модель хотя бы не превращается в кашу на произвольном уровне симплификации.
Добавлено 26-12-2020 в 22:40:
Кстати. Shortest Edge, это нечто навроде метода от Stan Melax, только еще проще - без учёта курватуры. Как говорится, уже тупее некуда - выкидывается самое короткое ребро. Там вообще математики нет, если не считать VectorLength. Я этот метод опробывал тоже, слегка доработав реализации BunnyLod. И знаете - мне понравилось. И даже очень.
Добавлено 26-12-2020 в 22:52:
Минималка, 30% от исходного меша. Если ниже, то там уже полная дигродацыя начинается.