jump to navigation

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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: