-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Transparency for solid entities #35
Comments
В идеале бы, учитывать значение 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 ну это сглаживание, я убрал сглаживание, должно быть лучше, позже я сделаю что бы лучше работала прозрачность. (конвертировать текстуру в RGBA) В последнем билде нормально отображается? |
Теперь просто нет сглаживания, но синяя сетка осталась. |
@Qwertyus3D |
@Qwertyus3D я честно не знаю ни одной ХЛ карты, и где найти эти кусты) наугад потыкал не нашел таких ))) Можно конкретно название карты ?) |
Я так думаю, возможно, программа ещё бэкфейсы пытается отрисовывать. А движок игры рисует только переднюю текстуру. с2a5 карта. |
Карта роли не играет, я думаю. Видимо, шейдер опять привязан к видеокарте. |
ну как бы если я не увижу это место как я смогу исправить ошибку) |
Так у меня с любой транспарентной текстурой косяк одинаковый, неважно, трава это, забор, лестница или ограда. |
Ещё забавный факт, что стекло прозрачно, но точечные энтити сквозь него не видно, только браши. |
Даже не все браши видно. |
И напомню, что синий цвет - это наиболее используемый вариант. А так цвет фона может быть любым, т. к. прозрачный цвет задаётся в палитре текстуры. Надеюсь, это учитывается. |
И на всякий случай не помешает опция в настройках рендера, для включения-выключения рендермодов текстур. |
Цвет фона может быть в спрайтах другой, в wad ведь только синий? |
@Qwertyus3D Вроде бы в SPRITE берется первый цвет из палитры а в WAD только синий? Разве не так? |
@Qwertyus3D добавил в этот список все что с текстурами '{' В общем там как-то все сложно, в 2 этапа рисуется карта, сначала прозрачные потом непрозрачные объекты, добавил в прозрачные те которые идут с текстурой '{' Должно теперь нормально работать. |
Краш |
Уже завтра вечером тогда исправлю,после работы. Я на нескольких картах проверял вроде как не крашилось. |
Странная симптоматика, но дебаг-компил просто закрывается после запуска. Краша как бы и нет.
|
И как бы без карты оно запускается. Но при попытке открыть карту вылетает. |
Упс, крашит именно на той карте, as_a1. |
|
Там, где не крашит, энтити стали видны сквозь решётки. |
И почему-то de_dust2 не открывает дебажный компил, как обычно (имею в виду, тот компил, который Студия создаёт). |
понял, я там мелкую ошибку допустил и если на карте есть неиспользуемая модель то крашит ее |
@Qwertyus3D а через студию не получается запустить отладку? Там по идее должно написать строку кода где ошибка |
Нет ошибки, только консольное сообщение о том, что программа закрылась. |
@Qwertyus3D исправил краш |
@UnrealKaraulov Теперь работает, но в отдельных случаях остался эффект. что энтить с прозрачностью не видна сквозь перекрывающую её прозрачную текстуру. |
И остался вопрос #54 |
@Qwertyus3D еще есть эта проблема? Если да то на какой карте, я посмотрю. |
@Qwertyus3D спасибо за примеры, посмотрю почему так. |
Можно ли добавить опцию, делающую "кубики" точечных энтить полупрозрачными? Список прозрачных энтить на них не влияет, они всё равно непрозрачные. Да и в целом было бы удобно иметь возможность регулировать их отрисовку по одной галочке. Т. к. точечные энтити, если это не модели или спрайты, то в игре вообще невидимые. А в редакторе будет удобно рисовать их полупрозрачными для манипуляций с соседними энтитями. И ещё можно было бы для списка полупрозрачных брашевых энтить сделать поддержку маски названия. типа trigger_, чтоб сразу все триггеры делать полупрозрачными, а не раздувать список. |
@Qwertyus3D нужно как-то менять видно функцию рендера, в opengl нужно сначала рисовать непрозрачные, затем прозрачные в порядке удаления от камеры
|
Печально. А как насчёт поддержки рендера спрайтов, хотя бы с прозрачным фоном? Или текстур с прозрачным фоном на моделях? На брашевых энтитях прозрачный фон ведь поддерживается уже. |
В исходниках Ксаш-движка можно смотреть, как всё настроено. А в Ксашмоде рендер ещё более продвинутый. |
@Qwertyus3D я в рендере не разобрался, но вроде как с альфатестом стало намного лучше, хотя бы часть прозрачных объектов не перекрывает другие. (ну там к примеру деревья на cs_estate теперь не перекрывают друг друга и полупрозрачные объекты, т.к там 100% прозрачность) щас еще проверю и загружу обнову |
Да, вижу, что сортировка улучшилась. |
Если заменить стандартные текстуры (SKY,TRIGGER и т.п) более прозрачными вариантами, то через alphatest через них тоже будет нормально видно, подумаю над этим. Не получается сделать сортировку объектов для рендера потому что они привязаны к ID сущностей, типа renderEnt[id] = ents[id] Можно будет потом поковырять, в принципе возможно добавить сортировку но надо будет часть кода переписывать, а это мне пока лень))) |
@Qwertyus3D убрал гору ненужного кода связанного с шейдерами, обновил шейдеры для моделей, и добавил поддержку прозрачных текстур в .MDL, теперь модели с прозрачностью тоже должны отображаться нормально. |
Вообще, под прозрачными текстурами следует скорее понимать аддитивные текстуры, а текстуры с прозрачным фоном скорее лучше называть транспарентными. Транспарентные текстуры вижу, что заработали, спасибо, полезная обнова (думал намутить с её помощью комплект служебных моделек под отображение разных энтить). Хром и аддитив пока нет. |
В последнем билде фпс должен стать намного больше. Случайно нашел места в коде которые вызывали сильную нагрузку на процессор. |
Ну, это, если аддитив и хром (кстати, на брашах тоже может быть хром, но точно не знаю, как это работает) не планируются, то можно было бы закрыть, наверное. По поводу производительности сложно сказать, что изменилось (иногда при быстром движении через карту небольшие лаги мелькают), но транспарентность вроде как реализована. Разве что декали и спрайты ещё остаются... |
Reading through a google translation of this thread, I didn't see this mentioned, so I thought I'd clarify: Index # 255 (the last color in the palette) is always converted to black by the engine for textures with the (I tried to word the above in a way that Google Translate shouldn't mangle it; I don't speak Cyrillic, so I'm sorry for being that annoying American that speaks English in a foreign land 😅.) |
Небольшое улучшение в виде отдельной опции в разделе Render flags - для энтити со значением SOLID (rendermode 4) не отрисовывать синий фон-заливку, чтобы они выглядели так же, как в игре, с прозрачностью. Для лестниц, решёток, кустиков и т. д.
The text was updated successfully, but these errors were encountered: