Test : World of Tanks enCore RT Demo – Ray Tracing untuk Semua GPU?
Implementasi real-time Ray Tracing semakin meluas. Perlahan tapi pasti, nampak makin banyak developer game mencoba berbagai strategi untuk menerapkan teknik rendering yang dulu dihindari karena sangat membebani hardware tersebut. Salah satu vendor GPU terkemuka yakni NVIDIA, melakukan gebrakan besar dengan meluncurkan GPU GeForce RTX ‘Turing’ pada 2018 lalu, dan memperkenalkan dedicated hardware (a.k.a ‘RT Core’) untuk mempercepat perhitungan dalam operasi real-time ray tracing. Jelas, performa real-time ray tracing yang tinggi adalah salah satu fitur yang menjadi fokus pada GeForce RTX, dan NVIDIA nampak cukup sukses memasarkan fitur ini sampai-sampai istilah ‘RTX’ menjadi identik dengan ‘Ray Tracing’.
–
Real-Time Ray Tracing : Perlu Hardware Khusus?
Solusi NVIDIA dengan menawarkan hardware khusus untuk performa ray tracing tinggi ini disambut dengan dua reaksi yang berlawanan : satu kubu memuji usaha NVIDIA untuk memajukan lompatan teknologi grafis, dan kubu lain masih meragukan apakah solusi hardware khusus ini layak menjadi investasi, mengingat GPU GeForce RTX generasi awal memiliki harga yang relatif tinggi.
Pertanyaan yang kerap timbul adalah: “Apakah real-time ray-tracing akan selalu membutuhkan hardware khusus?”
Beberapa game AAA dengan implementasi real-time ray tracing yang rilis setahun belakangan ini nampak sejalan dengan konsep NVIDIA, dimana game-game tersebut kebanyakan berjalan pada API DXR (DirectX Ray Tracing, berbasiskan DX12), dan beberapa perhitungan yang dilakukan didalamnya di-akselerasi dengan dedicated hardware, ‘RT Core’ pada GeForce RTX.
Tapi perlu diingat, NVIDIA tetap memberikan DXR support pada GeForce GTX 10-series Pascal untuk bisa melakukan real-time ray-tracing, meskipun jelas sekali pengguna GeForce GTX akan mendapat penurunan framerate yang JAUH lebih besar dari pengguna GeForce RTX saat fitur ray-tracing dihidupkan.
Secara singkat, dengan teknik implementasi tertentu, real-time ray tracing pada gaming masih bisa dihadirkan TANPA hardware khusus – selama ada yang mengembangkan teknik rendering ini, dan melakukan tuning dan optimalisasi supaya penurunan performa-nya masih masuk akal.
Tim developer World of Tanks menjawab tantangan ini dengan melakukan implementasi real-time ray tracing TANPA kebutuhan hardware tertentu, dan bahkan bisa berjalan pada SEMUA GPU yang kompatibel dengan standar DX11!
World of Tanks enCore RT Demo : Ray Tracing berbasis DX11
Developer game World of Tanks beberapa saat lalu meluncurkan ‘World of Tanks enCore RT Demo‘, sebuah tech demo yang bisa diunduh secara gratis. Tool benchmark standalone ini dapat menguji performa kemampuan grafis PC, terutama bagi gamer World of Tanks yang ingin melihat prediksi performa PC saat fitur ray tracing ini diaktifkan. (Demo bisa didapatkan pada link berikut)
Hal yang menjadi fokus pada Demo ini adalah:
- TIDAK ada kebutuhan GPU khusus karena menggunakan API DirectX 11 SEMUA GPU yang mendukung API DirectX 11 dari semua vendor berpotensi menjalankan teknologi ini
- OS yang didukung adalah Windows 7/8/10, tidak secara khusus membutuhkan Win10 1809+ seperti persyaratan DXR.
–
Ruang Lingkup & Metode Pengujian
Tentu, konsep bahwa implementasi ray tracing yang tidak ‘dikunci’ di hardware tertentu ini menarik untuk dilihat lebih dekat. Kami akan melihat bagaimana cara kerja-nya, dan juga melakukan beberapa uji performa singkat. Kami pastinya akan mencoba demo ini pada beberapa hardware yang umumnya tidak dikenal untuk memiliki ray tracing support, seperti GeForce GT 1030, Intel UHD 630 Graphics, dan juga APU laptop seperti AMD Ryzen 5 2500U.
Mari mulai!
Ray Tracing pada World of Tanks enCore RT Demo : Ray Traced Shadows
Real-time ray tracing akan memberikan beban lumayan signifikan ke rendering pipeline, sehingga diperlukan optimalisasi spesifik untuk membuat ini bisa dikerjakan sambil menjaga target FPS yang nyaman : idealnya 60 FPS, atau batas bawah pada 30 FPS. Jangan salah, melakukan ray tracing pada 30 FPS berarti semua perhitungan dalam satu frame harus selesai dalam 33 ms(miliseconds!) , ini jelas tantangan yang jauh berbeda dibanding ray tracing pada berbagai offline renderer yang biasanya menghitung satu frame-nya dalam hitungan detik atau menit.
Untuk membuat ray tracing bisa dilakukan pada ranah real-time, biasanya para developer akan memilih metode untuk menerapkan ray tracing hanya pada area tertentu. Sebagian besar area masih di-render dengan metode tradisional (rasterization), sedangkan ray tracing hanya dikerjakan di area khusus yang memberikan visual impact maksimal. Berbagai game modern tahun 2018-2019 menunjukkan hal ini, mulai dari Battlefield V sampai Shadow of The Tomb Raider, dan pada hardware khusus seperti GeForce RTX kelas atas sekalipun, penuruan framerate ketika ray tracing diaktifkan masih lumayan besar. Ingat juga pada konteks real-time, ray tracing akan dilakukan dengan jumlah kalkulasi rays per pixel sesedikit dan se-efisien mungkin (mungkin hanya 1 ray per pixel).
Pada World of Tanks (WoT) enCore RT Demo ini, implementasi ray tracing yang mereka pilih adalah spesifik pada bagian shadow.
Shadow : Lebih akurat
Fokus pada WoT adalah memberikan ekstra realisme dengan mengejar kualitas bayangan yang akurat (‘Physically accurate shadows’). Banyak developer graphics engine sudah menyadari bahwa metode rendering tradisional/rasterization kadang memiliki limitasi dalam operasinya, dimana shadow yang dikerjakan berasal dari shadow mapping. Pada metode ini kadang masih ada detail yang hilang, dan kadang ada visual artifacts seperti ‘aliased shadows‘. Menambah resolusi shadow map bisa sedikit mengatasi masalah visual, tapi pastinya ini menambah beban ke GPU dan bisa jadi tidak sebanding dengan akurasi yang dihasilkan.
Seperti ditunjukkan pada gambar di atas, bayangan yang akurat seperti pada Dunia nyata, idealnya adalah bayangan yang tajam pada area contact (‘umbra’), sedangkan area sekitarnya perlahan menjadi halus (‘penumbra’).
Berikut ini WoT menunjukkan bagaimana ray traced shadow dapat menghasilkan kualitas bayangan yang superior, mereka secara spesifik menerapkan ray tracing pada area di sekitar tank yang mendapat pencahayaan langsung dari Matahari :
Akselerasi BVH (Bounding Volume Hierarchy)
Walaupun ‘hanya’ pada bayangan, ray tracing masih membutuhkan perhitungan yang cukup kompleks. Salah satu perhitungan yang umum terjadi saat ray tracing adalah melakukan identifikasi dimana sebuah ray akan melakukan ‘contact’ dengan object / triangle tertentu.
Proses mencari ‘ray-triangle intersection‘ ini sangat memakan waktu mengingat object dalam game biasanya terdiri dari ribuan triangle atau lebih. Untuk itu, para developer mencari solusi pintar untuk melakukan hal ini, salah satunya dengan algoritma BvH (Bounding Volume Hierarchy). Tanpa masuk ke detail yang lebih jauh lagi, BVH akan mempercepat perhitungan ray-triangle intersection ini dengan menciptakan sebuah struktur untuk membagi area objek ke sebuah ‘box’ tertentu, dan proses mencari ray intersection dilakukan secara sistematis dari ‘box’ yang paling besar ke ‘box’ paling kecil seperti dilihat pada ilustrasi sederhana berikut:
Karena renderer tidak perlu menguji semua triangle pada objek tertentu, proses pencarian ray-triangle intersection menjadi jauh dipersingkat dengan algoritma BVH . Yang jadi tantangan selanjutnya : perhitungan algoritma BVH atau pembuatan ‘BVH structure’ ini masih memberi beban siginifikan pada hardware ! Datasheet NVIDIA mengatakan bahwa umumnya kalkulasi BVH (a.k.a ‘BVH Traversal’) ini bisa memakan ribuan instruksi per ray. Jika ini dikerjakan pada GPU shader unit, pastinya ini memperlambat perhitungan satu frame secara signifikan, mengingat bahwa GPU shader juga perlu melakukan perhitungan lain dalam satu frame – ini sebabnya NVIDIA menciptakan fixed-function dedicated hardware untuk melakukan kalkulasi BVH pada GeForce RTX ‘Turing’ yang mereka sebut RT Core.
Ingat bahwa developer WoT mencoba melakukan ray tracing tanpa hardware khusus, lalu kalkulasi BVH-nya dikerjakan siapa? Mereka memilih untuk mengerjakan itu semua pada CPU.
BVH di WoT : Dikerjakan CPU
–
Pada awalnya perhitungan BVH ini masih membutuhkan 8 ms per frame, membuat game yang tadinya berjalan 60 FPS / 16.6 ms mendapat penurunan frame signifikan ke sekitar 40-an FPS (24ms frametime). Ini jelas tidak ideal karena perhitungan BVH masih memakan terlalu banyak waktu. Untungnya, berkat kolaborasi antara developer WoT dengan Intel Advanced Rendering engineer dan Intel Embree technology(Embree.org), proses BVH ini bisa dilakukan secara lebih efisien ketika dibagi ke berbagai core CPU.
Hasilnya : kalkulasi BVH (multi-threaded BVH construction) untuk scene kompleks yang melibatkan 30 tank hanya memakan waktu sekitar 1.5ms per frame. Sekarang sisanya tinggal menjadi tugas GPU untuk melakukan ray tracing berbasis Compute Shader. Perlu diingat, meskipun engine ini dibuat dengan kerjasama Intel, tidak berarti semua ini akan di-lock ke prosesor Intel. Anda masih bisa menjalankan demo ini pada prosesor lain.
4 Opsi Setting
Secara resmi ada 4 pilihan setting Ray Traced Shadows pada Wot:
- OFF (pilhan default)
- HIGH (Hard contact shadow only)
- MAXIMUM (Hard contact shadow + Soft Shadow – ini adalah definisi ‘physically accurate’ shadow)
- ULTRA (Hard contact shadow + De-noised Soft Shadow)
–
Nah, setelah mengetahui proses kerja ray traced shadows pada WoT, saatnya melihat bagaimana performancenya pada beberapa hardware. Simak pengujian lengkap di halaman berikutnya!