Open Qwertyus3D opened 1 year ago
В идеале бы, учитывать значение 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. Тот же синий цвет отдельных пикселов может быть непрозрачным, если эти пикселы нарисованы синим цветом из другой ячейки.
@Qwertyus3D так на счет объектов за прозрачными текстурами, кажется пофиксил, не уверен но вроде бы лучше стало
Вообще никакой разницы. :D
Тут нужна сортировка по прозрачности. Наверное, можно даже в исходниках Ксаша подсмотреть, но не уверен, что прямо оттуда утянуть выйдет.
А, ой. Есть разница. Для стёкол! Я не нашёл сразу. Теперь то же самое нужно не для полупрозрачности, а для транспарентности сделать.
@UnrealKaraulov Со стёклами работает 👍 Теперь решётки/лесенки.
@Qwertyus3D добавил в этот список все что с текстурами '{'
В общем там как-то все сложно, в 2 этапа рисуется карта, сначала прозрачные потом непрозрачные объекты, добавил в прозрачные те которые идут с текстурой '{'
Должно теперь нормально работать.
Краш
Уже завтра вечером тогда исправлю,после работы.
Я на нескольких картах проверял вроде как не крашилось.
Странная симптоматика, но дебаг-компил просто закрывается после запуска. Краша как бы и нет.
Поток 0x63ac завершился с кодом 0 (0x0).
"bspguy.exe" (Win32). Загружено "C:\Windows\System32\SHCore.dll".
"bspguy.exe" (Win32). Загружено "C:\Windows\System32\kernel.appcore.dll".
Поток 0x4e20 завершился с кодом 0 (0x0).
Поток 0x16c8 завершился с кодом 0 (0x0).
Программа "[4724] bspguy.exe" завершилась с кодом 0 (0x0).
И как бы без карты оно запускается. Но при попытке открыть карту вылетает.
Упс, крашит именно на той карте, as_a1.
Start bspguy editor with map: D:\Games\Xash3D\Ashfield\maps\as_a1.bsp
Load settings from : D:\Games\Xash3D\_Tools_\BSPGuy/bspguy.cfg
Parsing D:\Games\Xash3D\_Tools_\BSPGuy//_Res_/fgd/halflife_2022_op4.fgd
Bsp version: 30
Read lump id: 0. Len: 105152. Offset 124.
Read lump id: 1. Len: 144120. Offset 105276.
Read lump id: 2. Len: 6344. Offset 249396.
Read lump id: 3. Len: 242784. Offset 255740.
Read lump id: 4. Len: 227142. Offset 498524.
Read lump id: 5. Len: 210024. Offset 725666.
Read lump id: 6. Len: 229160. Offset 935690.
Read lump id: 7. Len: 283300. Offset 1164850.
Read lump id: 8. Len: 2319261. Offset 1448150.
Read lump id: 9. Len: 129840. Offset 3767411.
Read lump id: 10. Len: 167020. Offset 3897251.
Read lump id: 11. Len: 39674. Offset 4064271.
Read lump id: 12. Len: 141396. Offset 4103945.
Read lump id: 13. Len: 264716. Offset 4245341.
Read lump id: 14. Len: 20032. Offset 4510057.
WARNING: Unrecognized type body (line 3317) in FGD halflife_2022_op4
Generated 159 point entities cubes
(CRC "1578850597")
Warning: in map as_a1 found unused model: 191.
Crash
WINAPI_LASTERROR:B7.
Exception code: C0000005.
Exception address: 00000000104CB885.
Main module address: 0000000010000000
Generating minidump at path D:\Games\Xash3D\_Tools_\BSPGuy\bspguy_20221219_193436(2).dmp
Crash
WINAPI_LASTERROR:0.
Exception code: C0000005.
Exception address: 00000000104CB885.
Main module address: 0000000010000000
Generating minidump at path D:\Games\Xash3D\_Tools_\BSPGuy\bspguy_20221219_193436(1).dmp
Start bspguy editor with map: D:\Games\Steam\steamapps\common\Half-Life\valve\maps\c2a3e.bsp
Load settings from : D:\Games\Xash3D\_Tools_\BSPGuy/bspguy.cfg
Parsing D:\Games\Xash3D\_Tools_\BSPGuy//_Res_/fgd/halflife_2022_op4.fgd
Bsp version: 30
Read lump id: 0. Len: 15317. Offset 873940.
Read lump id: 1. Len: 97720. Offset 124.
Read lump id: 2. Len: 2600. Offset 889260.
Read lump id: 3. Len: 44508. Offset 122204.
Read lump id: 4. Len: 2782. Offset 871156.
Read lump id: 5. Len: 29784. Offset 166712.
Read lump id: 6. Len: 10640. Offset 196496.
Read lump id: 7. Len: 55840. Offset 207136.
Read lump id: 8. Len: 486033. Offset 385120.
Read lump id: 9. Len: 34496. Offset 262976.
Read lump id: 10. Len: 24360. Offset 97844.
Read lump id: 11. Len: 7468. Offset 297472.
Read lump id: 12. Len: 27180. Offset 355316.
Read lump id: 13. Len: 50376. Offset 304940.
Read lump id: 14. Len: 2624. Offset 382496.
WARNING: Unrecognized type body (line 3317) in FGD halflife_2022_op4
(CRC "3581799585")
Saving CRC key to Worldspawn
Calculating lightmaps
Loading WAD D:/Games/FWGS/valve/decals.wad
Loading WAD D:/Games/FWGS/valve/halflife.wad
Loading WAD D:/Games/FWGS/valve/liquids.wad
Loading WAD D:/Games/FWGS/valve/xeno.wad
Loaded 59 wad textures
Fit 2618 lightmaps into 1 atlases
Generated 159 point entities cubes
Loading WAD D:/Games/FWGS/valve/decals.wad
Loading WAD D:/Games/FWGS/valve/halflife.wad
Loading WAD D:/Games/FWGS/valve/liquids.wad
Loading WAD D:/Games/FWGS/valve/xeno.wad
Loaded 59 wad textures
Debug: Used 2 wad files(include map file)
Loaded 2440 clipnode leaves
adios
Там, где не крашит, энтити стали видны сквозь решётки.
И почему-то de_dust2 не открывает дебажный компил, как обычно (имею в виду, тот компил, который Студия создаёт).
понял, я там мелкую ошибку допустил и если на карте есть неиспользуемая модель то крашит ее
@Qwertyus3D а через студию не получается запустить отладку? Там по идее должно написать строку кода где ошибка
@UnrealKaraulov
дебаг-компил просто закрывается после запуска
Нет ошибки, только консольное сообщение о том, что программа закрылась.
@Qwertyus3D исправил краш
@UnrealKaraulov Теперь работает, но в отдельных случаях остался эффект. что энтить с прозрачностью не видна сквозь перекрывающую её прозрачную текстуру.
И остался вопрос https://github.com/UnrealKaraulov/newbspguy/issues/54
Небольшое улучшение в виде отдельной опции в разделе Render flags - для энтити со значением SOLID (rendermode 4) не отрисовывать синий фон-заливку, чтобы они выглядели так же, как в игре, с прозрачностью. Для лестниц, решёток, кустиков и т. д.