कुछ गेम शो लाइट्स दीवारों से क्यों चमकते हैं?


28

कुछ खेलों में, मुझे दीवारों के माध्यम से रोशनी चमकती दिखाई देती है, भले ही मैंने उच्च स्तर पर वीडियो की गुणवत्ता निर्धारित की हो।

मेरे द्वारा हाल ही में खेले गए खेलों के उदाहरणों में से एक हैं बॉर्डरलैंड्स 2 (मिसाइल विस्फोट) और कॉल ऑफ सेलथु (लालटेन; खेल यहां तक ​​कि अवास्तविक इंजन 4 का उपयोग करता है)।

क्या यह बग है या प्रदर्शन कारण हैं?

उदाहरण बॉर्डरलैंड्स 2: https://youtu.be/9bV83qA6_mU?t=419 (कुछ समय, लेकिन जल्दी से)

बोनस प्रश्न: बाद के मामले में, क्या समस्या को हल करने के लिए किसी भी तरह से किरण ट्रेसिंग का सस्ते में इस्तेमाल किया जा सकता है? मुझे लगता है कि महंगे आरटी ने निश्चित रूप से समस्या को हल किया है, लेकिन मुझे आश्चर्य है कि क्या इस विशिष्ट समस्या को हल करने के लिए "सस्ते" रूप में भी इसका इस्तेमाल किया जा सकता है।


21
एक तस्वीर हज़ार शब्दों पर भारी है।
Evorlor

8
मुझे परीक्षण करने के लिए खेलना होगा, लेकिन क्या यह वास्तव में प्रकाश है जो इसके माध्यम से लीक हो रहा है, या यह एक चमक कण प्रभाव हो सकता है? विशेष रूप से एक मिसाइल विस्फोट का आपका उदाहरण, मैं एक additive "आग" कण प्रभाव की कल्पना कर सकता हूं जो टकरावों की अनदेखी करने की काफी संभावना है। लालटेन एक दृश्यमान प्रभामंडल बनाने के लिए भी ऐसा कर सकता था, मुझे लगता है ...
एसी

@ एवर्लर ने एक उदाहरण और जोड़ा।
मार्कस

जवाबों:


43

टॉमटैगस्क के सही उत्तर पर विस्तार करते हुए, मैंने सोचा कि यह इस तरह से काम करने के बारे में थोड़ा और वर्णन करने में मदद कर सकता है।

खेल में प्रकाश वास्तव में स्रोत से सतह तक, कैमरे तक "यात्रा" नहीं करता है, रास्ते में बाधा बन रहा है।

किसी दिए गए प्रकाश के आधार पर सतह के प्रत्येक पिक्सेल को खींचने के लिए कितना उज्ज्वल है, यह जानने के लिए, हम एक गणित सूत्र का उपयोग करते हैं (या लगभग) सतह के सामने की दिशा और सतह पर इस बिंदु से प्रकाश स्रोत तक दिशा का उपयोग करते हैं। बस इतना ही, यह जिस दिशा से चमक रहा है - हम आम तौर पर यह जांचने के लिए किरण नहीं डालते हैं कि प्रकाश वास्तव में इस पिक्सेल तक पहुँचता है या नहीं, क्योंकि स्क्रीन पर हर पिक्सेल के लिए ऐसा करना और दृश्य में सभी विस्तृत ज्यामिति के विरुद्ध किरण की जाँच करना है। आमतौर पर रियल टाइम गेम के लिए अभी भी बहुत महंगा है।

इसलिए, डिफ़ॉल्ट रूप से, कोई गेम लाइट छाया नहीं डालती है। एक प्रकाश की दिशा रास्ते में एक छायाकार होने पर भी समान रहती है, इसलिए गणित हमें समान चमक मूल्य देता है।

यदि हम छाया का अनुकरण करना चाहते हैं, तो हमें अलग से करना होगा। एक सामान्य तरीका है जिसे शैडो मैप कहा जाता है। इस संस्करण में, इससे पहले कि हम अपने दृश्य को छायांकित करते हैं, हम पहले दृश्य को प्रत्येक प्रकाश के परिप्रेक्ष्य से प्रस्तुत करते हैं, जैसे कि प्रकाश एक कैमरा था, प्रत्येक पिक्सेल की गहराई को संग्रहीत करता है जो इसे ऑफ-स्क्रीन बनावट में देखता है।

फिर, जब हम दृश्य को छाया करते हैं, तो हम इस पिक्सेल की गणितीय दूरी की तुलना प्रकाश स्रोत से कर सकते हैं। बनाम गहराई जिसे हमने छाया मानचित्र में संबंधित पिक्सेल में दर्ज किया था। यदि छाया मानचित्र की गहराई छोटी है, तो इसका मतलब है कि यहां और प्रकाश के बीच एक और सतह है, और हम इस पिक्सेल को छाया में आकर्षित करते हैं।

इन नक्शों पर आधारित छाया को कम कलाकृतियों / अलियासिंग के साथ बनाने के लिए बहुत सारी शांत तकनीकें मौजूद हैं, लेकिन मैं अभी के लिए उन पर चमक लाऊंगा। यह कहने के लिए पर्याप्त है, वे आम तौर पर या तो मुक्त नहीं हैं।

क्योंकि इसके लिए प्रत्येक प्रकाश के दृष्टिकोण से पूरे दृश्य को फिर से (ऊपर) रेंडरिंग की आवश्यकता होती है - अगर यह एक बिंदु प्रकाश है जो सभी दिशाओं में चमकता है तो छह गुना तक {उत्तर, दक्षिण, पूर्व, पश्चिम, ऊपर, नीचे}, और हमें फिर से आवश्यकता है -छवि के नक्शे को कभी भी हिलाएं, इससे कुछ भी महंगा हो सकता है।

इसलिए खेल अक्सर दृश्य में सबसे महत्वपूर्ण रोशनी - जैसे दिशात्मक सूर्य प्रकाश - पर उनके प्रतिपादन बजट पर ध्यान केंद्रित करेंगे ताकि यह सुनिश्चित हो सके कि उनके पास अच्छी दिखने वाली छाया है। विस्फोट की फ्लैश की तरह छोटी, अल्पकालिक, छोटी रोशनी अक्सर क्षम्य होती है यदि वे अतीत में एक छोटे से रिसाव करते हैं। अक्सर यह सभी अतिरिक्त छाया मानचित्र रेंडरिंग और गणना से लागत में अचानक वृद्धि के कारण फ्रैमर्ट में एक अड़चन की तुलना में खिलाड़ियों के लिए अधिक स्वादिष्ट होता है। खासकर अगर यह एक व्यस्त एक्शन सीन है जहां तरलता पिक्सेल पूर्णता से अधिक मायने रखती है।


3
एक और शिकन यह है कि जबकि यह पता लगाने के लिए कि क्या एक प्रकाश स्रोत एक सतह के पीछे या पीछे है, सतहों को चमकने से रोकता है जब पीछे से जलाया जाता है, तो अक्सर अजीब दिखने वाले परिणाम मिलेंगे।
सुपरैट

और यह विशेष रूप से कण प्रभावों के साथ सच है (जो कि विस्फोट संभवतः है, कम से कम आंशिक रूप से), क्योंकि कणों को बहुत उपयोगी होने के लिए संभाल करने के लिए विशेष रूप से सस्ते होने की आवश्यकता होती है।
लुआं

2
रोशनी और कण दो अलग-अलग चीजें हैं। एक कण एक बाधा के माध्यम से "रिसाव" भी कर सकता है, लेकिन पूरी तरह से अलग कारणों के लिए। कभी-कभी एक कण प्रणाली में प्रभाव को बेचने में मदद करने के लिए एक प्रकाश भी शामिल होगा (एक कैम्प फायर या फायरफ्लाइज़ के झुंड को लगता है), लेकिन एक कण प्रभाव के अंदर एक प्रकाश अभी भी सिर्फ एक प्रकाश है, आमतौर पर कोई विशेष संस्करण नहीं है।
DMGregory

2
करने के लिए एक वैकल्पिक दृष्टिकोण छाया नक्शे है छाया संस्करणों (प्रत्येक प्रकाश स्रोत के लिए प्रत्येक वस्तु के सिल्हूट बढ़त प्रति एक नया बहुभुज), और साथ ही अतिरिक्त प्रतिपादन गुजरता की आवश्यकता होती है अतिरिक्त ज्यामिति प्रदान करने की: है, जो अलियासिंग समस्या ठीक हो जाती है, लेकिन अधिक महंगा है। मुझे उम्मीद है कि मानचित्रण दृष्टिकोण ज्यादातर स्थितियों के लिए पर्याप्त है, हालांकि।
डार्थफेनेक

22

लंबी कहानी छोटी, यह प्रदर्शन कारणों से होता है।

जब स्क्रीन पर प्रकाश होता है, तो डिफ़ॉल्ट रूप से यह सभी ऑब्जेक्ट्स (बाधित या नहीं) पर चमकता है, इसलिए गेम को यह देखने के लिए अतिरिक्त गणना करने की आवश्यकता होगी कि कौन सी वस्तु किस चीज से प्रभावित है।

स्थैतिक और बेक्ड लाइटिंग का उपयोग करके स्थैतिक वस्तुओं को हल करना आसान है, लेकिन यह गतिशील रोशनी पर समान नहीं है, जैसा कि आपने उल्लेख किया विस्फोट।

आपके बोनस प्रश्न के लिए, रे ट्रेसिंग और सस्ते एक ही वाक्य पर एक साथ नहीं चलते हैं। एकमात्र कारण किरण अनुरेखण अब तक मुख्यधारा नहीं है, प्रदर्शन है। मान लें कि सभी रोशनी किरण अनुरेखण का उपयोग करती हैं, तो यह समस्या "हल" होगी, लेकिन प्रदर्शन की कीमत पर।


6
तो क्या रीयल-टाइम गेम्स की तुलना में सीजीआई फिल्मों के लिए किरण अधिक है?
संचय

21
@ संचय यह सही है। एक फिल्म का एक एकल फ्रेम रेंडर करने में घंटों का समय ले सकता है, जबकि एक गेम में केवल मिलीसेकंड होता है।
नोनाडा - मोनिका

16
उस ने कहा, खेल तेजी से रैस्टोरेशन तकनीकों के साथ मिलकर किरण में किरणों या किरणों का उपयोग करके खोज कर रहे हैं, जिससे रैस्टराइज़र को यह अच्छा लगता है और किरणें वही करती हैं जो वे अच्छे हैं। यह हर पिक्सेल की पूरी तरह से पुनरावृत्ति नहीं है, लेकिन आप अभी भी कुछ शानदार प्रभाव प्राप्त कर सकते हैं।
DMGregory

2
@DMGregory वास्तव में, ड्यूक नुकेम 3 डी जैसे गेम पहले से ही रीक्रिएटिंग का एक बहुत ही सरलीकृत संस्करण इस्तेमाल करते थे - हालांकि इसका उपयोग गतिशील प्रकाश व्यवस्था के लिए नहीं किया गया था, और यह निश्चित रूप से स्क्रीन पर हर एक पिक्सेल का पता नहीं लगाता था (आमतौर पर, यह प्रत्येक कॉलम के लिए किया गया था। पिक्सल के), और प्रतिबिंब और पारदर्शिता अभी भी डिफ़ॉल्ट के बजाय एक विशेष मामला था। सॉफ्टवेयर 3 डी रेंडरिंग ने हमेशा समान दृष्टिकोण के साथ खेला है, यह हार्डवेयर 3 डी था जो उस एवेन्यू (अब तक) को बंद कर दिया था।
लुआं

@Accumulation Raytracing विभिन्न स्तरों पर आती है, इसलिए जब गेम लाइन हार्डवेयर के ऊपर प्राथमिक किरणों को शूट कर सकते हैं तो वे अभी भी पर्याप्त माध्यमिक बाउंस या पिक्सेल प्रति एकाधिक बाउंस नहीं करते हैं। तो भले ही आप रेअट्रेस यूड के थे फिर भी इस तरह का प्रदर्शन ट्रेडऑफ है। इसलिए मुख्य रोशनी का पता लगाने की क्षमता का मतलब यह नहीं है कि आप सभी माध्यमिक रोशनी को प्रस्तुत करने का जोखिम उठा सकते हैं।
पूजा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.