渲染管线理论总结

目录

前言

1.GPU渲染流程

2.图形渲染管线

2.1 渲染管线概览

2.2 总流程

2.3 应用阶段

2.4 几何阶段

2.5 光栅化阶段

2.6 逐片源阶段

2.7 后处理


前言

虽然已经用C语言实现了图形渲染管线的整套流程,但是对于一些理论还是不够熟悉,于是这里总结面试题方面的理论
 

1.GPU渲染流程

所有渲染,都是将数据从CPU传输到GPU的过程。

从GPU的视角来看渲染的话,非常简洁明了。对于程序整体框架来说大致分为如下的步骤:

应用程序调用图形API(opengl/dx12)。
API调用GPU 驱动程序。
GPU驱动程序负责将图形API函数转换为GPU可识别编码。
CPU将内存当中的Data传递至GPU。
此时GPU拥有数据与程序代码,就可以执行,并且将图像渲染至屏幕上。

å¾1 æ¬å¾å¨å¨å±è§åº¦å»ç渲ææµç¨çè¿è¡ã渲æçæ¬è´¨å°±æ¯å°CPUæ°æ®è½¬ç§»å°GPUè¿è¡è®¡ç®ã

2.图形渲染管线

2.1 渲染管线概览

å¾4

  • 应用程序阶段:运行在CPU上的阶段,一般用于输入操作处理、动画处理、事件处理等等。
  • 几何阶段:负责逐个顶点以及逐个图元的操作。
  • 光栅化:以变换化过经过投影的顶点与着色信息为基础,逐个像素进行绘制的操作。将屏幕当中的2D Point转换到屏幕上的像素。

2.2 总流程


应用阶段 ——> 几何阶段 ——> 光栅化阶段 ——> 逐片源阶段 ——> 后处理


2.3 应用阶段


设置场景基本数据:收集模型的大小,位置和旋转信息、光源类型和光照信息、摄像机参数
粗粒度剔除和算法加速:剔除不需要发给几何阶段的物体信息 例:视椎体剔除和遮挡剔除
设置渲染状态,准备渲染参数:渲染类型是从后往前还是从前往后等
调用Draw Call:CPU通知GPU可以开始渲染

2.4 几何阶段

1、顶点数据的输入

2、顶点着色器(世界变换矩阵)

    顶点变换:模型坐标系 ——> 世界坐标系 ——> 观察坐标系 ——> 投影坐标系 俗称:MVP矩阵

    顶点着色:计算顶点光照等数据 并设置顶点颜色

3、曲面细分(将三角形分成多个三角形,可选)

4、几何着色器(将点分成线或多边形 可选)

5、图元组装

    投影:根据摄像机类型(正交或透视)转化到归一化的设备坐标

    裁剪:超出屏幕不用渲染

    剔除:背面的点不用渲染

    屏幕映射:从-1到1的投影坐标系,映射到正式的屏幕的坐标位置

2.5 光栅化阶段

6、光栅化

通过插值方法计算片段的颜色信息 

2.6 逐片源阶段

7、片段着色器  决定屏幕最终颜色,实现逐个片元的着色操作

8、混合及测试

  • 透明度测试
  • 模板测试和深度测试
  • 将通过测试的片元与颜色缓冲区的颜色混合

9、输出到目标缓冲区:可能是帧缓冲区( FrameBuffer) 或者渲染贴图 (RenderTexture)

2.7 后处理

  • 各种屏幕上的效果:景深,bloom,高斯模糊等

猜你喜欢

转载自blog.csdn.net/qq_41286356/article/details/118069706