UWA渲染篇_概念(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34696203/article/details/89634792

Mono:unity的跨平台技术是基于Mono的,有点类似于java的虚拟机的概念,所以游戏中的内存管理也还是由Mono进行分配管理的

FPS:流畅度说明,通常情况下是多少帧/s的数值。关于获取这个数值有些坑,通常来说通过ADB来获取游戏的运行时FPS是不准确的,而且很难不影响游戏的性能开销,推荐一种做法是在updata里做个计时器,秒为周期。输出每秒的帧率。也就是1秒内运行看了多少次update;(unity的做法)

Unity Statistics

Statistics是unity的渲染统计窗口,有游戏的很多统计信息

FPS:每秒传输帧数(Frames Per Second),表示引擎渲染一个游戏帧所需要的时间,主要受到场景中渲染物体数量和GPU性能的影响,游戏画面每秒帧数至少要保证在30以上,后面括号中的数值是指处理一帧需要的时间
CPU:获取到当前占用CPU进行计算的时间绝对值,和时间点。如果主进程处于挂断或休眠的状态时,CPU time将会保持不变
Render thread:GPU渲染线程处理图像所花费的时间,具体数值由GPU的性能决定
Batches:是Unity内置的Draw Call Batching技术。引擎每对一个物体进行一次DrawCall,就会产生一个Batch,Batch中包含了该物体的所有网格和顶点数据。当渲染另一个相同的物体时,引擎会直接调用Batch里的信息,将相关的顶点数据直接送到GPU,从而让渲染过程更加高效,即Batching技术是将所有材质相近的物体进行合并渲染。
Tris、Verts:指摄像机视野范围内的三角面数量和顶点数量,即Camera中的fieldOfView所有取值下的Tris和Verts,即使在game视图中看不到,但只要在这个范围内,都会被渲染。而且哪怕某个模型上只有一个顶点在范围内,整个模型都要被渲染出来
Screen:表示当前屏幕分辨率的大小,后面的值表示总内存的使用数值
Setpass Calls:每当GPU运行一个Pass之前,就会产生一个“SetPass Call”,可以用来描述渲染性能的开销
Shadow Casters:表示场景中有多少可以投射阴影的物体,一般这些物体都作为场景中的光源
Visible Skinned Meshed:渲染皮肤网格的数量
Animations:表示正在播放的动画数量
渲染流水线:

渲染流水线是由CPU和GPU共同来完成的

流程是:CPU----图形应用API-----显卡驱动-------GPU

概念上渲染流程分成3个阶段:应用程序阶段、几何阶段、光栅化阶段。其中每个阶段又包含多个子流水线阶段。

  • 应用程序阶段
  • 这个阶段主要有以下3个任务:
    • 准备好场景数据:如场景物件、光源和相机等。
    • 设置渲染状态:材质系数、使用的纹理等。
    • 调用DrawCall:当渲染相关的一切数据和状态都准备好之后,将这些信息输出到下一阶段开始进行绘制。
  • 几何阶段
  • 几何阶段是在GPU中进行的,负责对渲染图元进行逐顶点、逐图元处理。这一过程的主要任务是将顶点坐标变换到裁剪空间中,然后交给下个阶段进行光栅化处理。这个阶段对几何顶点数据处理后会输出其屏幕空间坐标、对应的深度值,还可能有其他额外信息如UV纹理坐标、法线方向、观察方向等。
  • 光栅化阶段
  • 光栅化阶段是在GPU中进行的,输入为几何阶段输出的逐顶点数据,根据这些数据输出并渲染最终的图像。这一阶段的主要任务是决定渲染图元覆盖了屏幕上的哪些区域并需要绘制到屏幕上,然后它会根据上一阶段输出的逐顶点数据对需要绘制的区域进行逐顶点处理。
  •  

猜你喜欢

转载自blog.csdn.net/qq_34696203/article/details/89634792