Een VHS-bandfiltereffect creëren in eenheid
Op het gebied van game-ontwikkeling is het vastleggen van de nostalgische essentie van retro-beelden een populaire trend geworden. Een iconische visuele stijl die het publiek blijft boeien is het VHS-bandfiltereffect. Dit effect bootst de analoge onvolkomenheden van oude VHS-banden na en roept een gevoel van nostalgie op bij degenen die zijn opgegroeid in het tijdperk van videorecorders en videocassettes. Het implementeren van dit effect in Unity kan een extra laag van onderdompeling aan je spel toevoegen, waardoor een esthetiek ontstaat die doet denken aan het verleden.
Om het VHS-bandfiltereffect in Unity te bereiken, gebruiken we shaders om de beelden te manipuleren. Shaders maken real-time manipulatie van afbeeldingen op de GPU mogelijk, waardoor ze ideaal zijn voor het creëren van effecten zoals VHS-vervorming en glitches. Hieronder begeleid ik u door de stappen om dit effect in uw Unity-project te implementeren.
1. Het project opzetten
Voordat je in de code duikt, zorg ervoor dat je een Unity-project hebt opgezet. Maak een nieuw project of open een bestaand project waarin u het VHS-bandfiltereffect wilt implementeren.
2. Het maken van de arcering
Eerst maken een nieuwe shader om het VHS-effect te verwerken. Klik met de rechtermuisknop in uw projectvenster en navigeer naar 'Create -> Shader -> Unlit Shader'. Geef de shader een naam zoals VHSTapeEffect.
Open het nieuw gemaakte shaderbestand. We voegen code toe om de beelden te manipuleren om het VHS-bandeffect te bereiken. Hieronder ziet u een eenvoudig voorbeeld van een arcering die vervorming, pixelvorming, ruis en overlay toevoegt om het VHS-bandeffect te simuleren:
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. De arcering toepassen
Als u de arcering op een materiaal wilt toepassen, maakt u een nieuw materiaal of gebruikt u een bestaand materiaal. Sleep de "VHSTapeEffect"-arcering naar de shader-sleuf van het materiaal.
4. Pas beeldeffect toe op camera
Maak een nieuw leeg spelobject en voeg er een script aan toe. Voeg in het script de volgende code toe:
using UnityEngine;
[RequireComponent(typeof(Camera))]
public class VHSTapeEffectController : MonoBehaviour
{
public Material VHSMaterial;
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination, VHSMaterial);
}
}
- Voeg dit script toe aan het lege spelobject en wijs het materiaal dat u hebt gemaakt toe aan het veld "VHSMaterial" in de scriptinspecteur.
5. Test je scène
Druk ten slotte op afspelen in Unity en bekijk het VHS-bandeffect dat via de camera op uw scène wordt toegepast.
Conclusie
Met deze stappen hebt u met succes het VHS-bandfiltereffect in Unity geïmplementeerd. Experimenteer met verschillende instellingen en extra functies om de nostalgische sfeer van je game verder te versterken.