كيفية استخدام خريطة الظل واحدة لمصادر ضوء نقطة متعددة؟

StackOverflow https://stackoverflow.com//questions/9660959

سؤال

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

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

تحت القسم 12.2.2 تقول:

نستخدم خريطة ظل واحدة لجميع مصادر الضوء

ثم أقل من 12.3.6 تقول:

1) احسب المسافة المربعة من البكسل الحالي إلى مصدر الضوء.
...
. 4) مقارنة القيمة المسافة المحسوبة بقيمة خريطة الظل المحسوبة لتحديد ما إذا كاننا في الظل أم لا.

وهو ما هو تقريبا ما ذكرته أعلاه.

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

أنا متأكد من أنني أفتقد شيئا ما، ولكن نأمل أن يفسر شخص ما لي.


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

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

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

المحلول

لقد قطعت الجملة قصيرة قبل الأوان:

نستخدم خريطة ظل واحدة لجميع مصادر الضوء، مما يخلق صورة مع التقديم المتعدد وإجراء تمرير واحد لكل ضوء المصدر.

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

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

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

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