- Maaf untuk posting lama, tapi saya lebih suka melakukan itu karena " Iblis ada di detail. " :)
Saya menulis pelacak jalur dari awal dan bekerja dengan baik untuk permukaan difusi (Lambertian) yang sempurna ( yaitu uji tungku menunjukkan - setidaknya secara visual - bahwa ini menghemat energi, dan gambar yang diberikan cocok dengan yang dihasilkan dengan perender Mitsuba untuk hal yang sama parameter). Sekarang saya sedang mengimplementasikan dukungan untuk istilah specular dari model microfacet Cook-Torrance asli, untuk membuat beberapa permukaan logam. Namun, tampaknya BRDF ini mencerminkan lebih banyak energi daripada yang diterima. Lihat contoh gambar di bawah ini:
Gambar di atas: Gambar referensi Mitsuba (diasumsikan benar): Penelusuran jalur dengan pengambilan sampel cahaya langsung, pengambilan sampel belahan penting, panjang jalur maks = 5, 32 stratified spp, filter kotak, kekasaran permukaan = 0,2, RGB.
Gambar di atas: Gambar yang diberikan sebenarnya: Penelusuran jalur naif yang kasar, pengambilan sampel belahan yang seragam, panjang jalur maks = 5, 4096 bertingkat spp, filter kotak, kekasaran permukaan = 0,2, RGB. Meskipun ada beberapa perbedaan sehubungan dengan pengaturan rendering, jelas bahwa gambar yang diberikan tidak akan menyatu dengan referensi yang ditunjukkan sebelumnya.
Saya cenderung berpikir bahwa itu bukan masalah implementasi, tetapi masalah tentang penggunaan yang tepat dari model Cook-Torrance dalam kerangka persamaan rendering. Di bawah ini saya menjelaskan bagaimana saya mengevaluasi BRDF specular dan saya ingin tahu apakah saya melakukannya dengan benar dan, jika tidak, mengapa.
Sebelum masuk ke detail seluk-beluk, perhatikan bahwa penyaji cukup sederhana: 1) hanya menerapkan algoritme penelusuran jalur naif brute force - tidak ada pengambilan sampel cahaya langsung, tidak ada pelacakan jalur dua arah, tidak ada MLT; 2) semua pengambilan sampel seragam di belahan bumi di atas titik persimpangan - tidak ada pengambilan sampel sama sekali, juga untuk permukaan difus; 3) jalur ray memiliki panjang maksimum tetap 5 - tidak ada roulette Rusia; 4) cahaya / pantulan diinformasikan melalui RGB tuple - tidak ada rendering spektral.
Masak model mikrofaset Torrance
Sekarang saya akan mencoba untuk membangun jalur yang telah saya ikuti untuk mengimplementasikan ekspresi evaluasi BRDF specular. Semuanya dimulai dengan persamaan rendering mana p adalah titik persimpangan di permukaan , w o adalah vektor tampilan, w i
Integral di atas ( yaitu istilah refleksi dari persamaan rendering) dapat diperkirakan dengan estimasi Monte Carlo di manapadalah fungsi kepadatan probabilitas (PDF) yang menggambarkan distribusi vektor sampelwk.
Untuk rendering aktual, BRDF dan PDF harus ditentukan. Dalam kasus istilah specular dari model Masak-Torrance, saya menggunakan berikut BRDF di mana D=1
Ini akan wajib untuk menggunakan sampel penting dalam hal rendering permukaan specular yang halus. Namun, saya hanya memodelkan permukaan yang cukup kasar ( ), oleh karena itu, saya memutuskan untuk tetap menggunakan sampel seragam untuk sementara waktu (dengan biaya waktu render yang lebih lama). Dalam hal ini, PDFnya adalah p ( w k ) = 1 Dengan mengganti seragam PDF dan Masak-Torrance BRDF ke dalam estimator Monte Carlo (pemberitahuan bahwawidiganti denganwk, variabel random), saya mendapatkan 1
Jadi, itulah ekspresi yang saya evaluasi ketika sebuah sinar menyentuh permukaan specular yang pemantulannya dijelaskan oleh Cook-Torrance BRDF. Itu adalah ungkapan yang tampaknya mencerminkan lebih banyak energi daripada yang diterima. Saya hampir yakin bahwa ada sesuatu yang salah dengan itu (atau dalam proses derivasi), tetapi saya tidak dapat menemukannya.
Setiap bantuan sangat kami sambut! Terima kasih!
MEMPERBARUI
PEMBARUAN 2
Seperti yang ditunjukkan oleh PeteUK , penulis formulasi Fresnel yang disajikan dalam teks asli pertanyaan saya salah dikaitkan dengan Cook dan Torrance. Formulasi Fresnel yang digunakan di atas sebenarnya dikenal sebagai perkiraan Schlick dan dinamai Christophe Schlick. Teks asli dari pertanyaan diubah sesuai dengan itu.