الإضاءة العامة لحقل المسافات ذو الإشارة في جودو

من موسوعة حسوب
< Godot
مراجعة 04:58، 29 نوفمبر 2023 بواسطة Naser-dakhel (نقاش | مساهمات) (إضافة الصفحة)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

الإضاءة العامة لحقل المسافات ذو الإشارة Signed Distance Field Global Illumination أو اختصارًا SDFGI هي تقنية جديدة متوفرة في جودو إصدار 4.0. توفر إضاءة عامة مشابهة للوقت الحقيقي وتتلاءم مع أي حجم للعالم وتعمل مع المستويات التي تم إنشاؤها بطريقة إجرائية.

تدعم SDFGI الأضواء الديناميكية، ولكن لا تدعم الحواجز occluders الديناميكية أو الأسطح الانبعاثية emissive surfaces الديناميكية. وبالتالي، تحقق SDFGI كفاءة أعلى في الوقت الحقيقي من الخرائط الضوئية المثبتة baked lightmaps، ولكن كفاءتها في الوقت الحقيقي أقل مقارنة بـ VoxelGI.

من ناحية الأداء، SDFGI هي واحدة من أكثر تقنيات الإضاءة الشاملة تطلباً في جودو. مثلما هو الحال مع VoxelGI، إلا أن هناك العديد من الإعدادات المتاحة لضبط متطلبات الأداء على حساب الجودة.

هام: SDFGI مدعوم فقط عند استخدام مصيّر الواجهة الخلفية Forward Plus، وليس مصيّر الواجهة الخلفية Forward Mobile أو Compatibility.

انظر أيضًا: لست متأكدًا إذا كانت SDFGI تلائم احتياجاتك؟ انظر إلى أي تقنية إضاءة عامة يجب أن استخدم؟  للمقارنة بين تقنيات الإضاءة العامة GI المتوفرة في جودو 4.

مقارنة بصرية

من دون SDFGI
مع SDFGI

ضبط SDFGI

تقنية SDFGI في جودو هي تقنية الإضاءة العامة الأقل تطلباً لخطوات التفعيل:

  1. تأكد أن خصائص عقد MeshInstance الخاصة بك مضبوطة على ثابت Static في المستعرض من خلال الإضاءة العامة Global Illumination > النمط Mode.
    1. للمشاهد الثلاثية الأبعاد المستوردة، من الممكن تكوين وضع التثبيت في لوحة الاستيراد بعد تحديد ملف المشهد ثلاثي الأبعاد في لوحة نظام الملفات FileSystem.
  2. أضف عقدة WorldEnvironment وأنشئ مورد Environment لها.
  3. عدل مورد البيئة، وانتقل للأسفل إلى قسم SDFGI وافتحه.
  4. فعّل الخيار SDFGI > Enabled. سيقوم SDFGI بمتابعة الكاميرا بشكل أوتوماتيكي عندما تتحرك، لذا لا تكون بحاجة إلى تكوين المدى (على عكس VoxelGI).

خصائص بيئة SDFGI

هناك عدة خصائص متوفرة في مورد Environment لضبط مظهر وجودة SDFGI:

  • استخدام الحجب Use Occlusion: إذا تم تفعيله سيطلق SDFGI أشعة إضافية للعثور على التسريبات الضوئية light leaks وتقليلها، وذلك ثقيل على الأداء لتحقيق الأداء الأنسب، لذا فعّل هذه الخاصية فقط إذا كنت بحاجة فعلية إليها.
  • قراءة ضوء السماء Read Sky Light: إذا تم تفعيله، ستمثَّل إضاءة البيئة في الإضاءة العامة. لذلك يجب تفعيل هذا الخيار في المشاهد الخارجية وتعطيله في المشاهد الداخلية بشكل كامل.
  • رد الفعل المرتد Bounce Feedback: بشكل افتراضي، يرتد الضوء غير المباشر مرة واحدة فقط عند استخدام SDFGI. ضبط هذه القيمة فوق 0.0 يسبب ارتداد الضوء أكثر من مرة، مما يوفر إضاءة غير مباشرة أكثر واقعية وتكلفة أداء منخفضة. القيم المعقولة عادة تكون بين 0.3 و1.0 تبعًا للمشهد. لاحظ أنه في بعض المشاهد، القيم التي تزيد عن 0.5 يمكن أن تؤدي إلى حدوث حلقات رد فعل ارتدادية لا نهائية، مما يجعل المشهد مشرقًا للغاية في غضون ثوانٍ قليلة. إذا كانت إضاءتك تبدو "غير متجانسة"، فكر في زيادة هذه القيمة فوق 0.0 للحصول على إضاءة تبدو أكثر تجانساً. وإذا كانت الإضاءة مشرقة جدًا نتيجة لذلك كل ما عليك فعله هو تقليل الطاقة Energy للتعويض.
  • التسلسلات Cascades: القيم العالية تؤدي إلى معلومات GI أكثر تفصيلاً (و/أو مسافة قصوى أكبر)، ولكنها غالباً أكثر تكلفة على وحدة المعالجة المركزية ووحدة معالجة الرسومات. تزيد تكلفة الأداء عند وجود مزيد من التسلسلات خاصةً عندما تتحرك الكاميرا بسرعة، لذا يمكن تقليل ذلك إلى 4 أو أقل إذا كانت الكاميرا الخاصة بك تتحرك بسرعة.
  • حجم الخلية الأصغري Min Cell Size: الحد الأدنى لحجم خلية SDFGI يستخدم للتسلسل الأقرب والأكثر تفصيلاً. القيم الأقل تؤدي إلى إضاءة وانعكاس غير مباشر دقيق بتكلفة أداء أقل. ويؤثر تعديل هذا الإعداد على مسافة التسلسل 0 Cascade 0 Distance والمسافة القصوى Max Distance تلقائيًا.
  • مسافة التسلسل 0 Cascade 0 Distance: المسافة التي ينتهي فيها أقرب تسلسل وأكثره تفصيلًا. القيم الكبيرة تجعل من انتقال التسلسل ملحوظًا بنسبة أقل قابل تقليل مستوى التفاصيل في أقرب تسلسل، وتعديل هذه القيمة سيؤثر على حجم الخلية الأصغري Min Cell Size والمسافة القصوى Max Distance تلقائيًا.
  • المسافة القصوى Max Distance: تتحكم في مدى البعد الذي سيتم فيه حساب حقل مسافة الإشارة (للتسلسل الأقل تفصيلاً). SDFGI لن يحدث أي تأثير خارج هذه المسافة. يجب أن يتم ضبط هذه القيمة دائمًا أقل من قيمة البعد البعيد للكاميرا، حيث لا يوجد فائدة من حساب SDFGI خارج مدى الرؤية. يؤثر ضبط هذا الإعداد أيضًا على حجم الخلية الأصغري Min Cell Size ومسافة التسلسل 0 Cascade 0 Distance تلقائيًا.
  • مقياس Y‏ Y Scale: يتحكم في المسافة بين مسابر SDFGI وانتشارها عمودياً. بشكل افتراضي، يكون الانتشار الرأسي هو ذات الانتشار الأفقي. ومع ذلك، نظرًا لأن معظم مشاهد الألعاب لا تكون عمودية بشكل كبير، يمكن أن يوفر ضبط المقياس Y إلى 75% أو حتى 50% جودة أفضل ويقلل من تسرب الضوء دون التأثير على الأداء.
  • الطاقة Energy: المُضاعف الساطع للإضاءة غير المباشرة في SDFGI.
  • الإزاحة العادية Normal Bias: الإزاحة العادية المستخدمة لارتدادات شعاع الكشف في SDFGI. على عكس الإزاحة للكشف، يزيد القيمة بالنسبة إلى النُسب في الشبكة فقط. ما يجعل تعديل الإزاحة أكثر دقة ويُجنب زيادة الإزاحة بشكل كبير بدون سبب. زد هذه القيمة إذا لاحظت ظهور فواصل في الإضاءة غير المباشرة أو الانعكاسات.
  • إزاحة الكشف Probe Bias: الإزاحة المستخدمة لارتدادات شعاع الكشف في SDFGI. زِد هذه القيمة إذا لاحظت ظهور فواصل في الإضاءة غير المباشرة أو الانعكاسات.

تفاعل SDFGI مع الأضواء والعناصر

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

لضمان تحقيق رؤية صحيحة عند استخدام SDFGI، يجب عليك تكوين خصائص الإضاءة العامة للشبكات meshes والأضواء وفقًا لغرضها في المشهد (ثابتة أو ديناميكية).

يوجد ثلاث أنماط إضاءة عامة متوفرة للشبكات:

  • معطل Disabled: لن تؤخذ الشبكة في عين الاعتبار عند إنشاء SDFGI. ستتلقى الشبكة إضاءة غير مباشرة من المشهد ولكنها لن تسهم في إضاءة المشهد بشكل غير مباشر.
  • ثابت Static (الوضع الافتراضي): سيتؤخذ الشبكة بعين الاعتبار عند إنشاء SDFGI. ستتلقى الشبكة و تساهم في إضاءة غير مباشرة للمشهد. إن تم تغيير الشبكة بأي شكل بعد إنشاء SDFGI، يجب على الكاميرا أن تبتعد عن العنصر ثم تعود إليه لإعادة إنشاء SDFGI. بديلًا لذلك، يمكن تبديل SDFGI تشغيلًا وإيقافًا مرة أخرى. إذا لم يتم القيام بأي من هذه الخطوات، ستظهر الإضاءة غير المباشرة بشكل غير صحيح.
  • ديناميكي Dynamic (غير مدعوم مع SDFGI): لن تؤخذ الشبكة في عين الاعتبار عند إنشاء SDFGI. ستتلقى الشبكة إضاءة غير مباشرة من المشهد، ولكنها لن تساهم في إضاءة المشهد بشكل غير مباشر. يتصرف هذا بشكل متطابق مع وضع التثبيت bake تعطيل عند استخدام SDFGI.

إضافةً إلى ذلك، يوجد ثلاثة أنماط تثبيت متوفرة للأضواء (DirectionalLight3D وOmniLight3D وSpotLight3D):

  • معطل Disabled: لن يؤخذ الضوء بعين الاعتبار عند إنشاء SDFGI. ولن يساهم الضوء في إضاءة غير مباشرة للمشهد.
  • ثابت Static: سيتم اعتبار الضوء عند إنشاء SDFGI. ويساهم في إضاءة غير مباشرة للمشهد. إذا تم تغيير الضوء بأي شكل بعد التثبيت، ستبدو الإضاءة غير المباشرة غير صحيحة حتى تنتقل الكاميرا بعيدًا عن الضوء ثم تعود (مما يتسبب في تثبيت SDFGI مرة أخرى). إذا كنت في حيرة من أمرك، استخدم هذا الوضع لإضاءة المستوى.
  • ديناميكي Dynamic (الوضع الافتراضي): لن يتم اعتبار الضوء عند إنشاء SDFGI، ولكنه سيساهم لاحقًا في إضاءة غير مباشرة للمشهد في الوقت الفعلي. يعد هذا الخيار أبطأ مقارنةً بالوضع الثابت. استخدم وضع الإضاءة الديناميكي المعمم على الأضواء التي ستتغير بشكل كبير أثناء اللعب.

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

انظر أيضًا: انظر إلى أي نمط إضاءة عامة يجب أن أستخدم على الشبكات أو الإضاءة؟ لتوصيات الاستخدام العامة.

تعديل جودة وأداء SDFGI

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

في قسم التصيير Rendering > الإضاءة العامة Global Illumination من إعدادات المشروع، جودة SDFGI يمكن أن تُعدّل بعدة طرق:

  • Sdfgi > Probe Ray Count: القيم الأعلى تؤدي إلى جودة أفضل، على حساب زيادة استخدام وحدة معالجة الرسومات. إذا تم ضبط هذه القيمة بشكل منخفض جدًا، يمكن أن يؤدي ذلك إلى ظهور "بقع" مرئية من الإضاءة غير المباشرة على الأسطح بسبب أن عدد الأشعة التي يتم إلقاؤها منخفضٌ للغاية.
  • Sdfgi > Frames To Converge: وجود قيم أعلى يؤدي إلى جودة أفضل، ولكن سيستغرق الإضاءة العامة وقتًا أطول للتقارب الكامل. ويكون تأثير هذا الإعداد ملحوظًا بشكل خاص عند تحميل المشهد للمرة الأولى، أو عندما تكون الأضواء التي في وضع التثبيت وغير المعطلة تتحرك بسرعة. إذا تم ضبط هذه القيمة بشكل منخفض جدًا، يمكن أن يؤدي ذلك إلى ظهور "بقع" مرئية من الإضاءة غير المباشرة على الأسطح بسبب العدد المنخفض للأشعة الملقاة. إن كانت إضاءة المشهد الخاص بك لا تحتوي على أضواء تتحرك بسرعة وتسهم في الإضاءة العامة، فقد يكون من المفيد ضبط هذا الإعداد على قيمة مثل 30 لتحسين الجودة دون التأثير على الأداء.
  • Sdfgi > Frames To Update Light: القيم الأقل تؤدي إلى انعكاس الأضواء المتحركة بشكل أسرع، على حساب زيادة استخدام وحدة المعالجة الرسومية (GPU). إذا لم تكن أضواء المشهد الخاص بك تتحرك بسرعة ولا تسهم في الإضاءة العامة، فمن الأفضل ضبطه إلى 16 لتحسين الأداء.
  • Gi > Use Half Resolution: إذا تم تفعيلها، ستقلّ دقة رسم الطبقة الفائقة للإضاءة العامة (SDFGI) والرسم الثلاثي الأبعاد للإضاءة العامة (VoxelGI) إلى النصف. على سبيل المثال، عند الرسم بدقة 3840x2160، سيتم حساب الطبقة الفائقة للإضاءة العامة بدقة 1920x1080. تفعيل هذا الخيار يوفر الكثير من وقت وحدة المعالجة الرسومية، ولكن قد يؤدي إلى ظهور تشويش واضح حول التفاصيل الرفيعة.

أداء رسم الطبقة الفائقة للإضاءة العامة (SDFGI) يعتمد أيضًا على عدد التسلسلات وحجم الخلية المختار في مصدر البيئة (انظر أعلاه).

أشياء يجب الانتباه لها عند استخدام SDFGI

لدى SDFGI بعض العيوب بسبب طبيعته المتسلسلة. فعندما تتحرك الكاميرا، قد يكون من الممكن رؤية تحولات التدرج في الإضاءة غير المباشرة. يمكن تخفيف هذا الأمر عن طريق ضبط حجم التدرج، وأيضًا عن طريق إضافة الضباب (الذي سيجعل تحولات التدرج على مسافة بعيدة أقل وضوحًا).

بالإضافة إلى ذلك، قد يتأثر الأداء إذا كانت حركة الكاميرا سريعة للغاية. ويمكن حل هذه المشكلة بطريقتين:

  • التأكد من عدم تحرك الكاميرا بسرعة كبيرة في أي حالة.
  • التعطيل المؤقت للطبقة الفائقة للإضاءة العامة SDFGI في مصدر Environment إذا كانت الكاميرا بحاجة إلى التحرك بسرعة عالية، ثم تفعيل SDFGI عندما تتباطأ سرعة الكاميرا.

عند تفعيل الطبقة الفائقة للإضاءة العامة (SDFGI)، سيستغرق بعض الوقت لتحقيق تكامل كامل للإضاءة العامة (25 إطارًا افتراضيًا).يمكن أن يخلق ذلك  تأثير انتقال واضح أثناء تحقيق تكامل الإضاءة العامة. لإخفاء هذا التأثير، يمكنك استخدام عقدة ColorRect الذي يمتد على كامل بوابة الرؤية، ثم تقوم بتلاشيه عند التبديل بين المشاهد باستخدام عقدة AnimationPlayer.

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

الانعكاسات الحادة للطبقة الفائقة للإضاءة العامة (SDFGI) يمكن رؤيتها فقط على المواد غير الشفافة. أما المواد الشفافة ستستخدم انعكاسات غير حادة حتى لو كانت نسبة التشويش في المادة أقل من 0.2.

مصادر