00 序章:GPU 如何绘制画面
C 的两层循环,GPU 一次做完
同一个 shade() 函数:CPU 一格一格算,GPU 为每个格子同时调用一次。
UV424
4120
习题
带下划线的数字可以左右拖动拖动数字,或直接改代码
for (int y = 0; y < ; y++) for (int x = 0; x < ; x++) image[y][x] = shade(x, y);// 第 i 次调用
i =/ 144
void main() { // 不写循环:GPU 为每个像素 // 各调用一次 main gl_FragColor = shade(vUv);}
同时调用次
当前格子(6, 6) → RGB (0.54, 0.54, 0.25)关键差别main 只知道自己的位置,看不到邻居算出的结果真实画布有几十万到几百万个像素;GPU 有成千上万个小核心同时执行。
JS 这一侧
gl.uniform1f(uTime, 0.00)C 里你写两层 for 循环;GPU 上你只写循环体,GPU 同时为每个像素调用它。
试一试
- 切到「CPU 逐个」,看一格一格地算
- 切到「GPU 同时」,所有格子一起出现
- 移动指针,读出某一格的输入和输出