unity blend混合

unity blend混合项目地址 https pan baidu com s 1IZ2whiRMbhM 不透明物体和透明物体的渲染顺序混合操作不透明物体和透明物体的渲染顺序 先绘制不透明物体 然后绘制透明物体首先是 Opaque shader Shader Custom Opaque Properties Color MainCol

项目地址: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

(0)
上一篇 2026年3月18日 下午7:11
下一篇 2026年3月18日 下午7:12


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号