Masalah penelusuran sinar di game generasi berikutnya: analisis penelusuran sinar di remaster Spider-Man Marvel





Saat peluncuran konsol generasi berikutnya semakin dekat, Insomniac Games telah mulai memposting lebih banyak materi yang mengungkapkan detail tentang Marvel's Spider-Man dan Marvel's Spider-Man: Miles Morales. Kedua proyek tersebut menggunakan teknologi ray tracing. Menurut Alex Battaglia dari Digital Foundry, dia terlihat sangat bermartabat, jika tidak luar biasa. Lumayan untuk awalnya.



Namun, membaca komentar di Internet, dia mendapatkan banyak kritik terkait dengan penerapan teknologi, serta kecepatan bingkai dan resolusi. Jadi dalam video Digital Foundry baru, dia memutuskan untuk memperkenalkan semacam tutorial tentang ray tracing di konsol next-gen dan menjelaskan mengapa terlihat seperti itu di Marvel's Spider-Man.



Jadi, hal pertama yang pertama. Mari kita bahas apa sebenarnya ray tracing di Marvel's Spider-Man di PS5.



Pada 30FPS pada resolusi 4K, penelusuran sinar tampak hebat. Pada saat yang sama, seperti biasa dalam game Insomnia, resolusi dinamis dapat digunakan atau tidak. Di sinilah ray tracing diterapkan pada pantulan dalam game seperti yang terlihat di pintu mobil.







Atau di screenshot ini, di mana pahlawan dan kota di kejauhan tercermin di jendela bangunan.







Ray tracing juga digunakan untuk bayangan latar belakang (Ambient Occlusion, AO), menurut siaran pers. Lebih sulit untuk diidentifikasi di tangkapan layar atau video. Biasanya, AO mensimulasikan bayangan dari pencahayaan tidak langsung di area di mana cahaya yang dipantulkan di sekitar pemandangan lebih sulit dijangkau.







Sejauh komentar di media sosial dan forum, ada kekecewaan dalam kualitas pantulan ray-tracing, yang sekilas hanya terlihat pada seperempat resolusi dasar. Tapi mereka jelas memiliki filter, jadi sulit untuk mengatakannya dengan pasti.







Pantulan ditampilkan dalam 1080p, sedangkan gambar lainnya ditampilkan dalam 4K. Para komentator mengeluh, misalnya, bahwa daun dalam pantulan lebih jarang atau sama sekali tidak ada daripada yang terlihat di pohon "asli". Atau bahwa beberapa objek dalam game, seperti mobil atau pejalan kaki, mungkin tidak muncul dalam pantulan. Atau kurangnya bayangan. Atau mengabaikan detail kecil seperti setelan Spider-Man.







Faktanya, semua ini tidak mengherankan dan mengacu pada tindakan wajib, tampaknya, diterima begitu saja. Hal ini dikarenakan ray tracing dilakukan dalam beberapa tahap yang masing-masing mempengaruhi kinerja secara keseluruhan yang memiliki anggaran yang sangat terbatas.



Anggaplah bahwa kita adalah pengembang yang paling perlu membuat refleksi paling realistis dalam anggaran tertentu.







Mari bagi proses ray tracing menjadi empat langkah. Katakanlah kita perlu memenuhi 8ms untuk membuat refleksi untuk game 30 FPS pada resolusi 4K.



Mari lanjutkan ke langkah pertama. Untuk pemodelan sinar, GPU harus memiliki pemahaman tentang pemandangan dan objek geometris di dalam dan di luar layar. Pada langkah pertama, kami membuat versi adegan game yang mudah dibaca. Semakin banyak objek yang dikandungnya dan semakin dinamis objek tersebut, semakin lama waktu yang dibutuhkan untuk langkah ini.



Pada langkah kedua, kami menembakkan sinar ke dalam struktur yang dibuat di langkah pertama.







Untuk melihat apakah sorotan mengenai mana saja, kelilingi semua objek dengan kotak hit yang tidak terlihat. Dengan demikian, sinar yang mengenai pemandangan bergerak melaluinya sampai mendaftarkan pukulan ke dalam geometri. Semakin banyak sinar yang kita tembak, semakin jauh mereka pergi, atau semakin banyak hitbox yang kita pukul, semakin lama waktu yang dibutuhkan untuk langkah ini. Bagian dari pipa penelusuran sinar ini dapat diakselerasi dengan perangkat keras pada konsol dan PC.



Langkah selanjutnya adalah menekan shading atau pemilihan warna piksel.







Semakin banyak hit diarsir atau semakin sulit bayangannya, semakin lama waktu yang dibutuhkan untuk langkah ini.







Langkah ketiga memberi kita warna dan bayangan yang kita inginkan, tetapi transisi bisa buruk atau berisik. Masalah ini diselesaikan pada tahap keempat. Biasanya, semakin akurat hasil langkah ketiga diselesaikan di langkah keempat, semakin lama prosesnya.







Seluruh saluran pipa harus dipasang dalam total delapan milidetik, dan pada awalnya kita masih jauh dari tujuan itu. Kita perlu menyesuaikan langkah-langkahnya untuk menghemat waktu dan juga untuk memastikan pantulan kita masih terlihat bagus dan cocok dengan desain game. Hal ini dapat menyebabkan penurunan kualitas refleksi di beberapa area dan peningkatan di area lain.







Salah satu pengoptimalan pertama yang akan kami gunakan adalah mengurangi resolusi untuk penelusuran sinar. Ini akan membatasi jumlah sinar yang keluar dan mengurangi waktu yang dibutuhkan untuk langkah kedua dan ketiga.







Seperti yang Anda lihat pada gambar di bawah, pantulan terlihat hampir seperempat dari resolusi aslinya. Pengoptimalan ini dilakukan tidak hanya untuk GPU konsol, tetapi untuk semua GPU secara umum, karena penelusuran sinar sangat intensif sumber daya.







Mari kita lihat tangkapan layar dari demo The Ghost Runner dengan pelacakan sinar 4K yang diaktifkan pada kartu grafis RTX2060 Super. Di sini kami melihat beberapa perbedaan dibandingkan dengan Spider-Man. Unreal Engine 4, tempat game dibuat, menggunakan metode penelusuran sinar yang sedikit lebih mahal pada waktunya, tetapi secara fisik lebih akurat daripada di Spider-Man.







RTX 2060 Super bekerja dengan cara yang mirip dengan RTX 2070, memiliki bandwidth bus memori yang sama dengan PS5 dan penyimpanan 8GB yang sama. RTX 2060 Super kemungkinan besar menjadi titik awal yang bagus untuk perbandingan dengan GPU PlayStation 5.







Saat adegan ditampilkan dalam 4K bersama dengan pantulan, dan jumlah pantulan di layar sekecil kasus genangan statis di atas, GPU hampir tidak cocok dengan 30 FPS. Jika ada lebih banyak dinamika dalam pemandangan, kecepatan bingkai pasti akan lebih rendah. Mengurangi resolusi aksial ray tracing hingga 50% dan dengan demikian resolusi total menjadi 1080p meningkatkan kinerja sekitar 27%, meninggalkan sumber daya gratis di GPU untuk meningkatkan kecepatan bingkai hingga 30 FPS.







Hasil yang lebih mengesankan bisa dilihat di pemandangan lain. Seperti di sini. Permukaan kaca reflektif menempati hampir seluruh layar. Dalam hal ini, pantulan pada resolusi 4K asli menghasilkan kecepatan bingkai 21 FPS. Pada saat yang sama, menurunkan resolusi pantulan ke 1080p akan meningkatkan kecepatan bingkai sebesar 58% menjadi 33 FPS dengan 30 FPS yang diperlukan.



Jadi, pada GPU dengan kinerja yang sama dengan PS5, Anda perlu menggunakan refleksi ray-traced beresolusi lebih rendah untuk dapat mempertahankan kecepatan frame 30 FPS yang konsisten pada resolusi 4K secara keseluruhan. Maka menjadi jelas mengapa Spider-Man hanya akan menggunakan refleksi pada 1080p untuk mengurangi biaya penelusuran sinar.







Mari kembali ke contoh perhitungan kita. Kami telah mengurangi resolusi pantulan sehingga tahap kedua dan ketiga sekarang lebih menghemat waktu. Tapi kami masih tidak sesuai dengan anggaran yang diberikan untuk durasi frame.



Mari kita coba mempersingkat waktu pada langkah pertama dengan mengurangi dinamisme atau jumlah objek sehubungan dengan penelusuran sinar yang akan dilakukan. Jadi, di tangkapan layar yang ditunjukkan sebelumnya, beberapa objek dinamis mungkin telah hilang dalam pantulan. Atau di sini, dalam video gameplay Miles Morales, dalam adegan keramaian terkadang Anda dapat melihat bahwa beberapa NPC tidak tercermin di permukaan.







Kami tahu dari pengalaman pengembang lain bahwa menggambar banyak karakter di layar bisa sangat boros sumber daya. Misalnya, beberapa adegan di Metro Exodus dengan banyak karakter di RTX 2080 Ti membutuhkan waktu 4 md untuk dirender. Dalam kasus kami, ini akan menjadi setengah dari anggaran yang dialokasikan.



Jadi, mengurangi jumlah objek dinamis pada tahap pertama penelusuran sinar mengarah ke percepatan proses, dan kemudian kita menyesuaikannya dengan alokasi 8 ms.







Namun, hasilnya mungkin tidak sekeren yang kita inginkan.



Misalnya, lihat tangkapan layar Battlefield V.











Seperti yang bisa kita lihat di atas, bangunan muncul dan menghilang dalam pantulan. Ini bukan efek yang paling diinginkan, jadi kami akan meningkatkan jarak yang dapat ditempuh sinar pada langkah kedua, serta jarak di mana objek termasuk dalam struktur pada langkah pertama.







Kembali ke frame kita dari Spider-Man, kita dapat melihat bahwa pantulan menunjukkan objek yang sangat jauh. Mungkin akan sangat tidak menyenangkan jika objek di cakrawala tidak ada dalam pantulan atau terus-menerus berkedip, muncul dan menghilang.







Oleh karena itu, dengan mempertimbangkan bangunan yang terletak jauh dari sumber pantulan dalam pantulan, dan meningkatkan jarak yang dilalui sinar, kita harus mengorbankan sesuatu yang lain untuk melunasinya.







Mari kembali ke perhitungan kita. Memutuskan untuk memperhitungkan objek yang jauh dalam refleksi, kami kembali menemukan diri kami di luar batas anggaran kami. Oleh karena itu, kami akan sekali lagi meninjau pipeline untuk kemungkinan penyederhanaan. Mungkin langkah kedua akan membawa kita kembali ke 8ms yang diinginkan.



Mari kita lihat lagi screenshot kota kita. Dalam pantulan di jendela, Anda dapat melihat lebih sedikit atau bahkan daun yang hilang dibandingkan dengan kemunculannya pada model pohon asli. Daun diklasifikasikan sebagai transparan di sini, dan untuk objek transparan, langkah kedua dari pipeline membutuhkan waktu lebih lama. Kami mengetahui hal ini dari pengalaman dengan Battlefield V, di mana partikel dan pantulan membuat pemandangan tertentu menjadi sangat mahal.



gambar



Untuk Spider-Man, kita bisa mengurangi jumlah daun di pohon di pantulan sebelum langkah kedua. Kami juga akan membuatnya agar efek partikel tidak diproses dengan ray tracing, seperti di sini kabut dalam pantulan tidak ditampilkan.







Sekarang kami hampir masuk ke dalam anggaran bingkai, tetapi masih sedikit melampauinya.







Optimasi terakhir bisa dilakukan pada langkah ketiga, dimana kita menggunakan shading.



Mari kembali ke screenshot kita. Pernahkah Anda memperhatikan kurangnya detail kecil dalam pantulan kostum Spider-Man? Yang terlihat pada setelan aslinya? Jika kita menyederhanakan materi dalam refleksi, akan membutuhkan lebih sedikit waktu untuk menggambarnya.







Tidak ada salahnya, karena banyak game yang menggunakan ray tracing, seperti Wolfenstein: Youngblood, menggunakan teknik yang sama.







Hasilnya, kami masuk ke dalam alokasi 8 ms. Jadi, kami meningkatkan kualitas refleksi dalam beberapa aspek, misalnya, dengan menambahkan refleksi dari objek yang jauh, tetapi pada saat yang sama menggunakan penyederhanaan tertentu, seperti downsampling refleksi.







Semoga contoh ini membantu kami memahami dilema yang dihadapi developer game saat menghadapi anggaran kinerja yang terbatas dan teknologi mahal seperti ray tracing.



All Articles