Pixel Shader

Revisión del 09:54 24 ene 2019 de Carlos idict (discusión | contribuciones) (Fuente)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Pixel Shader
Información sobre la plantilla
20216-directx-logo-s-.png.jpg

Los Pixel Shader son programas que se ejecutan mediante el procesador gráfico de una tarjeta gráfica 3D en el transcurso gráficos (en las llamadas unidades de sombreado).

Ventajas

La principal ventaja es que, como su naturaleza lo indica, pueden ser programados por el desarrollador, otorgando una flexibilidad que hasta antes de la aparición de los shaders era poco más que impensada. Recursos como las operaciones condicionales o los saltos se utilizan de forma similar que en los lenguajes más conocidos. Sin los shaders, muchos de los efectos eran realizados en conjunto con la unidad de procesamiento central, disminuyendo en gran medida el rendimiento y limitando el avance a nivel gráfico de los mismos.

Funcion

Un píxel shader no interviene en el proceso de la definición del “esqueleto” de la escena (Wireframe), sino que forma parte de la segunda etapa: la rasterización Rendering. Allí es donde se aplican las texturas y se tratan los pixeles que forman parte de ellas. Básicamente, un píxel shader especifica el color de un píxel. Este tratamiento individual de los pixeles permite que se realicen cálculos principalmente relacionados con la iluminación del elemento del cual forman parte en la escena, y en tiempo real. Teniendo la posibilidad de iluminar cada píxel por separado es como se lograron crear los fabulosos efectos de este estilo que se pueden apreciar en Doom 3, Far Cry y Half Life 2, por mencionar sólo los más conocidos. La particularidad de los píxel shaders es que, a diferencia de los Vertex Shaders, requieren de un soporte de hardware compatible. En otras palabras, un juego programado para hacer uso de píxel shaders requiere si o si de una tarjeta de video con capacidad para manipularlos.

Lenguaje Utilizado

Para establecer los comandos de las funciones de píxel y vertex shaders se utiliza el lenguaje HLSL High Level Shader Languages, que vendría a ser un lenguaje de alto nivel para trabajar con estos programas. Existe uno de bajo nivel, bastante más difícil de programar, que se denomina ensamblador. Su sintaxis comparte muchas características con los ensambladores utilizados para programar sobre las CPU. La ventaja del HLSL es la de todo lenguaje de alto nivel: facilidad para llevar a cabo operaciones mediante unas pocas instrucciones de fácil aprendizaje. Como punto débil encontramos el mismo defecto que poseen todos los lenguajes de este tipo, y es la falta de optimización del código. Trabajando directamente sobre el hardware, es mucho más factible que se lleguen a aprovechar todas sus posibilidades. En cambio, habiendo un compilador de por medio, siempre se pierde algo de rendimiento en el programa final. Una aplicación -no un lenguaje- destinada a trabajar con píxel shaders es RenderMonkey. Fue creada por ATI, fabricante de los populares chips Radeon. Se puede descargar gratuitamente de la pagina oficial para que cualquier programador o artista pueda crear un shader y verlo en funcionamiento. Una importante característica es que permite la modificación de elementos en tiempo real, viendo como repercuten los cambios al momento de establecerlos.

Funcion General

El Pixel Shader se encarga de comprobar cuando cantidad de luz incide sobre el objeto que estamos calculando. De esta forma se crean las sombras. Esto se puede complicar todo lo que se quiera ya que existen objetos que pueden proyectar sombras más o menos precisas o incluso de colores.

Funciones Especificas

  • Luces. No todas las luces son iguales. No es lo mismo el sol, o una bombilla, por poner dos ejemplos. Un determinado objeto puede recibir a la vez varios tipos de estas y hay que calcular como incide sobre el pixel que estamos calculando.
  • Niebla. Un efecto muy usado es la niebla. El Pixel Shader también se encarga de calcular el nivel de niebla que ves en cada pixel de la pantalla. Está relacionado con la distancia de cada punto al jugador.
  • Transparencia. No todos los objetos son opacos y a veces es necesario saber que hay detrás del objeto para combinar el color de las diferentes texturas.
  • Espejo. Crear un espejo no es sencillo ya que requiere de muchos cálculos, hay que saber que imágenes se proyectan sobre él. El pixel Shader también se encarga de llevar a cabo este efecto.
  • Puede realizar ciertos efectos de post procesado. Se llaman así porque no se trabaja con los objetos en 3D sino ya en 2D. En este caso trabaja con una imagen bidimensional ya formada:
  • Emborronamiento. Por ejemplo para hacer ciertas partes de la escena menos visible. Lo puedes ver en ciertos juegos cuando simulan que estas borracho o drogado.
  • Creación de halos. Para luces o proyectiles que emiten luz.
  • Detección de bordes. Para crear efecto de dibujos animados.

Fuente