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.
Texturas<br />
//////////////////////////////////////////////<br />
///////////////// Texturas ///////////////////<br />
//////////////////////////////////////////////<br />
texture DiffuseTexture : DIFFUSE<br />
<<br />
string ResourceName = "<strong>de</strong>fault_color.dds";<br />
string ResourceType = "2D";<br />
>;<br />
sampler2D DiffuseSampler = sampler_state<br />
{<br />
Texture = ;<br />
MinFilter = Linear;<br />
MagFilter = Linear;<br />
MipFilter = Linear;<br />
AddressU = WRAP;<br />
AddressV = WRAP;<br />
};<br />
Definimos <strong>la</strong>s variables globales que tiene re<strong>la</strong>ción con <strong>la</strong>s texturas. Lo más <strong>de</strong>stacable <strong>de</strong> esto es <strong>la</strong> posibilidad <strong>de</strong><br />
referenciar a texturas almacenadas en un archivo externo, algo muy importante para el <strong>de</strong>sarrollo <strong>de</strong> sha<strong>de</strong>rs en una<br />
herramienta. También <strong>de</strong>finimos <strong>la</strong> semántica, en este caso especificamos que <strong>la</strong> textura será utilizada como textura<br />
difusa, o dicho <strong>de</strong> otra manera, le indicamos que <strong>la</strong> textura le dará el color principal a los objetos a los cuales le<br />
aplicamos este material. A<strong>de</strong>más, <strong>de</strong>finimos el sampler <strong>de</strong> <strong>la</strong> textura, indicando el tipo <strong>de</strong>l filtrado utilizado y los<br />
modos <strong>de</strong> direccionamiento <strong>de</strong> <strong>la</strong> textura.<br />
4.4.2 Estructuras<br />
Es hora <strong>de</strong> <strong>de</strong>finir <strong>la</strong>s estructuras que especifican los parámetros <strong>de</strong> entrada y salida <strong>de</strong> los sha<strong>de</strong>rs. En realidad, los<br />
parámetros <strong>de</strong> entrada los podríamos haber <strong>de</strong>c<strong>la</strong>rado individualmente en el cuerpo <strong>de</strong> <strong>la</strong> función que calcu<strong>la</strong> el<br />
sha<strong>de</strong>r. Esta <strong>de</strong>cisión generalmente va en gustos. Personalmente consi<strong>de</strong>ro que es más organizado <strong>de</strong>finir los<br />
parámetros <strong>de</strong> entrada como estructuras. Mas teniendo en cuenta que los parámetros <strong>de</strong> salida <strong>de</strong>l vertex sha<strong>de</strong>r<br />
son los parámetros <strong>de</strong> entrada <strong>de</strong>l pixel sha<strong>de</strong>r.<br />
//////////////////////////////////////////////<br />
/////////////// Estruturas ///////////////////<br />
//////////////////////////////////////////////<br />
struct vertexInput {<br />
float3 Position : POSITION;<br />
float4 UV : TEXCOORD0;<br />
float4 Normal : NORMAL;<br />
};<br />
struct vertexOutput {<br />
float4 HPosition : POSITION;<br />
float2 UV : TEXCOORD0;<br />
float3 WorldNormal : TEXCOORD1;<br />
float3 WorldView : TEXCOORD2;<br />
float3 PointLightVec: TEXCOORD3;<br />
float3 SpotLightVec : TEXCOORD4;<br />
};<br />
Página 75