¿Qué es Pixel Shader?

Pixel Shader
Copyright Getty

Mostrar un juego moderno donde tenemos un mundo tridimensional no es algo sencillo computacionalmente hablando. Piensa que el equipo tiene que permitirte moverte e interactuar con los objetos de un universo convirtiéndolo en algo realmente complejo.

Al principio, los primeros juegos tridimensionales necesitaban sólo del procesador para funcionar, pero es sólo con la llegada de las tarjetas gráficas modernas cuando podemos realmente sumergirnos en ellos ya que estas se encargan de gran parte del trabajo que requiere gestionar este universo.

El funcionamiento a la hora de crear estos mundos por parte de estos dispositivos es muy parecido, da igual de que marca o tarjeta estemos hablando. Simplificando mucho:

Se seleccionan los objetos. Los transformamos para colocarlos en el lugar y en la posición relativa al jugador. Puedes imaginarte la cantidad de cálculos que lleva sólo este paso.

Se convierten a dos dimensiones. El monitor es plano, luego necesitamos pasar de tres a dos dimensiones. De esta forma sabremos donde va cada objeto y si alguno no va a aparecer en pantalla. Estos últimos se descartan-

Se ordenan mostrando los que estén más cerca. El solapamiento entre objetos se calcula a nivel de pixeles lo cual hace que sea lo más preciso posible. Una vez que sabemos cuál es el punto de un objeto más cercano al observador ya podemos trabajar sobre él. Normalmente los objetos se definen como mallas de triángulos lo cual hace más sencillo trabajar con ellos.

Los Pixel Shaders entran en juego en este momento. Su tarea es calcular entre otras cosas el color y sombras de un determinado pixel. Algunos efectos típicos que se realizan gracias a este elemento son:

Bump mapping. Son texturas con relieves. Gracias al sombreado puedes hacer que una roca, por ejemplo, no parezca totalmente plana.

De esta forma se simulan efectos muy complejos. La teselación, que aparece como una técnica relacionada con DirectX 11, realiza algo parecido pero de una forma mucho más avanzada.

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

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.

Para todo esto las tarjetas gráficas modernas permiten que se les escriba un programa o algoritmo que se encarga de ello. No todos los juegos necesitan por tanto implementar todas las técnicas ni hacerlo de la misma manera.

La versión de Pixel Shader indica que instrucciones puede usar el programador. Si un juego necesita, pongamos por ejemplo la versión 4.1, no podrás jugar con él si tu tarjeta sólo es capaz de entender hasta la 3.

Por suerte la compatibilidad hacia atrás existe y teniendo la última versión podrás jugar a toda clase de juegos.

En cada versión los fabricantes aprovechan para añadir características más avanzadas. La versatilidad que se consigue es total. Se deja todo en manos del programador, su habilidad, su capacidad y su imaginación. Ten en cuenta que por ejemplo efectos sólo de luces pueden existir cientos. De esta forma, todo este procesado es acelerado por el hardware. Así se hace de manera mucho más rápida, pudiendo crear efectos más realistas, y descargamos al procesador de este trabajo para que así los juegos y el sistema funcionen de manera más fluida.