Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 10.02.2017, 16:19   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Фейдинг сложного объекта

По ТЗ нужно что бы куски высокополигонального здания исчезали плавно.

У частей здания по 10 материалов (ну такое дали), а суммарно оно имеет 400к треугольников.

Сделать на всех материалах Fade = неправильная сортировка.
Нажмите на изображение для увеличения
Название: Screenshot_16.png
Просмотров: 1345
Размер:	172.6 Кб
ID:	22648

Сделал 3мя камерами:
1 - рендер всего,
2 - рендер того, что нужно, что бы исчезло.
3 - рендер композиции (tex1*(1-Blend*tex2.a) + Blend*tex2) через квад.

Но RenderTexture не работает на ES2 и производительность довольно низкая.

Как зарешать?

Я не знаю как к этому еще AR прикрутить, и так производительность никакая.
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 12.02.2017 в 09:39.
(Offline)
 
Ответить с цитированием
Старый 11.02.2017, 02:05   #2
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Фейдинг сложного объекта

4 - сообщить что моделька говно и нечего не выйдет.
(Offline)
 
Ответить с цитированием
Старый 11.02.2017, 09:33   #3
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Фейдинг сложного объекта

Сообщение от Nex Посмотреть сообщение
4 - сообщить что моделька говно и нечего не выйдет.
Так и сказал.
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 13.02.2017 в 23:11.
(Offline)
 
Ответить с цитированием
Старый 11.02.2017, 16:20   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Фейдинг сложного объекта

Сделать на всех материалах Fade = неправильная сортировка.
возможно покатит такой вариант:
- рисуешь всё непрозрачное
- рисуешь всё исчезающее, но только в Z (в цвет ничего)
- рисуешь всё исчезающее с z-тестом и альфой
в юнити это всё решается через queue
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
RegIon (11.02.2017)
Старый 11.02.2017, 16:30   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Фейдинг сложного объекта

- рисуешь всё исчезающее, но только в Z (в цвет ничего)
Как это сделать?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 11.02.2017, 16:34   #6
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Фейдинг сложного объекта

Видимо придётся сделать копию исчезающих объектов, и на них шейдер отдельный, у которого будут прописаны свойства (некоторые может быть необяз, но чтоб наверняка):
ColorMask 0
ZWrite On
ZTest Lequal
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
RegIon (11.02.2017)
Старый 11.02.2017, 20:38   #7
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Ответ: Фейдинг сложного объекта

Может Dissolve Shader подойдет для этой задачи?
(Offline)
 
Ответить с цитированием
Старый 11.02.2017, 22:45   #8
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Фейдинг сложного объекта

Сообщение от Evgen Посмотреть сообщение
Может Dissolve Shader подойдет для этой задачи?
нет. Не пойдет.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 11.02.2017, 23:32   #9
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Фейдинг сложного объекта

Ещё немного подробностей добавлю. В юнити в шейдере можно в пассе писать:
Tags { "Queue"="тут значение" }
Это порядок рендера объектов.
про значения написано тут: https://docs.unity3d.com/462/Documen...haderTags.html
То же самое можно менять в C# через material.renderQueue: https://docs.unity3d.com/ScriptRefer...nderQueue.html
это свойство по идее оверрайдит то, что в шейдере.

План такой - фейдящиеся объекты временно копируешь. На копию вешаешь Z-only шейдер (с параметрами, которые я описывал выше), при этом ставишь этому шейдеру "Queue" = "Transparent-1" например. Оригиналу материалы не меняешь, но ставишь скриптом renderQueue = 3000. Когда фейд закончился, убираешь копию, а renderQueue возвращаешь на дефолт (-1).
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
RegIon (12.02.2017)
Старый 12.02.2017, 04:00   #10
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Фейдинг сложного объекта

В 5.5 очереди можно выставлять прям в инспекторе.
Это я и сам понял, иначе бы спросил,но спасибо.
Вместо последнего проще менять объект на такой же, с непрозрачный материалом, так как требуется сделать стопку, где объекты выше (а уровня 4,) определенного уровня исчезают или появляются.

И судя по методу будет так:
1. Выключаем непрозрачный оригинал.
2. Включаем z-only
3. Включаем Transparent - объект
4. Фейдим

Результат:



От чего такие артефакты.?
Нужно запретить писать в Z шейдеру с прозрачность, да? - Не помогло. Скачал стандартный дифузз и поставил ZWrite Off - толку 0

Артефакты только в Game-mode и на Устройстве, при этом в редакторе их нет. Это 16 битный Z-Buffer нам пакость сделал? Кажется что очереди не работают и Z-объект на ES2 рисуется в 3000. Видно что полигоны накладываются.

Если бы не артефакты, то работает нормально.
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 12.02.2017 в 09:41.
(Offline)
 
Ответить с цитированием
Старый 12.02.2017, 11:05   #11
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Фейдинг сложного объекта

Все. Решил.

Кому так приспичит, то делйте как Mr_F_ говорит, но с несколькими правками:
  • У шейдера, который должен быть прозрачным нужно ZWrite Off
  • Render Queue у Z-шейдера и Прозрачности = 3000.
Если not 1, то частично сортировка будет неправильной и видны будут некоторые грани.
Если not 2, то будет артефакты на мобилах.
Если не делать финт с Z-буффером, то будет полностью неправильная сортировка.
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 12.02.2017 в 12:57.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (12.02.2017)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:48.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com