पाथ ट्रेसिंग

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

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

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

इतिहास
रेंडरिंग समीकरण और कंप्यूटर-ग्राफिक्स में इसका उपयोग 1986 में जेम्स काजिया द्वारा प्रस्तुत किया गया था। रेंडरिंग समीकरण के इंटीग्रल के लिए मोंटे कार्लो इंटीग्रेशन को खोजने के लिए एक एल्गोरिथम के रूप में पाथ ट्रेसिंग की शुरुआत की गई थी। एक दशक बाद, लाफोर्ट्यून ने द्विदिश पथ-अनुरेखण सहित कई परिशोधन का सुझाव दिया।

मेट्रोपोलिस लाइट ट्रांसपोर्ट, कठिन दृश्यों के प्रदर्शन को बढ़ाने के लिए पहले से खोजे गए रास्तों को परेशान करने की एक विधि, 1997 में एरिक वीच और लियोनिदास जे. गुइबास द्वारा पेश की गई थी।

हाल ही में, CPU  और जीपीयू छवियों को अधिक तेज़ी से प्रस्तुत करने के लिए पर्याप्त शक्तिशाली हो गए हैं, जिससे पथ अनुरेखण एल्गोरिदम में अधिक व्यापक रुचि पैदा हुई है। टिम परसेल ने पहली बार 2002 में जीपीयू पर चल रहे एक वैश्विक रोशनी एल्गोरिथम प्रस्तुत किया। फरवरी 2009 में, NVIDIA के ऑस्टिन रॉबिसन ने जीपीयू पर चलने वाले पथ अनुरेखक के पहले व्यावसायिक कार्यान्वयन का प्रदर्शन किया, और अन्य कार्यान्वयनों का अनुसरण किया गया है, जैसे कि अगस्त 2009 में व्लादिमीर कोयलाज़ोव।  इसे GPGPU प्रोग्रामिंग टूलकिट जैसे CUDA और OpenCL और GPU रे ट्रेसिंग SDK जैसे OptiX की परिपक्वता से सहायता मिली थी।

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

विवरण
काजिया का प्रतिपादन समीकरण प्रकाशिकी के तीन विशेष सिद्धांतों का पालन करता है; वैश्विक रोशनी का सिद्धांत, तुल्यता का सिद्धांत (परावर्तित प्रकाश उत्सर्जित प्रकाश के बराबर है), और दिशा का सिद्धांत (परावर्तित प्रकाश और बिखरे हुए प्रकाश की एक दिशा होती है)।

वास्तविक दुनिया में, वस्तुएं और सतहें इस तथ्य के कारण दिखाई देती हैं कि वे प्रकाश को प्रतिबिंबित कर रहे हैं। यह परावर्तित प्रकाश बदले में अन्य वस्तुओं को रोशन करता है। उस सरल अवलोकन से, दो सिद्धांत अनुसरण करते हैं।

I. दिए गए इनडोर दृश्य के लिए, कमरे में प्रत्येक वस्तु को हर दूसरी वस्तु को रोशनी देने में योगदान देना चाहिए।

द्वितीय। दूसरा, प्रकाश स्रोत से निकलने वाली रोशनी और सतह से परावर्तित रोशनी के बीच कोई अंतर नहीं है।

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

तृतीय। सतहों से आने वाली रोशनी को एक विशेष दिशा में बिखरना चाहिए जो आने वाली रोशनी की आने वाली दिशा का कुछ कार्य है, और बाहर जाने वाली दिशा का नमूना लिया जा रहा है।

काजिया का समीकरण इन तीन सिद्धांतों का एक पूर्ण सारांश है, और पथ-अनुरेखण, जो समीकरण के समाधान का अनुमान लगाता है, इसके कार्यान्वयन में उनके प्रति वफादार रहता है। ऑप्टिक्स के अन्य सिद्धांत हैं जो काजिया के समीकरण का फोकस नहीं हैं, और इसलिए एल्गोरिथम द्वारा अक्सर मुश्किल या गलत तरीके से अनुकरण किया जाता है। पथ अनुरेखण तीन सिद्धांतों में निहित ऑप्टिकल घटना से भ्रमित है। उदाहरण के लिए,


 * उज्ज्वल, तेज कास्टिक (ऑप्टिक्स); अंतरिक्ष में रोशनी के घनत्व से चमक का पैमाना।
 * अधस्तल प्रकीर्णन| उपसतह-प्रकीर्णन; उपरोक्त सिद्धांत III का उल्लंघन।
 * रंगीन विपथन, प्रतिदीप्ति, इंद्रधनुषीपन; प्रकाश आवृत्तियों का एक स्पेक्ट्रम है।

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

<वाक्यविन्यास लैंग = सी लाइन = 1> कलर ट्रेसपाथ (रे रे, काउंट डेप्थ) { अगर (गहराई> = अधिकतम गहराई) { काले रंग की वापसी; // पर्याप्त बार बाउंस हुआ। }

ray.FindNearestObject; अगर (रे.हिटसमथिंग == गलत) { काले रंग की वापसी; // कुछ भी हिट नहीं हुआ। }

सामग्री सामग्री = ray.thingHit-> सामग्री; रंग उत्सर्जन = सामग्री। उत्सर्जन;

// यहां से कोई भी दिशा चुनें और चलते रहें। रे न्यूरे; newRay.origin = ray.pointWhereObjWasHit;

// यह कोसाइन-भारित वितरण नहीं है! newRay.direction = RandomUnitVectorInHemisphereOf (ray.normalWhereObjWasHit);

// नई किरण की संभावना कास्ट फ्लोट पी = 1/(2 * पीआई);

// इस किरण के लिए BRDF की गणना करें (लैम्बर्टियन प्रतिबिंब मानते हुए) फ्लोट cos_theta = DotProduct (newRay.direction, ray.normalWhereObjWasHit); रंग बीआरडीएफ = सामग्री। प्रतिबिंब / पीआई;

// पुनरावर्ती रूप से परावर्तित प्रकाश स्रोतों का पता लगाएं। आने वाला रंग = ट्रेसपाथ (न्यूरे, गहराई + 1);

// रेंडरिंग समीकरण को यहां लागू करें। वापसी उत्सर्जन + (बीआरडीएफ * आवक * cos_theta / p); }

शून्य रेंडर (इमेज फाइनल इमेज, काउंट नंबर्स) { foreach (फाइनलइमेज में पिक्सेल) { foreach (मैं numSamples में) { रे आर = कैमरा.जनरेटरे (पिक्सेल); पिक्सेल रंग + = ट्रेसपाथ (आर, 0); }   pixel.color /= numSamples; // औसत नमूने। } } 

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

ऊर्जा के संरक्षण को सुनिश्चित करने के लिए ध्यान में रखने के लिए अन्य विचार हैं। विशेष रूप से, सरल मामले में, विसरित बीआरडीएफ का प्रतिबिंब अधिक नहीं होना चाहिए $$\frac{1}{\pi}$$ या वस्तु प्राप्त होने से अधिक प्रकाश को प्रतिबिंबित करेगी (हालांकि यह उपयोग की गई नमूना योजना पर निर्भर करती है, और सही होना मुश्किल हो सकता है)।

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

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

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

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

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

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

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

यह भी देखें

 * अर्नोल्ड (सॉफ्टवेयर)
 * ब्लेंडर (सॉफ्टवेयर) - 3डी प्रोग्राम जो साइकल को एकीकृत करता है, एक पाथ-ट्रेसिंग-जीपीयू-त्वरित रेंडरिंग इंजन
 * ऑक्टेन रेंडर
 * पिक्सर रेंडरमैन
 * लक्सरेंडर

टिप्पणियाँ

 * 1)  Lafortune, E, Mathematical Models and Monte Carlo Algorithms for Physically Based Rendering, (PhD thesis), 1996.
 * 2)  Purcell, T J; Buck, I; Mark, W; and Hanrahan, P, "Ray Tracing on Programmable Graphics Hardware", Proc. SIGGRAPH 2002, 703 – 712. See also Purcell, T, Ray tracing on a stream processor (PhD thesis), 2004.
 * 3)  Robison, Austin, "Interactive Ray Tracing on the GPU and NVIRT Overview", slide 37, I3D 2009.
 * 4)  Vray demo; Other examples include Octane Render, Arion, and Luxrender.
 * 5)  Veach, E., and Guibas, L. J. Metropolis light transport. In SIGGRAPH’97 (August 1997), pp. 65–76.
 * 6) SmallPt is an educational path tracer by Kevin Beason. It uses 99 lines of C++ (including scene description). This page has a good set of examples of noise resulting from this technique.
 * 1)  Veach, E., and Guibas, L. J. Metropolis light transport. In SIGGRAPH’97 (August 1997), pp. 65–76.
 * 2) SmallPt is an educational path tracer by Kevin Beason. It uses 99 lines of C++ (including scene description). This page has a good set of examples of noise resulting from this technique.

[Category:Global illumination algorith