Imagination GPU 3D Graphics Wrokload
本次分享Imagination GPU 的3D 图像处理负载流程。
总的分为两个阶段
第一阶段:Geometry Processing Phase(几何处理阶段)是渲染管线中的一个关键环节,主要负责对三维几何数据进行处理和变换,以便后续在屏幕上进行显示。
1.Input Assembly 输入装配。读取原始图元
2.Vertex Shading 顶点着色。对单个顶点输入运行shader
3.Geometry Shading 几何着色。对所有原始数据(点,线,三角形)进行着色
4.ViewPort Transformation 视角转换。用于将标准化设备坐标映射到屏幕或窗口的实际像素坐标
5.Perspective Divide 透视除法。将3D物体投影到2D屏幕。越远的物体看起来越小。
6.Early Primitive culling 早期图元删除。删除不可见图元
7.Cliping 裁剪。对于处于视窗边界的图元裁剪成多个图元
8.Stream Out 流输出。将几何处理的结果了连续输出
9.Generate Tiled Display Lists 生成块显示列表。
第二阶段:Fragment Processing Phase(片段处理阶段) 是图形渲染管线(Graphics Rendering Pipeline)中的一个关键阶段,主要负责处理光栅化后的片段(Fragment),最终生成像素颜色并写入帧缓冲区(Framebuffer)。
1. Fetch Tiled Display List 获取块显示列表。
2.Fetch Geometry Data 获取几何数据。读取顶点数据
3.Depth Biasing 深度偏置。这是由于浮点数精度限制导致两个或多个图元在深度值上过于接近,从而在渲染时产生闪烁或不稳定的现象。为了解决这个问题,可以使用 Z-bias(深度偏移) 技术。
4.Rasterisation 光栅化。给像素着色器提供图元并且确定如何调用着色器。
5.Hidden Surface Removal 隐藏表面消除。用于确定在三维场景中哪些物体或物体部分是可见的,哪些被其他物体遮挡而不可见。其目的是确保最终渲染的图像中只显示可见的表面,从而避免视觉错误。
6.Depth Test and Stencil Test 深度测试和模板测试。决定是否渲染该片段。
-
深度测试:基于深度值决定片段是否可见,用于处理遮挡关系。
-
模板测试:基于模板值决定片段是否保留,用于实现遮罩、描边等效果。
7.Texture Fetch 纹理获取。采样像素着色需要的纹理数据。纹理采样是图形渲染中的核心操作,用于从纹理中获取数据并应用到渲染的物体表面。通过合理使用纹理采样技术,可以实现丰富的视觉效果和高效的渲染性能。
8.Pixel shading 像素着色。
9.Colour Bending 颜色混合。混合一个或者多个像素形成最终的像素