- 作者:老汪软件技巧
- 发表时间:2024-09-19 15:01
- 浏览量:
前言
今天我们将深入学习 WebGL 的渲染管线。通过这一过程,你将了解图形从数据到最终呈现的完整路径。话不多说,直接开始吧!
渲染管线的流程1. 顶点处理
这一步主要做了两件事:几何变换和数据传递。
对所有顶点进行坐标变换:将顶点从模型空间经过一系列变换(模型矩阵、视图矩阵、法线矩阵等)转换到裁剪空间。法向量变换:对法线进行相应的变换,用于后续的光照计算。传递纹理和光照信息:将纹理坐标、颜色信息等顶点属性传递给片元着色器。
这一步中有两个需要特别注意的点:1. 顶点变换 2. 矩阵变换
顶点变换
模型坐标—>世界坐标—>视图坐标—>裁剪坐标。
这些坐标是如何由一个坐标转换为另一个坐标的呢?————矩阵!!!
矩阵变换
参与变换的矩阵有:模型矩阵,视图矩阵,投影矩阵。
注意:
在着色器中,你不需要定义矩阵的具体内容,只需要声明 uniform 变量。矩阵的实际数据需要在 WebGL 的 JavaScript 代码中计算并传递给着色器。2. 图元装配
图片装配主要是干的一件事:就是把确定位置之后的顶点,按照用户所期望的(点,线,面)的方式连接起来,中间还掺杂着背面剔除,超出视锥体范围剔除等一系列优化性能操作。
3.光栅化
这步主要是将:图元————>像素(片元)
4. 片元着色
该步主要进行的操作是:逐片元执行片元着色器中定义的操作。
5. 深度测试
深度测试的主要任务是比较每个片元的深度值,决定该片元是否可见。具体来说,它检查片元是否位于已渲染内容的前面或后面,如果在前面,就更新显示,否则丢弃片元。
6. 帧缓冲
将经过以上一系列处理的数据放入帧缓冲区中。渲染到屏幕上
总结
以上就是关于 WebGL 渲染管线的全部内容。如果有任何错误或不足之处,欢迎大家留言指正,感谢大家的阅读与支持!