实时渲染入门:(二)渲染前和遮挡

在这里插入图片描述
cpu,gpu不是同时对于同一帧进行处理的,cpu首先处理A帧,然后交给绘制线程,此时cpu去处理B帧,而gpu负责渲染。

一开始cpu要计算所有模型的位置,以及变换信息等等,这个过程非常复杂。
然后要计算哪些对象或者内容是可见的,这样就可以只渲染可见的部分(因为渲染所有对象太慢了),计算完后会简历两个列表,一个列表存储所有可见的对象,另一个列表存储所有不可见的对象,这个过程大多由CPU完成。
这个过程分为四步:
1,距离剔除(Distance Culling)
2,视锥体剔除(Frustum Culling)
3,预计算可见性(Precomputed Visibility)
4,遮挡剔除(Occlusion Culling)

1,距离剔除:当从远处向近处拉镜头的时候,会看到有物体消失的效果。(类比和平精英中,远处的物体看不见,但是开车开着开着就能看见山和房子了,这样)。UE4会自动进行一个检查,看一个物体是否超出了X距离,如果超过了,那就不渲染它。它在下一帧中,就不会被渲染。它不仅适用于物体,还适用于粒子。(默认不开启)
2, 在第一人称的时候,摄像头会有一个视角,超出这个视角的物体则不会被渲染。举例:如果现在是一个第一人称的游戏,我们的背后有物体,这个物体就不会被渲染。(默认开启且无法被禁用)
3,在渲染前,会预先计算哪些物体是被遮挡的,如果被遮挡了,就不渲染这个物体。而是否可以被渲染,可以由蓝色的单元格告知。
4,计算每一个模型的被遮挡性,被遮挡住的物体不渲染。这种方式会检查每一个对象是否被挡住了。

上述四种方法的损耗递增。

遮挡性能的影响:
在这里插入图片描述
1,开启距离剔除
2,场景中如果有超过1万个对象,可能就会产生影响
3,大型的开放场景,遮挡性能不会很好(引擎要渲染的东西太多了)
4,几乎任何可见对象都可以被遮挡,粒子也可以被遮挡
5,大型模型很少被遮挡,所以会影响GPU性能
6,把模型组合为大型模型,会影响CPU性能

那一个大型的物体为什么要分为很多个组合的小模型呢?因为小模型多会增加遮挡计算的计算量啊?
如果使用一个大型模型,需要检测遮挡的对象的确会变少,但是另外一方面说,要渲染的物体多了。因为这样需要渲染的物体实际上就变多了,会渲染很多我们看不见的物体,这是一种浪费。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值