यूनिटी के लिए नाइट विजन इमेज इफ़ेक्ट पोस्ट-प्रोसेसिंग ट्यूटोरियल

इस ट्यूटोरियल में, मैं दिखाऊंगा कि 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 स्क्रिप्ट संलग्न करें
  • नए बनाए गए नाइटविज़न शेडर के साथ शेडर वैरिएबल असाइन करें

युक्ति: वांछित प्रभाव प्राप्त करने के लिए ल्यूमिनेंस और लेंस रेडियस स्लाइडर्स को ट्विक करें

Sharp Coder वीडियो प्लेयर

नाइट विज़न इमेज इफ़ेक्ट अब तैयार है।

पहले:

बाद में:

कर्तव्य की पुकार: आधुनिक युद्ध रात्रि दृष्टि

सब कुछ उम्मीद के मुताबिक काम करता है।

सुझाए गए लेख
एकता में कण प्रभाव लागू करना
यूनिटी के लिए स्प्लिट-स्क्रीन सेम-पीसी मल्टीप्लेयर ट्यूटोरियल
एकता के लिए अवलोकन-प्रकार मिनिमैप ट्यूटोरियल
एकता के लिए ऑब्जेक्ट ग्लो इफ़ेक्ट ट्यूटोरियल
एकता के लिए मुख्य मेनू ट्यूटोरियल
अपनी एकता परियोजना के लिए सही तलवार मॉडल चुनना
यूनिटी में एक रेडियल/सर्कुलर प्रोग्रेस बार बनाएं