渲染流程概述

渲染流程包括 CPU应用程序端渲染逻辑 和 GPU渲染管线

一、CPU应用程序端渲染逻辑

  1. 剔除操作
  2. 对物体进行渲染排序
  3. 打包数据
  4. 调用Shader SetPassCall 和 Drawcall

1.剔除操作

  • 视椎体剔除

    (给物体一个包围盒,利用包围盒和摄像机的视椎体进行碰撞检测,在视椎体外的物体被剔除)

       

  • 层级剔除

      (给物体设置层级标识,利用层级剔除物体)

       

  • 遮挡剔除

     (被遮挡的物体将不会显示渲染在屏幕中)

2.排序操作

  • 渲染队列     (先渲染不透明物体再渲染半透明物体)
  • 不透明队列  (从前到后渲染)
  • 半透明队列  (从后往前渲染)

3.打包视椎体内模型的数据

  • 模型信息 (顶点坐标、法线、UV、顶点颜色、索引列表等)
  • 变换矩阵
  • 灯光、材质参数

      ​​​

  比如一个正方体模型的信息:

      

4.提交数据到GPU端

  • SetPass Call   

      (设置渲染状态,告诉GPU端需要使用哪一个Shader/Pass、混合模式以及背面剔除的设置)

  • Draw Call     

      (CPU调用图像应用编程接口,来命令GPU进行渲染的操作)

引用自DrawCall、Batches、SetPassCalls的区别和联系_setpasscall draw call-优快云博客

二、GPU渲染

1.顶点Shader阶段

  •     将模型空间顶点转换到裁剪空间下

        (顶点Shader并不会产生2D图像,仅使得场景中的3D图像产生变形的效果)

转换步骤:

2.图元装配以及光栅化阶段

  • 裁剪操作(针对裁剪空间下内外模型的三角面而言,不会直接丢弃整个物体)
  • 将裁剪空间下的模型的顶点坐标转换为标准化设备坐标 (-1,1)
  • 模型的背面剔除
  • 将标准化的设备坐标中的(x,y)转换为屏幕坐标(x,y)

     (以上为对顶点的操作)

  • 图元装配阶段(将各个顶点连接形成封闭的三角图元)
  • 光栅化

3.片元Shader(上色)

  (1)纹理技术
  1. 纹理采样
  2. 纹理过滤机制
  3. Mipmap
  4. 纹理寻址模式
  5. 纹理压缩格式

          纹理过滤机制:

                   为了解决小图像映射到大块区域所产生的失真的情况(如下图锯齿效果)

           

         纹理过滤机制的原理

                   根据周围四个纹素点进行插值计算(双线性插值),生成比较柔和的图像效果

           


         Mipmap:(生成多级渐远贴图)

                   为了解决大图像映射到小块区域时引起图像失真的情况

                 (可以将高级别模糊的图像应用到远处或者小块的区域上)

           

 (2)光照计算
     光照组成

           直接光照、间接光照

     光照模型

            基本的光照框架=直接光漫反射+直接光镜面反射+间接光漫反射+间接光镜面反射

4.输出合并阶段

  • 通过片元Shader输出的数据(例如片元颜色、深度值等)
  • 进行相关的测试(Alpha测试、模版测试、深度测试等)

最后总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值