יצירת אפקט פילטר קלטת VHS ב-Unity

בתחום פיתוח המשחקים, לכידת המהות הנוסטלגית של חזותי הרטרו הפכה לטרנד פופולרי. סגנון ויזואלי איקוני אחד שממשיך לרתק את הקהל הוא אפקט פילטר הקלטות VHS. אפקט זה מחקה את הפגמים האנלוגיים של קלטות VHS ישנות, ומעורר תחושת נוסטלגיה למי שגדל בעידן מכשירי הווידאו וקלטות הווידאו. יישום האפקט הזה ב-Unity יכול להוסיף שכבה נוספת של טבילה למשחק שלך, וליצור אסתטיקה שמזכירה את העבר.

כדי להשיג את אפקט פילטר הקלטת VHS ב-Unity, נשתמש בהצללות כדי לתפעל את התמונות. Shaders מאפשרים מניפולציה בזמן אמת של גרפיקה ב-GPU, מה שהופך אותם לאידיאליים ליצירת אפקטים כמו עיוות VHS ותקלות. להלן, אני אדריך אותך לאורך השלבים ליישום האפקט הזה בפרויקט Unity שלך.

1. הגדרת הפרויקט

לפני שצולל לתוך הקוד, ודא שהגדרת פרויקט Unity. צור פרויקט חדש או פתח פרויקט קיים שבו אתה רוצה ליישם את אפקט פילטר הקלטות VHS.

2. יצירת ה-Shader

ראשית, ניצור הצללה חדשה לטיפול באפקט ה-VHS. לחץ לחיצה ימנית בחלון הפרויקט שלך, ונווט אל 'Create -> Shader -> Unlit Shader'. תן שם לצללית משהו כמו VHSTapeEffect.

פתח את קובץ ההצללה החדש שנוצר. נוסיף קוד כדי לתפעל את הוויזואליה כדי להשיג את אפקט קלטת ה-VHS. להלן דוגמה בסיסית של הצללה שמוסיף עיוות, פיקסלציה, רעש ושכבת-על כדי לדמות את אפקט קלטת ה-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. החלת ה-Shader

כדי להחיל את ההצללה על חומר, צור חומר חדש, או השתמש בחומר קיים. גרור את ההצללה "VHSTapeEffect" אל חריץ ההצללה של החומר.

4. החל אפקט תמונה על המצלמה

צור אובייקט משחק ריק חדש וצרף אליו סקריפט. בסקריפט, הוסף את הקוד הבא:

using UnityEngine;

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

    void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        Graphics.Blit(source, destination, VHSMaterial);
    }
}
  • צרף את הסקריפט הזה לאובייקט המשחק הריק, והקצה את החומר שיצרת לשדה "VHSMaterial" במפקח הסקריפטים.

5. בדוק את הסצנה שלך

לבסוף, הקש על הפעל ב-Unity וצפה באפקט קלטת ה-VHS שהוחל על הסצנה שלך דרך המצלמה.

סיכום

עם השלבים האלה, יישמת בהצלחה את אפקט פילטר הקלטות VHS ב-Unity. נסה עם הגדרות שונות ותכונות נוספות כדי לשפר עוד יותר את האווירה הנוסטלגית של המשחק שלך.