XaeroX писал: По трубам, я так понимаю, ползать никто под ксашем не будет? Или можно самому написать шейдер? Если да, то как это будет выглядеть?
Да, надо GLSL-шйдер написать и всё заползает. Выглядеть будет идентично ктури. Единственная проблема моей системы - я до сих пор не придумал как задавать анимацию. Не поддерживается она у меня пока что.
Как история повторяется циклически, так и ДМ прикручивает ку3 формат циклически к ксашу.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Вам возможно будет интересно, но в этот раз для кутришного формата я использовал все сабраутины от первой кваки. Кроме конечно разжатия PVS, поскольку в кутри PVS и так несжатый
Всё подходит.
Добавлено 20-11-2019 в 12:28:
Сделал вчера предварительный тест производительности. Там где эта же карта в халфовском формате выдаёт 400 фпс, кутришная выдаёт 700, но судить пока рано - я к примеру не подключил еще физику, она вполне может сбить итоговый фпс. Впрочем причины понятны - те же патчи рисуются как стрипы. Конечно это будет быстрее чем в халфовском формате, где всё отдельными трианглами. Плюс в кутри и сами секвенции гораздо длиннее. Продолжаю исследование.
Добавлено 20-11-2019 в 12:44:
Вообще у меня есть вот какая идейка. Если я ЧАЭС вкомпилю как встроенную модель со всеми стрипами, а дерево само её рассечёт на квадраты 1024х1024. Видимость это конечно посчитать не поможет, но как минимум куллиться будет эффективнее. Ну это позже.
Для меня есть одна загадка - я не понимаю как в движках организованы лайтстили без какой-либо привязки к лайтстилю. Вот вроде бы говорят, что в сталкере этих лайтмап можно насчитать сколько угодно, хоть для 12-и положений солнца. Судя по всему это не учитывает остальные источники, лайтмапы просто дублируются для них. И в унреале есть подобная замута.
Надо будет с этим разобраться.
Ну что же. Пожалуй пришла пора реально реализовать функционал кутришных шейдеров, не затрагивая код рендерера - только через новую скриптовую систему. Посмотрим что у меня получится.
Вот вам две занятные картинки: Там где фпс выше - это кутришная оригинальная карта. там где ниже - эта же карта, скомпиленная в халфовский бсп. Особо обращаю ваше внимание на кол-во DIP.
Вот какую штуку я придумал. Тот формат записи, который есть сейчас, позволяет максимально подробно описать юниформы и текстурные юниты для шейдеров, но я подозреваю, что самим пользователям будет очень неудобно каждый раз такое прописывать. Это слишком общий формат записи, это для тех, кто будет создавать новые типы рендереров.
То есть каждый раз обозначать путь к текстуре таким образом:
довольно таки неудобно. С юниформами аналогичная ситуация, но в то же время это оптимальный формат записи с точки зрения самого механизма и менять я его не намерен. Как же упростить эту задачу для пользователя?
И я придумал встроить поверх этой системы дополнительно простенький макро-язык, который сможет заменять key-value pair (ну в действительности сколько угодно аргументов) на необходимую нам строку.
То есть мы пишем что-то вроде
C++ Source Code:
#keydef map <value>\
image u_ColorMap = "<value>";
а при парсинге оно находит наши строки
C++ Source Code:
map textures\common\black.tga
и автоматически их заменяет на то что мы указали. А для лайтмапы, скажем
C++ Source Code:
#keydef map $lightmap\
image u_LightMap = "entity->$LightmapTexture";
Ну это просто как пример, в реальности будет несколько сложнее. Плюс в том, что мы таким образом сможем описать практически любую из существующих систем материалов или создать свою собственную.
Достаточно описать все ключевые конструкции кутришных шейдеров и всё это распарсится в исходную систему налиту. Или аналогично указать не кутришные ключевые слова, а параноевские. Ну единственно надо будет хорошо продумать правила автозамены.