图形 1.1 渲染流水线
整体流程
1、应用阶段 Application
2、几何阶段 Geometry Processing
3、光栅化阶段 Rasterization
4、逐片元操作 Pixel Processing
5、后处理
1、应用阶段
CPU上,由应用程序驱动
1、准备场景中的基本数据
场景物体数据: 物体变换数据、物体网格数据
摄像机数据: 位置、方向、远近裁剪平面、正交/透视(FOV)、视口比例/尺寸
光源及阴影数据:设置光源、设置阴影、逐光源绘制阴影贴图
其他全局数据
2、加速算法,粗粒度剔除
碰撞检测
加速算法
遮挡剔除: 可见光裁剪、可见场景物体裁剪:八叉树、BSP树、K-D树、BVH
其他算法
3、设置渲染状态,准备渲染参数
绘制设置: 使用着色器、合批方式
绘制物体的顺序: 相对摄像机的距离、材质RenderQueue、UICanvas、其他方式等
渲染目标(输出到哪):FrameBuffer、RenderTexture
渲染模式: 前向渲染、延迟渲染
4、调用 Drawcall,输出渲染图元到显存
顶点数据
其他数据
2、几何阶段
GPU
1、顶点着色器 Vertex Shading (可编程)
2、曲面细分(可选)
3、几何着色器(可选)
4、投影 Projection
5、裁剪 Clipping
6、屏幕映射 Screen Mapping
3、光栅化阶段
GPU
三角形设置 Triangle Setup
三角形遍历 Triangle Traversal
抗锯齿(MSAA):SSAA、MSAA、FXAA/TXAA
4、逐片元操作
GPU
1、片元着色 Fragment Shader
2、颜色混合 Color Blending
透明度测试 Alpha test
模板测试 stencil test
深度测试 depth test
混合 blending
3、目标缓冲区 FrameBuffer