Unity Shader (二)裁剪(Culling)

前言:unity当处理完顶点后,就会进入裁剪。为什么是在这个时候呢? 因为下一个阶段我们会进行片段程序(Fragment)的处理,而这个过程实际上是非常消耗的,所以我们这里讲的裁剪+深度测试(下文讲)是对进入片段之前的顶点优化过程,减少片段处理的压力。

裁剪(Culling)

分类:Cull Back | Front | Off

默认情况下是裁剪的背面,因为背向相机的其实是没必要去处理着色的,所以这里会进行裁剪掉。比如:我们例子里面的童子的头带, 红色部分为背面的

例图:

这里写图片描述

代码:

Shader "Custom/Culling" {
    Properties {
        //定义一个贴图
        _MainTex ("Base (RGB)", 2D) = "white" {} 
    }
    SubShader 
    {       
     pass{
             cull front
             Color (1,0,0,1)  //背面渲染红色
         }
      Pass
        {
            SetTexture [_MainTex] 
            {
                Combine texture * primary  //正面赋予贴图
            }
        }
    } 
    FallBack "Diffuse"
}

尽量不要用双面渲染

有时候我们的需求就是要看双面,而不是渲染单面。那么可以使用 Cull Off 或者使用两个pass分别渲染正面和背面。不过这个需求不要到处使用,因为他会增加面数和pass数量。对一个简单的模型的面数如下,从图里面可以看到我们加了2k的面数,而只有头带可能是需要渲染的,这个时候你作为程序可以建议模型师直接将头带做成双面的即可,这样就没这么消耗了
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/pdw_jsp/article/details/54311924
今日推荐