newbspguy
newbspguy copied to clipboard
Transparency for solid entities
Небольшое улучшение в виде отдельной опции в разделе Render flags - для энтити со значением SOLID (rendermode 4) не отрисовывать синий фон-заливку, чтобы они выглядели так же, как в игре, с прозрачностью. Для лестниц, решёток, кустиков и т. д.
В идеале бы, учитывать значение renderamt у энтить (0-255), если выбран любой режим rendermode, кроме Normal (0). Потому что во всех остальных режимах прозрачность учитывается. Единственная особенность для спрайтов, это что если выбран режим Color (1), то любое значение, кроме 0, просто делает энтить видимой, а 0 - невидимой. Но прозрачность должна касаться текстур, сам каркас энтити должен быть видим, конечно.
@Qwertyus3D Ну... Мне пришлось узнать что такое шейдеры, и вроде как получается, думаю к вечеру сделаю обнову :)
@Qwertyus3D сделал что-то, работать должно кое-как :)
Работает?
Да, кое-как - работает. В том плане, что прозрачность подключилась, хотя она не 100%-ная (в случае, когда renderamt 0). Текстуры всё-же видно. Может, это даже неплохо. Стёкла прозрачные, уже хорошо. Главный вопрос, что транспарентные текстуры (типа тех, что с синим фоном) лишь немного прозрачны. Синий этот фон виден, как мелкая сетка, которая лишь немного прозрачная. А нужно бы, чтобы пиксели определённого цвета (последний цвет в текстуре, вроде) вообще были невидимы.
@Qwertyus3D Opengl сглаживает текстуры, по этому по краям синий цвет не особо синий.
И если renderamt 0 явно не указан в свойствах энтити, то программа считает, что энтить должна быть видима. Но это неверно, т. к. когда renderamt не задан явно, он по умолчанию равен 0. И для любого другого указанного режима, кроме Normal (0), такая энтить должна быть невидимой.
@Qwertyus3D Но если полную прозрачность сделать, то объекты станут полностью прозрачными, и не видимыми в программе
Добавил 0 renderamt если не указан
@Qwertyus3D Opengl сглаживает текстуры, по этому по краям синий цвет не особо синий.
У меня не с краями проблема, у меня весь синий фон плющит. В зависимости от угла зрения текстура может быть или вообще непрозрачной, или полосисто-прозрачной.
Можно пример карты я посмотрю
Это пример максимальной прозрачности, скажем так.
На любой карте, где есть подобные текстуры.
Прозрачность "плавает" при поворотах камеры от мелкой синей сетки до совсем непрозрачных участков.
@Qwertyus3D ну это сглаживание, я убрал сглаживание, должно быть лучше, позже я сделаю что бы лучше работала прозрачность. (конвертировать текстуру в RGBA)
В последнем билде нормально отображается?
Теперь просто нет сглаживания, но синяя сетка осталась.
@Qwertyus3D
У меня без сглаживания так:
Со сглаживанием:
Нет, у меня так же, как на скринах выше. А если объект выделен, то это сетка - чёрная. Только если до этого текстура сглаживалась, то сейчас она пикселизованная.
@Qwertyus3D я честно не знаю ни одной ХЛ карты, и где найти эти кусты) наугад потыкал не нашел таких ))) Можно конкретно название карты ?)
Я так думаю, возможно, программа ещё бэкфейсы пытается отрисовывать. А движок игры рисует только переднюю текстуру. с2a5 карта.
Карта роли не играет, я думаю. Видимо, шейдер опять привязан к видеокарте.
Карта роли не играет, я думаю. Видимо, шейдер опять привязан к видеокарте.
ну как бы если я не увижу это место как я смогу исправить ошибку)
Так у меня с любой транспарентной текстурой косяк одинаковый, неважно, трава это, забор, лестница или ограда.
Ещё забавный факт, что стекло прозрачно, но точечные энтити сквозь него не видно, только браши.
Это видно сквозь стекло:
А это - за ним:
Карта as_a1.
Даже не все браши видно.
Теперь работает. Но другие энтити сквозь эту прозрачность не видны, только геометрия с непрозрачными текстурами.
И напомню, что синий цвет - это наиболее используемый вариант. А так цвет фона может быть любым, т. к. прозрачный цвет задаётся в палитре текстуры. Надеюсь, это учитывается.
И на всякий случай не помешает опция в настройках рендера, для включения-выключения рендермодов текстур.
И напомню, что синий цвет - это наиболее используемый вариант. А так цвет фона может быть любым, т. к. прозрачный цвет задаётся в палитре текстуры. Надеюсь, это учитывается.
Цвет фона может быть в спрайтах другой, в wad ведь только синий?
@Qwertyus3D Вроде бы в SPRITE берется первый цвет из палитры а в WAD только синий? Разве не так?
@UnrealKaraulov В спрайтах не помню. как устроено (особенно со многокадровыми), там как-то в сам спрайт, видимо, пишется инфа о прозрачном цвете. Точно не первый. В текстурах (что вады, что модели) для транспарентности берётся последний цвет палитры. Он может быть любым. Синий используют для удобства, но на деле любой цвет в ячейке 255. Причём, там, по сути не важен даже цвет. В палитре могут быть повторения по цвету. Но прозрачными будут читаться те пикселы, которые проиндексированы на ячейку 255. Тот же синий цвет отдельных пикселов может быть непрозрачным, если эти пикселы нарисованы синим цветом из другой ячейки.