Création d'un effet de filtre de bande VHS dans Unity

Dans le domaine du développement de jeux, capturer l’essence nostalgique des visuels rétro est devenu une tendance populaire. L’effet de filtre sur bande VHS est un style visuel emblématique qui continue de captiver le public. Cet effet émule les imperfections analogiques des vieilles cassettes VHS, évoquant un sentiment de nostalgie pour ceux qui ont grandi à l'ère des magnétoscopes et des cassettes vidéo. La mise en œuvre de cet effet dans Unity peut ajouter une couche supplémentaire d'immersion à votre jeu, créant une esthétique rappelant le passé.

Pour obtenir l'effet de filtre de bande VHS dans Unity, nous utiliserons des shaders pour manipuler les visuels. Les shaders permettent une manipulation en temps réel des graphiques sur le GPU, ce qui les rend idéaux pour créer des effets tels que la distorsion et les problèmes VHS. Ci-dessous, je vais vous guider à travers les étapes pour implémenter cet effet dans votre projet Unity.

1. Mise en place du projet

Avant de plonger dans le code, assurez-vous d'avoir configuré un projet Unity. Créez un nouveau projet ou ouvrez-en un existant dans lequel vous souhaitez implémenter l'effet de filtre de bande VHS.

2. Création du shader

Tout d'abord, nous allons créer un nouveau shader pour gérer l'effet VHS. Faites un clic droit dans la fenêtre de votre projet et accédez à 'Create -> Shader -> Unlit Shader'. Nommez le shader comme VHSTapeEffect.

Ouvrez le fichier shader nouvellement créé. Nous ajouterons du code pour manipuler les visuels afin d'obtenir l'effet de bande VHS. Vous trouverez ci-dessous un exemple de base de shader qui ajoute de la distorsion, de la pixellisation, du bruit et une superposition pour simuler l'effet de bande 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. Application du shader

Pour appliquer le shader à un matériau, créez un nouveau matériau ou utilisez-en un existant. Faites glisser le shader "VHSTapeEffect" sur l'emplacement de shader du matériau.

4. Appliquer un effet d'image à la caméra

Créez un nouvel objet de jeu vide et attachez-y un script. Dans le script, ajoutez le code suivant:

using UnityEngine;

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

    void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        Graphics.Blit(source, destination, VHSMaterial);
    }
}
  • Attachez ce script à l'objet de jeu vide et affectez le matériel que vous avez créé au champ "VHSMaterial" de l'inspecteur de script.

5. Testez votre scène

Enfin, appuyez sur Lecture dans Unity et observez l'effet de bande VHS appliqué à votre scène via la caméra.

Conclusion

Avec ces étapes, vous avez réussi à implémenter l'effet de filtre de bande VHS dans Unity. Expérimentez avec différents paramètres et fonctionnalités supplémentaires pour améliorer encore l'atmosphère nostalgique de votre jeu.

Articles suggérés
Création d'un simple shader d'herbe dans Unity
Création d'un menu pause dans Unity
Création d'un écran de chargement dans Unity
Créer un effet de mousse pour nettoyeur haute pression dans Unity
Effet d'hologramme dans l'unité
Création de simulateurs de vol dans Unity
Comment peindre avec le système de particules dans Unity