Unity3D之InstantOC(遮挡剔除)

首先要先从网上下载InstantOC组件(网上资源很多的不用跟我要)

那么介绍一下这个组件是干什么用的,为什么要用它,有什么好处

在游戏中我们看到的物体,是如何呈现给我们的呢?如图:

渲染管线

CPU干得事情

第一步 游戏:其实就是CPU来判断视锥以内,所能看到的物体都需要渲染

第二步 图形API:它是要看你发布的平台,不一样平台所需要的图形API也就不一样,比如Windows平台就需要DX,手机端平台就需要OpenGL等。。。。

第三步:绘制调用Draw Call每次引擎准备数据并通知GPU的过程,其实就是说每帧调用显卡渲染物体的次数(CPU与GPU的分界线)

GPU干得事情

第四步 顶点处理:接受CPU传输过来的顶点数据,来坐标转换(模型都是有若干个点和三角构成的)

第五步 图源装配(组装面):连接相邻的顶贴,绘制位三角形

第六步 光栅化:计算三角形的像素,并为后面着色阶段提供合理的插入参数

第七步 像素处理:对每个像素区进行着色,并写入到缓存中

第八步 缓存:一个存储像素数据的内存块,最重要的缓存是帧缓存和深度缓存

    帧缓存:存储每个像素的色彩,即渲染后的图像,帧缓存常常子啊显存中,显卡不断读取并输出到屏幕中

    深度缓存:Z-buffer:存储像素的深度信息,即物体到摄像机的距离,光栅化时变计算各像素的深度值,如果新的深度值比现有值更近,则像素颜色被写到帧缓存,并替换深度缓存

  通过上面的叙述知道了游戏物体在渲染中是需要CPU和GPU共同来完成,那么在这个过程中一旦数据量变大一定回造成电脑性能上的消耗,为了降低消耗所以要使用InstantOC这个组件。

  那么来介绍一下InstantOC,InstantOC全称叫做Instant Occlusion Culling(遮挡剔除),为什么要用它?因为在摄像机的视锥内也有被物体所被遮挡而看不见的物体如果一起渲染出来会浪费大量的性能!因此我们就可以用遮挡剔除来减少GPU的工作量但同时也会增加CPU的工作量,那么如果在物体少或者没有遮挡的情况下就不要使用了(遮挡剔除)因为如果所有物体都需要渲染的话那再使用遮挡剔除无疑是给CPU增加了负担,那么遮挡剔除总结:当物体被送进渲染流水线之前,将摄像机视角内看不到的物体进行剔除,从而减少每帧渲染的数据量,提高了渲染性能,介绍了这些那就开始介绍它如何使用吧!

第一步:从网上下载一个InstantOC就是一个工具包,然后导入到Unity3D里(什么你问我怎么导入?,直接拖进去就可以了)!

第二步:导入完成后可以在Unity3D面板中看到一个名称叫做InstantOC文件夹,在这个文件中有一个IOCcam的C#脚本将它导入值摄像机(导入步骤也是托进去)

第三步:将导进摄像里的IOCcam脚本来进行参数配置,在所需要遮挡剔除的物体上的Layer(层)和Tag(标签)添加一个自定义的名称 ,分别给Layer mask(遮罩层)和 IOC Tag(遮挡标签)进行绑定

然后还需要设置Samples(取样)其实就是摄像机向视锥以内的物体发射一些射线碰到了就渲染碰不到就不渲染(射线是看不到的)

那么这些射线是随机发射的如果场景太大射线少就会导致物体明明能看到因为射线的原因没有碰到导致没有去渲染,

或者射线太多导致性能降低所以在射线这里是有一个规范的射线数量一般会设置在150-500之间

Rays FOV 射线远视:应大于摄像机视野Fied of View

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

Hide Delay延迟隐藏,当物体被剔除是延迟的帧数,建议50-100之间(就是多让射线,多试几次毕竟射线是随机的所以需要延迟隐藏那些看不到的物体)

PreCull Delay:这个一定要勾选

那么在介绍一个这个组件上另外一个功能LOD!LOD全场叫Levels of Detail(多细节层次)LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算

其实就是说当物体距离远了的时候才用面数较低的模型来减少渲染运算的工作量,来保证性能的一步优化

来开始如何使用它吧

使用方法:还是刚刚的步骤不变,在图下有这么几个属性需要设置一下,分别是Lod 1 distance和Lod 2 distance这是指摄像机与模型之前的距离 1代表精模(面数比较高的模型)2代表中模(代码面数一般的模型)如果超出这连个所设置的距离则会变成低模(面数比较低的模型),那么把数值调整好了 模型怎么办呢?(不用担心,工具本身是自带这3个模型的)如图 ,那么这里要说明一下 LOD是有命名规则的模型名称一定叫Lod_0、Lod_1、Lod_2来区分模型的面数如图,记得放到同一个空物体里,最后一张是配置完成后的

原文地址:https://www.cnblogs.com/ACBJTR/p/10321318.html

时间: 2024-11-13 09:01:46

Unity3D之InstantOC(遮挡剔除)的相关文章

Unity4.3 遮挡剔除:基本知识

http://blogs.unity3d.com/2013/12/02/occlusion-culling-in-unity-4-3-the-basics/ 这篇博文由Umbra Software的Jasin Bushnaief所写,旨在解释Unity4.3遮挡剔除的更新. Unity4.3包含了大量的改进.全新的子系统之一包括遮挡剔除.不但简化了界面,剔除运行本身也改写了,还添加了一些列的新功能. 在这个系列的三篇博文里,我将介绍Unity4.3的新遮挡剔除系统的使用方法.第一篇讲完成遮挡剔除

Occlusion Culling遮挡剔除理解设置和地形优化应用

这里使用的是unity5.5版本 具体解释网上都有,就不多说了,这里主要说明怎么使用,以及参数设置和实际注意点 在大场景地形的优化上,但也不是随便烘焙就能降低帧率的,必须结合实际情况来考虑,当然还有透明物体问题和动态物体的剔除等等都将详细说明. 首先说一下烘焙的关系 因为unity摄像机自带视椎剔除(Frustum Culling),所以如果都是动态物体,那么只有视椎剔除,可以在bake过后通过camera的occlusion culling里面的visualize看出,其实不baked话也是有

[WebGL入门]十九,遮挡剔除和深度测试

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 多边形的外侧,内侧和遮挡剔除 上次介绍了索引缓存,以及使用IBO来绘图,使用索引缓存可以循环利用重复的顶点,能够提高绘图效率.这之后的文章,如果没有特殊的原因的话,基本上都会使用索引缓存,通过drawElements来绘图.这次来说一下遮挡剔除和深度测试,这是两个重要

Unity之一天一个技术点(四)---遮挡剔除

遮挡剔除 http://game.ceeger.com/Manual/OcclusionCulling.html 可以有效减少drawCall 摄像机看不到的地方会自动消失.只渲染摄像机能看到的对象. 这篇讲解的已经很清楚了,而且经测试无误. 在我显示90多drawCall的时候,使用遮挡剔除可以有效减少至80左右,还是有一定效果的~ 欢迎大家跟我交流学习~共同进步~

Unity里面的自动寻路(二)

接着我的 上一篇自动寻路文章,这一次我们就来学习一下与自动寻路有关的组件吧.Unity中与自动寻路相关的组件主要有两个:NavMeshAgent (  又称导航网格代理 ),Off Mesh Link( 分离网格链接 ).这两个组件的作用与使用范围是不同的,我们唯一可以确定的是我们必须烘焙地形,产生NavMesh(导航网格).因为导航网格决定我们的角色(带有导航网格代理的角色)活动的范围.NavMeshAgent组件需要附着寻路的角色身上,比如怪物,而OffMeshLink这个组件主要是用来构造

我不是九爷 带了解 Unity3D与VR虚拟现实

对于大多数人来说,可能不知道Unity3D是什么,但是却知道VR虚拟现实是什么,更不会把VR虚拟现实和Unity3D联系在一起,外行的人根本不知道这两者之间有什么关系.那么,今天来给你讲解一下Unity3D与VR虚拟现实之间的区别和联系分别是什么? 什么是Unity3D?Unity3D是一软专业3D游戏引攀,其具备跨平台发布.离效能优化.高性价比,AAA级游戏画面演染效果等特点.目前Unity3D应用范围广泛,从手机游戏到联网的大型游戏,从严肃游戏到电子商务,再到VR虚拟现实均可完美呈现. 什么

Unity3D for VR 学习(8): Unity Shader概述

从西安到北京高铁上,一位VR老外团队的华人leader对VR技术做了画龙点睛: “3D游戏的核心部分在Render, 国内很多团队美术.程序中间缺失严重.所以3d游戏做不好. VR这块更是至关重要.” 故,欲VR,先Shader吧. 1 CG规范: 计算机图形学(英语:computer graphics) 在Windows下图像渲染是DirectX: 在Linux下图形渲染是OpenGL:在苹果下新出的Metal渲染.而作为Unity3D程序,跨平台的特性则无须对这些平台一一掌握,仅需要从CG规

Unity3D用户手册

Welcome to Unity. 欢迎使用Unity. Unity is made to empower users to create the best interactive entertainment or multimedia experience that they can. This manual is designed to help you learn how to use Unity, from basic to advanced techniques. It can be

【整理】unity3d优化总结篇

对项目优化有很多,如:mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,现在继续补上,该内容为本人经验以及网上收集整理,希望大家有更好的优化方法,能够继续跟帖,一起探讨,共同进步. 优化: 1. 更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式, 2. 对于透明贴图,我们只能选择RGBA 16bit 或者RGBA 32bit. 3. 减少FPS,在ProjectSe