unity GPU优化(Occlusion Culling遮挡剔除,LOD多细节层次,GI(Global Illumination)全局光照)

本文详细介绍了Unity引擎中GPU性能优化的三种关键技术:Occlusion Culling遮挡剔除、LOD多细节层次和GI全局光照。通过实例演示了如何设置和调整这些功能,以减少渲染压力,提高渲染效率,适用于处理大量物体和复杂光照场景。同时,文章还提及了Draw Call的概念和优化方法,强调了顶点数和材质对动态批处理的影响。

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

渲染管线:

定义:图形数据在CPU上经过运算处理,最后输出到屏幕的过程 

1. 顶点处理:接收模型顶点数据、坐标系转换

2. 图元装配:组装面、连接相邻的顶点,绘制为三角面

3. 光栅化:计算三角面上的像素,并为后面着色阶段提供合理的插值参数(以及深度值)

4. 像素处理:对每个像素区域进行着色、写入到缓存中

5. 缓存:一个存储像素数据的内存块,最重要的缓存是帧缓存与深度缓存

• 帧缓存:存储每个像素的色彩(缓冲)

• 深度缓存 Z—buffer:前后排序(深度信息,物体到摄像机的距离)

Draw Call绘制调用:每帧调用显卡渲染物体的次数 

一.Occlusion Culling遮挡剔除:

定义:当物体被送进渲染流水线之前,

将视锥以内看不到的物体进行剔除,减少每帧的渲染量,提高渲染性能 

例一:unity自带的Occlusion Culling(用碰撞实现的)很消耗GUP

步骤:

1.在Window中找到并点击Occlusion Culling

2.把需要进行渲染剔除的物体勾选为Static

3.在右边的Occlusion中选中Object->Occlusion Areas点击Create new Occlusion Areas

4.在Object中点击Bake,和在Bake中点击Bake

5.点击Visuslization和移动相机就可以查看效果了

效果展示:(相机没有看到的物体自动把MeshRander隐藏了)


实例二:用InstantOC(使用射线)检测物体

步骤

下载:AssetStore中下载InstantOC_Dynamic_Occlusion_Culling__LOD_v2.0.0.unitypackage插件

百度云链接:链接:http://pan.baidu.com/s/1jHPrAfG  密码:v0yr

1.创建层

2.为游戏物体指定层(将参与遮挡剔除)与标签(将自动附加 IOClod脚本)


3.物体添加碰撞器Collider组件(通过射线去检测物体)

4.摄像机附加脚本IOCcam


属性

确保剔除物体显示正常的阴影。Layer mask:参与遮挡剔除的游戏对象层。

IOC Tag:将为指定标签的游戏对象自动添加IOClod脚本对象。

Samples:每帧摄像机发射的射线数目。数量多剔除效果 好,但性能开销大。通常在150—500之间。

Rays FOV:射线视野,应大于摄像机视野Field of View。

View Distance:视图距离,射线长度。将影响摄像机Clipping Planes –Far 数值。

Hide Delay:延迟隐藏,当物体被剔除时延迟的帧数,建 议50—100之间。

•PreCullCheck:检查采集信息,建议勾选,可以提高剔除 效率。

•RealtimeShadows:实时阴影,如果场景需要实时阴影, 建议启用,

注意:(物体需要添加Box Collider组件) 

缺点:需要消耗额外CUP 

适用:存在大量被遮挡的物体时使用 

BUG:Realtime Shadows——使用会显示材质丢失

优点:减少渲染压力,优化GPU显示

效果图:

标记的物体没有被遮挡时


标记的物体被遮挡了


二.LOD多细节层次:

定义:根据物体模型的节点在显示环境中所处的位置 和重要度,决定物体渲染的资源分配,降低

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值