إنشاء Shader Terrain مخصص في Unity

في هذا البرنامج التعليمي، سننشئ برنامج تظليل تضاريس مخصصًا في Unity لإضفاء نسيج وإضاءة أكثر واقعية على التضاريس. يتيح هذا النهج أداءً أفضل وتحكمًا أفضل في كيفية تفاعل التضاريس مع الأضواء والظلال والتأثيرات البيئية الأخرى. سنغطي إعداد برنامج التظليل واستخدامه مع نظام التضاريس في Unity وإجراء التعديلات اللازمة لتحقيق الأداء الأمثل.

1. إعداد التضاريس

قبل الغوص في إنشاء التظليل، دعنا أولاً نقوم بإعداد التضاريس في Unity:

  1. في Unity، انتقل إلى القائمة GameObject وحدد 3D Object > Terrain.
  2. سيؤدي هذا إلى إضافة كائن تضاريس جديد إلى المشهد الخاص بك. يمكنك ضبط حجمه وارتفاعه وإعدادات أخرى في Terrain Inspector.
  3. بمجرد إنشاء التضاريس، يمكنك الرسم عليها باستخدام أداة Paint Texture في Inspector. ولكن في الوقت الحالي، اتركها فارغة لأننا سنطبق تظليلًا مخصصًا.

2. إنشاء برنامج تظليل التضاريس

الآن دعنا ننشئ برنامج تظليل التضاريس المخصص. اتبع الخطوات التالية:

  1. انقر بزر الماوس الأيمن في نافذة Project واختر Create > Shader > Standard Surface Shader.
  2. قم بتسمية shader بـ CustomTerrainShader وافتحه في محرر الكود المفضل لديك.

استبدل كود التظليل الافتراضي بما يلي:

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. تطبيق التظليل على التضاريس

بعد إنشاء التظليل، تحتاج إلى تطبيقه على مادة التضاريس:

  • انقر بزر الماوس الأيمن في نافذة المشروع وحدد Create > Material. قم ​​بتسمية هذه المادة TerrainMaterial.
  • في "مفتش المواد"، انقر فوق القائمة المنسدلة Shader واختر Custom > TerrainShader.
  • قم بتعيين القوام لـ MainTex وBumpMap في Material Inspector.
  • الآن، قم بتعيين هذه المادة إلى التضاريس الخاصة بك عن طريق تحديد كائن التضاريس، والانتقال إلى Terrain Inspector، وتعيين TerrainMaterial ضمن قسم Materials.

4. تعديل برنامج Shader لتحسين الأداء

لضمان تشغيل برنامج التظليل بسلاسة، وخاصةً على التضاريس الكبيرة، يمكننا تعديل بعض الإعدادات:

  • قم بخفض دقة الخريطة العادية أو استخدم خريطة مبسطة لتقليل حمل وحدة معالجة الرسومات.
  • قم بتعطيل أي ميزات في برنامج التظليل لا تستخدمها (مثل تعيين المنظر البعيد أو تأثيرات الإضاءة الإضافية).
  • استخدم نظام Terrain LOD المدمج في Unity لضبط مستوى التفاصيل بشكل ديناميكي في الأجزاء البعيدة من التضاريس.

5. التعديلات النهائية والاختبار

بمجرد تطبيق shader وإعداد التضاريس، اختبره في ظروف إضاءة مختلفة. يمكنك ضبط خصائص Specular وSmoothness في shader لمعرفة مدى تأثيرها على المظهر العام للتضاريس في بيئات مختلفة.

خاتمة

باستخدام برنامج تظليل التضاريس المخصص، يمكنك تحسين الدقة المرئية لتضاريسك مع الحفاظ على التحكم في الأداء. لا تتردد في التوسع في هذا البرنامج من خلال إضافة ميزات إضافية مثل نسيج التفاصيل أو رسم الخرائط ثلاثية الأبعاد أو التبليط.