Catatan umum
Semua hasil diperoleh pada mesin yang agak lama (i7 3770 + GTX 770), game berjalan di DirectX 11 dengan kualitas sedang. Untuk analisis, RenderDoc dan Nsight digunakan.
Permainan ini berjalan pada mesin Re Engine, yang menjadi pewaris MT Framework - mesin dari generasi sebelumnya Capcom R&D. Selain RE2, digunakan di DMC5 dan RE7: Biohazard.
Saya tidak dapat menemukan materi di Mesin RE di Internet, jadi semua yang ada di artikel ini didasarkan pada tebakan (saya harap, dibenarkan). Saya memeriksa sekitar 90% dari struktur frame dan memberikan gambaran umum tentang algoritma. Penelitian lebih lanjut membutuhkan lebih banyak pengalaman dan waktu untuk membalikkan rekayasa shader.
Struktur bingkai
Simulasi partikel / fluida
Antara lain, gim ini menghasilkan tekstur gelombang (contoh diambil dari bingkai lain).
Gelombang digunakan untuk membuat air, yang tidak ada dalam bingkai yang dianalisis.
Beberapa hasil disalin ke buffer staging, dan ini menunjukkan bahwa hasilnya dapat digunakan dalam CPU.
Perhitungan daftar sumber pencahayaan
Bagian ini menghasilkan daftar sumber cahaya yang terlihat, memeriksa lokasi kerucut pencahayaan relatif terhadap piramida visibilitas. Hasilnya adalah daftar sumber cahaya yang terlihat dan tabel 3D tertentu yang membandingkan posisi di ruang menonton dengan sumber cahaya yang sesuai.
Daftar instance yang terlihat untuk setiap sumber cahaya, yang nantinya digunakan saat memperbarui peta bayangan, juga dihitung.
Titik putih
Bagian ini membangun histogram pencahayaan berdasarkan gambar HDR sebelumnya dan tabel pengukuran. Kemudian, berdasarkan data ini, ia menentukan titik putih.
Definisi objek yang tumpang tindih
Kotak pembatas dari objek yang tumpang tindih diperiksa untuk persimpangan dengan piramida visibilitas dalam shader komputasi dan buffer argumen tidak langsung diisi.
Jatuhkan Geometri yang Tumpang tindih
Objek yang tumpang tindih diterjemahkan ke dalam buffer kedalaman resolusi rendah, dan kemudian kotak pembatas diperiksa untuk masuknya kedalaman ke buffer ini.
Sampel 0-3Buffer kedalaman yang digunakan multisampled empat kali. Mungkin untuk mengkompensasi resolusi rendah.
Sepertinya kotak terikat berorientasi pada pandangan.
Contoh pengujian geometri yang tumpang tindih (dari frame lain). Pixel yang lulus tes (hijau) menulis bendera (misalnya 1) dalam buffer visibilitas untuk setiap instance.
store_raw RWDrawIndirectArguments.x, v1.x, l(1)
Akumulasi argumen tidak langsung
Hampir setiap objek geometri di ruang dunia dirender menggunakan panggilan tidak langsung. Profiler Nsight menunjukkan panggilan ke NvAPI_D3D11_MultiDrawIndexedInstancedIndirect. Untuk informasi tentang penggunaannya, lihat [
1 ] dan [
2 ]. RenderDoc memblokir ekstensi MultiDraw, jadi di EventBrowser mereka diperluas ke banyak DrawIndexedInstancedIndirect dan beberapa di antaranya kosong.
Tujuan dari pass ini adalah untuk mengumpulkan topeng visibilitas dari pass sebelumnya dan menghasilkan buffer argumen.
Bagian kedalaman
Tidak ada yang luar biasa. Subset adegan dengan geometri dasar yang tumpang tindih.
Geometri + stiker pass G-buffer
Output data:
- RT0 - r11g11b10 memancarkan
- RT1 - rgba8 albedo.rgb + metallness.a
- RT2 - r10g10b10a2 normal.rg + roughness.b + misc.a
- RT3 - r16g16b16a16 baked_ao.x + velocity.yz + sss.a
Model yang dirender menggunakan oklusi ambien terpanggang dari model resolusi tinggi.
Perhitungan HiZ
Shader komputasi multi-pass mendefinisikan setiap level dalam hierarki kedalaman.
Ao
Pemrosesan SSAO atau HBAO + tergantung pada parameter yang dipilih oleh pemain. Dalam kasus saya, SSAO.
AO dihitung berdasarkan HiZ dari pass sebelumnya.
Global Specular + Diffuse
Menggunakan beberapa algoritma non-trivial, probe cahaya, peta kubik, dan AO digabungkan menjadi peta global yang tersebar dan spekulatif.
Contoh kartu kubik dari tempat kejadian.Komponen cahaya global yang menyebar.Komponen pencahayaan global specular.Pembaruan Peta Shadow
Peta bayangan yang dibuat untuk setiap sumber cahaya diperbarui untuk sumber-sumber yang dipengaruhi oleh objek dinamis. Setiap peta bayangan ditempatkan dalam berbagai tekstur.
Specular Lokal + Diffuse + SSS
Kemudian, kontribusi masing-masing sumber cahaya untuk komponen specular dan difus dihitung.
Diffus + SSS. Efek SSS tidak terlihat dalam bingkai ini.Komponen Specular.Integrasi pencahayaan
Luminositas specular / Diffuse / komponen pencahayaan lokal terintegrasi dengan albedo.Menambahkan Kaca Bening
Setelah menambahkan semua sumber cahaya, kaca transparan diberikan.Perhitungan pencahayaan volumetrik / kabut / asap
Bahkan, itu hanya sekumpulan sprite.Gunakan pencahayaan volumetrik / kabut / asap
Bagian ini menghitung gambar buram untuk meningkatkan pencahayaan kabut.Jika Anda mengganti topeng kabut asli dengan pola kotak-kotak.Hasil dari perikop ini.TAA dengan gambar HDR sebelumnya
TTA hanya sihir.Motion blur
Berdasarkan peta kecepatan, peta blur bantu dihitung.Pemrosesan pos
Pass ini pertama-tama memperkecil gambar.Dan kemudian itu berlaku filter mekar, koreksi nada, distorsi dan aberasi kromatik.Kesimpulan
Mesin secara aktif menggunakan shaders komputasi + render tidak langsung. Semua jerat dan tekstur berkualitas tinggi.
Gim ini menggunakan rendering yang ditangguhkan dengan TAA / FXAA dan kaca sebagai pasca pemrosesan. Anda dapat membaca lebih lanjut tentang trik dengan rendering yang ditangguhkan di
sini [sebuah
pos berdasarkan artikel di Habrรฉ]. Banyak tekstur dikompresi oleh BC7. Secara umum, teknik yang digunakan mirip dengan yang dijelaskan dalam [
4 ].
Bonus
Kontribusi SSS
Saya harus hati-hati mencari bingkai yang cocok untuk menunjukkan dampak SSS.Bagaimana monster dengan tentakel ditampilkan
Monster itu terbagi menjadi banyak bagian.Nyali
Gim ini memiliki banyak tekstur berdarah untuk berbagai detail.
Level mip untuk tekstur tidak hanya difilter secara linear. Di setiap level, penajaman ditingkatkan. Selain itu, beberapa tekstur sudah memiliki sorotan specular (tidak terlalu jelas bagaimana ini mempengaruhi penampilan akhir mereka).
Geometri
Geometri memiliki topologi yang baik.HBAO
HBAO memberikan kualitas yang jauh lebih baik daripada SSAO.Merokok
Asap mempertimbangkan sumber cahaya kerucut.Pesawat nyata digunakan untuk membuat asap.Referensi
[1]
Kostas Anagnostou: Eksperimen dalam pemusnahan oklusi berbasis GPU[2]
Daniel Rรกkos: Multi-Draw-Indirect ada di sini[3]
Blog Adrian Correger[4]
Alien: Isolasi