[請益] Surface Shader Transparency

作者: planetoid (阿沒)   2017-10-09 05:00:29
大家好
最近在嘗試寫custom surface shader
目前透過surf內的o.Alpha可以調整透明度
這樣會讓整個一起material一起變透明
但我希望能讓個別的vertex有自己的透明度
奇怪的是在vert裡面(appdata_full)可以動態調整顏色
但是卻調整不了透明度
請問大家有可能做到這種效果嗎?
(unity 內建的Legacy Shader/Transparent/Diffuse
就可以利用改變material的color來動態調整透明度)
作者: Ninja5566 (苦味)   2017-10-09 05:38:00
你vertex如果有送vertex color進去應該是沒問題吧
作者: cjcat2266 (CJ Cat)   2017-10-09 07:02:00
記得要寫alpha blending的blend mode
作者: Ninja5566 (苦味)   2017-10-09 10:38:00
試著surface shader 輸出顏色改成alpha值, 看是不是你想要的
作者: planetoid (阿沒)   2017-10-09 14:31:00
我改變appdata_full的color rgb有作用 但第四個channel卻沒有 不知道是不是少設定了什麼blend mode是Blend SrcAlpha OneMinusSrcAlpha
作者: cjcat2266 (CJ Cat)   2017-10-09 15:37:00
有沒有 "Queue" = "Transparent" ?
作者: planetoid (阿沒)   2017-10-09 15:44:00
有耶"Queue"="Transparent""RenderType"="Transparent"
作者: cjcat2266 (CJ Cat)   2017-10-09 15:46:00
那就想不太到別的了,原始檔貼上來比較清楚Hm..這個人好像有一樣的問題 http://bit.ly/2xth6uK這樣咧? http://bit.ly/2kzQRSv之前提到的方法是vert + frag shader如果要用surf shader的確有可能要用不同方法畢竟是Unity內建pipeline,有時一般作法不適用Sorry,不該說一般作法,該說全套very+frag作法畢竟Unity建議沒必要vert或frag時,使用surf shader
作者: planetoid (阿沒)   2017-10-09 16:34:00
https://codeshare.io/ary18Y72那裡lerp _Color跟_Color2再assign給v.color但_Color1跟2的alpha channel卻沒作用@@反倒是需要用81那裡修改其實是想嘗試將https://goo.gl/pyZN4k裡的particles做fade in/out的效果
作者: chowleft (什麼....)   2017-10-10 00:15:00
81行把 IN.color.a 帶進去算不行嗎?像是 o.Alpha = IN.color.a * c.a;https://i.imgur.com/A9PH9oC.png
作者: planetoid (阿沒)   2017-10-10 01:03:00
喔喔喔喔 大感謝chowleft大大 可以了><
作者: cjcat2266 (CJ Cat)   2017-10-10 03:30:00
喔~原來如此,我以為原po的意思是in.color.a沒用

Links booklink

Contact Us: admin [ a t ] ucptt.com