【Unity3D Shader编程】之四 热带雨林篇: 剔除、深度测试、Alpha测试以及基本雾效合辑

本文深入介绍了Unity中Shader的剔除、深度测试、Alpha测试和基本雾效的原理与相关语法,通过6个Shader实例进行实战演示,包括剔除操作、Alpha测试和雾效设置,最终呈现了生机盎然的热带雨林场景。文章还提供了配套的Shader代码和游戏场景的下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 

本系列文章由@浅墨_毛星云 出品,转载请注明出处。  

文章链接: http://blog.csdn.net/poem_qianmo/article/details/41923661

作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442

邮箱: happylifemxy@163.com

 

 

本文介绍了Unity中Shader书写中会用到的剔除、深度测试、Alpha测试以及基本雾效相关的语法知识,然后以6个Shader的书写作为实战内容,最后创建了一个生机勃勃的热带雨林场景进行了Shader的测试。依旧是国际惯例,先上本文配套程序的截图。


绿色的海洋:


 

满眼的生机:

 


竹林:

 

 

参天大树:



 

 

飘到脸上的树叶:

 

 

 

 

OK,图先就上这么多。文章末尾有更多的运行截图,并提供了原工程的下载。可运行的exe下载在这里:

 

【可运行的exe游戏场景请点击这里下载试玩】

 

 

 好的,我们正式开始。

 


 

 

 

一、剔除与深度测试(Culling & Depth Testing)相关内容







1.1 剔除(Culling)的概念

 


 对于实时交互的3D环境而言,现实的速度和效率是非常重要的。虽然现在的硬件能力非常的快,但是要想保持30FPS的同时处理数十万的三角形,以现在的主流机器来说还是有些困难的。

为了解决这种问题,人们提出了很多方法,其中有LOD,有Culling。这两种方法并不矛盾,而且我们往往需要在culling的基础上再使用LOD进一步解决pipeline的负担。

剔除是一种通过避免渲染背对观察者的几何体面来提高性能的优化措施。所有几何体都包含正面和反面。剔除基于大多数对象都是封闭的事实;如果你有一个立方体,你不会看到背离你的那一面(总是只有一面在你的前方),因此我们不需要绘制出背面。因此也被称做背面剔除。

一言以蔽之,所谓剔除,就是被挡住或视角以外的我们看不到的物体,因为它们无关紧要,所以我们就不去绘制,以节省资源,提高场景的运行效率。



 

 


 

1.2 深度测试(Depth Testing)的概念




在复杂的场景中,通常有多个物体需要绘制,这些物体之间通常会存在遮挡关系,离观察点较远的物体会因为近处物体的者的遮挡而不可见或只有部分可见,Direct3D图形系统提供了深度测试功能来实现这种效果。深度测试可以简化复杂场景的绘制,确保只有场景内的对象的最靠近的表面参与绘制。

 

浅墨之前在写DirectX相关博文的时候写过对深度测试的形象化理解,在这边也列出来吧:

把深度测试看做在一口井的井口处向井中观望。把所有物体都赋予一个深度值,放到井中来显示。深度越深的物体,离井口就越远。深度越浅的物体,离井口就越近。井表面的深度值为0。离井口近而深度浅的物体,可能会把离井口远的物体遮挡住。最终显示在屏幕上的开启深度测试后的画面,就如在井口处向井中观望里面物体显示出的遮挡与层次的效果一样。当然,离井口的深度就是每个物体在世界坐标系中的矩阵的Z坐标值了。

 

 

 

1.3 剔除与深度测试(Culling & DepthTesting)相关句法

 




评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值