Проваливание текстуры под другую
Вложений: 1
Столкнулся с болезнью. При определённом угле поворота камеры,
и на определённой удалённости (оба условия важны) текстура объекта находящегося к камере ближе, чем объект находящийся позади, проваливается под его текстуру. Как задать порядок отрисовки текстуры, чтобы её не перекрывали текстуры находящиеся за ней? Проблема со всеми стандартными шейдерами текстур, которые применяются для текстур с пустыми областями (PNG формат), и которые сглаживают края зарисованной части текстуры граничащие с пустыми (полностью прозрачными областями). На скрине ниже например зелёное поле это (Mobile/Particles/AlphaBlended), а на хелсбаре (UI.Unlit.Detail). Пробовал и другие подобные шейдеры, эффект одинаковый. Исключение, это при выбранном параметре шейдеров "Cutout", тогда текстура не перекрывается той текстурой, что позади, однако такая настройка мне не подходит, так-как текстура не сглаживается, идёт лесенкой. В общем, что за болезнь, и как её лечить? Кто сталкивался? |
Ответ: Проваливание текстуры под другую
Это в целом не болезнь, а фича. Все что рисуется в качестве прозрачности сортируется по центру объекта и рисуется от дальнего к ближнему. В твоем случае скорее всего проблема в том, что твоя зеленая сетка это единый объект, у которого центр ближе к камере, чем хэлсбар.
Как простое решение - выстави материалу сетки очередь равную 3000-1 (Transparent-1). PHP код:
|
Ответ: Проваливание текстуры под другую
Цитата:
Есил у материалов одинаковое Queue, то поверх должен отрисовываться ближний к камере участок текстуры, в нормальных движках имхо, без учёта, где чей центр. Спасибо. Через интерфейс задал 3001 хелсбаровым текстурам. Я играл с этим параметром на сетке, и не догадался, что нужно на хелсбаре. 3000 тут минимальное, 2999 уже прозрачность всей текстуры. |
Ответ: Проваливание текстуры под другую
Если бы твоя сетка строилась бы отдельными квадами, у которых центр был бы в центре ячеек сетки, то все отрисовалось бы хорошо. Отрисовка прозрачной геометрии всегда большая проблема. И это фича не только юнити. Сортировка полигонов Меша по расстоянию до камеры - это ресурсоемкая задача и не надо ждать от движков чудес, что они такое делают по умолчанию.
|
Ответ: Проваливание текстуры под другую
Цитата:
Например я уровень загружу монолитный одним мешем, и он тогда вылезет поверх объектов расположенных над ним, на которые натянуты текстуры с прозрачностью. Больше всего раздражает в этой ситуации то, что мне теперь всем объектом с прозрачностью нужно повышать приоритет отрисовки, вместо того, чтобы разово понизить сетке. |
Ответ: Проваливание текстуры под другую
Я не очень понимаю почему у тебя не получилось сетке назначить 2999, почему 3000 минимальное?
|
Ответ: Проваливание текстуры под другую
Цитата:
при 3000 (по умолчанию) прозрачны только не закрашенные места на текстуре. |
Ответ: Проваливание текстуры под другую
Цитата:
|
Ответ: Проваливание текстуры под другую
Вложений: 1
Цитата:
Если я ставлю сетке 3000 а хелсбару 3001 то всё отрисовывается верно. Если я поставлю сетке 2999 а хелсбару 3000 то хелсбар тоже не нырнёт под сетку, но вот сетка станет прозрачной. |
Ответ: Проваливание текстуры под другую
Цитата:
|
Ответ: Проваливание текстуры под другую
Вложений: 1
Цитата:
|
Ответ: Проваливание текстуры под другую
Вложений: 1
Но позже я вкурил, что у меня ниже ещё три плейна с прозрачным шейдером,
я отключил их отрисовку, и синяя сетка нормализовалась. В общем нужно заменить шейдеры на космосе, и тоже понизить им очерёдность отрисовки. Спасибо. |
Ответ: Проваливание текстуры под другую
Цитата:
|
Ответ: Проваливание текстуры под другую
Вложений: 1
Цитата:
Канвас разве что ещё висит, но он тут не при чём. Заменил космосу шейдеры на те, в которых есть транспарент с возможностью изменения приоритета отрисовки, понизил ниже сеток. Баг вылечен. |
Ответ: Проваливание текстуры под другую
Цитата:
Всегда так делаю. Это есть в любых движках. |
Часовой пояс GMT +4, время: 01:34. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot