Crear un efecto de filtro de cinta VHS en Unity

En el ámbito del desarrollo de juegos, capturar la esencia nostálgica de las imágenes retro se ha convertido en una tendencia popular. Un estilo visual icónico que continúa cautivando al público es el efecto de filtro de cinta VHS. Este efecto emula las imperfecciones analógicas de las antiguas cintas VHS, evocando una sensación de nostalgia para quienes crecieron en la era de las videograbadoras y las videocasetes. Implementar este efecto en Unity puede agregar una capa adicional de inmersión a tu juego, creando una estética que recuerda al pasado.

Para lograr el efecto de filtro de cinta VHS en Unity, utilizaremos sombreadores para manipular las imágenes. Los sombreadores permiten la manipulación de gráficos en tiempo real en la GPU, lo que los hace ideales para crear efectos como distorsión VHS y fallas. A continuación, te guiaré a través de los pasos para implementar este efecto en tu proyecto Unity.

1. Configurando el proyecto

Antes de profundizar en el código, asegúrese de tener un proyecto Unity configurado. Cree un nuevo proyecto o abra uno existente en el que desee implementar el efecto de filtro de cinta VHS.

2. Creando el sombreador

Primero, crearemos un nuevo sombreador para manejar el efecto VHS. Haga clic derecho en la ventana de su proyecto y navegue hasta 'Create -> Shader -> Unlit Shader'. Nombra el sombreador como VHSTapeEffect.

Abra el archivo de sombreado recién creado. Agregaremos código para manipular las imágenes y lograr el efecto de cinta VHS. A continuación se muestra un ejemplo básico de un sombreador que agrega distorsión, pixelación, ruido y superposición para simular el efecto de cinta VHS:

Shader "Custom/VHSTapeEffect"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _DistortionStrength ("Distortion Strength", Range(0, 1)) = 0.1
        _NoiseStrength ("Noise Strength", Range(0, 1)) = 0.2
    }

    SubShader
    {
        Tags { "Queue"="Overlay" "RenderType"="Opaque" }

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float _DistortionStrength;
            float _NoiseStrength;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                float2 uv = i.uv;
                uv += sin(uv * 500) * _DistortionStrength;
                uv += (frac(sin(dot(uv, float2(12.9898, 78.233))) * 43758.5453) - 0.5) * _NoiseStrength;

                fixed4 col = tex2D(_MainTex, uv);
                return col;
            }
            ENDCG
        }
    }
}

3. Aplicar el sombreador

Para aplicar el sombreador a un material, cree un material nuevo o utilice uno existente. Arrastre el sombreador "VHSTapeEffect" a la ranura del sombreador del material.

4. Aplicar efecto de imagen a la cámara

Crea un nuevo objeto de juego vacío y adjuntale un script. En el script, agregue el siguiente código:

using UnityEngine;

[RequireComponent(typeof(Camera))]
public class VHSTapeEffectController : MonoBehaviour
{
    public Material VHSMaterial;

    void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        Graphics.Blit(source, destination, VHSMaterial);
    }
}
  • Adjunte este script al objeto del juego vacío y asigne el material que creó al campo "VHSMaterial" en el inspector de scripts.

5. Pon a prueba tu escena

Finalmente, dale play en Unity y observa el efecto de cinta VHS aplicado a tu escena a través de la cámara.

Conclusión

Con estos pasos, habrás implementado exitosamente el efecto de filtro de cinta VHS en Unity. Experimenta con diferentes configuraciones y funciones adicionales para mejorar aún más la atmósfera nostálgica de tu juego.

Artículos sugeridos
Cree un efecto de espuma de lavado a presión en Unity
Efecto de holograma en la unidad
Crear una interfaz de usuario de pantalla ganadora en Unity
Crear un menú de pausa en Unity
Cómo hacer galletas ligeras en Unity
Cómo pintar con sistema de partículas en Unity
Implementación de efectos de partículas en Unity