Optimizando en dibujado August 26, 2004
Posted by winden in coding, demoscene.trackback
En mi último post, os decía que el algoritmo de dibujado era muy muy facil de optimizar. ¿Habéis descubierto como?
En un render de triángulos convencional, se suelen seguir estos pasos:
1. Calcular las ecuaciones paramétricas para cada lado del triángulo.
2. Iniciar un bucle para cada scanline…
2a. Para cada scanline, calcular x0 y x1 con los puntos inicial y final del triángulo.
2b. Pintar todos los pixels entre x0 y x1.
Este método tiene un problema fundamental a la hora de optimizarlo; cada scanline tiene un ancho diferente, así que no podemos hacer trucos de calcular varias scanlines en paralelo (¿cuando paras cada una?), o varios pixels en paralelo (¿y si uno de ellos se sale fuera del triángulo?). Así pues, tenemos un precioso procesador capaz de ejectar N operaciones concurrentes, que solo va a poder hacer una.
En el dibujado por implícitas, para cada pixel tenemos que calcular tres valores con tres ecuaciones diferentes, y usar los tres resultados… algo así como:
v1 = calcular(x,y,eq1);
v2 = calcular(x,y,eq2);
v3 = calcular(x,y,eq3);
if(v1
Comments»
No comments yet — be the first.