Ray Tracing Günlükleri — Part 1

Merhabalar,

En azından şimdilik 3–4 ay sürecek güzel bir Ray Tracing macerasına çıkıyorum. Temel ray tracing algoritmalarından başlayıp üzerine ekleyerek ilerleyen bir günlük olacak. Kod kısmını belki günlük tamamlandıktan sonra paylaşabilirim ama şimdilik sadece görseller üzerinden ilerleyeceğiz. Kodun tamamı C++ ile yazıldı. Yardımcı kütüphane olarak şimdilik GLM ve libpng kullanıldı, eğer sonradan başka kütüphane eklenirse onları da paylaşırım.

İlk olarak bu hikayenin nasıl başladığını anlatayım. Odtü Bilgisayar mühendisliğinde okuyanlar bilir, Computer Graphics bizde zorunlu ders olarak verilir. Kimileri küfrederek kimileri çok severek tamamlar dersi :). Kesinlikle kolay bir ders değildir ama ortaya çıkardığınız şeylerden zevk alıyorsanız tadından yenmez bir hal alır. Belki de Ahmet Akyüz Hocamızın sayesinde benim lisanstayken en zevk aldığım derslerden biriydi. Şimdi lisansüstü eğitimime devam ederken karşıma Advanced Ray Tracing çıktı ve beni çok mutlu etti tekrardan Computer Graphics ile ilgilenecek olmak. Her ne kadar graphics’den zevk alsam da çalışma hayatımda Image Processing ve Computer Vision alanında çalıştığım için graphics’e pek vakit kalmıyordu. Bu ders sayesinde tekrardan Computer Graphics çalışabilecek olmak hem beni heyecanlandırdı hem de mutlu etti. Neyse lafı uzatmadan, basit ama bir o kadar da mutluluk veren ilk Ray Tracing çıktılarımı paylaşayım.

Simple.png

Her ne kadar basit olarak görünsede yazdığınız programın doğruluğu açısından basit inputlarla başlamak her zaman iyidir. Şimdi biraz daha karmaşık bir sahneye geçelim.

simple_shading.png

Bu resmin önemi de gölge (shadow) algoritmasının doğru çalışıp çalışmadığını kontrol etmemimizi sağlamasıdır. Şimdi computer graphics’teki meşhur inputlardan birine geçelim. Our lovely bunny :)

bunny.png

Yaklaşık olarak 5000 üçgenden oluşan bir model. Her hangi bir hızlandırma yöntemi kullanmadan ve multhreading olmadan bu resmin üretilmesi yaklaşık olarak 32 saniye sürdü (Intel 2.0 GHz Core i7 3667U işlemci). Diğer inputlar için ölçmeye gerek duymadım milisaniyeler içinde tamamlandıkları için.

Şimdilik hikayemize burada ara veriyorum. Haftaya yeni resimler ve yeni algoritmalar ile devam edeceğiz.

Show your support

Clapping shows how much you appreciated Oğulcan Eryüksel’s story.