Sidebar

Новые компиляторы уровней для Xash3D

Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 ncuxonaT: потому что Order 1886 круче и ориентироваться надо на него.
Но сперва надо посчитать бесшовные лайтмапы.

2 crystallize: да, скрины с HL:Source
====================
Посчитал эти точки китайские. Вот ихняя визуализация.
Слева люксель\тексель, справа люксель\юнит.
Как видите для люксель\юнита места скопления точек исчезли, карта покрытия более равномерная. Чтобы было легче понять основную идею, я отключил сглаживание на лайтмапах. Как видите на каждый люксель приходится 9 точек.
Это на тот случай, если пол-люкселя вылезет на соседний фейс. Ну, чтобы отследить. В принципе я тут подумал, что меньше сами люксели, тем меньше нужна плотность этих точек. Для текстурстепа 8, вполне можно взять 5 точек, вместо девяти, а всё что ниже вполне обойдется одной точкой. Но вообще скорость их построения очень удручает. Я конечно ускорил этот код, по сравнению с китайским на 30%, но всё равно это почти треть от BuildFaceLights.
Плюс оно еще и память жрёт как не в себя. Но думаю, я потом это неплохо соптимизирую.

Post automatically merged:

ЗЫ. точки визуализируются через стандартные партиклы, которых вечно нехватает. Потому пустые участки на скриншоте - это просто нехватило партиклей.

Post automatically merged:

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

Attachments

Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,221
51
48
2 ncuxonaT: потому что Order 1886 круче и ориентироваться надо на него.
Но сперва надо посчитать бесшовные лайтмапы.
ссылку не смотри, ответ пиши.
Там про удаление швов же.
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 ncuxonaT: ты полагаешь там прямо так много способов сгладить эти швы?
Ну глянул по ссылке.

We found a pretty simple, yet effective solution: if the interpolated values on both sides of split edges don’t match, let’s just make them match, by slightly modifying the intensities of the surrounding texels.
9
Это вот как раз то, чем сорс занимается в радиальной фильтрации. Но оно не спасает от абсолютно всех проблем. Я же показывал скриншоты. Если у тебя грубо говоря три пикселя на шве встали треугольником, потому что люксели соседних фейсов сдвинуты относительно друг-друга, ты их уже не приведёшь к общему знаменателю - потому что полезут другие артефакты, на углах этих полигонов. Либо окантовка вокруг полигона, пусть и не слишком сильно выраженная. Да если бы эта трабла решалась в лоб, её бы уже 10 раз порешали, еще в начале нулевых.

Post automatically merged:

PS. Ну там дальше пишут про "stitching points" это как раз и есть то самое, что китаец реализовал.
(we create three points per texel, since the bilinear interpolation follows a quadratic curve).
Только они три точки на тексель садят, а у китайца их девять. Потому что у них треугольники.
 
Last edited:
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Опробовал новый рассчёт валидных позиций на фейсе. Не тот, что я показывал выше на скринах, а тот, что был в VHLT, до номера 30. Т.к. он всё равно является частью этой системы со stitched points. Время работы выросло вдвое, с 3 секунд до 6. В целом стало чуть-чуть аккуратнее, но мне не нравится, что в моей изначальной версии компиляторов эту же задачу выполнял простейший цикл с проверкой, что мы не выпали за пределы уровня. А теперь сложнейшая хрень, которая чего-то там нуджит, мидпоинтит, охотится за миром. Причём часть этих функций взята из ZHLT, она первоначально там появилась.Кстати флажки Embedded и Concave - это прямое следствие криворукости авторов ZHLT.
Embedded предполагалось выставлять моделям, которые находятся заподлицо с остальным уровнем, чтобы общая яркость лайтмапы не выделялась. Хотя оно и так должно происходить, безо всяких флажков. А concave видимо начинал какую-то особую охоту за миром по вогнутым мешам. Тут следует сделать небольшое пояснение. Охота за миром это название функции HuntForWorld. Возвращает валидную точку и валидный лиф. Изобретение Зонера, как я понял.
Вообще слишком всё переусложнено.
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 crystallize: я и сам только вчера понял для чего они нужны. Из всех флагов зонера реально рабочий был только Opaque.
Вообще трейс фейсов для энтить в этих компиляторах - это что-то с чем-то. Там не поиск по дереву, а линейный список этих фейсов и комплиментарная пара - трасса мира - трасса бмоделей. Уже одна эта штука способна капитально замедлить компиляцию. Я написал нормальную трассу, как в движке, но пока не подключаю, сперва бесшовные лайтмапы надо сделать. Потом разобраться с радиосити. Ну и в конце уже тени от решёток, студиомоделей, но это легко т.к. уже сделано и отлажено. Самое главное добиться бесшовности. Потому что где на c1a0d вылезут малозаметные стыки, то на пещерах тхамбса в итоге вылезут дикие артефакты. Ну посмотрим. Думаю сегодня уже доделаю этот GROWSAMPLE.

Post automatically merged:

Вообще я тут смотрю эти игрофильмы на плейстейшене. Last Of Us и Order 1886.
Оба на лайтмапах, но в первом дирекшионал лайтмапы как в параное, а во втором - сферические гауссовы лайтмапы. И на мой взгляд это вот именно тот уровень качества и сбалансированности картинки, к которому нужно стремиться.
Так что я в первую очередь именно на них ориентируюсь.
 
Last edited:

GNU/Hurt

Maïté
Mar 5, 2014
1,092
25
38
>именно тот уровень качества и сбалансированности картинки, к которому нужно стремиться.
Да там же какой-то зашкаливающий уровень детализации. Дальше только Кемероновский "Аватар".
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Наконец-то доделал GROWSAMPLE и опробовал его в деле. Тут же выяснилось, что он убирает далеко не все швы, но до тех пор пока я не перетащил данную технологию к себе, это как-то не бросалось в глаза. Не поверил, сравнил с оригиналом - всё тоже самое. Некоторые швы вообще стали более заметны там, где на классическом методе их почти не было. Но зато при данном подходе наличие шва можно установить на этапе рассчёта. Это как-то связано с z-компонентой нормали матрицы, но я еще не разбирался подробно как именно. Зато отметил, что с матрицами китаец работать не очень умеет. Например, он плоскости трансформировал неправильно. Вообщем теперь швы заметны на всех поверхностях, где до этого их практически не было - это места где тангенты\бинормали соседних фейсов имеют разные направления. Тогда я решил опробовать матрицы люксель\юнит, т.к. они у меня все смотрят в одну сторону. Здесь результат уже близок к идеалу, но всё равно еще остались некоторые непонятные явления. Скорость работы сильно упала, с трёх секунд до одинадцати. Ну вообщем в текущем виде это тоже юзать нельзя. Буду дорабатывать.
 
Last edited:

ZAZA

Well-known member
Nov 8, 2011
2,433
43
48
2 Дядя Миша:
Правый скрин очень-очень радует глаза :drink:
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Опробовал радиальное сглаживание из сорса. Это навроде блура из VHLT, только хитрее, потому что блур в лучшем случае знает про соседнюю грань, а эта штука, хоть и выполняется в 2D, но знает всех соседние фейсы и учитывает яркость их лайтмапы. Впрочем я его еще недоделал, он работает только для связки люксель к юниту.
 

Attachments

fr1g0

Member
Sep 21, 2006
321
33
Оффтоп

Таки эти компиляторы в итоге будут использоваться только для голдсорса или ДМ печёт что-то своё на будущие моды?

А вообще, давно пора было поправить эти компиляторы, бесило когда скейл пола должен соответствовать "скейлу" проёма двери пропускающего свет с улицы (иной раз приходилось разворачивать карту под солнце :facepalm: )
 

Attachments

Last edited:
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 fr1g0: для паранои.

Post automatically merged:

2 FiEctro: швы это между поверхностями, принадлежащими одной плоскости.
 
Last edited:
  • Like
Reactions: FiEctro

Raid

VIP
VIP
Jul 11, 2006
8,319
33
  • Rocket медаль
2 FiEctro:
У меня честно говоря не такой намётанный глаз, для меня обе картинки удовлетворительны. Вопрос лишь во времени компиляции таким образом.
 
  • Like
Reactions: FiEctro

FiEctro

Супер Модератор
Staff member
Супер Модератор
Jul 28, 2006
17,167
33
  • Золотая медаль 213
  • Neh
2 Дядя Миша:
2 Raid:
На этой карте это не критично, а вот на горах и сферах этот фактор скорее будет решающим в пользу метода на первом скриншоте.

Единственное что я понял из всей этой возни с компиляторами, это то что изначальная реализация Кармаковского лайтмапера - эволюционный тупик.
 
Last edited:

crystallize

Well-known member
Jun 6, 2014
1,715
46
48
Дядя Миша said:
Опробовал радиальное сглаживание из сорса. Это навроде блура из VHLT, только хитрее, потому что блур в лучшем случае знает про соседнюю грань, а эта штука, хоть и выполняется в 2D, но знает всех соседние фейсы и учитывает яркость их лайтмапы. Впрочем я его еще недоделал, он работает только для связки люксель к юниту.
Сглаженная лайтмапа стала более пресной, темные участки исчезли. Разве это нормально?