初始 WebGL | 青训营笔记

97 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天

一、初始WebGL

1. Why WebGL / Why GPU?

  • WebGL是什么?

    • GPU ≠ WebGL ≠ 3D
  • WebGL 为什么不像其他前端技术那么简单?

2. Modern Graphics System

概念

  • 光栅(Raster):几乎所有的现代图形系统都是基于光栅来绘制图形的,光栅就是指构成图像的像素阵列。

  • 像素(Pixel):一个像素对应图像上的一个点,它通常保存图像上的某个具体位置的颜色等信息。

  • 帧缓存(Frame Buffer):在绘图过程中,像素信息被存放于帧缓存中,帧缓存是一块内存地址。

  • CPU (Central Processing Unit):中央处理单元,负责逻辑计算。

  • GPU (Graphics Processing Unit):图形处理单元,负责图形计算。

    image (3).jpeg

过程

  • 1.轮廓提取 / meshing、

  • 2.光栅化

  • 3.帧缓存

  • 4.渲染

    image (4).jpeg

3. The Pipeline

image (5).jpeg

4. CPU vs GPU

  • GPU由大量的小运算单元构成

  • 每个运算单元只负责处理很简单的计算

  • 每个运算单元彼此独立

  • 因此所有计算可以并行处理

    image - 2023-02-28T114716.270.png

    image - 2023-02-28T114718.345.png

    image (6).jpeg

5. WebGL & Open GL

6. WebGL Startup

  • 1.创建WebGL上下文

  • 2.创建WebGL Program

  • 3.将数据存入缓冲区

  • 4.将缓冲区数据读取到GPU

  • 5.GPU 执行 WebGL程序,输出结果

    image (8).jpeg

7. Create WebGL Context

image - 2023-02-28T115013.898.png

image - 2023-02-28T115016.701.png

8. The Shaders

  • 1.Vertex Shader

    image - 2023-02-28T115434.525.png

  • 2.Fragment Shader

    image - 2023-02-28T115436.680.png

9. Create Program

image - 2023-02-28T115519.948.png

10. Data to Frame Buffer

  • Axes

    image (9).jpeg

  • Typed Array image - 2023-02-28T115555.925

    image - 2023-02-28T115558.638.png

11. Frame Buffer to GPU

image - 2023-02-28T115658.195.png

image - 2023-02-28T115659.427.png

12. Output

13. WebGL

14. Mesh.js

15. Polygons

  • Polygons

    image - 2023-02-28T120217.855.png

  • Triangulations

    image - 2023-02-28T120221.143.png

16. Draw Polygon with 2D Triangulations

17. 3D Meshing

18. Transforms

  • 平移

    image (14).jpeg

  • 旋转

    image (15).jpeg

    image (16).jpeg

  • 缩放

    image (17).jpeg

    image (18).jpeg

  • 旋转+缩放是线性变换

    image (11).jpeg

    image (12).jpeg

  • 从线性变换到齐次矩阵

    image (13).jpeg

19. Apply Transforms

20. 3D Matrix

  • 3D标准模型的四个齐次矩阵(mat4)

    • 1.投影矩阵 Projection Matrix
    • 2.模型矩阵Model Matrix
    • 3.视图矩阵View Matrix
    • 4.法向量矩阵Normal Matrix

21. Read more

二、总结

本节课学习了WebGL的基本知识和一些常用方法,让我对WebGL有了初步的认识,并明白了GPU和CPU的区别,对图形绘制方面有了进一步的了解。