IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UNITY零基础学习 month1 day5 -> 正文阅读

[游戏开发]UNITY零基础学习 month1 day5

练习:制作一个小地图

Ctrl+Shift+F可以快速地将选中的物体固定到当前scene中你的视角的位置

当场景中有两个摄像机时,会报错存在多个音频接收器,所以我们这里要将mapCamera的音频接收器删去

一般来说,小地图的显示为2D,在部分情况下3D的地图可能会造成一些问题

新建一个Plane作为人物的标记在小地图中显示,换个醒目的颜色以便于其他物体区分

新建两个图层,一个放置Player,一个放置标记
Player图层不在mapCamera中展现
标记图层在main Camera中展现
结果
正常开发过程中,小地图不会这么做,会直接找美工要一张地图,然后只保留美工给的地图和人物的标记,深度高的摄像机将Clear Flags的值改为DepthOnly就可以把留白部分去掉了

InstantOC

渲染管线(重点)

图形数据在GPU上经过运算处理,最后输出到屏幕的过程
渲染管线
绘图调用Draw Call:每次引擎准备数据并通知GPU的过程。通俗讲,每帧调用显卡渲染物体的次数
在states中可查看当前场景的Draw Call,在没有光照的情况下,一个物体需要一个Draw Call

CPU选择哪些物体需要渲染,以及收集这些物体的相应数据

顶点处理

  • 接收模型顶点的数据
  • 坐标系转换

图元装配

组装面:连接相邻的顶点,绘制为三角面

光栅化

计算三角面上的像素,并为后面着色阶段提供合理的插值参数

像素处理

将每个像素区域进行着色
写入到缓存之中

缓存

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

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

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

Occlusion Culling

即时遮挡剔除

  • 即时遮挡剔除Instant Occlusion Culling
  • 遮挡剔除:当物体被送进渲染流水线之后,将摄像机视角内看不到的物体进行剔除,从而减少了每帧渲染数据量,提高渲染性能

在unity的资源商店搜索InstantOC,可以找到这个插件,导入后会报错,因为这是旧版本的插件,GUITexture这个类库已经在新版本的untiy中被删去了,所以需要将它修改
修改方法<–

WebPlayer已过时修改方法

即时遮挡剔除的原理就是在显示物体之前,提前通过发射射线来判断这条直线上是否有物体,以及第一个物体是谁,来判断是否显示这个物体,若这个物体被离摄像机近的物体遮挡了,则不显示。

射线检测的并不是Mesh Filed,也不是Mesh render,而是碰撞体积Box Collider,所以没有碰撞体积的物体,在运行时不会显示。因为物体本身可能会有很多点、很多面组成,若一个个面检测过去效率较低,碰撞体积只由6个面组成,所以检测效率高。

步骤

  1. 在Asset Store中找到并下载该插件
  2. 导入插件
  3. 在project中找到插件
  4. 将IOCcam拖入摄像机即可
  5. 创建专门检测的层
  6. 为游戏物体指定层(将参与遮挡剔除)与标签(将自动附加IOClod脚本)
  7. 可以在检视器中调整各个数值,具体详见下面的属性
  8. 所有想要检测的物体都要加上Box Collider组件

属性

  • Layer Mask:参与遮挡剔除的游戏对象层
  • IOC Tag:将为指定标签的游戏对象自动添加IOCod脚本对象
  • Samples:每帧摄像机发射的射线数目。数量多剔除效果好,但性能开销大。通常在150~500之间
  • Rays FOV:射线视野,应大于摄像机视野Field of View
  • View Distance:视图距离,射线长度。
    将影响摄像机Clipping Planes -Far熟知
  • Hide Delay:延迟隐藏,当物体被剔除时延迟的帧数,建议在50~100之间。可以理解为射线在设置的帧数里没射到的物体就认为是被隐藏的
  • PreCull Check:检查采集信息,建议勾选,看以提高剔除效率
  • Realtime Shadows:实时阴影,如果场景需要实时阴影,建议启用,确保剔除物体显示正常的阴影

优缺点、应用

优点:减少渲染量,提高渲染性能
缺点:判断物体是否被遮挡,CPU会有额外开销

应用:场景中物体分布较密集,较多物体被遮挡的情况比较适用

LOD

多细节层次

多细节层次Levels of Detail

LOD技术指根据物体模型的结点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算

可以通过查看Batches、Tris(面数)、Verts(顶点数)来判断优化程度

步骤

  1. 创建一个父物体重置位置,将三个模型精度不一样的子物体拖入其中,为他们创建层,标签和碰撞检测器
  2. 为摄像机添加InstantOC插件,里面数值调教与上面差不多,要多改一个LOD 1 distance和LOD 2 distance
  3. 将三个子物体的名字分别改为Lod_0,Lod_1,Lod_2,这里必须这么改,否则插件不会识别物体,碰撞体积设置将三个物体包裹其中
  4. 设置摄像机与碰撞箱的位置,点击运行即可展现效果,摄像机与碰撞箱的距离与设置的LOD distance作比较,从而得出在运行时只渲染哪个模型,得到优化的效果

属性

LOD 1 distance、LOD 2 distance:在不同距离时,使用不同精度的模型

优缺点

优点:
缺点:内存占用较大、CPU要提前运算,占用变高、美工工作量变大

应用场景:场景存在高精度模型,且该模型会有远近变化

性能优化

三方面:CPU、渲染、内存占用较多
Windows中有个Profiler(分析器)可以查看性能优化如何

其中CPU可以查看哪个脚本的运行效率,CPU使用率
渲染可以查看Draw Call、顶点数、面数等等
内存一般不是很准,一般用发布平台的检测器来判断

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:24:41  更:2021-08-07 12:25:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 1:09:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码