शारीरिक रूप से आधारित छायांकन - परिवेश / अप्रत्यक्ष प्रकाश


15

मैंने एम। फार्र और जी। हम्फ्रीज़ द्वारा पीबीआरटी का अध्ययन करने के बाद शारीरिक रूप से आधारित पथ अनुचर लागू किया। अब मैं OpenGL ES (एक iPhone अनुप्रयोग में) का उपयोग करके वास्तविक समय ग्राफिक्स के लिए शारीरिक रूप से आधारित प्रतिपादन लागू करने की कोशिश कर रहा हूं।

मैं ऑरेन-नायर और कुक-टॉरेंस को फैलाना और स्पेक्युलर बीआरडीएफ के रूप में उपयोग करना शुरू करना चाहता हूं, लेकिन मुझे एक समस्या है: मैं अप्रत्यक्ष प्रकाश कैसे मॉडल करूं?

एक पथ अनुरेखक में (जैसे कि pbrt में निहित) अप्रत्यक्ष / परिवेश प्रकाश को पथ अनुरेखण एल्गोरिथ्म से "स्वचालित रूप से" दिया जाता है, क्योंकि यह प्रत्यक्ष और अप्रत्यक्ष प्रकाश को ध्यान में रखते हुए प्रकाश किरणों के मार्ग का अनुसरण करता है।

मैं OpenGL ES में लिखे गए शारीरिक रूप से आधारित रेंडर में अप्रत्यक्ष प्रकाश कैसे मॉडल करता हूं, इसलिए वास्तविक समय कंप्यूटर ग्राफिक्स का उपयोग कर रहा हूं?

जवाबों:


39

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

परिवेश प्रकाश व्यवस्था

सीमा के सबसे सरल अंत में, आप परिवेश प्रकाश व्यवस्था का उपयोग कर सकते हैं : एक वैश्विक, सर्वदिशात्मक प्रकाश स्रोत जो दृश्य में प्रत्येक वस्तु पर लागू होता है, वास्तविक प्रकाश स्रोतों या स्थानीय दृश्यता के संबंध में। यह बिल्कुल सटीक नहीं है, लेकिन एक कलाकार के लिए ट्विस्ट करना बेहद सस्ता है, और यह दृश्य और वांछित दृश्य शैली के आधार पर ठीक लग सकता है।

बुनियादी परिवेश प्रकाश व्यवस्था के सामान्य विस्तार में शामिल हैं:

  • गोलाकार रंग को अलग-अलग करें, जैसे गोलाकार हार्मोनिक्स (SH) या एक छोटे से क्यूबैप का उपयोग करना , और प्रत्येक शीर्ष या पिक्सेल के सामान्य वेक्टर के आधार पर शेडर में रंग को । यह विभिन्न झुकावों की सतहों के बीच कुछ दृश्य भेदभाव की अनुमति देता है, यहां तक ​​कि जहां कोई प्रत्यक्ष प्रकाश उन तक नहीं पहुंचता है।
  • पूर्व-गणना किए गए शीर्ष AO, AO बनावट नक्शे, AO फ़ील्ड और स्क्रीन-स्पेस AO (SSAO) सहित परिवेश रोड़ा (AO) तकनीक लागू करें । ये सभी छेद और दरारें जैसे क्षेत्रों का पता लगाने का प्रयास करके काम करते हैं जहां अप्रत्यक्ष प्रकाश में उछाल की संभावना कम होती है, और वहां परिवेश प्रकाश को कम कर देता है।
  • परिवेश स्पेक्युलर परावर्तन प्रदान करने के लिए एक पर्यावरण कक्ष जोड़ें । एक सभ्य संकल्प (128² या 256 face प्रति चेहरे) के साथ एक क्यूबैप घुमावदार, चमकदार सतहों पर स्पेकुलर के लिए काफी आश्वस्त हो सकता है।

पके हुए अप्रत्यक्ष प्रकाश

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

बेक स्टेप किसी भी वांछित रेंडरिंग एल्गोरिथ्म का उपयोग कर सकता है जिसमें पथ अनुरेखण, रेडियोसिटी, या गेम इंजन का उपयोग करके खुद को क्यूबैप्स (या हेमिक्यूब ) प्रदान करना है।

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

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

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

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

पूरी तरह से वास्तविक समय की तकनीक

अंत में, GPU पर पूरी तरह से गतिशील अप्रत्यक्ष प्रकाश की गणना करना संभव है। यह प्रकाश या ज्यामिति के मनमाने ढंग से परिवर्तनों का वास्तविक समय में जवाब दे सकता है। हालांकि, फिर से रनटाइम परफॉर्मेंस, लाइटिंग फिडेलिटी और सीन साइज के बीच एक ट्रेडऑफ है। इन तकनीकों में से कुछ को काम करने के लिए गोमांस जीपीयू की आवश्यकता होती है, और केवल सीमित दृश्य आकारों के लिए संभव हो सकता है। वे आम तौर पर अप्रत्यक्ष प्रकाश के केवल एक उछाल का भी समर्थन करते हैं।

  • एक गतिशील वातावरण क्यूबैप, जहां क्यूबमैप के चेहरे को एक चुने हुए बिंदु के चारों ओर छह कैमरों का उपयोग करके प्रत्येक फ्रेम को फिर से प्रस्तुत किया जाता है, एक वस्तु के लिए शालीनतापूर्वक अच्छे परिवेश प्रतिबिंब प्रदान कर सकता है। यह अक्सर रेसिंग गेम में खिलाड़ी की कार के लिए उपयोग किया जाता है, उदाहरण के लिए।
  • स्क्रीन-स्पेस वैश्विक रोशनी , एसएसएओ का एक विस्तार जो प्रसंस्करण के बाद की स्क्रीन में स्क्रीन पर आस-पास के पिक्सल्स से बाउंस लाइटिंग इकट्ठा करता है।
  • स्क्रीन-स्पेस रेअट्रैड प्रतिबिंब प्रतिबिंब -पोस्ट के माध्यम से गहराई बफर के माध्यम से किरण-मार्चिंग द्वारा काम करता है। यह काफी उच्च गुणवत्ता वाले प्रतिबिंब प्रदान कर सकता है जब तक कि प्रतिबिंबित वस्तुएं ऑन-स्क्रीन नहीं होती हैं।
  • त्वरित रेडियोधर्मितासीपीयू का उपयोग करके किरणों को दृश्य में ट्रेस करके, और प्रत्येक किरण हिट बिंदु पर एक बिंदु प्रकाश रखकर, जो लगभग उसी किरण से सभी दिशाओं में आउटगोइंग परावर्तित प्रकाश का प्रतिनिधित्व करती है, में काम करती है। वर्चुअल प्वाइंट लाइट्स (VPLs) के रूप में जानी जाने वाली ये कई लाइट्स, फिर सामान्य तरीके से GPU द्वारा प्रस्तुत की जाती हैं।
  • चिंतनशील छाया मानचित्र (RSM) तत्काल रेडियोधर्मिता के समान हैं, लेकिन VPLs प्रकाश के दृष्टिकोण से दृश्य (छाया मानचित्र की तरह) का प्रतिपादन करके और इस मानचित्र के प्रत्येक पिक्सेल पर एक VPL रखकर उत्पन्न होते हैं।
  • प्रकाश प्रसार संस्करणों में पूरे दृश्य में एसएच जांच के 3 डी ग्रिड शामिल हैं। RSM को रेंडर किया जाता है और परावर्तक सतहों के निकटतम एसएच जांच में उछाल को "इंजेक्ट" किया जाता है। फिर बाढ़-भराव जैसी प्रक्रिया प्रत्येक एसएच जांच से ग्रिड में आसपास के बिंदुओं तक प्रकाश का प्रचार करती है, और इसका परिणाम दृश्य में प्रकाश व्यवस्था को लागू करने के लिए किया जाता है। इस तकनीक को वॉल्यूमेट्रिक लाइट स्कैटरिंग के लिए भी बढ़ाया गया है
  • Voxel शंकु अनुरेखण दृश्य ज्यामिति (संभवतः अलग-अलग स्वरों का उपयोग करके, कैमरे के पास महीन और दूर दूर तक का उपयोग करके) का काम करता है, फिर RSM से प्रकाश को voxel ग्रिड में इंजेक्ट करता है। मुख्य दृश्य को प्रस्तुत करते समय, पिक्सेल शेडर एक "शंकु ट्रेस" करता है - धीरे-धीरे बढ़ते त्रिज्या के साथ किरण-मार्च - या तो फैलाना या स्पेक्युलर छायांकन के लिए आने वाली रोशनी इकट्ठा करने के लिए voxel ग्रिड के माध्यम से।

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

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


हाय @ नथन, आपके विस्तृत उत्तर के लिए धन्यवाद। मुझे पता है कि यह एक बहुत बड़ा विषय है (और अध्ययन का एक बड़ा विषय)। सबसे बड़ी समस्या यह है कि दस्तावेज ऑनलाइन खंडित है, और एक अच्छा दृष्टिकोण मिलना मुश्किल है। मेरी परियोजना यह goo.gl/Fgo21x : एक BRDF दर्शक (WDAS दर्शक से प्रेरित) सबसे सामान्य अनुभवजन्य और शारीरिक रूप से आधारित BRDF मॉडल दिखाने के लिए है और जो वर्णक्रमीय डेटा - ट्रिस्टिमुलस मान का उपयोग करके रंग गणना का समर्थन करता है। यह OpenGL का अध्ययन करने के लिए एक शैक्षिक परियोजना है।
फेब्रीजियो डुरोनी

मुझे लगता है कि आपके द्वारा उल्लिखित सामान्य एक्सटेंशन का उपयोग करने के लिए एक अच्छा पहला तरीका हो सकता है: SH या छोटा क्यूबैप + पर्यावरण क्यूब मैप (प्रतिबिंब और अपवर्तन के लिए)। आपने इस बारे में क्या सोचा? (मैं अपने रातों की नींद के दौरान काम के बाद इस एप्लिकेशन को विकसित कर रहा हूं :))। आपके द्वारा ऊपर दिए गए स्रोतों के संग्रह के लिए फिर से धन्यवाद (मेरे पास अभी अध्ययन करने के लिए बहुत सारी सामग्री है)।
फेब्रीज़ियो डुरोनी

@FabrizioDuroni हां! BRDF दर्शक के लिए, एक साधारण दिशात्मक परिवेश प्लस एक पर्यावरण क्यूबैप महान होना चाहिए।
नाथन रीड

हो सकता है कि यह आपकी श्रेणियों में से एक में आता है, लेकिन पुराने ढंग से रेंडर-टू-ऑल-फेस-ऑफ-ऑफ-ए-क्यूबेमैप तकनीकी रूप से पूरी तरह से रियलटाइम तकनीक नहीं है? इसके अलावा, क्या यह संभव नहीं है कि फैलने वाले प्रतिबिंबों के लिए एक पर्यावरण क्यूबैप के साथ बुनियादी परिवेश को बढ़ाया जाए?

@racarate क्षमा करें मुझे प्रतिक्रिया देने में थोड़ी देर लगी, लेकिन हाँ, आप सही हैं! मुझे लगता है कि मैं इसका उल्लेख करना चाहता था, लेकिन भूल गया। :) वैसे भी, मैंने इसे जोड़ा। (मैंने डिफ्यूज़ के लिए एक क्यूबमैप का उपयोग करने का उल्लेख किया था, पहली गोली बिंदु में।)
नाथन रीड

5

यह वास्तविक समय सीजी में शेष मुख्य 'कठिन' समस्या है, और इसे हल करने के लिए बहुत सारे शोध चल रहे हैं।

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

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

अप्रत्यक्ष प्रकाश का प्रतिनिधित्व करने के लिए खेल इंजनों में गोलाकार हार्मोनिक्स का उपयोग किया जाता है। वे मूल रूप से एक क्षेत्र की सतह पर एक फूरियर रूपांतरण कर रहे हैं, उच्च आवृत्ति घटकों को त्यागकर आप केवल 9 गुणांक प्रति-रंग में नेत्रहीन मनभावन, ज्यादातर सटीक पर्यावरण प्रकाश प्राप्त कर सकते हैं। उदाहरण के लिए, एकता, दृश्य में विभिन्न बिंदुओं पर 'लाइट प्रोब' को सेंकने के लिए SH का उपयोग करती है, गतिमान वस्तुएं अपनी स्थिति में अप्रत्यक्ष प्रकाश का एक अनुमान प्राप्त करने के लिए पास की जांच के बीच प्रक्षेपित कर सकती हैं। रॉबिन ग्रीन का पेपर मूल रूप से इस तकनीक पर बाइबिल है, लेकिन यह बहुत भारी है।

इस समय हॉट तकनीक Voxel Cone Tracing लगती है, जिसमें कोई पूर्व-बेक कदम शामिल नहीं है। मैं खुद भी इससे परिचित नहीं हूं, लेकिन जैसा कि मैं इसे समझता हूं, इसमें आपके दृश्य को एक कम-रिज़ाइन Minecraft-स्टाइल की दुनिया में शामिल करना, स्वरों को एक ऑक्ट्री की तरह जल्दी-ट्रैवर्सेबल स्थानिक संरचना में रखना, फिर कुछ विस्तृत कास्टिंग करना शामिल है प्रत्येक बिंदु से किरणें (शंकु) और चेकिंग कि वे कौन से स्वर हैं जो उछाल प्रकाश को इकट्ठा करते हैं। एनवीडीआईए इस समय इसे बहुत मुश्किल से आगे बढ़ा रहा है, और इस पर यहाँ और यहाँ कागज हैं

उम्मीद है की वो मदद करदे :)


0

पथ अनुरेखण एक बहुत कम्प्यूटेशनल महंगा एल्गोरिथ्म है, और वास्तविक समय के अनुकूल नहीं है। PBRT की वास्तुकला वास्तविक समय के अनुकूल नहीं है, PBRT का मुख्य लक्ष्य निष्पक्ष मोंटे कार्लो एकीकरण का उपयोग करते हुए, प्रतिपादन समीकरण को हल करना है। अधिक जानकारी के लिए https://en.wikipedia.org/wiki/Unbiased_rendering देखें ।

बहुत सारे अनुकूलन और बाधाओं के बिना, मुझे संदेह है कि आप मोबाइल डिवाइस पर अच्छे प्रदर्शन तक पहुंचने में सक्षम होंगे।

किसी भी स्थिति में, ओपन ट्रेस में पथ अनुरेखण को लागू किया जा सकता है, मैं सुझाव दूंगा कि गणना बहुत ही शक्तिशाली हो। ओपन जीएल 3.1 डेस्कटॉप जीएल के विपरीत, कुछ मामूली सीमाओं के साथ गणना शेड का समर्थन करता है।

अधिक जानकारी प्राप्त करने के लिए इस पृष्ठ के माध्यम से पढ़ें: https://github.com/LWJGL/lwjgl3-wiki/wiki/2.6.1.-Ray-tracing-with-OpenGL-Compute-Sdders-(Part-I)

शुभकामनाएँ!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.