Rendering Berbasis Fisik
Anda berada di jalur yang benar ketika Anda mengatakan "ia mencoba meniru bagaimana cahaya memantul dalam kehidupan nyata, yang biasanya terbagi menjadi dua komponen, specular dan difus tergantung pada jenis materialnya."
Tapi kami telah memodelkan material dengan specular dan difus dalam game & komputer grafik untuk waktu yang lama. Kuncinya adalah kita biasa menangani hal-hal ini sebagai sepenuhnya independen - mengubah specularity tidak mengubah difusi:
Ini adalah contoh bayangan Phong dari wiki Blender . Anda dapat melihat bahwa ia menawarkan dua parameter intensitas specular dan kekerasan specular, dan parameter ini hanya mengubah bagian keputihan refleksi. Refleksi biru difus tidak berubah sama sekali.
Cara permainan akan menggunakan ini adalah seorang seniman akan ditugaskan untuk menyesuaikan nilai-nilai ini untuk setiap materi sampai "terlihat benar." Karena "kekerasan specular" bukanlah sifat fisik nyata dari bahan yang dapat kita ukur dengan tepat, itu harus dilakukan dengan mata.
Metode ini agak rapuh. Saat Anda mengubah iluminasi (katakanlah, objek dinamis yang bergerak melalui area yang berbeda, atau dalam lingkungan dengan waktu dan cuaca) itu dapat terlihat agak salah - terlalu terang atau terlalu gelap - karena kondisi tampilan tidak sama dengan yang parameter specularnya disetel untuk.
Masukkan Rendering Berbasis Fisik, yang merupakan upaya untuk membumikan uraian materi kami di properti permukaan yang lebih objektif dan terukur. Salah satu sifat yang paling jelas adalah kekekalan energi - permukaan yang lebih kasar akan menyebarkan cahaya secara difus, dan permukaan yang lebih halus / lebih metalik akan memantulkan cahaya secara lebih langsung, tetapi itu adalah kumpulan cahaya yang sama dengan yang mereka gunakan. Jadi hal-hal lain dianggap sama, saat kita membuat materi lebih bersinar, komponen yang menyebar harus menjadi lebih gelap:
Contoh ini dari artikel Marmoset yang menjelaskan PBR yang awalnya dibagikan oleh Syntac_
Ada lebih banyak render berbasis fisik daripada konservasi energi, tetapi ini mungkin merupakan tanda paling jelas bahwa Anda bekerja dengan sistem berbasis fisik.
Dengan menjaga agar model refleksi serupa dengan bagaimana bahan bekerja dalam kehidupan nyata, kami mengurangi kebutuhan akan faktor fudge dan subjektivitas artis untuk mendapatkan material dunia nyata seperti kayu atau beton atau kulit agar terlihat nyata di bawah berbagai kondisi pencahayaan.
Perhatikan bahwa jawaban lain menggambarkan hal ini dalam hal penerangan tidak langsung dari cahaya yang memantul objek lain dalam pemandangan. Sementara banyak sistem pencahayaan yang menggunakan model berbasis fisik juga akan menyertakan alat untuk memodelkan ini, biasanya dikenal dengan nama terpisah Global Illumination . Ini adalah efek yang membuat satu sisi kepala difus dalam gambar ini tampak hijau, diterangi oleh cahaya yang memantul dari dinding hijau:
Gambar dari artikel ini tentang penerangan global
Refleksi Ruang Layar
Sementara PBR mencoba memodelkan bagaimana materi memantulkan cahaya, Screenspace Reflection mencoba menangkap apa yang sedang dipantulkan - khususnya, untuk permukaan yang mengkilap, seperti cermin, apa yang harus saya lihat dalam pantulan?
Sekali lagi ini adalah teknik rendering yang relatif baru yang mungkin paling jelas untuk dipahami berbeda dengan bagaimana game melakukannya sebelumnya:
Flipping Rendering - umum untuk bidang air atau cermin datar, kami benar-benar membuat semua geometri yang dipantulkan untuk kedua kalinya dicerminkan di seluruh bidang permukaan reflektif. Ini memberikan pantulan berkualitas tinggi (detail penuh, benda yang bersentuhan dengan permukaan yang sejajar dengan pantulannya) tetapi hanya berfungsi dengan benar untuk permukaan datar. Semakin bergelombang atau bergelombang permukaan, semakin sedikit ini berperilaku seperti refleksi nyata, yang seharusnya mengubah atau mengaburkan dengan cara yang kompleks.
Cube Maps - mari kita menyimpan warna yang akan dilihat oleh sinar tampilan yang memancar dari titik pusatnya. Dengan merender peta kubus secara dinamis dari titik yang dipilih dalam adegan, kita dapat memperkirakan warna apa yang harus dipantulkan dari permukaan yang melengkung secara sewenang-wenang. Masalahnya di sini adalah bahwa peta kubus hanya sepenuhnya benar pada titik pusatnya - sebagai titik di mana kami mensimulasikan refleksi bergerak di sekitar tempat kejadian, itu akan melihat beberapa paralaks, yang tidak ada dalam peta kubus. Ini berarti objek tidak cenderung sejajar dengan pantulannya.
Layar Ruang refleksi mencoba untuk mengatasi keterbatasan ini dengan menggunakan adegan yang diberikan itu sendiri sebagai sumber untuk informasi refleksi. Itu memancarkan sinar pandangan yang dipantulkan, menggunakan kedalaman adegan, sampai akan memotong sesuatu dalam adegan yang diberikan.
Berikut ini slide dari presentasi EA DICE tentang pendekatan mereka terhadap refleksi di mesin Frostbite .
Ini berarti (dengan beberapa pekerjaan algoritmik pintar) kita bisa mendapatkan refleksi dengan akurasi seperti raytracing yang cukup dari permukaan yang sewenang-wenang dalam game, memiliki penyelarasan permukaan yang benar dalam kontak, distorsi dan kabur, selama bagian permukaan yang dipantulkan terlihat pada -screen (mis. tidak offscreen atau tersumbat oleh sesuatu yang lain). Jika refleksi tidak dapat ditentukan secara akurat oleh raymarching, biasanya diperkirakan menggunakan sampel terdekat atau kubem mundur yang mewakili pemandangan di samping / di belakang tampilan kamera.
Anda dapat melihat dalam contoh pantulan ruang layar ini , kesan bisa sangat meyakinkan, meskipun kesalahan kecil terlihat (lihat pantulan bagian bawah kubus, yang tidak terlihat dalam bingkai yang diberikan dan oleh karena itu cukup apus & ulangi piksel yang berdekatan, atau lubang-lubang pada pantulan tirai hijau kanan di sebelah pot bunga dan di bagian bawah layar, di mana raymarching gagal menemukan piksel pantulan yang tepat). Adalah umum untuk menggunakan teknik ini untuk permukaan yang agak mengkilap / sedikit kasar untuk membantu membuat kesalahan sesekali kurang terlihat.