newbspguy icon indicating copy to clipboard operation
newbspguy copied to clipboard

Transparency for solid entities

Open Qwertyus3D opened this issue 2 years ago • 65 comments

Небольшое улучшение в виде отдельной опции в разделе Render flags - для энтити со значением SOLID (rendermode 4) не отрисовывать синий фон-заливку, чтобы они выглядели так же, как в игре, с прозрачностью. Для лестниц, решёток, кустиков и т. д.

Qwertyus3D avatar Nov 22 '22 16:11 Qwertyus3D

В идеале бы, учитывать значение renderamt у энтить (0-255), если выбран любой режим rendermode, кроме Normal (0). Потому что во всех остальных режимах прозрачность учитывается. Единственная особенность для спрайтов, это что если выбран режим Color (1), то любое значение, кроме 0, просто делает энтить видимой, а 0 - невидимой. Но прозрачность должна касаться текстур, сам каркас энтити должен быть видим, конечно.

Qwertyus3D avatar Dec 18 '22 16:12 Qwertyus3D

@Qwertyus3D Ну... Мне пришлось узнать что такое шейдеры, и вроде как получается, думаю к вечеру сделаю обнову :)

UnrealKaraulov avatar Dec 19 '22 10:12 UnrealKaraulov

@Qwertyus3D сделал что-то, работать должно кое-как :)

Работает?

UnrealKaraulov avatar Dec 19 '22 11:12 UnrealKaraulov

Да, кое-как - работает. В том плане, что прозрачность подключилась, хотя она не 100%-ная (в случае, когда renderamt 0). Текстуры всё-же видно. Может, это даже неплохо. Стёкла прозрачные, уже хорошо. Главный вопрос, что транспарентные текстуры (типа тех, что с синим фоном) лишь немного прозрачны. Синий этот фон виден, как мелкая сетка, которая лишь немного прозрачная. А нужно бы, чтобы пиксели определённого цвета (последний цвет в текстуре, вроде) вообще были невидимы.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

@Qwertyus3D Opengl сглаживает текстуры, по этому по краям синий цвет не особо синий.

UnrealKaraulov avatar Dec 19 '22 12:12 UnrealKaraulov

И если renderamt 0 явно не указан в свойствах энтити, то программа считает, что энтить должна быть видима. Но это неверно, т. к. когда renderamt не задан явно, он по умолчанию равен 0. И для любого другого указанного режима, кроме Normal (0), такая энтить должна быть невидимой.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

@Qwertyus3D Но если полную прозрачность сделать, то объекты станут полностью прозрачными, и не видимыми в программе

Добавил 0 renderamt если не указан

UnrealKaraulov avatar Dec 19 '22 12:12 UnrealKaraulov

@Qwertyus3D Opengl сглаживает текстуры, по этому по краям синий цвет не особо синий.

У меня не с краями проблема, у меня весь синий фон плющит. В зависимости от угла зрения текстура может быть или вообще непрозрачной, или полосисто-прозрачной.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

Можно пример карты я посмотрю

UnrealKaraulov avatar Dec 19 '22 12:12 UnrealKaraulov

blue256 Это пример максимальной прозрачности, скажем так.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

На любой карте, где есть подобные текстуры.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

blue257 Прозрачность "плавает" при поворотах камеры от мелкой синей сетки до совсем непрозрачных участков.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

@Qwertyus3D ну это сглаживание, я убрал сглаживание, должно быть лучше, позже я сделаю что бы лучше работала прозрачность. (конвертировать текстуру в RGBA)

В последнем билде нормально отображается?

UnrealKaraulov avatar Dec 19 '22 12:12 UnrealKaraulov

Теперь просто нет сглаживания, но синяя сетка осталась.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

@Qwertyus3D У меня без сглаживания так: image Со сглаживанием: image

UnrealKaraulov avatar Dec 19 '22 12:12 UnrealKaraulov

Нет, у меня так же, как на скринах выше. А если объект выделен, то это сетка - чёрная. Только если до этого текстура сглаживалась, то сейчас она пикселизованная. black256

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

@Qwertyus3D я честно не знаю ни одной ХЛ карты, и где найти эти кусты) наугад потыкал не нашел таких ))) Можно конкретно название карты ?)

UnrealKaraulov avatar Dec 19 '22 12:12 UnrealKaraulov

Я так думаю, возможно, программа ещё бэкфейсы пытается отрисовывать. А движок игры рисует только переднюю текстуру. с2a5 карта.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

Карта роли не играет, я думаю. Видимо, шейдер опять привязан к видеокарте.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

Карта роли не играет, я думаю. Видимо, шейдер опять привязан к видеокарте.

ну как бы если я не увижу это место как я смогу исправить ошибку)

UnrealKaraulov avatar Dec 19 '22 12:12 UnrealKaraulov

Так у меня с любой транспарентной текстурой косяк одинаковый, неважно, трава это, забор, лестница или ограда.

Qwertyus3D avatar Dec 19 '22 12:12 Qwertyus3D

Ещё забавный факт, что стекло прозрачно, но точечные энтити сквозь него не видно, только браши.

Qwertyus3D avatar Dec 19 '22 13:12 Qwertyus3D

Это видно сквозь стекло: Glass1 А это - за ним: Glass2 Карта as_a1.

Qwertyus3D avatar Dec 19 '22 13:12 Qwertyus3D

Даже не все браши видно.

Qwertyus3D avatar Dec 19 '22 13:12 Qwertyus3D

Теперь работает. Но другие энтити сквозь эту прозрачность не видны, только геометрия с непрозрачными текстурами. rgba

Qwertyus3D avatar Dec 19 '22 14:12 Qwertyus3D

И напомню, что синий цвет - это наиболее используемый вариант. А так цвет фона может быть любым, т. к. прозрачный цвет задаётся в палитре текстуры. Надеюсь, это учитывается.

Qwertyus3D avatar Dec 19 '22 15:12 Qwertyus3D

И на всякий случай не помешает опция в настройках рендера, для включения-выключения рендермодов текстур.

Qwertyus3D avatar Dec 19 '22 15:12 Qwertyus3D

И напомню, что синий цвет - это наиболее используемый вариант. А так цвет фона может быть любым, т. к. прозрачный цвет задаётся в палитре текстуры. Надеюсь, это учитывается.

Цвет фона может быть в спрайтах другой, в wad ведь только синий?

UnrealKaraulov avatar Dec 19 '22 16:12 UnrealKaraulov

@Qwertyus3D Вроде бы в SPRITE берется первый цвет из палитры а в WAD только синий? Разве не так?

UnrealKaraulov avatar Dec 19 '22 16:12 UnrealKaraulov

@UnrealKaraulov В спрайтах не помню. как устроено (особенно со многокадровыми), там как-то в сам спрайт, видимо, пишется инфа о прозрачном цвете. Точно не первый. В текстурах (что вады, что модели) для транспарентности берётся последний цвет палитры. Он может быть любым. Синий используют для удобства, но на деле любой цвет в ячейке 255. Причём, там, по сути не важен даже цвет. В палитре могут быть повторения по цвету. Но прозрачными будут читаться те пикселы, которые проиндексированы на ячейку 255. Тот же синий цвет отдельных пикселов может быть непрозрачным, если эти пикселы нарисованы синим цветом из другой ячейки.

Qwertyus3D avatar Dec 19 '22 17:12 Qwertyus3D