سؤال

بينما كنت أقرأ Redbook ، بقيت في حيرة من أمري ، أن OpenGL يمكن أن يكون لها أقصى 8 مصابيح في المشهد (العدد اعتمادًا على التنفيذ ، ولكن يجب أن يكون ARNED 8).

لكن يمكنني أن أتخيل عدد المواقف التي قد تحتاج إلى المزيد من الأضواء ، لذلك أعتقد أن هناك خدعة هذه في لعبة Dev.

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

هل كانت مفيدة؟

المحلول

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

تحديث: يمكن أن يولد تظليل معقد مع المتفرعة أضواء (فكر في شجرة الشارع الطويلة أو شجرة عيد الميلاد). يمكن أن يكون أكثر كفاءة من توفير عدد كبير من المعلمات.

نصائح أخرى

الإضاءة موضوع معقد للغاية في رسومات الكمبيوتر.

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

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

كما ذكرت ، فإن عملية التقديم تستغرق المزيد من الوقت المزيد من الأضواء التي قمنا بتمكينها. لتقليل هذا ، لديك إمكانيات مختلفة.

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

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

لتحقيق إضاءة أكثر دقة ، يجب أن يحدد البرنامج كل لون (بكسل) (إضاءة بكسل) بنفس الطريقة التي يتم بها تلوين قمة الأضواء ، ولكن كما يمكنك أن تفهم ، قد يكون هناك المزيد من البكسلات من القمم. يتمثل النهج في حساب (باستخدام التظليل أو امتداد OpenGL) مساهمة الضوء لكل بكسل من الهندسة أثناء مرحلة النقطية ، أو تحديد لون البكسل باستخدام الإضاءة المؤجلة.

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

واحدة من الحيل التي سيتم استخدامها في الألعاب هي محاكاة الضوء مع نسيج.

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

هناك مناهج مماثلة حيث يتم ترطيب المشهد لإعطاء المشهد لإعطاء نفس التأثير.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top