Raytracing Non Real Time

13

Saya telah bermain dengan raytracing waktu nyata (dan raymarching dll) sedikit, tetapi belum menghabiskan banyak waktu pada raytracing waktu nyata - untuk gambar berkualitas lebih tinggi atau untuk video pra-rendering dan sejenisnya.

Saya tahu satu teknik umum untuk meningkatkan kualitas gambar dalam case non-real time adalah dengan memberikan BANYAK lebih banyak sinar per pixel dan rata-rata hasilnya.

Apakah ada teknik lain yang menonjol sebagai cara yang baik untuk meningkatkan kualitas gambar dalam case non-real time, melebihi apa yang biasanya Anda lakukan dalam case real-time?

Alan Wolfe
sumber

Jawaban:

9

Path tracing adalah teknik standar dalam rendering fotorealistik non-realtime, dan Anda harus melihat secara khusus ke dalam penelusuran jalur dua arah untuk mendapatkan efek seperti kaustik, yang tidak dapat Anda dapatkan dengan penelusuran jalur dasar. Pelacakan jalur dua arah juga konvergen lebih cepat ke kebenaran tanah seperti yang ditunjukkan pada gambar di bawah ini: masukkan deskripsi gambar di sini Juga transportasi ringan Metropolis (MLT) adalah teknik penelusuran jalur yang lebih maju yang menyatu lebih cepat ke kebenaran tanah dengan memutasi jalur "baik" yang ada: masukkan deskripsi gambar di sini

Anda juga dapat menggunakan sampel penting untuk konvergensi yang lebih cepat dengan memfokuskan lebih banyak sinar ke arah yang lebih penting. Yaitu dengan memfokuskan sinar berdasarkan BRDF (lebih ke arah lonjakan BRDF menggunakan fungsi densitas probabilitas) atau ke sumber cahaya, atau mendapatkan yang terbaik dari dua dunia dan menggunakan beberapa sampel penting. masukkan deskripsi gambar di sini Ini semua tentang mengurangi kebisingan dengan cara yang tidak bias. Ada juga teknik denoising untuk lebih mengurangi noise dalam gambar yang diberikan. masukkan deskripsi gambar di sini

Saya pikir yang terbaik adalah pertama menerapkan brute force dasar Monte Carlo path tracer untuk dijadikan referensi yang tidak memihak sebelum melihat ke teknik yang lebih maju. Sangat mudah untuk melakukan kesalahan dan memperkenalkan bias yang tidak diketahui, sehingga memiliki implementasi yang sederhana bagus untuk digunakan sebagai referensi.

Anda juga bisa mendapatkan beberapa hasil yang sangat bagus dengan menerapkan penelusuran jalur ke media yang berpartisipasi, tetapi itu menjadi sangat lambat: D masukkan deskripsi gambar di sini

JarkkoL
sumber
5

Salah satu yang besar adalah penggunaan geometri padat yang konstruktif daripada jerat segitiga. Perpotongan segitiga-ray lebih cepat daripada hampir semua persimpangan bentuk-ray lainnya, tetapi dibutuhkan sejumlah besar segitiga untuk mendekati permukaan silinder atau torus, belum lagi beberapa bentuk yang benar-benar eksotis seperti fraktal julia atau fungsi parametrik umum yang beberapa penyaji mendukung.

Lain adalah penggunaan pemetaan foton render-waktu dan perhitungan interrefleksi difus : ini memungkinkan Anda mendapatkan efek pencahayaan yang akurat dalam adegan yang berubah. Dalam raytracing realtime, ini terlalu mahal untuk dihitung, sehingga sumber cahaya dan elemen geometri utama dipaksa untuk diam (untuk memungkinkan pra-perhitungan), atau efeknya dihilangkan seluruhnya.

Menandai
sumber
Permukaan subdivisi lebih banyak digunakan daripada geometri padat konstruktif. Mereka masih melibatkan segitiga (atau splines alternatif).
3

Meskipun saya tidak tahu tentang pelacakan jalur monte carlo ketika saya menulis ini, saya tidak sengaja menggambarkannya. Ironisnya, penelusuran jalur monte carlo adalah jawaban yang saya cari saat itu.

Pelacakan jalur naif monte carlo berfungsi dengan mengevaluasi sesuatu yang disebut persamaan rendering untuk memecahkan secara numerik nilai warna suatu piksel. Dibutuhkan sampel acak dengan naik-turunkan secara acak dalam satu piksel (ada strategi pengambilan sampel yang lebih baik, dan pemfilteran: Apa alasan mendasar untuk anti-aliasing menggunakan beberapa sampel acak dalam satu piksel? ) Dan juga dengan memantul dalam arah acak ketika sinar menyentuh permukaan. .

Dibutuhkan banyak sampel untuk memberikan hasil yang baik, dan dengan sampel yang tidak cukup, gambar Anda akan terlihat berisik. Dibutuhkan 4 kali lebih banyak sampel untuk memotong kebisingan menjadi dua. Waktu render bisa dalam urutan satu jam menggunakan 8 core CPU modern untuk adegan sederhana.

Ada teknik penelusuran jalur monte carlo yang lebih maju yang memungkinkan Anda mendapatkan gambar yang lebih baik dengan lebih cepat, seperti sampel penting, atau mencela gambar setelah gambar tersebut dibuat.

Pelacakan jalur Monte carlo dapat membuat gambar fotorealistik dan memberi Anda banyak fitur rendering canggih hanya karena mengikuti hukum fisik sehingga memberikan hasil yang realistis.

Anda dapat membaca lebih lanjut tentang ini di sini: http://blog.demofox.org/2016/09/21/path-tracing-getting-started-with-diffuse-and-emissive/

Berikut adalah contoh gambar, yang membutuhkan waktu sekitar satu jam untuk merender menggunakan semua 8 core cpu saya:

masukkan deskripsi gambar di sini

Alan Wolfe
sumber