前言: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的面数,而只有头带可能是需要渲染的,这个时候你作为程序可以建议模型师直接将头带做成双面的即可,这样就没这么消耗了