nemyax писал: Карты оригинальные кутрёвые или ты что-то с ними дополнительно делал?
абсолютно оригинальные. Было сделано две вещи:
1. во все шейдерные скрипты добавлена строчка:
C++ Source Code:
#include"scripts\q3shaders.h"
в этой файлике у меня все макро-подстановки и авто-замены.
2. джипег текстуры сконверчены в tga, ксаш не умеет джипег.
Добавлено 30-11-2019 в 18:02:
Добавил скрытые ключевые слова
#beginsection и #endsection
ну это что-то вроде конструктора и деструктора для скриптов.
Вызываются, только если юзер добавил их в глобальный словар макроподстановок. Ну и там уже можно внутри проверять всякое, в конце скрипта, а в начале допустим писать отладочное сообщение.
Но надо еще что-то с кондициями сделать. Текущая система уже не удовлетворяет. Там фактически одно условие #if с кучей ограничений и непонятным для юзера поведением.
Добавлено 30-11-2019 в 18:08:
Нужен рефакторинг. Я еще задумывался насчё того, чтобы вообще отойти от жёсткой формы задания материала
C++ Source Code:
"name"
{
}
чтобы через автозамену можно было как угодно их описывать, но пока не знаю. Парсеру ведь тоже нужны какие-то реперные точки, в данном случае это скобки { и }. Но если я это сделаю - можно будет описывать вообще любую форму материала. В том числе и однострочные материалы, как в сталкерах каких-нибудь. Сейчас этому мешает то обстоятельство, что словарь автозамены действует только внутри секции скобок.
Добавлено 30-11-2019 в 18:09:
А накидайте мне, если вам нетрудно варианты описания разные материалов и шейдеров из разных игр. Посмотрим что бывает.
Дядя Миша писал: Собсно, я не стал делать абсолютно все бленды через скринкопи, это достаточно дорого. Только вот эти сложные случаи, которые иначе не разрулить.
Автодетект конечно. Ну он пока не все варианты отрабатывает, я решил пересмотреть немного концепцию материалов и условий. У меня тут уже накопилось достаточно информации для размышления.
Не в том смысле, что я в тупик куда-то зашёл и дальше не получается. Просто появились идеи, как сделать еще лучше. Пока размышляю.
В рамках будущей концепции я хочу представить материал, просто как набор параметров для шейдера и для движка (некоторые подсказки).
Сейчас оно так и есть, но жёстко ограничено формой записи материала
C++ Source Code:
"name"
{
}
плюс есть такие неявные вещи, как наследование, из шейдер-объекта, но оно появилось тогда, когда у меня еще не было некокой автозамены.
И вот в связи с этим я думаю, а зачем нужно неявное наследование, когда при помощи автозамены можно сделать явное и указать приоритеты.
Поглядим, вообщем.
Добавлено 30-11-2019 в 21:03:
Наконец-то доделал туман
Печально, но сами объемы правильно блендятся только через копию экрана, через стандартный бленд мне не удалось их заставить правильно рисоваться.
Впрочем фпс всё равно достаточный.
На небо внимания не обращайте, неба еще нет нигде. А это кутришные шейдеры сами размазали облака по скайбрашам.
Минутка забавного. В ку3 клибрашам почему-то не дали параметр nodraw и ксаш их конечно жы нарисовал. Надо бы их спрятать, но как?
Я бы конечо мог ввести какой-нибудь хитрый параметр, типа #ignore, но я решил себя поставить на место пользователя, который не может ничего добавить в движок. Вот как бы я поступил на его месте? Решение нашлось
Делаю рефакторинг системы материалов, в первую очередь надо нормальные условия сделать, предсказуемые для юзера. Ну и сам механизм немного поменяется. Я думаю теперь дефолтные материалы задавать с именем типа модели, ну вот так:
C++ Source Code:
1
mod_brush
2
{
3
// default params
4
}
думаю так нагляднее будет.
а потом пользовательский материал склеится с дефолтным, или же будет использован только дефолтный, если пользовательский не задан.
Пиши параллельно документацию по системе шейдеров и материалов.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Переписал систему материалов, теперь все бленды и прочее под полным контролем. Сказал бы мне кто раньше, что можно кутришные шейдеры описать простой автозаменой, я бы удивился и неповерил.
Вот вам файлик, для примера, который это делает.
Вложение: q3shaders.zip (3.7 кб)
Этот файл был скачан 60 раз.
Дописал скрипты для кутришных шейдеров. звучит конечно забавно, скрипты для скриптов. Ну я там даже некоторые оптимизации замутил, например удаление лишних стадий. Теперь надо небо сделать модное, со сменой времени суток, ну и не только. Какая же игра без скайбокса.