从FrameDebugger看Unity渲染
从FrameDebugger看Unity渲染(一)
Unity如何渲染一个3D+2D的游戏画面,今天通过FrameDebugger来看下Unity内置渲染管线的渲染策略, 后续再出一些URP渲染管线相关的文章。
对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。
Unity 渲染场景的几个主要部分
Unity内置渲染管线是基于摄像机来进行渲染的,每个摄像机按照摄像机的渲染顺序来依次渲染,渲染完一个摄像机,再渲染下一个摄像机。对于UI 2D而言,相当于也是一个独立的UI摄像机,还有一种特殊的OnGUI会绘制2D GUI物体,走的是GUI Paint。如图所示 FrameDegbuger 最外层的截图如下:
FrameDebugger显示渲染有3个部分,第一个是Camera.Render, 表示的是基于场景中的摄像机引起的渲染。第二部分UGUI.Rendering.RenderOverlays,表示的UGUI中2DUI引起的渲染。第三部分GUI.Repaint, 表示的是OnGUI引发的2D UI物体渲染; 如果你的项目中没有OnGUI的渲染物体,FrameDebugger中就不会有相关的显示。第一部分Camera.Render里面有每个摄像机按照摄像机的渲染顺序依次次排列下来。如图所示,目前场景中有两个摄像机,FrameDebugger按照摄像机的渲染顺序一次排列下来。
Unity 摄像机渲染处理哪些事情?
如上图所示,每个摄像机有3个部分,第1部分UpdateDepthTexture是处理阴影投影相关。如果整个场景中没有实时的阴影投影,就不会有这一部分。第2部分Drawing是具体的绘制物体相关, 第3部分Camera.ImageEffects相关是摄像机的后期处理相关。展开 UpdateDepthTexture, 分为了Clear与DepthPass.Job两个部分,如图所示:
Clear是清理, DepthPass.Job详细的记录里面哪些物体做了ShadowCaster Pass。展开Drawing部分, FrameDebugger根据场景中涉及到的渲染队列,一次进行渲染,如下图所示,首先是Render.Opaque渲染队列,随后是Render.Transparent渲染队列。
Unity 摄像机范围外的物体不会被渲染
FrameDebugger中详细的显示了在当前帧中Unity实际渲染了哪些物体。在摄像机范围内的物体会被Unity渲染,不在摄像机范围内的物体,是不会被摄像机渲染的。渲染物体时,还会做阴影计算,从阴影纹理里面获取阴影数据。
当前帧中在当前摄像机下渲染了哪些物体,都能通过FrameDebugger看清楚。点击FrameDebugger中的每个渲染物体,就能对应到场景中的具体的物体。
被渲染物体的详细信息
最后Unity渲染每个物体的时候,我们能够看到渲染时候的详细信息,如图所示:
Event #554: 第554次绘制事件;
Shader: 渲染这个物体采用的是哪个Shader的哪个SubShader;
Blend: 着色到目标的颜色混合规则;
ZClip: 开启片元深度检测模式,如果一个片元在near与far的外面就会被丢弃;
ZTest:深度测试的规则,根据通过深度测试的才会被渲染;
ZWrite: 是否将当前片元的深度信息写入深度缓存;
Cull: 裁剪剔除的模式,有back, front, none三种模式,分别是裁剪剔除掉背对摄像机的面,裁剪提出掉真对摄像机的面和不裁剪剔除。
Why Drawcall cannot be batched?:不能合批的原因描述;
ShaderProperties: CPU传递给GPU的数据的详细信息;
今天的FrameDebugger与渲染的分享就到这里了,关注我们,获取更多的渲染优化相关的教程与知识。
从FrameDebugger看Unity渲染相关推荐
- 【流程向】模型复原与Unity渲染
项目简述 简单记录下学校里的一个项目,涉及到对/何家村遗宝/的模型复原,记录一下模型制作的全流程,同时涉及到Unity中一些优化画面的技术点.项目中渲染效果优先,没有怎么考虑性能. 流程:Blende ...
- Unity渲染教程(九):复杂材质 https://www.jianshu.com/p/5e3af869870f
Unity渲染教程(九):复杂材质 https://www.jianshu.com/p/5e3af869870f 同样的着色器,不同的贴图 用户界面 到目前为止,我们一直都为我们的材质使用Unity默 ...
- Unity 渲染 YUV
YUV和RGB一样,是另一套用来表达颜色的方案.其详细叙述请参阅 YUV的维基.本篇着重讲解如何使用Unity来渲染YUV形式的数据视频或图片.对此,你需要了解以下知识: YUV的数据格式 YUV转换 ...
- Unity渲染顺序解析
Unity渲染顺序 Unity引擎中影响渲染顺序的因素有: Camera Depth 透明.不透明物体分隔 同一个相机下 Sorting Layer Order In Layer RenderQueu ...
- Unity渲染流程(渲染管线)(渲染流水线)
Unity渲染流程(渲染管线)(渲染流水线) 一 渲染的任务 二 三个概念阶段 三 应用阶段 1 准备好需要被渲染的场景数据,做粗粒度剔除 2 设置每个对象的渲染状态. 3 发送DrawCall. 四 ...
- Unity 渲染流水线 :CPU与GPU合作创造的艺术wfd
前言 购优惠 www.fenfaw.cn 对于Unity渲染流程的理解可以帮助我们更好对Unity场景进行性能消耗的分析,进而更好的提升场景渲染的效率,最后提升游戏整体的性能表现 Unity的游戏画面 ...
- 从前端角度看网页渲染慢的原理及解决方案
从前端角度看网页渲染慢的原理及解决方案 参考文章: (1)从前端角度看网页渲染慢的原理及解决方案 (2)https://www.cnblogs.com/joyho/articles/4455893.h ...
- unity渲染层级关系小结
http://blog.csdn.net/meegomeego/article/details/42060389 最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这 ...
- Unity基础笔记(5)—— Unity渲染基础与动画系统
Unity渲染基础与动画系统 Unity渲染基础 一.摄像机 1. 摄像机概念 和现实中的摄像机很接近,Unity 中 Camera 组件负责将游戏画面拍摄然后投放到画面上 Camera 拍摄到的画面 ...
最新文章
- ea连接远程oracle报错,PLSQL Developer日期格式如何定制化
- 扩展方法略好于帮助方法
- 开发日志_Jan.8.2017
- c语言加法结合性,C语言 运算符 的结合性 怎么理解?求举例子详细解答!!
- 推荐40个优秀的免费CSS工具
- mysql查询2个isbn数据,数据库实验二 数据查询
- 华为Mate40系列或10月15日发布:麒麟9000+66W双向快充
- geotools 读取shp属性过滤_Flink进阶之使用布隆过滤器实现UV统计
- 恭迎万亿级营销(圈人)潇洒的迈入毫秒时代 - 万亿user_tags级实时推荐系统数据库设计...
- Open vSwitch实践——VLAN
- 自适应滤波器的FPGA实现
- oracle 中的or,oracle语句查询 or和and
- 墨天轮“高可用架构”干货文档分享(含Oracle、MySQL、PG资料124篇)
- app个人隐私合规检测内容
- 艾艾贴常用的数据类型转换
- js多重循环遍历渲染
- 三维空间的坐标变换及其应用
- Unity 3D模型展示之拖拽
- matlab 向量_Matlab:向量点积和叉积及求模
- 医疗图像论文笔记三:《HEp-2 Specimen Image Segmentation and Classification Using Very Deep Fully Convolutional》