GPU Raytracer

Напишете GPU raytracer като използвате CUDA или OpenCL. Проектът е за 1 или 2ма студента.

Ако е само за един студент, напишете GPU raytracer работещ с най-просто директно осветление и стандартни diffuse шейдъри.

За двама студенти, вторият човек да пише шейдъри (поне отражение, пречупване), различни видове светлини (point, spot, area) или допълнителни ефекти (environment, depth of field, fog).

Най-добре да започнете начисто и дръжте нещата прости. Например не е нужно да подържате повече от един вид геометрия (използвайте триъгълници или сфери). Можете и да преизползвайте код от fmiray ако се налага, но имайте предвид че CUDA и OpenCL подържат варианти на чисто C, а не C++.

Comments

GPU Raytracer

Здравейте,

Можете ли да ни кажете някоя конкретна ревизия от учебния рейтрейсър, който GPU рейтрейсъра трябва да наподобява или да покрива като функционалност. Освен това ми е трудно да намеря информация как да тествам CUDA, ако графичната ми карта не поддържа архитектурата (т.е има ли нещо като емулатор , на който да следим дали всичко се извършва на допълнителния процесор и с каква скорост?).

Очакваме да реализирате поне

Очакваме да реализирате поне следните неща:

* Камера (всичко без стереоскопия)
* Геометрия: или триъгълни мрежи (което е най-добрият вариант)
или някаква минимална комбинация от явни повърхнини (сфера + равнина да речем)
* Шейдъри: Flat или Phong шейдър
* Текстури: ако го пишеш сам, можеш да ги пропуснеш
* Environment: също ако го пишеш сам, не е задължително
* Не е нужно сцената да се чете от файл. Може да се генерира директно в кода.

Очаква се да има някакъв user interface с който да можеш да се разхождаш из сцената в реално време.
Иначе няма конкретна ревизия, която да следваш. Ползвай последната най-добре.

По втория ти въпрос не мога да отговоря, но си мисля, че не е добра идея да подхващаш писане на CUDA, ако нямаш CUDA-способна карта. Все пак основната идея е това да работи после в реално време, а ако върви само върху CPU-то, скоростта няма да е много висока.