Для теста сделал карту, поставив в одной комнате 896 моделей. Модель чисто белого цвета. Посередине скриншота тут стоит 1 лампочка. Компилил hlrad из пака p2tools. Модели ставил пачками, судя по всему влияет номер индекса энтити и после какого-то числа начинается треш.
И еще другой маппер столкнулся с тем же, чем и я - у него на карте около 700 моделей и часть из них стали черными. Но если отсечь часть карты перед компилом, освещение у них нормальное становится. Явно какой-то лимит.
Может быть и лимит, но надо определиться где именно.
Консоль молчит?
В рендерере вот:
C++ Source Code:
#define MAX_LIGHTCACHE 2048 // unique models with instanced vertex lighting
Похоже не наш случай.
Добавлено 20-07-2021 в 14:56:
Вам надо не часть карты отсекать, а определится с точным кол-вом моделей, после которого начинается треш. И вот узнав это число я уже сделаю выводы, где тут лимит, явный он, неявный, в какой части движка, в компиляторах, в рендерере или в передаче по сети.
Вот. Поставил 512 моделей - все нормально. Поставил еще 3 модели (на фото - извиняюсь, что не скриншот). Эти 3 модели соответственно 513, 514 и 515. Они почему-то стали серыми. То есть лимит 513. Хотя даже скорее 512, так как модель 513 слегка серее, чем остальные...
Дядя Миша писал: Теперь эту же карту суй фпараною. Там нормально будут освещены модельки сверх лимита?
Все так же. Модельки такие же серые.
Обнаружил еще вот что. Порядок постановки энтити на карту влияет на освещение.
- удалил 3 модели
- поставил 3 барника
- поставил сверх 3 модели.
Эти 3 модели стали серыми. То есть общее кол-во энтитей каким-то образом тоже влияет, судя по всему.
Aynekko писал: Все так же. Модельки такие же серые.
Хорошо, значит в компиляторе. Да я поправде говоря в рендерере ничего подозрительного и не обнаружил.
Добавлено 20-07-2021 в 16:31:
Может vertexremap фейлит?
C++ Source Code:
1
typedefstruct
2
{
3
int modelnum : 10;
4
int vertexnum : 22;
5
} vertremap_t;
Тут как бы 10 бит, 1024 модели, но signed, значит 9 бит, а это и есть 512 моделей.
Попробуй вообще убрать эти : 10 и : 22. Это в p2rad\vertexlight.cpp
Ну или хотя бы сделать их unsigned int.
Дядя Миша писал: Хорошо, значит в компиляторе. Да я поправде говоря в рендерере ничего подозрительного и не обнаружил.
Добавлено 20-07-2021 в 16:31:
Может vertexremap фейлит?
C++ Source Code:
1
typedefstruct
2
{
3
int modelnum : 10;
4
int vertexnum : 22;
5
} vertremap_t;
Тут как бы 10 бит, 1024 модели, но signed, значит 9 бит, а это и есть 512 моделей.
Попробуй вообще убрать эти : 10 и : 22. Это в p2rad\vertexlight.cpp
Ну или хотя бы сделать их unsigned int.
А для чего вообще такая экономия? Если убрать эти деления на биты, что-то может сломаться?
SNMetamorph писал: Если убрать эти деления на биты
Цитата:
SNMetamorph писал: деления на биты
Цитата:
SNMetamorph писал: деления
Цитата:
Aynekko писал: Для чего же был этот лимит?
память вдвое экономит. Вместо 8 байт использует 4.
А когда на карте сотни моделей и у каждой десятки тысяч вертексов, получается экономия, ну скажем с 400 до 200 мегабайт.
Вот примерно так это и работает.
Ну что, два наводящих вопроса и лимит найден. Интересно, сколько бы вы его искали без меня.
Еще такой вопрос. Везде написано про max_map_models, что "can be increased up to 2048 if needed". Опытным путем я убедился, что лимит ВСЕХ энтитей на карте - 2048. Я просто поставил 2500 info_target и 10 light - вылетает. Как можно это поднять? Хотя бы до 4096.