Saat melihat game-game lama seperti Mario64 atau DukeNukem3D, semua mirror dalam game pada dasarnya hanya lubang di dinding dengan salinan geometri cermin di depan cermin yang diletakkan di belakangnya. Dalam kasus DukeNukem3D, seseorang bahkan dapat mengaktifkan tanpa klip dan berjalan ke ruang cermin itu.
Sebaliknya, game modern menggunakan pendekatan render-to-tekstur untuk cermin. Hal ini menyebabkan cermin menjadi terlihat pixel ketika mendekati mereka. Salah satu game pertama yang saya perhatikan pendekatan ini adalah Luigi's Mansion, tetapi tampaknya digunakan di hampir semua game modern.
Perubahan apa dalam perangkat keras atau mesin yang membuat pendekatan kedua menjadi begitu dominan akhir-akhir ini dan apa manfaatnya? Dalam hal visual murni pendekatan pertama tampaknya lebih unggul, karena tidak menderita masalah pixelation.
Jawaban:
Jadi pada dasarnya menggunakan RTT memberi lebih banyak kebebasan untuk semua orang.
sumber
Tidak, Anda salah - bukan itu cara cermin Duke Nukem 3D bekerja sama sekali.
DN3D menggunakan mesin portal . Sambungan antara dua sektor mana pun semena-mena, dan ketika mesin rendering datang ke portal, ia tahu bahwa ia harus mulai merender sektor lain di dalamnya. Sektor di belakang cermin pada dasarnya adalah tempat dudukan untuk berurusan dengan kekhasan dalam mesin - satu-satunya titik sektor ini adalah lebih besar dari apa pun yang Anda butuhkan "tercermin". Itu tidak mengandung geometri nyata. Bahkan, ia bekerja dengan cara yang hampir sama dengan "portal" bekerja di Portal - kecuali bahwa Portal (itu sendiri didasarkan pada mesin portal) menciptakan portal saat runtime, dan memiliki batas berapa kali portal dapat berulang (yaitu A -> B -> A -> B -> A ...), sedangkan Build (DN3D) akan hancur saat tumpukannya meluap jika Anda mengarahkan cermin ke cermin lain.
Sudah jelas betapa sederhananya menerapkan cermin dengan itu - membuat portal yang menunjuk kembali ke ruangan. Ini berarti bahwa rendering cermin biayanya persis sama seperti rendering ruangan itu sendiri, memberikan kinerja dan konsistensi yang hebat. Selama Anda tidak mengarahkan cermin ke cermin lain, itu saja. Jika Anda melihat melalui kode sumber mesin Bangun, Anda akan melihat
tidak ada cermin penanganan kode sama sekali - tidak harus ada satu, karena itulah cara kerja portalCATATAN: sebenarnya, ada kode untuk membalik piksel yang diberikan - itu hanya saja tidak membalik geometri dan semua berbagai sprite dan efek. Editor harus bisa membuat portal "palsu" ini, meskipun - melihat ke belakang pada dirinya sendiri. Jika Anda ingin tahu lebih banyak tentang Build engine yang cukup pintar, ada analisis hebat dari Fabien Sanglard di internal Build engine . Seluruh mesin telah open source dan porting ke platform modern juga, meskipun yang lama masih bekerja dengan sempurna pada Windows 10 (diuji untuk Anda: P). Banyak game berbasis Build juga bersumber terbuka dan / atau dibuat ulang.Mengapa ini tidak lagi digunakan? Beberapa mesin tidak lagi menyukai portal. Sulit untuk menerapkan banyak peretasan grafis dan pengoptimalan - Saya tidak bisa mengarahkan Anda ke hal yang spesifik, tetapi banyak pemrosesan pasca tergantung pada peretasan yang tidak akan bekerja di mesin portal yang sebenarnya (mereka membuat banyak asumsi yang tidak lagi ditahan). Ini pada dasarnya adalah jenis masalah yang sama dengan permainan ini dengan citra stereoskopis - peretasan tidak lagi berfungsi.
Yang terpenting, mirror menjadi lebih rumit. Mereka dapat memiliki bentuk yang kompleks, tekstur, mereka mungkin berada di tanah (juga dikenal sebagai "air") dll. Sementara semua masalah tersebut dapat dipecahkan dalam mesin portal, RTT menjadi pilihan yang lebih sederhana di beberapa titik, dan GPU cukup cepat untuk menanganinya.
Namun, bahkan dengan semua itu, ada banyak game dengan akselerasi perangkat keras 3D yang melakukan hal-hal "nyata". Dari game yang lebih tua, Quake 3 atau Alien vs Predator, misalnya. Sejauh yang saya tahu, Source engine game masih menggunakan mirror "asli". Jika Anda berharap orang akan mendekati cermin, dan Anda dapat menjamin bahwa tidak ada terlalu banyak permukaan reflektif pada saat yang sama (misalnya melalui desain level), portal mirror masih sangat menarik.
sumber
RTT akan digunakan jika itu mungkin tetapi pipa render perangkat keras adalah salah satu cara.
Perangkat keras yang lebih lama juga memiliki keterbatasan yang mencegah render ke tekstur. Menulis ke RAM berarti tidak dapat dibaca pada saat bersamaan. Untuk meningkatkan kinerja rendering, buffer tujuan dikunci hanya untuk menulis, hanya perangkat keras layar yang dapat membacanya. Anda dapat meminta membaca, tetapi itu mengunci RAM dan render harus menunggu kunci untuk menghapus sebelum dapat memulai frame berikutnya. RTT akan menyebabkan hambatan besar pada pipa dan dengan demikian solusi lain digunakan.
Anda akan menemukan bahwa sebelum pipa render Hardware adalah norma RTT digunakan karena menyediakan cara untuk mengurangi beban rendering. 3D dirender ke sprite untuk menyediakan konten 3D semu. Rendering tekstur terlalu mahal (CPU) untuk digunakan saat itu, terlepas dari mesin khusus yang berada di luar pasar konsumen umum.
sumber
Duke Nukem mengatasinya dengan merender ulang geometri di belakang cermin, jawaban lain sebagian benar. Ada area di belakang mirror yang sebenarnya tidak mengandung geometri (dalam file data game), geometri di-render kembali pada saat run time infact, alasan area-area tersebut ada adalah untuk menghindari penempatan tanpa sengaja sepotong level di sana saat mengedit level :
karena ada area yang ditandai Anda tidak akan menempatkan geometri secara tidak sengaja di sana.
sumber