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