Unity 性能优化之遮挡剔除(Occlusion Culling)(六)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激!

文章目录

  • 前言
  • 一、遮挡剔除是什么?
  • 二、静态遮挡剔除的使用步骤
    • 1.标记为遮挡剔除对象
    • 2.创建Occlusion Area组件
    • 3.烘焙
    • 4.Occlusion窗口Bake的参数
      • Smallest Occluder
      • Smallest Hole
      • Backface threshold
    • 5.遮挡剔除前后的效果对比
      • 没有开启遮挡剔除前:
      • 开启遮挡剔除后
  • 三、动态遮挡剔除的使用步骤
    • 2.设置动态遮挡剔除
      • 1.开启Dynamic Occlusion
      • 2.挂载Occlusion Portal脚
      • 3.烘培
  • 四、注意点
  • 总结


前言

unity在渲染时,默认只是对模型进行视椎体剔除,也就是在相机显示范围内的物体进行剔除,而遮挡剔除则是,渲染物体被整个遮挡住后,将不参与此帧的渲染,unity虽然内置,但是不默认启用,需要我们进行一些操作,才能够实现当前的操作。

一、遮挡剔除是什么?

Unity 中的遮挡剔除(Occlusion Culling)是一种性能优化技术,它可以帮助开发者减少需要渲染的场景物体数量,从而提高游戏的帧率和流畅度。
遮挡剔除的基本思路是在运行时计算场景中哪些物体被遮挡而不需要被渲染,哪些物体是可见的需要被渲染。这样可以减少渲染所需的时间和开销,提高游戏性能。

Unity 中的遮挡剔除主要有两种方式:静态遮挡剔除和动态遮挡剔除。
静态遮挡剔除(Static Occlusion Culling)是在场景构建时进行的,主要是通过 Unity 自带的预处理工具将场景物体分成一些区域,然后计算这些区域之间的遮挡关系。这种方式适用于静态场景和场景中的大部分物体都是静态的情况。静态遮挡剔除的优点是计算量小,不会对游戏运行时的性能造成太大影响。
动态遮挡剔除(Dynamic Occlusion Culling)则是在游戏运行时进行的,主要是通过摄像机视野和场景中物体之间的遮挡关系来计算需要渲染的物体。这种方式适用于动态场景和场景中有大量动态物体的情况。动态遮挡剔除的优点是可以适应动态变化的场景,但需要计算量较大,可能会对游戏运行时的性能造成一定影响。

二、静态遮挡剔除的使用步骤

1.标记为遮挡剔除对象

同时勾选Occluder Static和Occludee Static 。
Occluder Static 属于静态遮挡物体,设置后,可以遮挡其它物体。
Occludee Static 属于静态被遮挡物体,设置后,可以被其它遮挡物体遮挡。
在这里插入图片描述

2.创建Occlusion Area组件

1.Window --Rendering–Occlusion Culling 打开遮挡剔除面板
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c38fe3dc8c3b4e319374eb1eae6c8fb3.png
2.创建Occlusion Area组件
选择到Object,再选择Occlusion Areas,最后点击最下面的Occlusion Areas,创建Occlusion Areas。步骤如下图:
在这里插入图片描述
3.创建成功
在这里插入图片描述
4.当然也可以创建一个空物体,添加组件Occlusion Area,结果和上面步骤一样。
在这里插入图片描述

3.烘焙

选择Bake,点击下方Bake。
在这里插入图片描述

4.Occlusion窗口Bake的参数

在这里插入图片描述

Smallest Occluder

场景内最小遮挡物的尺寸,设得过大会导致剔除成功率下降,过小会导致性能问题。一般默认就好。

Smallest Hole

如果场景中有带孔的物体需要能被视线穿透(例如墙上的洞, 房间的门),那么需要将Smallest Hole设置为小于孔的直径
一般默认即可。

Backface threshold

本参数的引入是为了减少剔除数据大小,另一方面,设置不当会导致剔除错误(可见的物体被剔除了)。因此,暂时请保持默认值100不变。
工作机制是如果PVS产生的某个cell中观察到的阻挡面是backface的比例大于设定值,那么生成的剔除数据中将不会包含这个cell相关内容,从而降低了数据大小。如果运行时camera移动到该cell内,那么剔除查询结果将会是“Undefined”。

5.遮挡剔除前后的效果对比

没有开启遮挡剔除前:

在这里插入图片描述

开启遮挡剔除后

在这里插入图片描述
可以很明显看见 三个Cube没有被渲染了,相机发射的绿色范围就是渲染到的范围。

三、动态遮挡剔除的使用步骤

2.设置动态遮挡剔除

1.开启Dynamic Occlusion

对于动态或者可移动的物体,如果需要被遮挡,那么需要在其Mesh Renderer 或者 Skinned Mesh Renderer上面设置即可
在这里插入图片描述

2.挂载Occlusion Portal脚

动态加载的物体,要能够遮挡其它物体,需要挂载Occlusion Portal脚本进行实现,添加这个组件的物体必须取消Occluder Static和Occludee Static。
Open勾选则是不启用遮挡剔除,不勾选则是启用遮挡剔除,可以通过代码控制。
在这里插入图片描述

3.烘培

选择Bake,点击下方Bake。
烘培和静态剔除的步骤一样。

四、注意点

1.静态剔除的物体,无法移动
2.如果修改了场景,需要Clear,然后重新Bake,才会生效

总结

好记性不如烂笔头!
上一章:链接: Unity 性能优化之GPU Instancing(五)
下一章:Unity 性能优化之光照优化(七)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/320241.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子书制作神器,简单操作

​随着数字化时代的到来,电子书籍越来越受到人们的喜爱。而一款优秀的电子翻页书制作软件,则能够帮助你轻松制作出专业级的电子书,让你的阅读体验更加丰富多彩。 今天,我们就来为大家推荐一款优秀的电子翻页书制作软件——FLBOOK在…

全球260多个国家的年通货膨胀率数据集(1960-2021年)

01、数据简介 全球年通货膨胀率是指全球范围内,在一年时间内,物价普遍上涨的比率。这种上涨可能是由于货币过度供应、需求过热、成本上升等原因导致的。通货膨胀率是衡量一个国家或地区经济状况和物价水平的重要指标,通常以消费者价格指数&a…

Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)

Flutter笔记 Widgets Easier组件库(12)使用消息吐丝(Notify Toasts) - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 29114848416…

如何全面规避医疗数据安全风险?“一中心三大管控域”打开新思路!

作为医院的核心基础设施,数据库已然演变成了一种具有“资产”属性的重要元素。而随着不断变化的医疗业务场景和日趋严格的合规性要求,如何让安全全方位贯穿医疗数据的生命周期,是一项系统性的建设工作,难点诸多。 基于多年的数据…

Vue前端环境准备

vue-cli Vue-cli是Vue官方提供的脚手架,用于快速生成一个Vue项目模板 提供功能: 统一的目录结构 本地调试 热部署 单元测试 集成打包上线 依赖环境:NodeJs 安装NodeJs与Vue-Cli 1、安装nodejs(已经安装就不用了) node-…

Linux字符设备驱动(二) - 与设备驱动模型的关系

一,从/dev目录说起 从事Linux嵌入式驱动开发的人,都很熟悉下面的一些基础知识, 比如,对于一个char类型的设备,我想对其进行read wirte 和ioctl操作,那么: 1)我们通常会在内核驱动中…

tomcat-以服务的方式重启tomcat

背景 双击tomcat的bin目录下面的startup.bat,会留下一个cmd的窗口,很不优雅 使用service服务的方式启动,并且设置为自动启动 找到tomcat的bin目录输入cmd,按Enter,进入命令行界面。执行“service.bat install” 。&…

文件删了,回收站清空了怎么恢复?文件恢复软件一览

在日常生活和工作中,我们常常会遇到误删除文件的情况,有时甚至会因为清空了回收站而无法找回这些文件。这些文件可能包含重要的工作数据、个人照片或其他珍贵的回忆。那么,在这种情况下,我们该如何恢复这些被删除且清空回收站的文…

【项目分享】用 Python 写一个桌面倒计日程序!

事情是这样的,我们班主任想委托我做一个程序,能显示还有几天考试。我立即理解了这个意思,接下了这个项目。 话不多说,来看看这个项目吧—— 项目简介 仓库地址:https://gitee.com/yaoqx/desktop-countdown-day 这是 …

为何美国多IP服务器搭建蜘蛛池SEO更经济?

为何美国多IP服务器搭建蜘蛛池SEO更经济? 随着网络时代的不断演进,搜索引擎优化(SEO)已经成为企业和个人提升网站曝光度的必经之路。在这个过程中,蜘蛛池(Spider Pool)服务被广泛应用。但是有趣的是,美国多IP服务器搭建蜘蛛池SEO服务却相对…

计算机网络-ICMPv6基础概念

前面我们学习了IPv6的基础概念以及IPv6地址的格式与分类,在IPv4中我们通过ARP、广播、ICMP进行地址冲突检测、网络连通性,但是在IPv6中是没有广播和ARP的,都是通过ICMPv6来实现其功能,所以这里我们需要了解下ICMPv6。 一、ICMP协议…

一个基于ComfuUI Api的 AIGC自动绘画实现方案

工作流程图 基本原理已经弄通,下一步要开始编码搬砖了。整个自动绘画的流程如下,暂就不整高深U什么L了,写个简单明了能容易看懂的流程图。UI借用了下墨刀里的AI绘画公开原型 部署节点 整个系统的后端服务典型部署需要3类节点 Aigc Server&…

mac/windows下安装docker,minikube

1、安装docker Get Started | Docker 下载安装docker 就行 启动后,就可以正常操作docker了 使用docker -v 验证是否成功就行 2、安装minikube,是基于docker-desktop的 2.1、点击设置 2.2、选中安装,这个可能需要一点时间 这样安装后&…

【研发管理】产品经理知识体系-组合管理

导读:新产品开发的组合管理是一个重要的过程,它涉及到对一系列新产品开发项目进行策略性选择、优先级排序、资源分配和监控。这个过程旨在确保企业能够最大化地利用有限的资源,以实现其战略目标。 目录 1、组合管理、五大目标 2、组合管理的…

OpenCV的周期性噪声去除滤波器(70)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV如何通过梯度结构张量进行各向异性图像分割(69) 下一篇 :OpenCV如何为我们的应用程序添加跟踪栏(71) 目录 目标 理论 如何消除傅里叶域中的周期性噪声? 源代码 解释 结果 目…

详解基于 RAG 的 txt2sql 全过程

前文 本文使用通义千问大模型和 ChromaDB 向量数据库来实现一个完整的 text2sql 的项目,并基于实际的业务进行效果的展示。 准备 在进行项目之前需要准备下面主要的内容: python 环境通义千问 qwen-max 模型的 api-keyChromaDB 向量数据库acge_text_…

Sharding Capital: 为什么投资全链流动性基础设施 Entangle ?

写在前面:Entangle 项目的名称取自于量子纠缠(Quantum entanglement),体现了项目对于构建连接、关联和互通的愿景。就像量子纠缠将不同的粒子联系在一起,Entangle 旨在通过其跨链流动性和合成衍生品的解决方案将不同的区块链网络连接在一起&a…

django设计模式理解FBV和CBV

在 Web 开发中,FBV(Function-Based Views)和 CBV(Class-Based Views)是两种常见的视图设计模式,用于处理 HTTP 请求并生成相应的响应。下面是它们的简要解释: Function-Based Views (FBV) 在 …

激发创新活力,泸州老窖锻造人才“铁军”(内附长江酒道短评)

执笔 | 姜 姜 编辑 | 古利特 刚刚站上300亿元新台阶&#xff0c;泸州老窖再次传来喜讯。 <<<左右滑动查看更多>>> 4月28日&#xff0c;四川省庆祝“五一”国际劳动节大会在成都召开。泸州老窖股份有限公司工业4.0项目秘书长赵丙坤、泸州老窖酿酒有限责任公…

VS Code 远程连接 SSH 服务器

文章目录 一、安装 Remote - SSH 扩展并连接远程主机二、免密连接远程主机1. 生成 SSH 密钥对2. 将公钥复制到远程服务器3. 配置 SSH 客服端4. 连接测试 随着技术的不断迭代更新&#xff0c;在 Linux 系统中使用 Vim、nano 等基于 Shell 终端的编辑器&#xff08;我曾经也是个 …