项目地址:https://pan.baidu.com/s/1IZ2whiRMbhMr0mO7mHkopg
Shader "Custom/Opaque" { Properties { _Color("MainColor", Color) = (1,1,1,1) _Color2("SecColor", Color) = (1,1,1,1) } SubShader { Pass { Tags{ "LightMode" = "ForwardBase" } CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f { float4 pos:POSITION; float4 col:COLOR; }; float4 _Color; v2f vert(appdata_base v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); return o; } float4 frag(v2f IN) :COLOR { return _Color; } ENDCG } } }
然后是透明物体的shader:
Shader "Custom/Transparent" { Properties { _Color("MainColor", Color) = (1,1,1,1) } SubShader { Pass { Blend One One CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f { float4 pos:POSITION; }; float4 _Color; v2f vert(appdata_base v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); return o; } float4 frag(v2f IN) :COLOR { return _Color; } ENDCG } } }
然后就是多加一个灯,在Opaque.shader中加入一个额外的通道:
Pass { Tags{ "LightMode" = "ForwardAdd" } Blend One One CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f { float4 pos:POSITION; float4 col:COLOR; }; float4 _Color2; v2f vert(appdata_base v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); return o; } float4 frag(v2f IN) :COLOR { return _Color2; } ENDCG } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212819.html原文链接:https://javaforall.net
