14.04.2013 Views

Untitled - Departamento de Ciencias e Ingeniería de la Computación

Untitled - Departamento de Ciencias e Ingeniería de la Computación

Untitled - Departamento de Ciencias e Ingeniería de la Computación

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Control <strong>de</strong> flujo dinámico No No No 24 Si<br />

Depen<strong>de</strong>nt texture limit 4 Sin limite 4 Sin limite Sin limite<br />

Texture instruction limit 32 Sin limite Sin limite Sin limite Sin limite<br />

Position register No No No Si Si<br />

Indirecciones <strong>de</strong> texturas 4 Sin limite 4 Sin limite Sin limite<br />

Interpo<strong>la</strong>ted registers 2 + 8 2 + 8 2 + 8 10 32<br />

In<strong>de</strong>x input registers No No No Si Si<br />

Arbitrary swizzling No Si No Si Si<br />

Gradient instructions No Si No Si Si<br />

Loop count register No No No Si Si<br />

Face register (2-si<strong>de</strong>d lighting) No No No Si Si<br />

Don<strong>de</strong>:<br />

PS_2_0: Especificación original <strong>de</strong>l Sha<strong>de</strong>r Mo<strong>de</strong>l 2.<br />

PS_2_a: Mo<strong>de</strong>lo optimizado <strong>de</strong> NVIDIA para <strong>la</strong> GeForce FX.<br />

PS_2_b: Mo<strong>de</strong>lo <strong>de</strong> ATI para <strong>la</strong> Ra<strong>de</strong>on X700, X800, X850.<br />

PS_3_0: Sha<strong>de</strong>r Mo<strong>de</strong>l 3.<br />

PS_4_0: Sha<strong>de</strong>r Mo<strong>de</strong>l 4.<br />

La existencia <strong>de</strong> un estándar es importantísimo para los <strong>de</strong>sarrol<strong>la</strong>dores, dado que no <strong>de</strong>ben tener en cuenta<br />

implementaciones distintas realizadas por distintos fabricantes. Desafortunadamente, en <strong>la</strong> práctica todavía se tiene<br />

que tener en cuenta al fabricante por separado, o, lo que es lo mismo, a los productos <strong>de</strong> ATI y NVIDIA.<br />

Mayoritariamente, esto consiste en tener en cuenta a ambas compañías y/o familias <strong>de</strong> GPUs al momento <strong>de</strong><br />

realizar <strong>la</strong>s optimizaciones <strong>de</strong> los sha<strong>de</strong>rs más que en <strong>la</strong> codificación <strong>de</strong> ellos. La optimización es una etapa <strong>de</strong> mucha<br />

importancia en el <strong>de</strong>sarrollo <strong>de</strong> un producto. Etapa que muchas veces, por cuestiones <strong>de</strong> tiempo, presupuesto y/o<br />

ignorancia se reduce, y produce que muchos títulos con potencial se ejecuten con un <strong>de</strong>sempeño <strong>de</strong>sastroso.<br />

2.5 Implementación e integración <strong>de</strong> los sha<strong>de</strong>rs<br />

Ahora que tenemos una i<strong>de</strong>a más precisa <strong>de</strong> que es un sha<strong>de</strong>r y que se pue<strong>de</strong> lograr con el mismo, comenzaremos a<br />

ver <strong>de</strong>talles <strong>de</strong> cómo se implementan y se integran a nuestro motor.<br />

Al momento <strong>de</strong> ren<strong>de</strong>rizar un objeto <strong>de</strong>bemos indicar en nuestro motor que utilizaremos sha<strong>de</strong>rs para ren<strong>de</strong>rizarlo.<br />

Todas estas indicaciones se realizan utilizando nuestra API gráfica, ya sea OpenGL o DirectX. Nuestra API gráfica le<br />

suministrara a <strong>la</strong> GPU el código <strong>de</strong>l sha<strong>de</strong>r en un lenguaje maquina especial, el cual es neutral con respecto al<br />

hardware y será el mismo no importa don<strong>de</strong> se compile o ejecute.<br />

Análogamente a <strong>la</strong> programación tradicional, o <strong>de</strong>s<strong>de</strong> cierto punto <strong>de</strong> vista <strong>la</strong> programación sobre el CPU, los<br />

programas a ejecutar, en nuestro caso los sha<strong>de</strong>rs, se escriben en algún lenguaje <strong>de</strong> alto nivel. Lenguajes que tienen<br />

cierta similitud con los lenguajes <strong>de</strong> programación tradicionales, con ciertas diferencias enfocadas primordialmente<br />

por <strong>la</strong> forma en que trabajan <strong>la</strong>s GPUs. También, al igual que <strong>la</strong> programación tradicional, se comenzó trabajando<br />

con un lenguaje ensamb<strong>la</strong>dor antes <strong>de</strong> llegar a los lenguajes <strong>de</strong> alto nivel.<br />

Página 39

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!