Может кто вкурсе почему std::format не работает на linux ?
Пишет или <format> файл не найден, если ставить выше версию языка и новый clang, то пишет std::format не найден в std::.
Где-то прочитал что это быстрее чем стандартные sprintf и т.п, решил что не помешает апгрейд, но в конце концов пришлось fmtlib ставить т.к только в MSVC нормально std::format работает
Т. е. можно задать дефолтную анимацию, которую как раз следует использовать при отображении модели. Ну и было бы неплохо, чтобы выбор другой анимации из списка (сам список поддерживается) позволял менять её в программе.
А так у меня модельки рисуются, но множество всяких стрёмных ошибок. Допустим, субмодели не отрисовываются. Те же головы у учёных. Или если просто моделька была большая по полигонам и пришлось её порезать на части, то тоже рисуется только первая часть модели. Кроме того, у меня какие-то странные глюки с отрисовкой, когда вместо одной модели рисуется две, а иногда - три. Допустим, вместе с буллсквидом прямо под ним рисуется хедкраб. Или три модели сразу рисуется в одной точке. Зато в другом месте модели не видно вообще. Как будто идёт какой-то сбой, и модели вместо тех мест, где они должны быть, "дорисовываются" в других энтитях на карте. Причём, если моделька пропадает со своего места, то порой даже не рисуется фрейм на этом месте. Т. е. вообще не видно, что энтить там есть.
Post automatically merged:
Ещё теперь обязательно нужна опция по включению/отключению рендера моделей. И можно сделать для снижения нагрузки рендер статичной анимации, просто первый кадр без движения.
Только это ничего не оптимизирует В халфовском рендере кости считаются каждый кадр вне зависимости от того, менялась анимация или нет. И я сомневаюсь что автор уже это исправил, если у него до сих пор по три головы рисуются, тогда как где-то - вообще ни одной.
Только это ничего не оптимизирует В халфовском рендере кости считаются каждый кадр вне зависимости от того, менялась анимация или нет. И я сомневаюсь что автор уже это исправил, если у него до сих пор по три головы рисуются, тогда как где-то - вообще ни одной.
Да все есть, просто я не разобрался, есть SetBodygroup, два значения, это body и subbody ? или что-то другое)))
головы будут все на месте просто надо разобраться немного))) завтра вечером начну доделывать все, уже опции в настройки добавил, skin и sequence тоже, но пока что не загружал. И надо понять что с body делать)
Post automatically merged:
Может кто разбирается в Opengl или вообще в 3д кодинге) Как можно узнать находится ли объект за пределами экрана? Что бы не тратить процессорное время на обновление и рисование моделей за пределами экрана
Я вообще бы мечтал увидеть полноценный редактор карт на основе BSPGuy. Пока что это единственная программа, в которой я бы смог что-то делать с брашами, не матерясь на их создателей за их допотопные представления о том, как должен быть устроен пользовательский интерфейс и функционал. Потому что ты хочешь ножницы, чтобы сделать гирлянду из бумаги, а тебе дают молоток и говорят - вот, наши деды именно этим чудеса свои делали, и именно так по их заветам все вы должны работать. Потому что, мол все мастера уже привыкли, значит, и ты привыкнешь, если захочешь. Но вот пока за всё время так и не захотелось. Потому что пытаешься сделать хоть что-то, и понимаешь, что всё же пока лучше остаться среди поклонников чужого творчества с таким инструментарием.
в принципе это справедливо для вообще всего софта. Нет никаких стандартов, полная околесица. В каждой программе свои горячие клавиши для абсолютно тех же действий, чего только стоит отмена/вернуть, которые далеко не везде ctrl+z ctrl+y, и тоже самое даже с самым базовым ctrl+c. Банально, в 3д-софте везде абсолютно по-разному перемещается камера, хотя казалось бы, это так просто) Я вообще удивляюсь, как мы пришли к единому usb-выходу в телефонах. Хорошо, когда тебе 15 лет и у тебя куча свободного времени)
Я добавил открытие поиска на CTRL + F, окно перехода к координатам/модели/сущности/фейсу на CTRL+G, и уже жалуются что на F был хоткей разделения фейса на две части, а на G граб ентити(перетаскивание).
Ну естественно F и G пришлось переназначить что бы не путались ) уже недовольные появились)
Ну я же не в халфе, а в bspguy) Но возможно загуглю найду как это можно сделать, вроде как направление взгляда есть, fov можно будет настроить, и координаты моделей есть, осталось только bbox получить и проверить видно ли.
Ну это проще сказать чем сделать, причем сделать это очень сложно, т.к надо проверять видна ли модель целиком через любую другую модель на пути,
По правде говоря я уже делал это через opengl функции, там есть такая проверка, и это даже серьезно увеличило ФПС, но только если камера не подвижна, как только происходит изменение, требуется перепроверить на видимость все объекты заново.
Получилось не очень например так:
Было 900FPS при движении или без
Стало 300FPS при движении, без движения камеры 1200 ФПС.
То есть так себе выгода ))) после этого вырезал этот код как бессмысленный) У меня например ФПС в bspguy ограничивается процессором, одно ядро из восьми загружает почти полностью, а видеокарта загрузка только 30% от силы.
Причем всякие обновления моделей и т.д происходят постоянно, в независимости виден объект или нет.
Хочу сделать хотя бы проверку на fov, тогда можно будет не обновлять и не пытаться рисовать те объекты которые за пределами экрана
Post automatically merged:
Интересно, а можно ли рендер многопоточным сделать, или это так не работает? Всмысле могу ли я рисовать из нескольких потоков, или это недопустимо в Opengl?
В карте уже содержится информация о том что откуда видно а откуда нет. Т.е. какие листья из каких листьев видны а из каких нет. Это та информация которую hlvis.exe записывает в карту. Она побитовая. Там перемещаешься операторами << и >>. Неужели ты даже не читал статьи ДМ об устройстве Квейк-движков? Они тут же выложены.
В карте уже содержится информация о том что откуда видно а откуда нет. Т.е. какие листья из каких листьев видны а из каких нет. Это та информация которую hlvis.exe записывает в карту. Она побитовая. Там перемещаешься операторами << и >>. Неужели ты даже не читал статьи ДМ об устройстве Квейк-движков? Они тут же выложены.
Смысл в том, что это никак не помогает, и как бы учитывая что обычный opengl валлхак работает в хл1кс16, то эта информация игрой тоже никак не используется если рендер стен и других частей карты, которых к слову по идее не должно быть видно, доходит до рендера....
Плюс ко всему в bspguy рисуется целиком модель, будь то worldspawn или какая-то другая, тут нет такого понятия модель видима или не видима через другую, рисуются сначала частично прозрачные, а во второй этап непрозрачные. А как проверять каждую модель на видимость сквозь все остальные, я в душе понятия не имею.
Я понимаю если бы отдельно рисовался каждый фейс, то имело бы смысл проверять видимость и не рисовать если он не видим, но как я выше написал bspguy и half life это не одно и тоже, нужно учитывать что это абсолютно разные вещи.
Post automatically merged:
Кстати, на счёт VIS. Как проверить работоспособность VIS данных? есть подозрения что оригинальная версия в каждой из карт ломало их после оптимизации, и всё ещё имеются подозрения что я это не доконца исправил в newbspguy, но как проверить эти данные?)
В каждой программе свои горячие клавиши для абсолютно тех же действий, чего только стоит отмена/вернуть, которые далеко не везде ctrl+z ctrl+y, и тоже самое даже с самым базовым ctrl+c.
Кстати, на счёт VIS. Как проверить работоспособность VIS данных? есть подозрения что оригинальная версия в каждой из карт ломало их после оптимизации, и всё ещё имеются подозрения что я это не доконца исправил в newbspguy, но как проверить эти данные?)
Смысл в том, что это никак не помогает, и как бы учитывая что обычный opengl валлхак работает в хл1кс16, то эта информация игрой тоже никак не используется если рендер стен и других частей карты, которых к слову по идее не должно быть видно, доходит до рендера....
Смотреть воллхаком за угол-это фундаментальная проблема, которая наверное и не будет решена. Но твои проблемы же еще больше, у тебя вся карта рисуется каждый раз.
Кстати я не понимаю о какой разнице в логике отрисовки ты говоришь. Геометрия обычных стенок не хранится в карте единой моделькой, поэтому твой код не может рисовать ее как-то иначе. Эта геометрия точно так же побита по нодам, и ты в коде тоже должен их перебирать при отрисовке.
Да нет, говорю же что в bspguy моделька загружена целиком в массив lightmapverts, будь то вордспавн или любая другая сущность.
там для шейдеров, текстура, координаты текстуры, lightmap'ы с координатами, цвет дополнительный, ну сама геометрия.
А рисуется отправляя целиком весь этот массив.
Post automatically merged:
И этот буфер не обновляется каждый кадр, только когда это надо,( т.к например перезагрузка ворлдспавна может идти секунд 5-10), и обновляется только в крайних случаях(ну там когда надо обновить текстуру или ещё что-то)
Post automatically merged:
Я не шарю в шедерах этих и т.п, по этому не уверен как можно оптимизировать. Щас хотя бы проверку fov прикрутить бы что бы не обновлять модели за кадром, тогда не все так печально с фпс будет если не смотреть на всю карту целиком
Ок это более понятно. Я так понимаю, код загрузки не твой? Она же в единый массив собирается не святым духом, там должен быть код который перебирает ноды. Вот его надо копать и обновлять этот массив при перемещении камеры, учитывая инфу о видимости.
Ок это более понятно. Я так понимаю, код загрузки не твой? Она же в единый массив собирается не святым духом, там должен быть код который перебирает ноды. Вот его надо копать и обновлять этот массив при перемещении камеры, учитывая инфу о видимости.
Да я взялся добавить как можно больше всего полезного в bspguy, сделал свой форк, код естественно не мой был, ну и вот обновление массива worldspawn модели занимает секунд пять на небольших картах, я себе не представляю как это можно сделать в реальном времени, а карта освещения в "атласы" загружается и оттуда уже координаты передаются в тот же lightmapverts
то есть я не знаю как в хл сделано, может там в хл рисуется каждый полигон отдельно, и можно учитывать видимость, а тут сделано так что все целиком рисуется.... если я правильно понял)
Нет, OpenGL однопоточный, но тебе это не поможет, да вообщем-то и нахрен не нужно.
Те игрушечные по современным меркам уровни и поликаунт должны безо всяких проверок давать под 1000 фпс. Надо просто рендерер нормальный сделать, а не как в 95-м году.
А зачем ноды перебирать? Это параллельная сущность.
ЗЫ, Я помню когда-то очень давно (кажется в прошлую пятницу). знакомился с кодом bspguy и отметил, что его писал человек, который хотя бы четко понимал что он делал.
Автор проекта резко забил, я там PR кидал кидал, он принимал, потом однажды, когда я добавил открытие нескольких карт одновременно, и там поддержку других модов, сказал что слишком много измений было в одном из PR, тогда я свой форк создал и начал в newbspguy все что мог запихивать)
Если что оригинал чисто sveen coop поддерживает, так как там нельзя папки других модов указать, или что-то ещё. Не знаю почему.
На счёт WAD общем WAD экспорт сделаю тогда в 32 битный PNG, раз цвет прозрачности в палитре хранится, я его не смогу скорее всего сохранить куда-то ещё что бы потом обратно вставить, так что проще всего это в rgba сохранить, а при загрузке заменять цвет прозрачности на синий и ставить его в конец палитры....
Почему обязательно в PNG? TGA и BMP точно так же поддерживают прозрачность.
Посмотрел я код этого bspguy, твой форк, точнее. Квантизатор откровенно похабный, ему реально нужен дизеринг. Функции пересечения с плоскостью взяты еще из Botman BSP Viewer, они неверные.
Ну то есть верные только в сферическом ваккууме. А так я с ними проблемы имел. Да и остальное там сомнительное. Так же вижу кашу из старых функций и fs:: Надо наверное что-то одно оставить.
Понравился камент в main.cpp
// super todo:
Не могу понять - в папке scripts лежат файлы с расширением .as т.е. AngelScript, да и по синтаксису похоже, однако самой библиотеки AngelScript я в исходниках не обнаружил.