一、了解图形渲染原理
二、平衡 cpu gpu 的性能消耗。
三、编写炫酷特效。
四、高薪必备。
Opengl渲染流程:
CPU:FBX - Meshrender (FBX通过Meshrender渲染出来)
FBX(模型文件): 包含 uv 顶点位置信息 法线 切线等渲染所需要的信息。
MeshRender: 将这些信息 传递给GPU;skin mesh render / mesh render mesh filter
skin mesh render: 带有蒙皮的骨骼。
mesh render mesh filter: mesh render主要将 顶点等信息传递给gpu。
mesh filter 表示 将那个模型的信息传递给gpu。
GPU:
渲染管线(道)流程:
顶点着色器 - 光栅化 - 片段着色器 - alpha测试 - 模板测试 - 深度测试 - blend - Gbuffer - frontBufffer - frame Brffer - 显示器
GPU管道流水线的大致流程:
流程步骤详细分析:
顶点着色器:
1. 计算顶点的颜色。
2. 将物体坐标系 转换到 相机坐标系。
光栅化:
将顶点 转换成 像素。
比如由4个顶点组成一个正方形的平面。中间部分用插值补充。
顶点4个 到了 片段着色器 100*100
结论:
顶点着色器 会运行 4次 片段着色器 会运行 10000次。
顶点着色器 和 片段着色器 运算次数不是一个量级。
能把运算 放在顶点着色器 的就放在这里。
片段着色器:(到达此步骤时,顶点已经是像素点了。像素: 由RGBA 4通道组成。)
1. 纹理采样 : 从纹理像素 赋值给 像素。(一张图片纹理像素 赋值给 这个100*100的像素)
2. 像素 跟 灯光计算。
Alpha 测试:挑选合格的 Alpha 像素显示。(满足Alpha的选出来显示,不符合的丢掉不显示)
模板 测试: 像素 还可以携带 模板 信息。(达到条件的模板值显示,否则丢弃)
深度 测试: 符合条件的像素就显示 否则 就不显示。
三个测试总结: 达到三个条件测试的就显示,否则不显示。
Blend: 将 当前要渲染的 像素 和 已经渲染出来的像素 进行 混合运算。
GBuffer:RGBA 模板值 深度值等。(通过测试的会记录到GBuffer里)
Buffer: 缓存区
Front Buffer:float[720*11280] (只写入GBuffer的RGBA , GBuffer大于 FrontBuffer 和 FrameBuffer) 写入后会推到显示器显示
Frame Buffer: float[720*11280]
写入后会推到显示器显示
GBuffer、FrontBuffer、FrameBuffer运行流程:
GBuffer选出来的像素,FrontBuffer只写入GBuffer的RGBA,推到显示器显示,之后退到后台变为FrameBuffer;
FrameBuffer同样也会只写入GBuffer的RGBA,推到显示器显示,之后退到后台变为FrontBuffer。如此交替显示,一帧一帧渲染显示,有了动画。