Unity에서 VHS 테이프 필터 효과 만들기

게임 개발 영역에서는 복고풍 비주얼의 향수를 불러일으키는 본질을 포착하는 것이 인기 있는 트렌드가 되었습니다. 계속해서 청중을 사로잡는 상징적인 시각적 스타일 중 하나는 VHS 테이프 필터 효과입니다. 이 효과는 오래된 VHS 테이프의 아날로그 불완전성을 에뮬레이션하여 VCR 및 비디오 카세트 시대에 자란 사람들에게 향수를 불러일으킵니다. Unity에 이 효과를 구현하면 게임에 몰입감을 더해 과거를 연상시키는 미학을 만들 수 있습니다.

Unity에서 VHS 테이프 필터 효과를 얻기 위해 셰이더를 활용하여 비주얼을 조작하겠습니다. 셰이더를 사용하면 GPU에서 그래픽을 실시간으로 조작할 수 있으므로 VHS 왜곡 및 결함과 같은 효과를 만드는 데 이상적입니다. 아래에서는 Unity 프로젝트에서 이 효과를 구현하는 단계를 안내하겠습니다.

1. 프로젝트 설정

코드를 살펴보기 전에 Unity 프로젝트가 설정되어 있는지 확인하세요. VHS 테이프 필터 효과를 구현하려는 새 프로젝트를 만들거나 기존 프로젝트를 엽니다.

2. 셰이더 만들기

먼저 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. 셰이더 적용

셰이더를 재료에 적용하려면 새 재료를 만들거나 기존 재료를 사용하십시오. "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);
    }
}

5. 장면 테스트

마지막으로 Unity에서 재생을 누르고 카메라를 통해 장면에 적용된 VHS 테이프 효과를 관찰하세요.

결론

이러한 단계를 통해 Unity에서 VHS 테이프 필터 효과를 성공적으로 구현했습니다. 게임의 향수를 불러일으키는 분위기를 더욱 강화하기 위해 다양한 설정과 추가 기능을 실험해보세요.