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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Aunque no es mi favorita, <strong>de</strong>bo reconocerlo, no puedo negar que es una herramienta po<strong>de</strong>rosa, con un esquema<br />

interesante para el manejo <strong>de</strong> <strong>la</strong> organización <strong>de</strong>l sha<strong>de</strong>r, y que aún es utilizada por una gran cantidad <strong>de</strong><br />

<strong>de</strong>sarrol<strong>la</strong>dores.<br />

En conclusión, <strong>la</strong> herramienta a elegir <strong>de</strong>pen<strong>de</strong> mucho <strong>de</strong>l gusto personal y <strong>de</strong> ciertas características particu<strong>la</strong>res que<br />

puedan necesitarse. Para un <strong>de</strong>sarrol<strong>la</strong>dor que recién está comenzando, FX Composer 2 pue<strong>de</strong> verse como <strong>la</strong> opción<br />

más tentadora, dado que está muy actualiza y dispone <strong>de</strong> soporte para varias p<strong>la</strong>taformas y varios formatos.<br />

4.4 Un ejemplo simple<br />

A continuación se mostrara un sha<strong>de</strong>r <strong>de</strong> ejemplo sacado <strong>de</strong> mi motor gráfico. El sha<strong>de</strong>r representa un material<br />

phong simple (iluminación por pixel), el cual permite influenciarse por cuatro luces, <strong>la</strong> luz ambiente, una luz punto,<br />

una luz direccional y una luz spot. El código está escrito en HLSL, utilizando FX Composer, y por lo tanto respeta <strong>la</strong><br />

notación DXSAS.<br />

Veremos el código por partes para enten<strong>de</strong>r mejor cada una <strong>de</strong> el<strong>la</strong>s. Las partes en cuestión serán:<br />

Variables globales (matrices <strong>de</strong> transformación, luces, superficie, texturas).<br />

Estructuras.<br />

Vertex sha<strong>de</strong>r.<br />

Pixel sha<strong>de</strong>r.<br />

Técnicas.<br />

4.4.1 Variables globales<br />

Debemos <strong>de</strong>finir <strong>la</strong>s variables globales que utilizara el sha<strong>de</strong>r. En general, <strong>la</strong>s variables globales <strong>la</strong>s suele setear <strong>la</strong><br />

aplicación principal. Y es por esta razón que necesitamos en <strong>la</strong> herramienta <strong>de</strong> <strong>de</strong>sarrollo <strong>de</strong> sha<strong>de</strong>rs un mecanismo<br />

cómodo y rápido para cambiar estos valores, con el objetivo <strong>de</strong> realizar distintas pruebas en tiempo real. En nuestro<br />

caso particu<strong>la</strong>r utilizaremos DXSAS y el editor gráfico <strong>de</strong> propieda<strong>de</strong>s <strong>de</strong>l sha<strong>de</strong>r para este propósito.<br />

Matrices <strong>de</strong> transformación<br />

//////////////////////////////////////////////<br />

//////////////// Matrices ////////////////////<br />

//////////////////////////////////////////////<br />

float4x4 WorldIT : WorldInverseTranspose ;<br />

float4x4 WorldViewProj : WorldViewProjection ;<br />

float4x4 World : World ;<br />

float4x4 ViewI : ViewInverse ;<br />

Página 71

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

Saved successfully!

Ooh no, something went wrong!