Я тут рендер переписываю и попутный выбросил из ксаша кутришные шойдеры. Встал вопрос: кто будет вести КВН как лучше оформить новые плюшки рендера. Ну то есть, там если надо зеркало - ставим текстуру mirror, это понятно, если бамп - то текстуру с постфиксом _norm или _nm, если карта блеска, то текстуру _gloss, возиться и.т.д.
Но может у товарищей есть какие-то свои соображения на этот щот?
думайте сейчас, через неделю-другую уже поздно будет.
Дядя Миша
А что если делать такое по вадам? Допустим mymap.wad mymad_normals.wad mymap_gloss.wad mymap_specular.wad и т.д.
Для зеркал и прочих неглобальных плюшек можно просто юзать префикс типа:
?mymirror, #myportal и т.п. Но вообще хочется свой формат .
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
thambs
А мне удобно писать процедурный код без комментариев и называть переменные i, j, k, l. Только вот ошибка, обнаруженная через месяц, превращает отладку в ад. Так же и с префиксами этими.
Дядя Миша я за шейдеры. Чтобы можно было, допустим, одну и ту же нормалмапу юзать для различных текстур. Когда перенёс рендер Паранойи на Спирит, столкнулся с неприятностью: есть 4 текстуры пожарной двери (те самые двери, что на картах c1a3x). Так вот: рисунок на них одинаковый, только цвета разные (одна зелёная, другая фиолетовая, третья синяя, и оригинальная красная), и для каждой из 4х текстур надо свою нормалмапу (firedoor01_norm, firedoor02_norm и т.п.) При том, что все нормалмапы одинаковые. Получается нерациональное использование ресурсов. Так же было и с глоссмапами.
Предложение по поводу технологии детальных текстур: в тексте шойдера (для какой-либо карты, например) пишем не все подряд текстуры типа
C++ Source Code:
c0a0_wl
c0a0_wla
c0a0_wlb
c0a0_wlc
а только c0a0_wl* и рендер применяет детальную текстуру по частичному совпадению имени, как в хлфх 0.5 сделано. Если же имя текстуры указано без звёздочки, то дет. текстура применяется по точному совпадению, как сделано в хл или Паранойе.
>>прописывая для каждой текстуры шадер
Почему же для каждой текстуры? Предлагаю такой вариант: в папке shaders лежит файлик global_01.shader, в нём параметры для всех основных текстур. После него двиг считывает информацию из файла global_02.shader, затем global_03.shader и так далее. Так же и с мапами: сначала имякарты_01.shader, потом имякарты_02.shader и т.д. Если на нескольких картах юзаются одинаковые текстуры, пользуемся звёздочкой в имени шейдера: c0a0*01_.shader, после шейдера со звёздочкой грузятся c0a0a_01.shader, c0a0a_02.shader, c0a0b_01.shader и т.д. Эта же система с моделями и проч. То есть двиг грузит общий шейдер и его новые версии с большим порядковым номером, затем глобальные шейдеры мап и студиомоделей и последующие версии оных, затем для каждой мапы/модели в отдельности по такой же схеме, затем то же самое для спрайтов и т.д. и т.п.
Структуру шейдеров можно построить так:
C++ Source Code:
1
имя_текстуры
2
{
3
имя_подтекстуры // глосс, бамп, дитейл
4
{
5
// здесь строка с путём до подтекстуры
6
// далее строки с её параметрами: прозрачность, rgba прозрачного цвета, сглаживание, яркость и проч.
7
}
8
}
Можно добавить в шейдер строку $include "имядругогошейдера.shader" чтобы тот другой шейдер подгружался раньше текущего.
На мой взгляд это самый рациональный вариант, т.к. всё наглядно и не запутаешься.
имхо лучше постфиксы. не стоит забывать, что таких текстур, которые будут иметь одинаковые нормалку не так много, так что игра не стоит свеч.
Добавлено 28-11-2010 в 23:02:
вообще, с точки удобства и вида есть свои плюсы и минусы. вообще, по хорошему, я (да имхо и многие) были бы рады такой плюшке- в папке мода папка "textures", внутри подпапка "diffuse", там подпапки "halflife","xeno","decals", в которых текстуры, заменяющие текстуры из соответствующих вадников. паралельно в папке "textures" существуют подпапки "gloss", "bump", "normal", в которых текстуры с соответствующими именами, только являющимися нормалками. если руки дойдут, то и папочку там же для скриптоманов "textures/scripts", в которой файлики "имятекстуры.txt". такое с точки зрения эстетики и удобства будет на много лучше киселей в вадниках и папках.
__________________
Владелец восьмиструнного монстра Schecter Omen-8 Vintage White (VWHT)
Бывал на концертах этих групп: Rashamba, 7000$, Louna, Molecul, Project Revolution, Headsource, Digimortal и многих других. Куча автографов.
Я член возлагаю на сраный геймдев.
Шойдеры нельзя - поранои-хлфхы работать не будут, потому-што.
К тому жы вы всё равно их писать не умеете. В ксаше эти шойдеры уже больше года, хоть кто-то из вас мне хоть один вопрос по ним задал?
Вот то-то и оно.
Тут нада всё продумать. Мб создавать для каждого вада шейдер? Типа halflife.shd ну и в нём уже сами шойдеры.
Типа:
-wall
{
$Diffuse "wall"
$Normal "wall_n"
$LightingType "Lightmap"
$AnimationType "-"
$Sound "Concrete"
}
Такие шойдеры с хлфксами конфликтовать думаю не должны.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
thambs писал: шойдеры редко когда могут понадобиться, разьве что для монитров с хитрой анимацией.
Карты ку3 ими изобилуют.
Тут скорее проблема в отсутствии фантазии у левел-дизайнеров, воспитанных на голдсорсе. Они лучше сделают три функ_конвеера с разными рендермодами, чем шойдер напишут