Формулирайте собствена тема за проект (по желание)

Функционален Path tracer (AKA Ray tracer)

Функционален Path tracer (AKA Ray tracer)

by Виктор Георгиев -
Number of replies: 1

Георги ми предложи да напиша рейтрейсър, и аз писах, и стигнах до точка, при която бих го заявил като самостоятелен проект.

Като цяло, един рейтрейсър прави каквото е в името - проследява пътят на светлината / проследява лъчи светлина как хвърчат наляво-надясно в някаква 3д сцена, много подобно на това как светлината се разпространява в истинския живот. По метода Монте Карло се изстрелват голямо количество лъчи и после се осредняват, за да се получи картина. Ако лъчите са малко, ефекта е много подобен на снимка с евтина телефонна камера през нощта - буквално прекалено малко светлина влиза в сензора.

Този процес е доста бавен, но картините, които създава, са особено реалистични, и обичайно сложните ефекти като сенки, които избледняват при разстояние - "soft shadows", отражения от всякакъв род, и т. нар. "global illumination" - когато застанете до червена стена и тя ви оцвети в червено без тя да е лампа - се получават без "изрично" да трябва да се имплементират.

Толкова е бавен само че, че хората постоянно мислят как да редят оптимизации след оптимизации, и май може да се каже, че дори и професионалните пат трейсъри не са напълно "завършени".

Списък от някой "подзадачи" които съм направил или смятам да направя:

- Четене от .obj файл*

*Форматът за описание на материали на obj файла не е особено съвместим с пат трейсъри, за това аз избирам вид материали спрямо името им, но така или иначе повечето пат трейсъри се мразят един друг и нямат общоприет формат за материали

- Разни сметки от аналитичната геометрия (отразяване на лъч, пресичане на лъч с равнина, т.н.)

- Създаване на картина

Рисувам получената картина в БМП файл...

- Разни материали

Всеки знае за огледалото и "ъглите на отразеният и падащият лъч спрямо нормалата са равни", ама това далеч не описва всички материали на света. Друг вид материал е "дифузният" материал, при който микроскопични неравности в повърхността карат лъчите да се отразят в почти случайна посока. Съществува и материалът смесица между двете, за който няма общоприета дума май - "размазано огледало", "метал", "лъскав"... Който не е същият като "диелектрик".

- Многонишковост / паралелизъм

Процесът (би трябвало да) е лесен за правене паралелно, тъй като лъчите светлина не зависят по никакъв начин едни от други и често се правят с нещо от рода на (map тежкаФункция пиксели)... 

Примерна картина от статията в уикипедия

Картина, демонстрираща предимствата на пат трейсърите, от уикипедия