文章目录
- 效果
- shader
- 理解
- 参考
效果
shader
Shader "Example/AlphaBlendBothSided"
{
Properties
{
_Color ("Main Tint", Color) = (1, 1, 1, 1)
_MainTex ("Texture", 2D) = "white" {}
_AlphaScale ("Alpha Scale", Range(0, 1)) = 1
}
SubShader
{
Tags {"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
// Pass的先后顺序有影响
//渲染后面
Pass
{
Tags{"LightMode" = "ForwardBase"}
Cull Front
同透明图混合
}
//渲染前面
Pass
{
Tags{"LightMode" = "ForwardBase"}
Cull Back
同透明图混合
}
}
Fallback "Transparent/VertexLit"
}
理解
使用透明度混合关闭了深度写入,所以需要两个Pass,一个只渲染背面先执行,另一个后渲染之渲染前面。
Cull <state>
设置 GPU 应该基于多边形相对于摄像机的方向剔除哪些多边形。
参数 | 值 | 功能 |
---|---|---|
state | Back | 剔除背对摄像机的多边形。这称为背面剔除。这是默认值。 |
Front | 剔除面向摄像机的多边形。这称为正面剔除。使用它可翻转几何体。 | |
Off | 不根据面朝的方向剔除多边形。可用于实现特殊效果,如透明对象或双面墙。 |
Cull 可以写在SubShader下,也可以写在Pass下,作用域不同
参考
《Unity Shader 入门精要》冯乐乐
ShaderLab 命令:Cull