美文网首页
渲染流程

渲染流程

作者: 叫我颜先生 | 来源:发表于2022-03-02 18:23 被阅读0次

cpu阶段

  1. 数据从内存加载到显存:

    • 模型:Mesh、Shader、材质等
    • 摄像机:位置、视锥体、朝向
    • 光源:位置、类型参数等
  2. 设置渲染状态:

    • 即场景中的网格如何被渲染,包括使用哪个顶点着色器、片源着色器、材质、光源属性等
    • 对于渲染状态相同的网格,会一起渲染;对于状态不同的网格,会再次设置新的渲染状态
  3. 调用DrawCall,绘制Mesh:

    • 设置渲染状态,相同的网格一起渲染,再次设置新渲染状态,符合的再次进行渲染,依次类推
    • renderstate drawA drawB renderstate drawC renderstate drawD ...
    • Unity中,每次引擎准备数据通知GPU的过程就是一次DrawCall,这一个过程是逐个物体进行的
    • DrawCall Batching:主要目标就是一次DrawCall处理多个物体,而不是一个。核心在于会检查所有要绘制的物体的材质,将相同材质的分为一组(一个Batch),然后将他们组合成一个物体(统一变换)
    • DrawCall Batching缺点:
      • 相当于组合创建了一个超大物体,相应的需要分配更大内存和apu计算时间
      • 对于静止物体组合一次就可以一直使用,对于运动物体,每一帧都得重新组合,反而更消耗性能
    • 现代cpu中,一味减少drawcall并不一定可以让帧数变高,移动设备才更需要注意

gpu阶段

  1. 几何阶段:MVP变换
    1. M变换:模型变换,模型坐标转变为世界空间坐标
    2. V变换:视图变换,世界空间坐标转变为视图空间坐标(视图坐标,即相机标准位置0,看向Z方向,向上方向为Y轴)
    3. 顶点着色器Shader:输入变换矩阵、顶点属性等
    4. P变换:投影变换(裁剪变换),正交投影或者透视投影,视图空间坐标转变为齐次裁剪空间,也就hi转变为相对于视锥体中心的坐标,方便进行裁剪
    5. 裁剪:视锥剔除、视口裁剪,将不在视口中物体丢弃,部分在的物体进行多边形裁剪生成新的多边形
      • 视锥剔除:在cpu阶段运行,通过AABB盒、OBB盒与视锥体进行碰撞检测,剔除完全不可见的物体,精度较低
      • 视口裁剪:将视口之外的物体丢弃,部分在内部的物体进行裁剪,生成多边形,也就是裁剪生成新的顶点再次渲染
      • 背面剔除:在顶点着色器和片元着色器之间运行,根据图片朝向相机进行判断是否需要剔除
      • 遮挡剔除:主要用于静态物体多的场景
    6. 屏幕映射:三维空间坐标转变为屏幕坐标(齐次裁剪坐标映射到屏幕坐标)
    7. 三角形设置:屏幕坐标顶点生成对应三角形
  2. 光栅化阶段:
    1. 光栅化处理:采样成像素,计算三角形网格内的覆盖的像素点
    2. 片元着色器:(像素着色器)逐像素进行着色(将三角形按照重心,插值的方式将颜色、位置、法线等等赋给像素点)
    3. 将像素的结果写入颜色缓冲区
    4. 帧缓冲器:显卡中硬件实现,用于存放最终渲染结果,为了避免我们看到正在光栅化的图形,GPU一般使用双重缓冲,一个用于前面显示,另一个用于后面渲染,这样保证图像时连续的

相关文章

  • 四、离屏渲染

    离屏渲染与正常渲染 屏幕上最终显示的数据有两种加载流程 正常渲染加载流程 离屏渲染加载流程离屏渲染与正常渲染 常⻅...

  • 浅谈 GPU 及 “App渲染流程”

    浅谈 GPU 及 “App渲染流程”浅谈 GPU 及 “App渲染流程”

  • 000_开篇词

    宏观视角下的浏览器 Chrome架构 TCP协议 HTTP请求流程 导航流程 渲染流程(上) 渲染流程(下) 浏览...

  • iOS深入剖析【离屏渲染】原理

    离屏渲染与正常渲染 屏幕上最终显示的数据有两种加载流程 正常渲染加载流程 离屏渲染加载流程 从图上看,他们之间的区...

  • OpenGL渲染流程

    OpenGL渲染流程 渲染框架 之前学习管线的时候,我们知道OpenGL的渲染流程是有固定次序的。那么先了解下渲染...

  • OSG3.4内置Examples解析【目录】

    opengl渲染管线 从整体上解读OpenGL的渲染流程 一 从整体上解读OpenGL的渲染流程 二 osg与an...

  • iOS 离屏渲染

    硬件渲染流程 每帧的渲染 view的三层layerlabel只用2层 图片渲染流程 [图片上传中...(image...

  • 渲染流程

    cpu和gpu数据流

  • 渲染流程

    cpu阶段 数据从内存加载到显存:模型:Mesh、Shader、材质等摄像机:位置、视锥体、朝向光源:位置、类型参...

  • 基础知识:浏览器的渲染

    渲染流程 渲染流程有四个主要步骤: 解析HTML生成DOM树: 渲染引擎首先解析HTML文档,生成DOM树 构建...

网友评论

      本文标题:渲染流程

      本文链接:https://www.haomeiwen.com/subject/crzsrrtx.html