• 作者:老汪软件技巧
  • 发表时间:2024-09-19 15:01
  • 浏览量:

前言

今天我们将深入学习 WebGL 的渲染管线。通过这一过程,你将了解图形从数据到最终呈现的完整路径。话不多说,直接开始吧!

渲染管线的流程1. 顶点处理

这一步主要做了两件事:几何变换和数据传递。

对所有顶点进行坐标变换:将顶点从模型空间经过一系列变换(模型矩阵、视图矩阵、法线矩阵等)转换到裁剪空间。法向量变换:对法线进行相应的变换,用于后续的光照计算。传递纹理和光照信息:将纹理坐标、颜色信息等顶点属性传递给片元着色器。

这一步中有两个需要特别注意的点:1. 顶点变换 2. 矩阵变换

顶点变换

模型坐标—>世界坐标—>视图坐标—>裁剪坐标。

这些坐标是如何由一个坐标转换为另一个坐标的呢?————矩阵!!!

矩阵变换

参与变换的矩阵有:模型矩阵,视图矩阵,投影矩阵。

_渲染管线应用阶段_渲染管线的三个主要阶段

注意:

在着色器中,你不需要定义矩阵的具体内容,只需要声明 uniform 变量。矩阵的实际数据需要在 WebGL 的 JavaScript 代码中计算并传递给着色器。2. 图元装配

图片装配主要是干的一件事:就是把确定位置之后的顶点,按照用户所期望的(点,线,面)的方式连接起来,中间还掺杂着背面剔除,超出视锥体范围剔除等一系列优化性能操作。

3.光栅化

这步主要是将:图元————>像素(片元)

4. 片元着色

该步主要进行的操作是:逐片元执行片元着色器中定义的操作。

5. 深度测试

深度测试的主要任务是比较每个片元的深度值,决定该片元是否可见。具体来说,它检查片元是否位于已渲染内容的前面或后面,如果在前面,就更新显示,否则丢弃片元。

6. 帧缓冲

将经过以上一系列处理的数据放入帧缓冲区中。渲染到屏幕上

总结

以上就是关于 WebGL 渲染管线的全部内容。如果有任何错误或不足之处,欢迎大家留言指正,感谢大家的阅读与支持!