自定义双面Shader

来源:互联网 发布:php清空文件内容 编辑:程序博客网 时间:2024/03/29 21:57

说明:

在Unity开发中,难免有的时候会用到双面材质,可通过修改Shader达到想要的效果。

方法一:

直接在Shader代码头部添加一个Cull off 语句,实现强制双面渲染。
但是直接用Cull off的方式 有个重大的缺陷,这材质从两面看无论贴图、颜色、反光、照明情况,都是一模一样的,这并不符合大多数实际情况的常识。
Shader "Custom/MyShader" {Properties {_Color ("Main Color", Color) = (1,1,1,1)//Tint Color_MainTex ("Base (RGB)", 2D) = "white" {}}SubShader {Tags { "RenderType"="Opaque" }LOD 100Pass {Cull Off//直接删除剔除Lighting OffSetTexture [_MainTex] { combine texture } SetTexture [_MainTex]{ConstantColor [_Color]Combine Previous * Constant}}}}
效果如下:

方法二:

自制两张图片,分别对背面及正面裁剪
Shader "Custom/DoubleShader" {Properties {_Color ("Main Color", Color) = (1,1,1,1)//Tint Color_MainTex ("Base (RGB)", 2D) = "white" {}_MainTex_2 ("Base (RGB)", 2D) = "white" {}}SubShader {Tags { "RenderType"="Opaque" }LOD 100Pass {Cull FrontLighting OffSetTexture [_MainTex] { combine texture } SetTexture [_MainTex]{ConstantColor [_Color]Combine Previous * Constant}}Pass{Cull BackLighting OffSetTexture [_MainTex_2] { combine texture } SetTexture [_MainTex_2]{ConstantColor [_Color]Combine Previous * Constant}}}}
效果如下:


1 0
原创粉丝点击