鸟语天空
Shader——Alpha裁剪
post by:追风剑情 2015-8-30 11:26

如果你的画面性能存在问题,使用这种类型的透明度是很有利的,因为处理半透明着色器的混合过程比裁剪透明消耗更大。但是在手机设备正好相反,因为检测贴图中的每一个像素对于手机那点可怜的GPU来说消耗太大。所以,如果你使用Unity3D来制作手机应用,记住要使用半透明技术,慎用裁剪透明技术。

Shader "Custom/LambertAlpha" {
	Properties {
		_MainTex ("Base (RGB)", 2D) = "white" {}
		_Cutoff ("Cutoff Value", Range(0, 1)) = 0.5
	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200
		
		CGPROGRAM
		//低于_Cutoff的灰度值都被认为是透明的。
		#pragma surface surf Lambert alphatest:_Cutoff

		sampler2D _MainTex;

		struct Input {
			float2 uv_MainTex;
		};
		
		void surf (Input IN, inout SurfaceOutput o) {
			half4 c = tex2D (_MainTex, IN.uv_MainTex);
			o.Albedo = c.rgb;
			o.Alpha = c.r;
		}
		ENDCG
	} 
	FallBack "Diffuse"
}

评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容