Membuat Terrain Shader Kustom di Unity

Dalam tutorial ini, kita akan membuat shader medan kustom di Unity untuk memberikan medan Anda tekstur dan pencahayaan yang lebih realistis. Pendekatan ini memungkinkan kinerja dan kontrol yang lebih baik atas bagaimana medan berinteraksi dengan cahaya, bayangan, dan efek lingkungan lainnya. Kita akan membahas pengaturan shader, penggunaannya dengan sistem medan Unity, dan melakukan penyesuaian untuk kinerja yang optimal.

1. Menyiapkan Medan

Sebelum menyelami pembuatan shader, mari kita atur terlebih dahulu medan di Unity:

  1. Di Unity, buka menu GameObject dan pilih Objek 3D > Medan.
  2. Ini akan menambahkan objek Terrain baru ke dalam adegan Anda. Anda dapat menyesuaikan ukuran, tinggi, dan pengaturan lainnya di Terrain Inspector.
  3. Setelah medan dibuat, Anda dapat melukis di atasnya menggunakan alat Paint Texture di Inspector. Namun untuk saat ini, biarkan kosong karena kita akan menerapkan shader khusus.

2. Membuat Terrain Shader

Sekarang mari kita buat shader medan kustom. Ikuti langkah-langkah berikut:

  1. Klik kanan di jendela Project dan pilih Create > Shader > Standard Surface Shader.
  2. Beri nama shader CustomTerrainShader dan buka di editor kode pilihan Anda.

Ganti kode shader default dengan yang berikut ini:

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. Menerapkan Shader ke Medan

Setelah membuat shader, Anda perlu menerapkannya ke material medan:

  • Klik kanan pada jendela Project dan pilih Create > Material. Beri nama material ini TerrainMaterial.
  • Pada Material Inspector, klik pada dropdown Shader dan pilih Custom > TerrainShader.
  • Tetapkan tekstur untuk MainTex dan BumpMap di Material Inspector.
  • Sekarang, tetapkan material ini ke medan Anda dengan memilih objek Terrain, masuk ke Terrain Inspector, dan atur TerrainMaterial di bawah bagian Materials.

4. Menyesuaikan Shader untuk Performa

Untuk memastikan shader berjalan lancar, terutama pada medan yang luas, kita dapat mengubah beberapa pengaturan:

  • Turunkan resolusi peta normal atau gunakan peta yang disederhanakan untuk mengurangi beban GPU.
  • Nonaktifkan semua fitur shader yang tidak Anda gunakan (seperti pemetaan paralaks atau efek pencahayaan tambahan).
  • Gunakan sistem Terrain LOD bawaan Unity untuk menyesuaikan tingkat detail secara dinamis di bagian medan yang jauh.

5. Penyesuaian dan Pengujian Akhir

Setelah shader diterapkan dan medan disiapkan, uji shader dalam berbagai kondisi pencahayaan. Anda dapat menyesuaikan properti Specular dan Smoothness shader untuk melihat pengaruhnya terhadap tampilan medan secara keseluruhan di berbagai lingkungan.

Kesimpulan

Dengan shader medan kustom, Anda dapat meningkatkan ketepatan visual medan Anda sambil tetap mempertahankan kontrol atas kinerja. Jangan ragu untuk mengembangkan shader ini dengan menambahkan fitur tambahan seperti tekstur detail, pemetaan triplanar, atau teselasi.