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.
HLSL MipFilter = LINEAR;<br />
MinFilter = LINEAR;<br />
Cg MinFilter = LINEARMIPMAPLINEAR;<br />
HLSL float2 f2 = f3; //conversión implícita<br />
Cg float2 f2 = f3.xy;<br />
Don<strong>de</strong> f3 se <strong>de</strong>fine como: float3 f3;<br />
HLSL float4x4 wit : INV_TWORLD;<br />
Cg float4x4 wi : INV_WORLD;<br />
static float4x4 wit = transpose(wi);<br />
Tener en cuenta estas diferencias pue<strong>de</strong> resultar muy útil dado que ambos son los lenguajes <strong>de</strong> mayor uso, y por<br />
en<strong>de</strong>, los <strong>de</strong> mayor cantidad <strong>de</strong> ejemplos. A menudo, podría resultar conveniente transforma un código al lenguaje<br />
elegido para <strong>de</strong>sarrol<strong>la</strong>r sha<strong>de</strong>rs. Por supuesto que también resulta útil para notar <strong>la</strong>s mínimas diferencias entre<br />
ambos lenguajes.<br />
3.5 GLSL<br />
GLSL es el último <strong>de</strong> los tres lenguajes en salir al mercado. Es parte <strong>de</strong> <strong>la</strong> especificación OpenGL 2.0 y es específico a<br />
esta p<strong>la</strong>taforma. Simi<strong>la</strong>rmente a los otros dos lenguajes, GLSL está basado en C y comparte muchas características <strong>de</strong><br />
HLSL y Cg.<br />
Las diferencias <strong>de</strong> GLSL con HLSL radican en <strong>la</strong> manera en que se acce<strong>de</strong>n los datos <strong>de</strong>l pipeline, <strong>la</strong> sintaxis <strong>de</strong> los<br />
tipos <strong>de</strong> datos <strong>de</strong>finidos por el usuario, pequeñas diferencias en el significado <strong>de</strong> algunos operadores matemáticos,<br />
<strong>la</strong> falta <strong>de</strong> perfiles y por último, <strong>la</strong> falta <strong>de</strong> un effect framework sin ningún reemp<strong>la</strong>zante.<br />
La falta <strong>de</strong> un mecanismo <strong>de</strong> perfiles es una diferencia l<strong>la</strong>mativa. GLSL espera una funcionalidad mínima <strong>la</strong> cual se<br />
especifica por una extensión particu<strong>la</strong>r <strong>de</strong> OpenGL requerida para compi<strong>la</strong>r y ejecutar el código <strong>de</strong>l sha<strong>de</strong>r. La<br />
<strong>de</strong>sventaja <strong>de</strong> este enfoque está basada en el hecho <strong>de</strong> que el estándar <strong>de</strong> OpenGL especifica solo <strong>la</strong> funcionalidad<br />
<strong>de</strong> <strong>la</strong>s acciones válidas, en vez <strong>de</strong> dar una especificación completa. Esto permite a los ven<strong>de</strong>dores <strong>de</strong> hardware<br />
manejar estas situaciones inválidas a su manera.<br />
La implementación real <strong>de</strong> <strong>la</strong>s extensiones es provista por los ven<strong>de</strong>dores <strong>de</strong> hardware. Lo cual podría generar un<br />
escenario en el cual GLSL se ejecute en hardware que no provee toda <strong>la</strong> funcionalidad esperada, tal como, por<br />
ejemplo, <strong>la</strong> precisión numérica. Todo esto podría provocar <strong>la</strong> inestabilidad <strong>de</strong> <strong>la</strong> aplicación o <strong>la</strong> aparición <strong>de</strong> artifacts.<br />
Sin embargo, este problema pue<strong>de</strong> evitarse si <strong>la</strong> aplicación testea que el hardware subyacente en el que se está<br />
ejecutando cumple con los requerimientos <strong>de</strong> <strong>la</strong>s extensiones a través <strong>de</strong> su ca<strong>de</strong>na <strong>de</strong> i<strong>de</strong>ntificación.<br />
Página 61