Решил я короче опробовать шейдер, который появился ещё в 2013-м Трейн-симуляторе. Единственный, позволяющий задавать блеск (Specular) и отражение (Env) для материала ОТДЕЛЬНО, не как TrainBumpSpecEnvMask.fx, где для Spec и Env используется общая ч/б карта (8-бит).
У материала три слота, три текстуры соответственно:
1 — диффуз без альфа-канала (24-бит).
2 — карта нормалей без альфа-канала (24-бит).
3 — 32-битная дополнительная текстура, в каналах которой хранится следующее:
красный — мягкие тени, т.е. Ambient Occlusion
зелёный — эффект подобный тому, что даёт шейдер TrainEmissiveGlow.fx
синий — карта псевдоотражения Env (не путать с картой собственно отражения, которую движок использует свою встроенную)
альфа-канал — карта блеска (спекуляра)
Зачем мне это было нужно?
Дело в том, что я хочу, чтобы голубая область кузова ДР1А КТ немного отражала окружение, при этом практически не отдавая блеск, а серая часть (выкрашенная в серый «металлик» на самом деле) сильно блестела на солнце. Т.е. чтобы взаимодействие с источниками света у вагона было максимально близкО к реальности. Карта нормалей при этом позволит задать неровности металла кузова и выпуклости типа гофр.
Но вот что у меня вышло:
http://fotki.yandex.ru/users/sciffyan/view/775503/
http://fotki.yandex.ru/users/sciffyan/view/775485/
Единственный параметр, который я изменил для обоих материалов, крыши/дверей и кузова, это степень блеска Specular Power. Выставил максимальное значение 1,0. Остальное оставил нетронутым. Вот как выглядят настройки материалов крыши (+ дверей) и кузова:
Оба материала входят в общий мультиматериал, состоящий из 6 материалов.
1 — декали (надписи на кузове) — TrainDecals.fx — пашет безупречно, это видно на скрине.
2 — крыша дополнительная — TrainUberShader.fx — проблема №1
3 — кузов — TrainUberShader.fx — проблема №2
4 — текстура деталей моторного вагона — TrainBasicObjectDiffuse.fx — нет проблем
5 — торцы — TrainBasicObjectDiffuse.fx — никаких проблем
6 — тележка ТВЗ — TrainBasicObjectDiffuse.fx — проблемы отсутствуют
При этом должен отметить, что я многократно всё перепроверял и в третьей текстуре обоих материалов я ничего не пропустил/не перепутал. В канал красного бросил карту теней на белом фоне (для крыши, для кузова карту оставил белой, т.к. тени ещё не запекал). Канал зелёного оставил чёрным, т.к. не хочу чтобы что-либо на кузове светилось эффектом EmissiveGlow. В канал синего закинул сфотошопленную карту отражения (его интенсивности), где яркие области соответствуют сильному отражению, тёмные — слабому (но для крыши сделал лишь мазок кистью в области дверей, т.к. пока на стадии экспериментов с картами, и они ведутся над кузовом, а не над крышей). В альфа-канал забросил карту спекуляра, где также светлые области соответствуют сильному блеску, а тёмные слабому (в случае крыши только для дверей, всё остальное чёрное, без блеска).
Что делать? Как избавиться от этих глюков?? Бывает-то наоборот, светится кузов, а крыша просто ярко освещена солнцем (что не мудрено, учитывая установки в сценарии).
Сообщение закреплено модератором