作者planetoid (阿没)
看板GameDesign
标题[请益] Surface Shader Transparency
时间Mon Oct 9 05:00:29 2017
大家好
最近在尝试写custom surface shader
目前透过surf内的o.Alpha可以调整透明度
这样会让整个一起material一起变透明
但我希望能让个别的vertex有自己的透明度
奇怪的是在vert里面(appdata_full)可以动态调整颜色
但是却调整不了透明度
请问大家有可能做到这种效果吗?
(unity 内建的Legacy Shader/Transparent/Diffuse
就可以利用改变material的color来动态调整透明度)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.163.164.76
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1507496432.A.81C.html
1F:推 Ninja5566: 你vertex如果有送vertex color进去应该是没问题吧 10/09 05:38
2F:推 cjcat2266: 记得要写alpha blending的blend mode 10/09 07:02
3F:→ Ninja5566: 试着surface shader 输出颜色改成alpha值, 看是不是 10/09 10:38
4F:→ Ninja5566: 你想要的 10/09 10:38
5F:→ planetoid: 我改变appdata_full的color rgb有作用 但第四个channel 10/09 14:31
6F:→ planetoid: 却没有 不知道是不是少设定了什麽 10/09 14:33
7F:→ planetoid: blend mode是Blend SrcAlpha OneMinusSrcAlpha 10/09 14:46
8F:推 cjcat2266: 有没有 "Queue" = "Transparent" ? 10/09 15:37
9F:→ planetoid: 有耶"Queue"="Transparent""RenderType"="Transparent" 10/09 15:44
10F:推 cjcat2266: 那就想不太到别的了,原始档贴上来比较清楚 10/09 15:46
13F:→ cjcat2266: 之前提到的方法是vert + frag shader 10/09 15:55
14F:→ cjcat2266: 如果要用surf shader的确有可能要用不同方法 10/09 15:55
15F:→ cjcat2266: 毕竟是Unity内建pipeline,有时一般作法不适用 10/09 15:56
16F:推 cjcat2266: Sorry,不该说一般作法,该说全套very+frag作法 10/09 16:09
17F:→ cjcat2266: 毕竟Unity建议没必要vert或frag时,使用surf shader 10/09 16:10
19F:→ planetoid: 72那里lerp _Color跟_Color2再assign给v.color 10/09 16:38
20F:→ planetoid: 但_Color1跟2的alpha channel却没作用@@ 10/09 16:38
21F:→ planetoid: 反倒是需要用81那里修改 10/09 16:39
23F:→ planetoid: fade in/out的效果 10/09 16:43
24F:推 chowleft: 81行把 IN.color.a 带进去算不行吗? 10/10 00:15
25F:→ chowleft: 像是 o.Alpha = IN.color.a * c.a; 10/10 00:16
27F:→ planetoid: 喔喔喔喔 大感谢chowleft大大 可以了>< 10/10 01:03
28F:推 cjcat2266: 喔~原来如此,我以为原po的意思是in.color.a没用 10/10 03:30