हां, यह एक सटीक मुद्दा है। वास्तव में एक फ्लोट समस्या नहीं है, बस सटीक परिशुद्धता।
सिद्धांत रूप में छाया मानचित्र "प्रकाश से निकटतम वस्तु से दूरी" स्टोर करता है। लेकिन व्यवहार में यह "प्रकाश से दूरी ± ईपीएस" स्टोर करता है।
फिर परीक्षण करते समय, आपके टुकड़े एक ही प्रकाश से दूरी हैं। लेकिन फिर, अभ्यास में ± ईपीएस 2। तो यदि आप उन दो मानों की तुलना करते हैं तो यह पता चला है कि छाया मानचित्र प्रतिपादन या छायांकन के लिए इंटरपोल करते समय ईपीएस अलग-अलग भिन्न होता है। तो यदि आप d ± eps < d2 ± eps2
की तुलना करते हैं, तो d2==d
, तो आपको गलत परिणाम मिल सकता है क्योंकि eps!=eps2
। लेकिन अगर आप d ± eps < d2 + max(eps) + max(eps2) ± eps2
की तुलना करते हैं तो आप ठीक होंगे।
इस उदाहरण में d2==d
। इसे स्वयं छाया कहा जाता है। और उपर्युक्त पूर्वाग्रहों के साथ आसानी से तय किया जा सकता है, या बस अपने आप को रेट्रैसिंग में परीक्षण नहीं कर सकता है।
यह विभिन्न वस्तुओं के साथ और अधिक मुश्किल हो जाता है और जब ईपीएस और ईपीएस 2 काफी अलग होते हैं। इसके साथ निपटने का एक तरीका ईपीएस (http://developer.download.nvidia.com/SDK/10.5/opengl/src/cascaded_shadow_maps/doc/cascaded_shadow_maps.pdf) को नियंत्रित करना है। या कोई भी बहुत अधिक नमूने ले सकता है।
प्रश्न का उत्तर देने का प्रयास करने के लिए: मुख्य मुद्दा यह है कि छाया मानचित्रण आदर्श दूरी की तुलना करता है। लेकिन उन दूरी आदर्श नहीं हैं लेकिन मात्राबद्ध हैं। और मात्राबद्ध मान आमतौर पर ठीक होते हैं, लेकिन इस मामले में हम उन्हें दो अलग-अलग रिक्त स्थानों की तुलना कर रहे हैं।