Войти
ПрограммированиеФорумГрафика

Помогите доработать шейдер Outlined/Silhouette

#0
11:16, 6 дек. 2018

Помогите, пожалуйста доработать шейдер Outlined/Silhouette Only.

Есть шейдер (взятый на wiki.unity3d.com/index.php/Silhouette-Outlined_Diffuse) отрисовывающий только контур объекта. Его код под спойлером.

+ Показать

Требуется, чтобы контур был виден за всеми объектами.


#1
15:05, 6 дек. 2018

deeffoora
После рендеринга всех объектов тебе надо взять и нарисовать твой объект еще раз, только его контур, с отключенным ZEnable, тогда другие объекты не будут его затирать.

#2
15:24, 6 дек. 2018

Этим шейдером нельзя нарисовать "только контур" , он рисует сначала выдавленную версию, а потом поверх нее сам обьект. Там надо как то стенсилами вырезать дырку

#3
9:01, 7 дек. 2018

Polyflow3d
> сначала выдавленную версию, а потом поверх нее сам обьект

Пытаюсь разобраться. В коде вроде как первый проход отрисовывает сам объект, а второй выдавленный. По идее наоборот должно быть, как вы сказали, или я что-то не понимаю?

#4
10:10, 7 дек. 2018

deeffoora
не знаю на счет последовательности, но то что аутлайн рисуется выдавливанием геометрии  - это во всех шейдерах что я видел, по этому чтобы рисовать контур поверх всего нужно прорезать дырку.
Я использую у себя подобный шейдер, и хочу тоже возможности рисовать поверх всего, но пока не знаю как это сделать.
https://polyflow.studio/Ep11PieChartDemo/

#5
10:42, 7 дек. 2018

Делаешь ZWrite, потом рисуешь обводку как обычно. См: https://docs.unity3d.com/Manual/SL-CullAndDepth.html

#6
13:24, 7 дек. 2018

если честно, обводку для всей сцены а-ля borderlands гораздо проще сделать через sobel filter.

#7
18:53, 7 дек. 2018

Suslik
и не надо всю геометрию 2 раза рисовать.

#8
18:08, 8 дек. 2018

Battle Angel Alita
и обводка получется не обводкой а выдавленным силуэтом поверх всего

#9
20:37, 12 дек. 2018

Polyflow3d
> и обводка получется не обводкой а выдавленным силуэтом поверх всего

Это проверял, так и есть. А вот как потом вырезать нормальную модель из выдавленной, не затрагивая объектов которые находятся ближе к камере, не знаю.

#10
13:19, 13 дек. 2018

копай стенсилы, расскапаешь - покажи

Прошло более 1 года
#11
22:58, 30 июня 2020

Polyflow3d
> копай стенсилы, расскапаешь - покажи
Да, с удовольствием. Я поставил на заметку.

#12
12:39, 1 июля 2020

deeffoora
Я так понял, тема ещё актуальна?
Если так, то хочу заметить, что для такого эффекта ещё можно использовать постпроцессинг. Это хуже по производительности, но куда лучше по качеству (нет разрывов вокруг резких рёбер, можно регулировать степень размытия контура).
Вот неплохая статья с реализацией:
https://willweissman.wordpress.com/tutorials/shaders/unity-shader… ect-outlines/
Сам реализовал по такому же принципу в своих проектах, работает замечательно.

ПрограммированиеФорумГрафика