Shader——Alpha裁剪

作者:追风剑情 发布于:2015-8-30 11:26 分类:Shader

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

  1. Shader "Custom/LambertAlpha" {
  2. Properties {
  3. _MainTex ("Base (RGB)", 2D) = "white" {}
  4. _Cutoff ("Cutoff Value", Range(0, 1)) = 0.5
  5. }
  6. SubShader {
  7. Tags { "RenderType"="Opaque" }
  8. LOD 200
  9. CGPROGRAM
  10. //低于_Cutoff的灰度值都被认为是透明的。
  11. #pragma surface surf Lambert alphatest:_Cutoff
  12.  
  13. sampler2D _MainTex;
  14.  
  15. struct Input {
  16. float2 uv_MainTex;
  17. };
  18. void surf (Input IN, inout SurfaceOutput o) {
  19. half4 c = tex2D (_MainTex, IN.uv_MainTex);
  20. o.Albedo = c.rgb;
  21. o.Alpha = c.r;
  22. }
  23. ENDCG
  24. }
  25. FallBack "Diffuse"
  26. }

标签: Shader

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号