Короче говоря, не знаю как, но я добрался до файла studiodlight_fp.glsl и, закомментив там 2 строчки
C++ Source Code:
float spotCos = cos(fov+fov);
If( spotDot < spotCos ) discard;
тот баг, который на видео - ушел, модели со скейлом ниже 1 освещаются нормально. Но вот больше 1 - фонарик быстро затухает и даже в упор ничего не освещает у пропа. Похоже и правда нужна проверка на скейл. Дядя Миша, подскажи может, где ее осуществить?
В общем я так и не понял, в чем проблема, все время упирался в шейдер освещения, что в параное, что в ХТ. Сравнивал их, подредактировал немного, но в итоге получил тот же результат. Наверное не в них дело.
Временное решение - закомментить 2 строчки
C++ Source Code:
float spotCos = cos(fov+fov);
If( spotDot < spotCos ) discard;
в файле glsl/studiodlight_fp.glsl - это "пофиксит" хотя бы фонарик на моделях со скейлом < 1. Если больше 1, то увы. Еще можно сделать фонарик чуть ярче в этой строчке
Из всего, что смог нарыть - умножение в шейдере bonematrix на 2 начинает проявлять свет на бОльших моделях, а на моделях с единичным скейлом проявляется эффект, идентичный ранее моделям со скейлом 0.5. Такое ощущение, что шейдер не получает скейл кости? Я в этом плохо понимаю.
Там в освещение передаётся матрица с идентичным скейлом. Почему так - не помню, но были проблемы с экономией долбаных юниформов, чтобы у всяких маргинальных товарищей ксаш-мод работал на ихнем железе конца 1880-х годов. Отсюда и лезут все эти проблемы. С параноей я так не заморачивался и там нет этого.
Я в своё время эту пакость постарался забыть как страшный сон.
Так что не подскажу ничего навскидку. Вчера по сорцам пробежался, вроде бы ничего подозрительного не обнаружил.
Aynekko писал:
Подскажите по дурацкому вопросу. Т.к. это в ксаше, то спрашиваю здесь. В общем я себе в меню добавил галочку, которая меняет квар с 0 на 1 и обратно. Она находится на сервере. Дело в том, что клиент этот квар не видит. Если есть карта-бэкграунд или во время игры, квар сохраняется в конфиг и в меню. А если запустить игру без карты-бэкграунда, то сервер.длл еще не будет загружен, а вместе с ним и квар. После переключения галочки в меню я получаю сообщение в консоль вида: "Cvar_Set: variable not found"
Как зарегать его в клиенте и чтобы значение бралось из конфига?
Но почему-то идея мне пришла только вчера... Я просто зарегал эти же самые квары на клиенте, в том же самом виде. Теперь они считываются из меню, даже если серверная длл не подгружена. То есть ответ на вопрос был в моем же вопросе, фейспалм
А еще заметил пакость, что без загруженного сервера не грузятся карты без валидного спаун-поинта. А во время игры спокойно. Надо это убрать, я часто тестирую куски карт без спауна, летаю из ориджина мира с ноуклипом.
Добавлено 03-07-2021 в 11:17:
А, нифига. Я думал они просто считываться будут. Но нет. Сервак теперь не признает эти квары. Вот напасть-то.
Дядя Миша писал: Вот я ж почему и думаю, разработчик, вместо того чтобы делать игру - ковыряется в движке. Т.е. сорцы лучше не давать.
Ну почему же сразу не давать-то? Я и монстров себе сделал, и меню переделал под себя. Много всякого сделал на свой вкус и цвет. Ну мне просто интересно этим заниматься.
К тому же найдутся умельцы, которые займутся движком дальше, вот FWGS тому пример. Без исходников ничего бы не было… Они там голосовой чат кажется делают и RTX прикручивают на какой-то стадии, если я не ошибаюсь.
Путем нехитрых манипуляций с csg удалось скомпилить карту размером 131к и нормально побегать. Если бы не одно но. За границами 32 тысячи от центра начинает исчезать скайбокс (когда смотришь в сторону от центра), нет взрывов и трейсеров пуль. Гранаты есть и кидаются - это IsInWorld я увеличил. А вот почему такое происходит - не пойму. В какой лимит уперся? Можно ли его поднять?