miércoles, 1 de abril de 2015

Interrupciones con Screen Overlay

Al probar las características de Unity 5, miré todos los efectos de imagen que traía, realmente no hay ninguno nuevo, que no estuviera en Unity 4 pro, pero al jugar con ellos me di cuenta que había una cosa que podía hacer más fácil que como lo estaba haciendo: las interrupciones.

Interrupción del espantapájaros

Hasta ahora las interrupciones las hacía de la siguiente forma: tenía en la misma escena un plano con una textura que cambiaba al azar entre las posibles imágenes de interrupción, con su propia cámara y luz. Lo tenía alejado del resto del escenario para que no se viera, y con la luz trabajando solo en la capa del plano de esa imagen para que esa luz no afectase a la iluminación del resto de la escena. La cámara tenía puesto el efecto de ruido tipo televisión analógica que se ve. Y cada vez que salía al azar que tenía que hacer una interrupción apagaba la cámara principal del juego y ponía en marcha la de este sitio secundario.

La nueva forma es: con el efecto de imagen Screen Overlay, se puede poner una imagen sobre la pantalla y mezclarla con lo renderizado de distintos modos. Por ejemplo poner salpicones de sangre, o una mirilla en el centro de la imagen. Si pongo una imagen que tape todo y en modo opaco, el efecto que consigo es el mismo, tener una imagen a pantalla completa. Solo tengo que activar ese filtro de imagen en la cámara principal (junto al de ruido) y apagar los demás para no tener colores raros o distorsiones. Sortear la imagen a mostrar es igual, todo lo demás cambia poco.

¿Y por qué esta forma es mejor? Es menos lío de poner en marcha, solo necesito añadir a la cámara el efecto de screen overlay y un script que lo controle, mientras que de la otra forma necesito el plano, la cámara, la luz y el script que controle eso. Es más eficiente, no he comprobado el funcionamiento interno del efecto pero debería funcionar en la mezcla de blending final, a lo mejor con el buffer stencil. Sea como sea es poner una imagen en 2D al final del cauce, no hay que renderizar una cosa aparte, solo para conseguir una imagen 2D en pantalla. Y además me ahorro una capa, ya no necesito la de interrupción para que su luz solo afecte a la imagen de interrupción.

En poco tiempo lo he tenido funcionando, y aunque visualmente no se nota mucho la diferencia, es una utilización mucho mejor de los recursos que la anterior, y me sería más sencillo hacer cosas más complejas con ello si en algún momento me animo.

No hay comentarios :

Publicar un comentario