正反面都正确接受光源的双面材质

Shader "Transparent/Diffuse DoubleSided" {


Properties {

	 _Color ("Main Color", Color) = (1,1,1,1)

	 _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}

}




SubShader {

		 Tags { "RenderType"="Opaque" }

 		 LOD 300

 		

	 	Pass {

			 Tags { "LightMode" = "Vertex" }

				

			 Cull Back

			 ZWrite On

			 Lighting On

			

			 CGPROGRAM

			

			 #pragma vertex vert

			 #pragma fragment frag

			

			 #include "UnityCG.cginc"

			

			 sampler _MainTex;

			 float4 _MainTex_ST;

			 float4 _Color;

			

			 struct a2v {

				 float4 vertex : POSITION;

				 float3 normal : NORMAL;

				 float4 texcoord : TEXCOORD0;

			 };

			

			 struct v2f {

				 float4 pos : POSITION;

				 float2 uv : TEXCOORD0;

				 float3 color : TEXCOORD1;

			 };

			

			 v2f vert(a2v v) {

				 v2f o;o.pos = mul(UNITY_MATRIX_MVP, v.vertex);

				 o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);

				 o.color = ShadeVertexLights(v.vertex, v.normal);

				 return o;

			 }

			

			 float4 frag(v2f i) : COLOR {

				 float4 c = tex2D(_MainTex, i.uv)*_Color;

				 clip(c.a-0.9);

				 c.rgb = c.rgb * i.color * 2;

				 return c;

			 }

			

			 ENDCG

		 }

		

		

		 Pass {

			 Tags { "LightMode" = "Vertex" }

				

			 Cull Front

			 ZWrite On

			 Lighting On

			

			 CGPROGRAM

			

			 #pragma vertex vert

			 #pragma fragment frag

			

			 #include "UnityCG.cginc"

			

			 sampler _MainTex;

			 float4 _MainTex_ST;

			 float4 _Color;

			

			 struct a2v {

				 float4 vertex : POSITION;

				 float3 normal : NORMAL;

				 float4 texcoord : TEXCOORD0;

			 };

			

			 struct v2f {

				 float4 pos : POSITION;

				 float2 uv : TEXCOORD0;

				 float3 color : TEXCOORD1;

			 };

			

			 v2f vert(a2v v) {

				 v2f o;o.pos = mul(UNITY_MATRIX_MVP, v.vertex);

				 o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);

				 o.color = ShadeVertexLights(v.vertex, -v.normal);

				 return o;

			 }

			

			 float4 frag(v2f i) : COLOR {

				 float4 c = tex2D(_MainTex, i.uv)*_Color;

				 clip(c.a-0.9);

				 c.rgb = c.rgb * i.color * 2;

				 return c;

			 }

			

			 ENDCG

		 }

	 } 

	 FallBack "Diffuse"

}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值