En esta ocasión aprenderás a crear este impactante efecto de desenfoque de zoom o zoom blur para tus juegos, ya sea desde móviles hasta consolas, de forma fácil de entender.
Este es un efecto que generalmente se usa cuando el personaje de nuestro juego recibe algún impacto como en skyrim, a veces viene acompañado de ralentización del tiempo como cuando terminas un escenario en Continent of the ninth, este efecto es la base de god rays o rayos crepusculares, haciendo uso de un vector que posiciona el sol.
Hace 2 blogs atrás, la base de todos los efectos de cámara es una script que envía la imagen producida por la cámara al shader y luego retoma el resultado para aplicarlo en un material.
Para continuar regresa al Blog del primer efecto, que dejaré destacado y copia el script TestRenderImage.cs.
TestRenderImage.cs tiene una variable de distancia con un rango muy pequeño entre 0 y 0.01f, vamos a dejarlo entre 0 y 0.1f para tener un desenfoque más evidente.
La base de este shader es la misma que los anteriores, tomar varias muestras y promediarlas, los efectos anteriores como el desenfoque gaussiano y aberración cromática, sumamos y restamos la posición a las coordenadas UV, la diferencia aquí es que para escalar una imagen de la anterior a la siguiente, en vez de sumar en la coordenadas UV, esta vez necesitamos multiplicar.
Es algo curioso porque la multiplicación nace de sumar varias veces la misma base, pues aquí no se cumple, la operación de suma desplaza y la de multiplicación escala, esto es importante que lo tengas en cuenta siempre.
Estas líneas son la base de este shader, solo he tomado 4 muestras, pero a través de un bucle for podemos agregar más muestras. a continuación dejo el shader completo.
Si desea modificar este shader para que permita múltiples muestras, cree un bucle for que excluya la primera muestra.
Agregamos una nueva variable del tipo uint o unsigned integer, que solo permite valores positivos para iterar muestras en el bucle for. Aquí la variante completa.
Finalmente esta variante esta variante sirve como benchmark que evalúa la cantidad de imágenes representadas en pantalla por parte de la tarjeta gráfica, tome nota de este dato en dispositivos móviles para limitar la cantidad de efectos representados en pantalla. Eso es todo por ahora, nos vemos en el siguiente blog.
Comments