Кіріспе

Екі өтулі жаһандық жарықтандыру алгоритмі
Компьютерлік графикада фотонды карталау – 1995 және 2001 жылдар аралығында Хенрик Ванн Дженсен әзірлеген екі өтулі жаһандық жарықтандыру алгоритмі. Ол кеңістіктегі белгілі бір нүктедегі жарық сәулесінің интегралдауын шешу үшін рендеринг теңдеуін шамамен шығарады. Жарық көзінен (фотон сияқты) және камерадан шығатын сәулелер белгілі бір тоқтату критерийіне жеткенше тәуелсіз түрде іздестіріледі, содан кейін олар екінші қадамда сәулелену мәнін алу үшін біріктіріледі. Алгоритм жарықтың әртүрлі нысандармен өзара әрекеттесуін шынайы түрде модельдеу үшін қолданылады (басқа фотореалистік рендеринг техникаларына ұқсас). Атап айтқанда, ол шыны немесе су сияқты мөлдір заттар арқылы жарықтың сынға ұшырауын (қаустикалық эффектілерді қоса), жарықтандырылған нысандар арасындағы диффузиялық шағылысуды, мөлдір материалдардағы жарықтың беткі қабатта шашырауын және түтін немесе су буы сияқты бөлшектік материяның әсерін модельдей алады. Фотонды карталау спектрлік рендеринг сияқты жарықтың дәлірек модельдеуіне дейін кеңейтілуі мүмкін. Прогрессивті фотонды карталау (PPM) сәулелерді іздеуден басталады, содан кейін фотонды карталау өтулерін көбірек қосу арқылы прогрессивті түрде дәлірек рендеринг қамтамасыз етеді. Жолды іздеу, екі бағытты жолды іздеу, көлемдік жолды іздеу және Метрополис жарық көлігінен айырмашылығы, фотонды карталау – "бұрмаланған" рендеринг алгоритмі, яғни осы әдісті қолдана отырып, бір көріністің шексіз көп рендерингін орташалау рендеринг теңдеуінің дұрыс шешіміне жеткізбейді. Дегенмен, бұл тұрақты әдіс, және фотондардың санын арттыру арқылы рендерингтің дәлдігін арттыруға болады. Фотон саны шексіздікке жақындаған сайын, рендеринг рендеринг теңдеуінің шешіміне жақындап келеді.

Каустикалық

Жарық сынған немесе шағылысқан кезде, жақын жердегі беттерде шоғырланған жарық дақтары түрінде көрінетін кастикалық деп аталатын үлгілер пайда болады. Мысалы, үстелде тұрған шарап шынысы арқылы жарық сәулелері өткенде, олар сынып, үстелде жарық үлгілері пайда болады. Фотондық карталау осы шоғырланған жарық дақтарының қайда пайда болатынын модельдеу үшін жеке фотондардың жолын іздей алады.

Диффузиялық өзара шағылысу

Диффузиялық өзара шағылысу бір диффузиялық дененің жарығы екінші дененің бетінен шағылысқанда көрінеді. Фотондарды із кестесі (photon mapping) осы әсерді басқаруға ерекше жарамды, себебі алгоритм фотондарды бір беттен екінші бетке сол беттің екі жақты шағылысу үлестіру функциясы (BRDF) негізінде жібереді, сондықтан бір дененің жарығы екіншісіне тиюі – әдістің табиғи нәтижесі. Диффузиялық өзара шағылысуды алғашқы рет радиоздық шешімдер арқылы модельдеуге қол жеткізілді. Бірақ фотондарды із кестесі жарық таралуын сахнадағы геометрияның сипаттамасынан бөліп көрсетеді. Түс өтуі (color bleed) – диффузиялық өзара шағылысудың мысалы.

Жер астындағы шашырау

Жер асты шашырауы – жарық материалға енгеннен кейін сіңірілуі немесе басқа бағытта шағылысуы алдында шашырауы салдарынан байқалатын құбылыс. Жер асты шашырауын фотондық карта жасау арқылы нақты модельдеуге болады. Бұл әдіс алғаш рет Женсен тарапынан қолданылған; алайда, мұндай әдіс жоғары шашыраңқы материалдар үшін өте баяу болады, ал екі жақты беттік шашырауды кері тарату функциялары (BSSRDF) осы жағдайларда тиімдірек.

Фотондар картасының құрылысы (1-шы өту)

Фотондық карта жасау кезінде жарық көздерінен фотон деп аталатын жарық пакеттері көрініске жіберіледі. Фотон бір бетпен қиылысқанда, қиылысу нүктесі және кіріс бағыты фотон картасы деп аталатын кэшке сақталады. Әдетте, бір көрініс үшін екі фотон картасы жасалады: біреуі каустика үшін, ал екіншісі басқа жарық үшін жаһандық. Бетпен қиылысқаннан кейін, материал шағылыстыру, сіңіру немесе тарату/сындыру ықтималдығын анықтайды. Осы әрекеттердің біреуін таңдау үшін «орыс рулеткасы» деп аталатын Монте-Карло әдісі қолданылады. Егер фотон сіңірілсе, жаңа бағыт берілмейді және осы фотонды іздеу тоқтатылады. Егер фотон шағылысса, шағылысқан сәуленің қатынасын анықтау үшін беттің екі бағытты шағылыстыру үлестіру функциясы қолданылады. Соңында, егер фотон таратылса, тарату сипатына байланысты оның бағытына функция беріледі. Фотон картасы құрылғаннан кейін (немесе құрылым кезінде) әдетте k жақын көрші алгоритмі үшін оңтайлы етіп орналастырылады, себебі фотонды іздеу уақыты фотондардың кеңістікте таралуына байланысты. Йенсен kd-ағаштарын пайдалануды ұсынады. Фотон картасы кейін пайдалану үшін дискіде немесе жадта сақталады.

Рендеринг (екінші өту)

Алгоритмнің осы кезеңінде бірінші өтуде құрылған фотондар картасы шығыс кескінінің әрбір пикселінің сәулеленуін бағалау үшін пайдаланылады. Әрбір пиксел үшін көрініс сәулемен іздестіріледі, ең жақын қиылысқан бет табылғанға дейін. Осы сәтте, рендеринг теңдеуі қолданылып, сәулені соққан нүктеден шығатын беттің сәулеленуі есептеледі. Тиімділікті арттыру үшін теңдеу төрт жеке факторға бөлінеді: тікелей жарықтандыру, айқын шағылыс, каустика және жұмсақ жанама жарықтандыру. Тікелей жарықтандыруды дәл бағалау үшін, қиылысқан нүктеден әрбір жарық көзіне сәуле жіберіледі. Егер сәуле басқа объектімен қиылыспаса, жарық көзі тікелей жарықтандыруды есептеу үшін қолданылады. Жанама жарықтандыруды шамамен бағалау үшін фотондар картасы сәулелену үлесін есептеуге пайдаланылады. Айқын шағылыс көп жағдайда сәуле іздеу процедураларын қолдану арқылы есептелуі мүмкін (өйткені ол шағылыстарды жақсы өңдейді). Каустикадан бетке түсетін сәулелену үлесі тікелей каустикалық фотондар картасын пайдалану арқылы есептеледі. Бұл картадағы фотондардың саны жеткілікті болуы керек, себебі карта сахнадағы каустика туралы ақпараттың жалғыз көзі болып табылады. Жұмсақ жанама жарықтандыру үшін сәулелену фотондар картасын тікелей пайдалану арқылы есептеледі. Алайда, бұл үлестің каустика үлесі сияқты дәл болуы міндетті емес, сондықтан жаһандық фотондар картасы қолданылады.

Фотондар картасын қолдану арқылы сәулеленуді есептеу

Қиылысу нүктесіндегі беттік сәулеленуді есептеу үшін кэштелген фотондар карталарының бірі пайдаланылады. Қадамдар: Фотондар картасындағы ең жақын көрші іздеу функциясын қолданып, N ең жақын фотонды жинаңыз. Осы N фотонды қамтитын сфераны S деп белгілейік. Әрбір фотон үшін, фотонның ұсынып тұрған флюксінің мөлшерін (нақты фотондардың санын) S сферасының ауданына бөліп, содан кейін осы фотонға қолданылатын BRDF-қа көбейтіңіз. Барлық фотондар бойынша алынған нәтижелердің қосындысы, осы бетке түскен сәуле бағытындағы беттік қиылыстан қайтарылған жалпы беттік сәулеленуді көрсетеді.

Оңтайландырулар

Қажетсіз фотондарды шығарудан аулақ болу үшін, шығып бара жатқан фотондардың бастапқы бағыты көбінесе шектеледі. Фотондарды кездейсоқ бағытта жіберудің орнына, олар белгілі нысанға қарай жіберіледі, ол жарықты шоғырландыру немесе тарату үшін қажетті фотон манипуляторы болып табылады. Алгоритмге тағы да көптеген түзетулер енгізуге болады: мысалы, жіберуге тиіс фотондардың санын, оларды қай жерге және қандай үлгіде жіберуді таңдау. Егер белгілі бір бағытта көбірек фотондар шығарылса, фотондардың соқтығысқан орнының айналасындағы фотондар картасында фотондардың тығыздығы артады, демек, бұл тығыздықты өлшеу сәулеленудің дұрыс емес мәнін береді. Бұл рас, бірақ сәулеленуді есептеуге қолданылатын алгоритм сәулелену шамаларына тәуелді емес. Жұмсақ жанама жарықтандыру үшін, егер бет Ламберт беті болса, онда сәулелену кеші деп аталатын әдіс қолданылып, бұрынғы есептеулерден алынған мәндерді интерполяциялауға болады. Тікелей жарықтандыру кезінде қажетсіз соқтығысу тексерулерін болдырмау үшін көлеңке фотондары қолданылуы мүмкін. Фотондарды карталау процесінде, фотон бетке соққанда, әдеттегі операциялардан өзге, бастапқы фотон келген бағытта көлеңке фотоны шығарылады, ол нысан арқылы толығымен өтеді. Келесі нысанмен соқтығысқанда, көлеңке фотоны фотондар картасына сақталады. Содан кейін тікелей жарықтандыруды есептеу кезінде, нысанмен соқтығысуды тексеру үшін беттен жарыққа сәуле жіберудің орнына, фотондар картасынан көлеңке фотондары іздестіріледі. Егер олар табылмайтын болса, нысан жарық көзіне тікелей көрінеді және қосымша есептеулерден аулақ болуға болады. Бейне сапасын, әсіресе каустикаларды оңтайландыру үшін Дженсен конус сүзгісін пайдалануды ұсынады. Негізінде, сүзгі фотондардың сәулеленуге қосқан үлесіне, олардың сәуле бетімен қиылысқан жерінен қаншалықты алыс екеніне байланысты салмақ береді. Бұл кескіндерді анықтап көрсетуге мүмкіндік береді. Бейне кеңістігіндегі фотондарды карталау, GPU растерлеушісін пайдалану арқылы бірінші және соңғы шашырауды есептеу арқылы нақты уақыт өнімділігіне жетеді.

Вариациялар

Фотондар картасы негізінен сәулелік трассировкамен жұмыс істеу үшін жасалған, бірақ оны сканерлік рендерлермен де қолдануға болады.