Pada dasarnya, ray tracing adalah teknik render yang bekerja dengan cara mensimulasikan sinar cahaya (ray) menggunakan algoritma untuk memperhitungkan jejak yang akan dilalui oleh sinar tersebut seperti pada dunia nyata. Karena real-time ray tracing masih dianggap belum optimal dalam dunia gaming, teknik rasterization masih luas digunakan sebagai teknik render dalam game. Meskipun demikian, keduanya memiliki keunggulan masing-masing.
Rasterization ini mampu me-render suatu objek 3 dimensi ke dalam layar 2 dimensi dengan waktu yang cepat dan hasil yang bagus. Berbeda dengan rasterization, ray tracing dapat memberikan bayangan, pantulan cahaya, dan pembiasan cahaya yang sangat realistis. Grafik yang realistis inilah yang membuat ray tracing luas digunakan dalam film-film modern.
Meskipun demikian, teknik ray tracing ini membutuhkan komputer “bertenaga” besar. Oleh karena hal itu, umumnya kedua teknik ini digunakan bersama-sama dalam film. Daerah/ objek yang sering dilihat atau menjadi objek utama dapat di-render dengan menggunakan ray tracing, sedangkan objek lainnya yang kurang penting dapat di-render menggunakan rasterization.
Mengetahui Sejarah Singkat Ray Tracing
Sebenarnya, ray tracing sudah mulai muncul dalam dunia komputer sejak tahun 1960-an. Seiring berjalannya waktu, banyak ide-ide yang telah disampaikan mengenai implementasi ray tracing dalam dunia komputer. Ide-ide tersebut akan kita bahas pada bagian cara kerja ray tracing.
Penggunaan ray tracing untuk pertama kalinya muncul dalam film Compleat Angler (1979) yang diproduksi oleh Turner Whitted, seorang insinyur di Bell Labs. Meski demikian, ray tracing belum dipakai sepenuhnya dalam pencahayaan film-film besar. Pencahayaan dalam skala besar umumnya masih menggunakan bantuan lampu dalam studio.
Pada tahun 2013, film Monsters University yang diproduksi oleh Pixar akhirnya mampu menerapkan ray tracing untuk semua efek cahaya dan bayangan. Namun di balik efek yang realistis tersebut, Susan Fong, direktur bagian technical rendering, mengatakan bahwa untuk merender beberapa frame diperlukan 29 jam untuk setiap framenya. Semua itu dilakukan menggunakan super komputer dengan 55.000 core. Hal ini tentu menunjukkan seberapa beratnya teknik rendering menggunakan ray tracing.
Selain berat, penggunaan ray tracing pada film bukanlah real time. Mereka dapat me-render frame-frame dengan waktu yang lama sebelum akhirnya dirilis menjadi satu film yang lancar.
Berbeda dengan film, apabila ray tracing ingin diterapkan pada video game, rendering harus dilakukan secara real-time. Maksudnya, semua proses rendering dengan teknik ray tracing harus dilakukan dalam sekejap agar kita memperoleh performa yang layak.
Setelah 10 tahun lamanya NVIDIA melakukan penelitian mengenai real-time ray tracing ini, pada tahun 2018 impian NVIDIA dapat terwujud. Dengan dirilisnya VGA seri RTX, orang awam akhirnya dapat merasakan real-time ray tracing di dalam game seperti Battlefield V, Metro Exodus, Call of Duty: Warzone, dll.
Bagaimana Cara Kerja Ray Tracing?
Hal penting yang perlu Anda ketahui mengenai ray tracing ini adalah cara kerja sinar yang “dibalik”. Kita dapat melihat suatu objek karena sinar dari sumber cahaya bergerak memantulkan cahaya ke mata kita. Akan tetapi, di dalam ray tracing ini, kita melacak pergerakan sinar tersebut dari mata kita ke sumber cahaya.
Cara kerja dari ray tracing sebenarnya sudah lama dicetuskan oleh Arthur Appel pada tahun 1968. Ide dari Apel tersebut dapat Anda lihat melalui ilustrasi berikut.
Ray tracing bekerja dengan mengikuti jejak dari mata pengamat/ kamera (Rays from the eye) melalui pixel-pixel dalam suatu layar. Layar ini berbentuk bidang datar dan tegak lurus dengan arah mata pengamat/ kamera. Selanjutnya komputer akan memperhitungkan warna dari objek yang terlihat melalui pixel pada layar tadi.
Pada ilustrasi di atas, Anda akan melihat tanda panah atas (view ray) mengenai bola lalu dipantulkan ke sumber cahaya. Karena mengenai sumber cahaya, maka warna dari bola tersebut dapat Anda lihat. Sebaliknya, pantulan tanda panah pada bagian bawah (shadow ray) tertutup oleh bola sehingga terbentuk bayangan.
Meskipun Appel sudah menjelaskan idenya mengenai cara kerja ray tracing, penggunaan sinar (ray) dalam membentuk gambar objek mengalami perkembangan. Ada 3 teori yang menjelaskan cara sinar dapat menggambarkan suatu objek yang dikenainya.
Classical Ray Tracing
Ide pertama adalah Classical Ray Tracing pada tahun 1980. Berikut ilustrasi ray tracing dari teori tersebut.
Classical Ray Tracing menekankan 2 hal dalam penerapannya, yaitu refleksi (pemantulan) dan refraksi (pembiasan) dari sinar (ray). Dari mata pengamat, sinar akan disorotkan ke objek. Pada titik di mana sinar mengenai objek, sinar akan dilanjutkan lagi menuju ke sumber cahaya. Hal inilah yang akan menentukan apakah objek akan menampilkan warna (sinar ke sumber cahaya tidak terhalang apapun) atau membentuk bayangan (sinar ke sumber cahaya terhalang oleh suatu objek). Selanjutnya, di titik yang sama sinar akan dipantulkan dan dibiaskan. Kedua hal ini bergantung pada tekstur permukaan benda.
Pada ilustrasi di atas ketika sinar mengenai kaca untuk pertama kalinya, cahaya dipantulkan ke bawah sekaligus di biaskan ke sisi kaca yang lainnya. Sinar juga disorotkan ke sumber cahaya tanpa ada halangan apapun, sehingga bagian depan kaca dapat terlihat jelas. Hal lain yang perlu Anda lihat adalah sinar yang dipantulkan oleh “diffuse box” menuju ke sumber cahaya. Sinar tersebut tidak sampai ke sumber cahaya karena terhalang oleh sebuah objek. Terhalangnya sinar ini akan memberikan bayangan pada objek “diffuse box” tersebut.
Distributed Ray Tracing
Selanjutnya, muncul teori Distribusi oleh Cook Stochastic pada tahun 1984. Perbedaan teori Distribusi ini dengan Classical Ray Tracing hanyalah jumlah sinar (ray) yang disorotkan ke ojek.
Dasar dari Teori Distribusi ini adalah menembakkan sejumlah sinar (ray) pada objek yang sama. Dengan demikian, kita dapat melihat lebih detail permukaan suatu benda serta memungkinkan efek motion blur.
Pada ilustrasi di atas, Anda dapat melihat bahwa objek disorot dengan 3 sinar (ray) yang kemudian dipantulkan ke arah sumber cahaya. Satu dari 3 sinar (ray) tersebut terhalang oleh objek lainnya, sedangkan yang lainnya tidak. Dari sini kita dapat memperkiran bahwa objek tersebut memiliki efek bayangan yang halus. Keuntungan dari teori Distribusi ini adalah kualitas tekstur dan warna yang lebih baik dari metode ini (Distribusi). Akan tetapi semakin banyak sinar (ray) yang digunakan dalam ray tracing semakin besar pula kemampuan perangkat keras komputer yang dibutuhkan.
Path Tracing
2 tahun setelah Stochastic mencetuskan idenya, mucul teori “Kajiya-Style Diffuse Interreflection” oleh James Kajiya. Metode yang dimiliki oleh Kajiya ini sering juga dikenal dengan “Path Tracing”. Teori dari James ini diilustrasikan sebagai berikut.
Dengan metode Kajiya ini, sinar (ray) akan ditembakkan ke titik-titik yang berdekatan pada suatu objek. Karena setiap sinar (ray) akan memantul ke arah yang berbeda ,maka hasil yang diperoleh juga berbeda (ada yang terkena cahaya dan ada yang membentuk bayangan). Setiap lokasi titik-titik yang disorot cahaya tadi disimpan sebagai sampel pixel (kotak di sebelah kiri mata pengamat pada ilustrasi). Dari data pada kotak pixel tadi, komputer dapat memperhitungkan warna, tekstur, dan bayangan dengan tepat pada suatu objek tanpa harus menggunakan semua sinar (ray) pada ruangan/ area tersebut.
Dengan ketiga teori di atas, ray tracing terus berkembang hingga saat ini real-time ray tracing mampu direalisasikan oleh NVIDIA. VGA pada kelas konsumen tentu tidak memiliki kemampuan sebesar komputer-komputer yang digunakan untuk me-render film. Oleh karena itu, real- time ray tracing pada game digunakan untuk objek-objek yang utama/ sering terlihat saja. Objek-objek lain tetap menggunakan teknik rendering rasterization seperti pada game-game umumnya. Dengan cara ini, VGA tidak memperoleh beban yang sangat berat seperti komputer pada dunia perfilman.
Kesimpulannya, ray tracing dilakukan dengan menyorot sinar (ray) dari pengamat dan jejak dari sinar tersebut akan memberikan data bagi komputer mengenai suatu objek (warna, tekstur, bayangan). Karena jumlah sinar (ray) dalam suatu adegan/ scene yang sangat banyak pada umumnya, maka NVIDIA membuat real-time ray tracing terwujud dengan mengolah ray-tracing pada objek penting saja. Oleh karena itu, kedua teknik render ini (rasterization dan ray-tracing) digunakan bersama-sama dalam mengolah grafik dalam game.
NVIDIA membuat serangkaian video berisi tentang ray tracing yang diisi oleh Eric Haines, salah satu insinyur ternama NVIDIA. Untuk penjelasan lebih detail, Anda dapat melihat playlist video “Ray Tracing Essential” di bawah ini.
SHOW LESS
Add comment