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
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