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.

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

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

Saved successfully!

Ooh no, something went wrong!