Bagaimana cara membuat efek portal berkualitas tinggi dan cepat?

9

EDIT: Jadi saya mendapatkan efek visual portal bekerja tanpa hit kinerja, dan saya punya fisika mengatur objek dengan benda keras bergerak melalui portal dengan mulus, dan objek dengan pengontrol karakter bergerak melewatinya dengan mulus. Satu-satunya hal yang saya coba cari tahu sekarang adalah memadukan dua tampilan kamera untuk mendapatkan efek transisi orang pertama yang tepat. Ada ide tentang bagaimana saya akan mencampur keduanya? Saya sedang memikirkan sesuatu menggunakan kedalaman shader saja, atau rect viewport dinormalisasi. Masalah utama saya adalah menghitung secara real time, dan dengan sudut.

Jadi saya sudah berusaha membuat efek portal di Unity3D. Jelas saya telah menggunakan Portal Valve sebagai pengaruh besar untuk pemrograman ini. Saat ini saya hanya menggunakan rendertexture kamera untuk mendapatkan efek grafis, dan kemudian beberapa kode untuk melakukan sisanya. Masalahnya adalah pada 2048x2048 terlihat berkualitas tinggi seperti Portal, tetapi menyebabkan kerugian FPS yang besar. Untuk mengatasinya, saya harus menurunkan kualitas tekstur atau berapa kali saya memperbarui tekstur.

Valve telah mencapai efek portal berkualitas tinggi tanpa menyebabkan frame rate loss tinggi. Bagaimana saya bisa melakukan hal yang sama? Apakah ada yang punya ide bagus untuk rendering ke tekstur resolusi tinggi tanpa menyebabkan frame loss?

Saya sedang mempertimbangkan membuat kode saya sendiri untuk rendering ke tekstur daripada menggunakan sistem bawaan Unity, itu bisa dilakukan tetapi pasti akan merepotkan. Jadi setiap pemikiran, ide, atau saran sangat dihargai.

Timothy Williams
sumber
3
Saya tidak dapat menemukan referensi, tetapi saya ingat seseorang mengatakan bahwa Portal tidak menggunakan render untuk tekstur untuk itu.
msell
1
Lihat Pseudo Form , gim Portal-esque (sumbernya ada di unduhan utama). Ada juga "implementasi portal" lainnya di web, tapi saya pikir ini yang paling dikenal. Juga, mainkan Portal dengan komentar pengembang pada. Di beberapa dari mereka, mereka berbicara tentang tantangan dalam mengimplementasikan portal.
Vasco Correia
7
Saya tidak dapat memahami mengapa Anda membutuhkan tekstur 2028x2048 untuk membuat portal yang dibuat kurang dari 1080p terlihat tajam. Anda seharusnya tidak perlu melampaui resolusi tampilan yang Anda gunakan untuk game Anda secara umum. Saya akan melangkah lebih jauh dengan mengatakan Anda harus mencari tahu ukuran di layar portal dan menggunakannya untuk memilih rendertexture ukuran yang sesuai (sehingga membuatnya sangat efisien ketika jauh, dan "lebih berat" karena portal mendapatkan lebih banyak layar -space
Stig-Rune Skansgård
1
Untuk efek visual, pendekatan apa yang Anda ambil? Apakah Anda mengetahui cara membuat hanya yang terlihat melalui portal?
jhocking
1
Anda harus menyimpan pertanyaan asli seperti sebelumnya dan mengajukan pertanyaan baru tentang masalah baru.
msell

Jawaban:

5

Setelah berjam-jam penelitian dan pemrograman saya menemukan cara untuk mendapatkan efek visual yang tepat untuk ini. Jika Anda hanya ingin membeli sistem portal yang berfungsi untuk visual dan hampir semua yang Anda butuhkan, lihat Paket Kesatuan Portalizer.

Saya memprogram dalam C # dan paket itu dalam JS, tetapi logika di baliknya sangat berguna dan dipikirkan dengan baik. Secara umum saya mengikuti pemikiran logisnya, dengan beberapa penyesuaian untuk permainan saya dan pengontrol orang pertama.

Pada dasarnya apa yang Anda lakukan adalah menggunakan versi modifikasi dari ini shader air / script. Memiliki dua cermin di tempat kejadian, dan memiliki kamera membuat apa yang dilihatnya di setiap refleksi ke cermin lainnya. Anda harus membuat matriks transformasi yang dimodifikasi untuk menjelaskan hubungan antara kedua portal. Untuk membantu mengurangi hit kinerja, baca artikel ini tentang kliping pesawat dekat. Ini akan membantu Anda membuat hanya apa yang perlu dilihat melalui portal.

Saya dapat membuat tutorial yang lebih terperinci dengan gambar dan sumber begitu saya mengetahui cara memadukan kamera dengan benar untuk teleport FPS. Saat ini saya terlalu lelah dan sibuk untuk menulis tutorial lengkap dan ini sudah cukup karena memberi Anda sebagian besar kode yang diperlukan.

Timothy Williams
sumber
Bisakah Anda memposting tautan ke repo?
Roma Fedor