यूनिटी के लिए नाइट विजन इमेज इफ़ेक्ट पोस्ट-प्रोसेसिंग ट्यूटोरियल
इस ट्यूटोरियल में, मैं दिखाऊंगा कि Unity में रात्रि दृष्टि प्रभाव कैसे बनाया जाए।
रात्रि दृष्टि एक छवि प्रभाव है जो कम रोशनी वाली सेटिंग में दृश्यता बढ़ाता है। इस प्रभाव का उपयोग अक्सर वास्तविक जीवन के रात्रि दृष्टि चश्मे की नकल करने के लिए वीडियो गेम में किया जाता है।
प्रदर्शन उद्देश्यों के लिए, मैं Asset Store से छोटी गुफा किट का उपयोग करूंगा।
Unity में रात्रि दृष्टि प्रभाव बनाने के लिए हम एक विशेष शेडर और एक पोस्ट-प्रोसेसिंग स्क्रिप्ट का उपयोग करेंगे।
चरण 1: छवि प्रभाव शेडर बनाएं
छवि प्रभाव स्वयं एक कस्टम शेडर की सहायता से किया जाता है।
- एक नया शेडर बनाएं (बनाएँ -> शेडर -> छवि प्रभाव शेडर) और इसे नाम दें "NightVisionShader"
- इसके अंदर सब कुछ हटा दें और नीचे दिए गए कोड को पेस्ट करें:
नाइटविज़नशैडर.शैडर
Shader "Hidden/Night Vision" {
Properties {
_MainTex ("Base (RGB)", RECT) = "white" {}
}
SubShader {
Pass {
ZTest Always Cull Off ZWrite Off
Fog { Mode off }
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
// frag shaders data
uniform sampler2D _MainTex;
uniform float4 _Luminance;
uniform float _LensRadius;
// frag shader
float4 frag (v2f_img i) : COLOR
{
float4 col = tex2D(_MainTex, i.uv);
//obtain luminance value
col = dot(col, _Luminance);
//add lens circle effect
//(could be optimised by using texture)
float dist = distance(i.uv, float2(0.5, 0.5));
col *= smoothstep( _LensRadius, _LensRadius - 0.34, dist);
//add rb to the brightest pixels
col.r = max (col.r - 0.75, 0) * 4;
// return col pixel
return col;
}
ENDCG
}
}
Fallback off
}
चरण 2: पोस्ट-प्रोसेसिंग स्क्रिप्ट बनाएं
पोस्ट-प्रोसेसिंग स्क्रिप्ट स्क्रीन के रेंडरटेक्सचर को प्राप्त करने के लिए Unity's OnRenderImage फ़ंक्शन का उपयोग करेगी, फिर इसे उस सामग्री में फीड करेगी जो नाइटविज़न शेडर का उपयोग करेगी।
- एक नई स्क्रिप्ट बनाएं और उसे नाम दें "NightVisionImageEffect"
- इसके अंदर नीचे दिए गए कोड को पेस्ट करें:
नाइटविज़नइमेजइफ़ेक्ट.cs
using UnityEngine;
[RequireComponent(typeof(Camera))]
[ExecuteInEditMode]
public class NightVisionImageEffect : MonoBehaviour
{
// Public data
public Shader shader;
[Range(0f, 1f)]
public float luminance = 0.44f;
[Range(0.5f, 1f)]
public float lensRadius = 0.84f;
// Private data
Material material;
// Called by Camera to apply image effect
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
if (shader != null)
{
if (!material)
{
material = new Material(shader);
}
material.SetVector("_Luminance", new Vector4(luminance, luminance, luminance, luminance));
material.SetFloat("_LensRadius", lensRadius);
Graphics.Blit(source, destination, material);
}
else
{
Graphics.Blit(source, destination);
}
}
}
- किसी भी कैमरे में NightVisionImageEffect स्क्रिप्ट संलग्न करें
- नए बनाए गए नाइटविज़न शेडर के साथ शेडर वैरिएबल असाइन करें
युक्ति: वांछित प्रभाव प्राप्त करने के लिए ल्यूमिनेंस और लेंस रेडियस स्लाइडर्स को ट्विक करें
नाइट विज़न इमेज इफ़ेक्ट अब तैयार है।
पहले:
बाद में:
सब कुछ उम्मीद के मुताबिक काम करता है।