Unity Shader (二)裁剪(Culling)

来源:互联网 发布:淘宝店铺装修还原 编辑:程序博客网 时间:2024/06/05 15:39

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

0 0
原创粉丝点击