00 Prólogo: cómo pinta una GPU
Dos bucles anidados en C, una pasada en la GPU
La misma función shade(): la CPU calcula una celda cada vez; la GPU la llama para todas a la vez.
UV424
4120
Ejercicio
Arrastra los números subrayados a izquierda y derechaArrastra los números o edita el código
for (int y = 0; y < ; y++) for (int x = 0; x < ; x++) image[y][x] = shade(x, y);// la llamada i-ésima
i =/ 144
void main() { // aquí no hay bucle: // main se ejecuta una vez por píxel gl_FragColor = shade(vUv);}
Se llamaveces a la vez
Esta celda(6, 6) → RGB (0.54, 0.54, 0.25)Diferencia clavemain solo conoce su propia posición; no puede ver lo que calcularon sus vecinosUn lienzo real tiene de cientos de miles a millones de píxeles; una GPU tiene miles de núcleos pequeños trabajando a la vez.
Lado JS
gl.uniform1f(uTime, 0.00)En C escribes dos bucles for anidados; en la GPU solo escribes el cuerpo del bucle, y la GPU lo llama para todos los píxeles a la vez.
Pruébalo
- Elige «CPU · una a una» y observa cómo se rellenan las celdas
- Elige «GPU · todas a la vez»: todas las celdas aparecen juntas
- Mueve el puntero y lee la entrada y salida de una celda