Unity'de Özel Bir Arazi Gölgelendiricisi Oluşturma

Bu eğitimde, arazinize daha gerçekçi dokular ve ışıklandırma sağlamak için Unity'de özel bir arazi gölgelendiricisi oluşturacağız. Bu yaklaşım, arazinin ışıklar, gölgeler ve diğer çevresel etkilerle nasıl etkileşime girdiği konusunda daha iyi performans ve kontrol sağlar. Gölgelendiriciyi kurmayı, Unity'nin arazi sistemiyle kullanmayı ve optimum performans için ayarlamalar yapmayı ele alacağız.

1. Arazinin Ayarlanması

Gölgelendirici oluşturmaya dalmadan önce, Unity'deki araziyi ayarlayalım:

  1. Unity'de GameObject menüsüne gidin ve 3D Object > Terrain seçeneğini seçin.
  2. Bu, sahnenize yeni bir Arazi nesnesi ekleyecektir. Arazi Denetçisi'nde boyutunu, yüksekliğini ve diğer ayarlarını ayarlayabilirsiniz.
  3. Arazi oluşturulduktan sonra, Denetçi'deki Paint Texture aracını kullanarak üzerine boya yapabilirsiniz. Ancak şimdilik boş bırakın çünkü özel bir gölgelendirici uygulayacağız.

2. Arazi Gölgelendiricisini Oluşturma

Şimdi özel arazi gölgelendiricisini oluşturalım. Şu adımları izleyin:

  1. Proje penceresine sağ tıklayın ve Oluştur > Gölgelendirici > Standart Yüzey Gölgelendiricisi seçeneğini seçin.
  2. Gölgelendiriciye CustomTerrainShader adını verin ve tercih ettiğiniz kod düzenleyicisinde açın.

Varsayılan gölgelendirici kodunu aşağıdakiyle değiştirin:

Shader "Custom/TerrainShader"
{
    Properties
    {
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _BumpMap ("Normal Map", 2D) = "bump" {}
        _Specular ("Specular", Color) = (0.2, 0.2, 0.2, 1)
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Standard fullforwardshadows

        sampler2D _MainTex;
        sampler2D _BumpMap;
        fixed4 _Specular;

        struct Input
        {
            float2 uv_MainTex;
            float3 worldNormal;
        };

        void surf (Input IN, inout SurfaceOutputStandard o)
        {
            fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
            o.Specular = _Specular;
            o.Smoothness = 0.5;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

3. Gölgelendiriciyi Araziye Uygulama

Gölgelendiriciyi oluşturduktan sonra bunu arazi malzemesine uygulamanız gerekir:

  • Proje penceresine sağ tıklayın ve Oluştur > Malzeme'i seçin. Bu malzemeye AraziMalzemesi adını verin.
  • Malzeme Denetçisi'nde Gölgelendirici açılır menüsüne tıklayın ve Özel > TerrainGölgelendirici seçeneğini seçin.
  • Malzeme Denetçisi'nde MainTex ve BumpMap için dokuları atayın.
  • Şimdi, Arazi nesnesini seçerek, Terrain Inspector'e giderek ve Materials bölümünün altında TerrainMaterial değerini ayarlayarak bu malzemeyi arazinize atayın.

4. Performans İçin Gölgelendiriciyi Ayarlama

Gölgelendiricinin özellikle geniş arazilerde düzgün çalışmasını sağlamak için birkaç ayarı değiştirebiliriz:

  • GPU yükünü azaltmak için normal haritanın çözünürlüğünü düşürün veya daha basit bir harita kullanın.
  • Kullanmadığınız gölgelendirici özelliklerini (paralaks eşlemesi veya ek ışık efektleri gibi) devre dışı bırakın.
  • Unity'nin yerleşik Terrain LOD sistemini kullanarak arazinin uzak kısımlarındaki ayrıntı seviyesini dinamik olarak ayarlayın.

5. Son Ayarlamalar ve Testler

Gölgelendirici uygulandıktan ve arazi ayarlandıktan sonra, farklı ışık koşullarında test edin. Gölgelendiricinin Specular ve Smoothness özelliklerini ayarlayarak çeşitli ortamlarda arazinizin genel görünümünü nasıl etkilediklerini görebilirsiniz.

Çözüm

Özel bir arazi gölgelendiricisiyle, performans üzerindeki kontrolü korurken arazilerinizin görsel doğruluğunu artırabilirsiniz. Ayrıntılı dokular, üç düzlemli haritalama veya mozaikleme gibi ek özellikler ekleyerek bu gölgelendiriciyi genişletmekten çekinmeyin.