Shader CRT


Dado que el juego que estoy desarrollando ahora mismo tiene un look pixel art (pero de pixeles bien gordos), he pensado que la resolución que estoy manejando es cercana a la de los juegos de los ordenadores de los años 80. Los cuales se veían en monitores de tubo o CRTs. Y me han dado ganas de probar como quedaría visto en uno de ellos. Para hacer esta prueba necesitaba un shader que produjera ese efecto. 
Lamentablemente Godot todavía es un motor de videojuegos poco usado por lo que no hay una gran variedad de recursos disponibles. Y los pocos que he encontrado no funcionaban exactamente como yo buscaba. Así que le he echado el rato a hacer uno a mi gusto.
He hecho uno en el que se pueden combinar diferentes efectos y ajustarlos individualmente. Este es el resultado que he conseguido.

Efecto de Scanlines

La imagen la formaba un haz de electrones que recorría horizontalmente la pantalla dando un número determinado de pasadas. El hueco entre cada línea quedaba a oscuras, salvo por el brillo que se desbordaba de las líneas adyacentes. 

Efecto de emborronamiento

Debido a que el haz de electrones tenía una sección no nula y de forma más o menos circular sis impactos sobre la pantalla no eran cuadrados de bordes afilados.

Visión de la rejilla

Los electrones se desprendían del cátodo situado en el cañón debido a su atracción por una rejilla metálica situada tras el cristal de la pantalla que hacía de ánodo. Estas rejillas se construyeron con varias formas de mallado. Yo he imitado la de los tubos Trinitron y similares que además de parecerme más lógica es la más sencilla de simular.

Visión de los subpíxeles

En la televisión en color, estos se forman por la combinación de destellos de tres colores básicos, situados lo suficientemente cerca como para que la mezcla se produzca en nuestra retina. Hoy en día hay que tener una vista muy fina para percibirlo, pero antiguamente se podían ver si nos acercábamos. No obstante la idea no es ver cada color por separado, sino simular la pequeña distorsión que se percibe debido a este efecto.

Si alguien cree que le puede ser de utilidad lo puede encontrar en mi GitHub:

Comentarios

Publicar un comentario

Entradas populares de este blog

Shader para cambiar la paleta

Cómo puede el juego saber cuándo fue instalado (Android)