ShaderLab基础(阴影面剔除)

来源:互联网 发布:linux的java环境变量 编辑:程序博客网 时间:2024/05/02 17:14

            在上二节学习了subshaderTags,这一节将会对CommonState进行学习Commonstate包含许多命令,在后面的课程里主要是针对阴影面剔除,Ztest,alpha testalphalblend命令进行学习,这节将会对阴影面剔除经行学习。

 

打开场景1.scene,在这个场景里有一个cube物体,这个cube物体是六面体。一共有6个面,每个面有2个三角形,一共12个三角形。然后运行场景如下图所示:


从上面图应该知道,其实在渲染时候只需要渲染这个面就可以了,其他面没必要进行渲染,这样就可以提高渲染效率。如何实现呢?

1.可以通过命令Cull Back | Front| Off来实现。物体是由三角面组成的,这些三角面要么正面要么朝向摄像机。要么背对摄像机。场景中的立方体,有5个面背对摄像机,1个面面对摄像机。Back这个参数是默认参数,表示渲染的时候剔除背对摄像机的三角面,front表示剔除面对摄像机的三角面,off是关掉剔除,面对摄像机的三角面和背对摄像机的三角面都渲染。接下来修改shader,代码如下:

运行程序,运行效果如下:


发现物体的渲染效果没什么改变,那是因为Back这个参数是默认参数。

,接下来将代码中的back改为front,运行程序效果如下:


背对摄像机的5个面都渲染处理了。如果是cull off这六个面都会渲染。


上一节 ShaderLab基础(RenderType标签)

下一节ShaderLab基础(深度测试)

 Unity 开发交流QQ群:528152133

0 0