UnityShader:正反面显示不同颜色
正反面显示不同颜色或者样式,很多时候会被使用到。比如在2D卡牌中,正面会是卡牌内容,反面则会是卡牌样式。当然在2D中你可以用两个Sprite来制作,只需要它们的渲染正确,同时前后有一点点的位移差就可以制作出一张卡牌了。
当然这篇文章的主题不会按照这种方式制作,我会给出用shader来制作卡牌。那就是用到HLSL的语义,链接可以参考:语义学 - Win32 apps | Microsoft Learn
下方是演示代码:
half4 frag(v2f i, bool isFrontFace : SV_ISFRONTFACE) : SV_Target{half4 col = tex2D(_MainTex, i.uv);col.rgb = isFrontFace ? _ColorFront.rgb : _ColorBack.rgb;return col;}
DX10之前用的VFACE,DX10之后和更高版本需要用到SV_ISFRONTFACE,这两者实际运行还是有些差距的,而且在设备上也要注意不同API的兼容