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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2017, 20:55  #421
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

[ Цитата ] 2 ncuxonaT: а ты привёл формулы освещения к халфовским?
Нет, потому что они дно
ncuxonaT вне форума Ответить с цитированием
Старый 05.11.2017, 20:58  #422
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,243


По умолчанию

2 ncuxonaT: VHLT, несмотря на все его преимущества, как раз ругали за несоответствие значений освещения стандартному халфовскому свету. А ведь там различие было куда меньше чем у тебя. Ну хозяин - барин.
Дядя Миша вне форума Ответить с цитированием
Старый 06.11.2017, 02:57  #423
Raid
Raid
Регистрация: 28.03.2037
Адрес: CSM-чат
Возраст: 26
Сообщения: 7,834


По умолчанию

Огромная, как жопа мамаши анальных первопроходцев ZHLT просьба: убрать к пёсьим удам эти сраные надписи, заменив их автоподменой шашечной текстурой. У меня в голове не укладывается как можно было написать редактор так, чтобы была такая срань - какой уровень рукожопия должен быть у авторов как первичного хаммера, который эти ошибки допускает, так и у авторов компиляторов, который из-за этих ошибок останавливается нахер. Ну видишь ты оторванный фейс. Ну округли до ближайших координат. Ну триангулируй, если битый. Если не получается округлить - ну сгенерируй тетраэдр или ещё как-то соедини вертексы. Но нет, б**дь, раньше лёгких путей не искали. Надо обязательно остановить вообще всё по любой мелкой х**не, Небо, аллаха - насрать что там целая огромная карта с тысячами брашей и гагабайтом лайтмап. Жизненно необходимо остановить весь компил только потому что один фейс битый, вместо того чтобы его пометить в самой карте, вместе со сраными этими текстуропроблемами, берущимися из ниоткуда.
[ Миниатюры ]
Снимок экрана_2017-11-06_02-55-05.png Просмотров: 60 Размер:  61.9 Кбайт  

Последний раз редактировалось Raid, 06.11.2017 в 03:17.
Raid вне форума Ответить с цитированием
Старый 06.11.2017, 10:25  #424
crystallize
crystallize
Лейтенант
Регистрация: 06.06.2014
Сообщения: 771


По умолчанию

[ Цитата ] Сообщение от ncuxonaT: Нет, потому что они дно
Ну халфовский рад ты использовал хотя бы?
crystallize сейчас на форуме Ответить с цитированием
Старый 06.11.2017, 12:03  #425
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

2 crystallize: да, и от этого он не стал лучше
ncuxonaT вне форума Ответить с цитированием
Старый 06.11.2017, 12:17  #426
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,243


По умолчанию

2 Raid: между компиляторами и потребителем их продукта (например тем же движком), существует принципиальная разница в обработке ошибок. Компилятор не должен вносить отсебятину, он должен показывать пользователю на реально существующие проблемы. А не исправлять это. Вот движок, тот да, у него уже нет выбора, будет работать с чем дали.
Дядя Миша вне форума Ответить с цитированием
Старый 06.11.2017, 13:31  #427
Raid
Raid
Регистрация: 28.03.2037
Адрес: CSM-чат
Возраст: 26
Сообщения: 7,834


По умолчанию

2 Дядя Миша:
Да у меня анально бомбит просто, не обращай внимания. Всё было конвексное (ну не всё, но работало, там какие-то отслоившиеся фейсы откуда-то вылезли), а потом вдруг перестало - и начиналась дрочь с поиском по координатам. Но вообще смысл тот, что работать должно при любом раскладе, а об ошибках уведомлять - как в консоль, так и в игре как-то помечая проблемные участки. Чтобы работало - при любом раскладе - как раз нужны отключаемые автотриангуляторы, автоспайщики, и автоокругляторы крошащие неконвексные браши на конвексные фрагменты и достраивающие фейсы (или удаляющие если совсем срань какая-то вылазит). В общих чертах это выглядит так: ты сделал карту с хитровыкрученным камнем. Пришёл посмотреть - а его расхерачило на тетраэдры со щелями в полметра. Вывод однозначен сразу: это надо переделать. Но! Вся остальная карта остаётся доступна для тестирования, просто потому что она собрана. В этом смысл. Остановка компиляции - это уже из области точной подгонки финальной.

Последний раз редактировалось Raid, 06.11.2017 в 13:44.
Raid вне форума Ответить с цитированием
Старый 06.11.2017, 13:43  #428
GNU/Hurt
GNU/Hurt
Боржович
Регистрация: 05.03.2014
Сообщения: 773


По умолчанию

>Компилятор не должен вносить отсебятину, он должен показывать пользователю на реально существующие проблемы
Ещё как должен. Иначе всё это преврашается в идиотизм вида:
Код:
10 СМЕСТИЛ 2 БРАША
20 ПОДОЖДАЛ ПОЛЧАСА
30 GOTO 10
и так 20 раз. Ну а потом к нам в часть спирт завезли, ну и я перестал компилировать.
GNU/Hurt вне форума Ответить с цитированием
Старый 06.11.2017, 13:56  #429
FiEctro
FiEctro
Регистрация: 28.07.2006
Адрес: Эквестрия
Возраст: 26
Сообщения: 16,402


По умолчанию

[ Цитата ] Сообщение от GNU/Hurt: >Компилятор не должен вносить отсебятину, он должен показывать пользователю на реально существующие проблемы
Ещё как должен.

Ага, а потом вы же будете плеваться, почему в скомпиленной карте результат совсем другой чем в исходнике. Сами не знаете чего хотите.
FiEctro вне форума Ответить с цитированием
Старый 06.11.2017, 14:07  #430
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,243


По умолчанию

2 Raid: Texture Axis perpendicular to face не останавливает компиляцию, и даже скорее всего к проблемам не приведёт. А с привязкой люкселей к юнитам, эта проблема вообще перестанет существовать, по идее.
А насчёт тетраэдров - я сейчас как раз и делаю такие компиляторы, чтоб жрало всё.
2 GNU/Hurt: есть тонкая грань между внутренними проблемами самого компилятора и косяками левел-дизайнера. Если микродырки и вырожденные браши можно списать на несоврешеннство среды и нехватки точности вещественных чисел, то криво наложенная текстура - это проблема исключительно дизайнера. Но это значит что надо останавливать процесс компиляции. Я отревизил все фатальные остановки, условно разделив их на две группы. Первая группа - для дизайнеров. В нее включены все остановки вида MAX_MAP_BUTERBRODS limit exceeded. Все что не имеет такого вида - это скорее всего внутренние ошибки компилятора, которые вообще не должны присходить, но маппер навряд ли может с этим что-то сделать. А вот всякие варнинги, типо texture axis perpendicular to face, leaf portals saw into leaf, point off plane или texture not found, компиляцию не останавливают. К тому же я полагаю, что вывод в консоль координат проблемного места - разновидность идиотизма. Пусть лучше карта соберётся и маппер своими глазами этот косяк увидит. Если он вообще вылезет визуально. Ну тут по аналогии с предупреждениями компилятора студии - он может выдать тонну предупреждений, unreferenced local variable, но это ни на что не повлияет. Так же и с картами и вообще с любым процессом компиляции - не каждое предупреждение приводит к каким-то нехорошим последствиям.

Дядя Миша, подумав, добавил 06.11.2017 в 14:12
======================
Продолжаю ковырять сглаживающие алгоритмы VHLT. Китаец написал не менее десятка всевозможных улучшений, которые в лучшем случае влияли очень локально и незначительно, но при этом увеличивали время компиляции. Потом он плюнул и заморочился над фундаментальным решением - вот как раз через GROWSAMPLES. Там смысл в матричных преобразованиях, из текстурного пространства одного фейса в текстурное пространство другого фейса. Я не уверен, что это наилучшее решение, хотя сам подход верный. Скажем вальва в сорсе преобразует из текстурного пространства в 2д и накладывает лайтмапу в двухмерке. Такой подход гораздо проще.

Последний раз редактировалось Дядя Миша, 06.11.2017 в 14:12.
Дядя Миша вне форума Ответить с цитированием
Старый 06.11.2017, 14:18  #431
Raid
Raid
Регистрация: 28.03.2037
Адрес: CSM-чат
Возраст: 26
Сообщения: 7,834


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: [ К тому же я полагаю, что вывод в консоль координат проблемного места - разновидность идиотизма.
Да вот нифига, пусть будет максимально точная инфа. А если браш невидим в игре? Как его тогда найти?
Raid вне форума Ответить с цитированием
Старый 06.11.2017, 15:09  #432
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,243


По умолчанию

2 Raid: если тебя визуально ничего не парит, то и смысл искать проблему?
А на клипхуллы дизайнер всё равно не влияет.
======================
В сорсе обнаружил любопытную вещь - в FinalLightFace идёт радиальное сглаживание по соседям. Не средневзвешенное, а медианное (ну это как у нас зарплаты считают). Т.е. по уже готовым люкселям. Этот подход скорее всего сработает на углах в 90 градусах, чего принципиально нет у китайца. Вообщем будем тестить. Вы наверное обращали внимание, что VHLT начинает рассчёты освещения с FindFacePositions. Это вот как раз часть GROWSAMPLES. На с1a0d, их рассчёт занимает порядка одной секунды. Для VHLT, где BuildLightFaces занимает 29 секунд, это выглядит нормой, но не для моих компиляторов, где весь свет на экстра считается за три секунды. Я уже вчера пытался там оптимизировать всё возможное, но там какая-то чудовищная работа проделывается и подозреваю по большей части бесполезная. Это ясно уже по самому подходу поиска оптимальных позиций. Т.е. хаотичное метание по фейсу, проверки, подталкивание позиций, снова проверки и так - пока не найдет. Учитывая что геометрия там уже прошла CSG и избавилась от ненужных пересечений, у нас почти идеальный случай. Потом расскажу к каким выводам я пришёл в итоге.
Дядя Миша вне форума Ответить с цитированием
Старый 06.11.2017, 15:18  #433
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

2 Дядя Миша:
Оффтоп
ncuxonaT вне форума Ответить с цитированием
Старый 06.11.2017, 15:54  #434
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,243


По умолчанию

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

Вообщем механизм идеального сглаживания у меня вырисовывается примерно следующий: трансляция фейс-ту-фейс от китайца, радиальное сглаживание готовых лайтмап по сорсовскому методу ну и ессно ворлд-люксели. Ну и чтоб это всё было шустро.
[ Миниатюры ]
c1a0d0000.JPG Просмотров: 71 Размер:  26.1 Кбайт  c1a0d0001.JPG Просмотров: 65 Размер:  17.9 Кбайт  c1a0d0002.JPG Просмотров: 55 Размер:  16.1 Кбайт  c1a0d0003.JPG Просмотров: 65 Размер:  16.2 Кбайт  c1a0d0004.JPG Просмотров: 61 Размер:  19.0 Кбайт  c1a0d0005.JPG Просмотров: 71 Размер:  35.0 Кбайт  

c1a0d0006.JPG Просмотров: 64 Размер:  28.1 Кбайт  
Дядя Миша вне форума Ответить с цитированием
Старый 06.11.2017, 16:07  #435
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

2 Дядя Миша: почему не сделать как в The Last of Us?
http://miciwan.com/SIGGRAPH2013/Lig...t%20Of%20Us.pdf
страницы 8-12
ncuxonaT вне форума Ответить с цитированием
Старый 06.11.2017, 17:14  #436
crystallize
crystallize
Лейтенант
Регистрация: 06.06.2014
Сообщения: 771


По умолчанию

-Что такое радиально медианное сглаживание? Скрины с HL: Source?
-Почему в Valve не юзали func_wall?
crystallize сейчас на форуме Ответить с цитированием
Старый 06.11.2017, 17:44  #437
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,243


По умолчанию

2 ncuxonaT: потому что Order 1886 круче и ориентироваться надо на него.
Но сперва надо посчитать бесшовные лайтмапы.

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

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

Дядя Миша, подумав, добавил 06.11.2017 в 17:59
На третьем скрине спецом уменьшил плотность точек, чтобы показать где они налипают - в местах стыка полигонов. и по центру каждого люкселя.
При этом для каждой точки имеется матрица трансляции в соседний полигон, чтобы продолжить освещение на нём, если оно залезет.
[ Миниатюры ]
c1a0d_0005.JPG Просмотров: 74 Размер:  187.0 Кбайт  c1a0d_0006.JPG Просмотров: 76 Размер:  188.6 Кбайт  edges.JPG Просмотров: 65 Размер:  38.2 Кбайт  

Последний раз редактировалось Дядя Миша, 06.11.2017 в 17:59.
Дядя Миша вне форума Ответить с цитированием
Старый 06.11.2017, 18:04  #438
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

[ Цитата ] 2 ncuxonaT: потому что Order 1886 круче и ориентироваться надо на него.
Но сперва надо посчитать бесшовные лайтмапы.
ссылку не смотри, ответ пиши.
Там про удаление швов же.
ncuxonaT вне форума Ответить с цитированием
Старый 06.11.2017, 18:22  #439
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,243


По умолчанию

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 раз порешали, еще в начале нулевых.

Дядя Миша, подумав, добавил 06.11.2017 в 19:12
PS. Ну там дальше пишут про "stitching points" это как раз и есть то самое, что китаец реализовал.
[ Цитата ] (we create three points per texel, since the bilinear interpolation follows a quadratic curve).
Только они три точки на тексель садят, а у китайца их девять. Потому что у них треугольники.

Последний раз редактировалось Дядя Миша, 06.11.2017 в 19:14.
Дядя Миша вне форума Ответить с цитированием
Старый 07.11.2017, 10:44  #440
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,243


По умолчанию

Опробовал новый рассчёт валидных позиций на фейсе. Не тот, что я показывал выше на скринах, а тот, что был в VHLT, до номера 30. Т.к. он всё равно является частью этой системы со stitched points. Время работы выросло вдвое, с 3 секунд до 6. В целом стало чуть-чуть аккуратнее, но мне не нравится, что в моей изначальной версии компиляторов эту же задачу выполнял простейший цикл с проверкой, что мы не выпали за пределы уровня. А теперь сложнейшая хрень, которая чего-то там нуджит, мидпоинтит, охотится за миром. Причём часть этих функций взята из ZHLT, она первоначально там появилась.Кстати флажки Embedded и Concave - это прямое следствие криворукости авторов ZHLT.
Embedded предполагалось выставлять моделям, которые находятся заподлицо с остальным уровнем, чтобы общая яркость лайтмапы не выделялась. Хотя оно и так должно происходить, безо всяких флажков. А concave видимо начинал какую-то особую охоту за миром по вогнутым мешам. Тут следует сделать небольшое пояснение. Охота за миром это название функции HuntForWorld. Возвращает валидную точку и валидный лиф. Изобретение Зонера, как я понял.
Вообще слишком всё переусложнено.
Дядя Миша вне форума Ответить с цитированием
Ответ

Здесь присутствуют: 2 (пользователей - 2 , гостей - 0)
Ku2zoff, mittorn
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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



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


Designed by FT-502, TRUP@C. Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2017 by CS-Mapping.com.ua Community