الأضواء والظلال ثلاثية الأبعاد في جودو

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

مصادر الضوء تنبعث منها أشعة الضوء التي تختلط مع المواد وتنتج نتيجة مرئية. يمكن أن يأتي الضوء من عدة أنواع من المصادر في مشهد ما:

  • من المادة نفسها، بشكل لون الانبعاث (لكنه لا يؤثر على العناصر القريبة منه إلا إن تم تفعيل الإضاءة المعالجة مسبقاً أو الإضاءة الغير مباشرة بحجم مساحة الشاشة)
  • عقد الضوء: ضوء موجه ثلاثي الأبعاد DirectionalLight3D، ضوء كروي ثلاثي الأبعاد OmniLight3D وضوء البقعة ثلاثي الأبعاد SpotLight3D.
  • الضوء المحيطي في البيئة أو الأجسام العاكسة.
  • الإضاءة العامة (إضاءة الخريطة الضوئية ثنائية الأبعاد LightmapGI، إضاءة البكسل ثلاثية الأبعاد VoxelGIK، أو إضاء الحقل ذو المسافة الموقعية الموقعة SDFGI)

يمثل ضوء الانبعاث خاصية مادة ويمكنك قراءة المزيد عنه من المادة ثلاثية الأبعاد القياسية والرابط العلائقي للكائنات ثلاثي الأبعاد.

انظر أيضًا: يمكنك مقارنة أنواع عدة من الأضواء في العمل باستخدام مشروع العرض التوضيحي للأضواء والظلال ثلاثي الأبعاد.

عقد الضوء

يوجد ثلاثة أنواع من عقد الضوء: إضاءة الخريطة الضوئية ثلاثية الأبعاد DirectionalLight3D، ضوء كروي ثلاثي الأبعاد OmniLight3D وضوء البقعة ثلاثي الأبعاد SpotLight3D. دعونا نأخذ نظرة للمحددات الشائعة للأضواء:

light params.png


كل خاصية لها وظيفة محددة:

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

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

حد عدد الأضواء

عند استخدام نمط التصيير Forward+‎, يستخدم جودو نهج تجميعي للإضاءة في الوقت الحقيقي. يمكن إضافة عدد غير محدود من الأضواء (طالما الأداء يسمح بذلك). مع ذلك، هناك لا يزال حد افتراضي لعدد عناصر التجميع المسموح به في إطار الكاميرا الحالي وهو 512 عنصر تجميعي. العنصر التجميعي هو ضوء كروي، أو ضوء بقعي، أو وصمة decal، أو جهاز استجواب الانعكاس reflection probe. يمكن زيادة هذا الحد عن طريق ضبط التصيير Rendering > الحدود Limit > باني الكتلة Cluster Builder > عناصر الكتلة القصوى Max Clustered Elements من إعدادات المشروع المتقدم.

عند استخدام مصيّر Forward Mobile، هناك قيود على عدد الأضواء الكروية وأضواء البقعة حيث يُسمح بـ 8 أضواء كروية + 8 أضواء بقعة لكل مورد شبكي. وهناك أيضًا حد لعدد الأضواء الكروية 256 وأضواء البقعة 256 التي يمكن عرضها في إطار الكاميرا الحالي. هذه الحدود حالياً لا يمكن تغييرها.

عند استخدام محرك الرسومات التوافقي، يمكن عرض ما يصل إلى 8 أضواء كروية + 8 أضواء بقعة لكل مورد شبكي. يمكن زيادة هذا الحد في إعدادات المشروع المتقدمة عن طريق ضبط التصيير Rendering > الحدود Limits > أوبن جي إل OpenGL > عدد الأضواء القابلة للتصيير القصوى Max Renderable Lights و/أو التصيير Rendering > الحدود Limits > أوبن جي إل OpenGL > عدد الأضواء القصوى للكائن Max Light Per Object بتكلفة أداء أقل وزمن تجميع مكتبة الشيدر أطول. يمكن أيضاً تقليل هذا الحد لتقليل أوقات تجميع التظليل shader وتحسين الأداء قليلاً.

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

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

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

تعيين الظلال

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

  • مفعل: حدد لتفعيل تعيين الظلال في هذا الضوء.
  • الشفافية: يتم تظليل المناطق المعتمة بواسطة عامل الشفافية هذا. الظلال عادة مكتملة الشفافية، ولكن يمكن تغيير ذلك لجعل الظلال شفافة بالنسبة للضوء المعين.
  • الانحياز: عندما يكون هذا المحدد منخفضًا جدًا، يحدث التظليل الذاتي. عندما يكون مرتفعًا جدًا،نفصل الظلال عن مصدرها. قم بضبطه للحصول على النتيجة التي تناسبك بشكل أفضل.
  • الانحياز العادي: عندما يكون هذا المحدد معامل منخفض جدًا، يحدث التظليل الذاتي وعندما يكون مرتفعًا جدًا، تظهر الظلال مشوهة بعيدة عن مصدرها. قم بتعديله للوصول إلى النتيجة المثلى بالنسبة لك.
  • الانحياز في النفاذ: عندما يكون هذا المحدد منخفضًا جدًا، يحدث الظلال الذاتية على المواد التي تمكنت من النفاذ. وعندما يكون مرتفعًا جدًا، لن تؤثر الظلال على المواد التي يتمكن من النفاذ بشكل متسق. قم بتعديله للوصول إلى النتيجة المثلى بالنسبة لك.
  • عكس احتساء الوجه: بعض المشاهد تعمل بشكل أفضل عندما يتم رسم تعيين الظلال مع عكس احتساء الوجه.
  • التمويه: يُضاعف نصف قطر التمويه للظلال بواسطة هذا الضوء. هذا يعمل مع تقنيات تعيين الظلال التقليدية والظلال التي تستخدم تقنية تصلب الاتصال (الأضواء التي تحتوي على الزاوية المسافية بقيمة أكبر من 0.0) لقيم الأعلى تنتج ظلالًا أكثر نعومة، والتي ستبدو أيضًا أكثر استقرارًا زمنيًا للأشياء المتحركة. العيب الرئيسي لزيادة تمويه الظل هو أنه سيجعل النمط الحبيبي المستخدم للتصفية أكثر وضوحًا. انظر أيضًا إلى وضع تصفية الظل.
lights and shadows blur.png

تعديل انحياز الظلال

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

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

lights and shadows acne.png


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

lights and shadows peter panning.png


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

يمكن حل أي مشكلة تتعلق بالانحياز عن طريق زيادة دقة خريطة الظل، ولكن هذا يأتي على حساب تقليل الأداء.

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

الضوء التوجيهي

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

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

light directional.png


كل وجه تصطدم به أشعة الضوء الجزء الأمامي منه يُضاء، بينما يبقى الآخرون مظلمين. على عكس معظم أنواع الأضواء الأخرى، لا تتضمن الأضواء الساطعة معاملات محددة.

الضوء الموجه الساطع يوفر أيضًا خاصية تسمى المسافة الزاوية Angular Distance، والتي تحدد حجم الضوء الزاوي بوحدة الدرجات. زيادة هذه القيمة فوق 0.0 ستجعل الظلال أكثر نعومة على مسافات أكبر من المُظلّل، وستؤثر أيضًا على مظهر الشمس في المواد السمائية الإجرائية. وهذا يُعرف بظل الصلادة عند الاتصال (PCSS).

على سبيل المرجع، المسافة الزاوية للشمس عندما تُرى من الأرض تقريباً تساوي 0.5. هذا النوع من الظلال مكلف، لذا تحقق من التوصيات المتعلقة بـ PCSS إذا كنت تقوم بتعيين هذه القيمة فوق 0.0 للأضواء التي تم تفعيل الظلال عليها.

تعيين الظلال الموجهة

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

لحل هذه المشكلة، يتم استخدام تقنية تُدعى خرائط الظل المتوازية المقسمة Parallel Split Shadow Maps اختصارًا PSSM. تقسم هذه التقنية المخروط الرؤيا إلى مناطق 2 أو 4. تحصل كل منطقة على خريطة ظل خاصة بها. وهذا يتيح للمناطق الصغيرة قريبة من المشاهد أن تحصل على نفس دقة الظل كمنطقة بعيدة كبيرة.

lights and shadows pssm explained.png


بهذا تبدو الظلال مفصلة أكثر:

lights and shadows directional mode.png


للتحكم ب PCSS، يتم كشف عدد من المعاملات:

lights and shadows directional shadow params.png


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

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

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

blend splits.png


محدد Shadow > Normal Bias يمكن استخدامه لحل حالات خاصة من الظلال الذاتية عندما تكون الكائنات عمودية على الضوء. العيب الوحيد هو أنه يجعل الظل أكثر نحافة قليلاً. فكر بزيادة Shadow > Normal Bias قبل زيادة Shadow > Bias بمعظم الحالات.

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

الضوء المتعدد الاتجاهات

الضوء المُتعدد الاتجاهات هو مصدر نقطي ينبعث منه الضوء بشكل كروي في جميع الاتجاهات حتى نصف قطر معين.

light omni.png


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

لحل هذه المشكلة، تم إدخال معامل يدعى النطاق Ranger بالإضافة إلى دالة الانحسار.

light omni params.png


يسمح هذان المعاملان بضبط كيفية عمل ذلك بصريًا من أجل العثور على نتائج مرضية وجذابة.

light attenuation.png


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

lights and shadows pcss.png

تعيين الظلال المتعددة الاتجاهات

تعيين الظلال للأضواء المتعددة الاتجاهات هو عملية بسيطة نسبيًا. المشكلة الرئيسية التي يجب مراعاتها هي الخوارزمية المستخدمة لعرض الظلال.

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

lights and shadows dual parabolid vs cubemap.png


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

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

تتطلب بنى بروجكتور الأضواء المتعددة الاتجاهات تعيين خاص يعتمد على رسم خرائط بانورامية بزاوية 360 درجة، على غرار ملمس PanoramaSkyMaterial.

باستخدام ملمس البروجكتور أدناه، يمكن الحصول على النتيجة التالية:

lights and shadows omni projector example.png
lights and shadows omni projector.png

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

ضوء البقعة

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

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

  • الزاوية: زاوية الفتح للضوء.
  • زاوية الانحسار: انحسار المخروط، والذي يساعد في تلطيف حدود المخروط.

تعيين ظل ضوء البقعة

تتمتع الأضواء بالمعاملات نفسها كأضواء متعددة الاتجاهات لعرض الظلال. عملية عرض خرائط الظل لأضواء البقعة تتم بشكل أسرع بشكل كبير مقارنة بأضواء المتعددة الاتجاهات، حيث يجب عرض ملمس ظل واحد فقط (بدلاً من عرض 6 وجوه أو 2 في وضع الأسطوانة الثنائية).

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

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

بملمس البروجكتور الموضح بالاسفل، يمكن الحصول على النتيجة التالية:

lights and shadows spot projector example.png
lights and shadows spot projector.png

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

أطلس الظل

على عكس الأضواء الموجهة الساطعة، والتي تملك ملمس ظل خاص بها، يتم تعيين الأضواء المتعددة الاتجاهات وأضواء البقعة لفتحات في أطلس الظل. يمكن تكوين هذا الأطلس في إعدادات المشروع المتقدمة (Rendering > Lights And Shadows > Positional Shadow).

الدقة تنطبق على كامل أطلس الظل. يتم تقسيم هذا الأطلس إلى أربعة أرباع:

lights and shadows shadow quadrants.png


يمكن تقسيم كل ربع لتخصيص أي عدد من خرائط الظل؛ وفيما يلي التقسيم الافتراضي:

lights and shadows shadow quadrants2.png


أطلس الظل يخصص مساحة على النحو التالي:

  • أكبر حجم لخريطة الظل (عندما لا يتم استخدام تقسيم) يمثل ضوء بحجم الشاشة (أو أكبر).
  • التقسيمات (الخرائط الأصغر) تمثل ظلالًا للأضواء التي تكون بعيدة عن الرؤية وأصغر نسبيًا.

في كل إطار، يتم تنفيذ الإجراء التالي لجميع الأضواء:

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

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

استراتيجية تخصيص الظلال الافتراضية تسمح بعرض ما يصل إلى 88 ضوءً مع تمكين الظلال في نطاق الكاميرا (4 + 4 + 16 + 64):

  1. الربع الأول والأكثر تفصيلًا يمكنه تخزين 4 ظلال.
  2. الربع الثاني يمكنه تخزين 4 ظلال أخرى.
  3. الربع الثالث يمكنه تخزين 16 ظلال، ولكن بأقل تفصيل.
  4. الربع الرابع والأقل تفصيلاً يمكنه تخزين 64 ظلال، ولكن بتفصيل أقل حتى

استخدام عدد أعلى من الظلال لكل ربع يسمح بدعم كمية أكبر من الأضواء الإجمالية مع تمكين الظلال، مع تحسين الأداء أيضًا (حيث سيتم عرض الظلال بدقة أقل لكل ضوء). ومع ذلك، زيادة عدد الظلال لكل ربع تأتي على حساب جودة الظلال الأقل.

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

تحقيق التوازن بين الجودة والأداء

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

يمكن تغيير إعدادات جودة ظلال الأضواء الموجهة أثناء التشغيل عن طريق استدعاء التوابع المناسبة من خادم العرض RenderingServer.

يمكن تغيير إعدادات جودة الظلال للأضواء التي تكون موجودة في مكان معين (أضواء البقعة/متعددة الاتجاهات) أثناء التشغيل على Viewport الجذر.

حجم خريطة الظل

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

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

وضع تصفية الظلال

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

ومع ذلك، في المشاريع التي تحتوي على بنى أقل تفصيلاً، قد يكون نمط التنمر في الظلال مرئياً بشكل أكبر. لإخفاء هذا النمط، يمكنك إما تفعيل التمويه الزمني المضاد للتنمر (TAA)، أو تفعيل التمويه التقريبي السريع (FXAA)، أو زيادة جودة تصفية الظل إلى "Soft Medium" أو أعلى.

إعداد "Soft Very Low" سيقلل تلقائياً من ضبابية الظلال لجعل العيوب الناجمة عن العينات ذات العدد المنخفض أقل وضوحًا. على الجانب الآخر، ستزيد إعدادات "Soft High" و"Soft Ultra" تلقائياً من ضبابية الظلال للاستفادة بشكل أفضل من زيادة عدد العينات.

lights and shadows filter quality.png

16 بت مقابل 32 بت

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

إذا تم تعطيل الـ 16 بت، ستُستخدم البنى بعمق 32 بت بدلاً منها. يمكن أن ينتج ذلك عن وجود أقل من العيوب في المشاهد الكبيرة والأضواء الكبيرة التي تم تمكين ظلالها. ومع ذلك، الفرق غالبًا بالكاد يكون مرئي، ولكن ذلك قد يكون له تكلفة أداء كبيرة.

تلاشي المسافة للضوء/الظلال

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

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

توصيات PCSS

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

لتجنب مشاكل بالأداء، ينصح بالتوصيات التالية:

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

وضع تصفية البروجكتور

الطريقة التي يتم بها عرض البروجكتورات أيضًا لها تأثير على الأداء. إعداد المشروع المتقدم Rendering > Textures > Light Projectors > Filter يسمح لك بالتحكم بكيف يجب تصفية بنى البروجكتور. لا تستخدم Nearest/Linear مستويات الرزم، مما يجعل إمكانية عرضهم أسرع. ومع ذلك، ستبدو البروجكتورات متقطعة عند البعد. ستبدو Nearest/Linear Mipmaps أنعم عند البعد، ولكن ستبدو البروجكتورات ضبابية عند مشاهدتها من زوايا مائلة. يمكن حل هذا عن طريق استخدام Nearest/Linear Mipmaps Anisotropic، وهو وضع عالي الجودة، ولكنه أيضًا الأكثر تكلفة.

إذا كان مشروعك يتبع نمط فن البكسل، فاعتبر ضبط التصفية على أحد قيم الأقرب Nearest حتى تستخدم البروجكتورات عملية الفرز بأقرب جار، وإلا فاستخدم الخيار الخطي Linear.

مصادر