تظليل بسيط لأضواء نقطة في الضباب

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

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


مشهد صغير مع مركبة فضائية في الضباب باستخدام تقنيتي

الإعداد الأساسي

نموذج الضباب


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

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

ومع ذلك. تبدو النتائج معقولة حتى عند استخدام هذه التبسيط.

الحل التحليلي


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

light=1(distance from light to fog fragment)2


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

من أجل الراحة ، نعيد كتابة المعادلة:

d=distance from light to fog fragment


light=1d2


view linelight atxdx


أو ، إذا كان أكثر رسمية:

L=light position


w=world fragment position


c=camera position


light arriving at camera=cw1|xL|2dx



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

تحديد مساحة جديدة تسمى " مساحة الضوء "

  • المحور السيني هو خط الرؤية
  • المحور الصادي للإضاءة


الآن ، بدلاً من التكامل الخطي في الفضاء ثلاثي الأبعاد ، أقوم ببساطة بالتكامل على طول المحور X من الكاميرا إلى جزء من العالم. بعد ذلك نحتاج إلى إعادة كتابة التكامل. المسافة من النقطةx على المحور س لمصدر الضوء هو h2+x2. لذلك ، يأخذ خط البصر المتكامل الشكل

1h2+x2dx


من خلال حلها يدويًا أو في نظام الجبر المفضل لديك ، نحصل على:

1h2+x2dx=tan1(xh)h


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

ab1h2+x2dx=tan1(bh)htan1(ah)h


أفكار بشأن التنفيذ


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

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

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

النتائج



توليد مستوى منخفض في العالم مع القليل من إضاءة الضباب


إذا كان هناك المزيد من المصادر ، يصبح التأثير أقوى


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

قراءة إضافية


مقدمة في تشتت الضوء: منظور علوم التصوير

نموذج التشتت الفردي التحليلي العملي لتقديم

التناثر الجوي وخوارزمية الضباب الحجمي الجزء 1

All Articles