Jalur menelusuri Cook-Torrance BRDF

27

- 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 referensi Mitsuba.

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 yang diberikan

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

L.Hai(hal,wHai)=L.e+ΩL.saya(hal,wsaya)fr(wHai,wsaya)cosθdω
halwHaiwsayaadalah vektor cahaya, adalah pancaran keluar sepanjang w o , L i adalah insiden cahaya pada p sepanjang w i dan cos θ = nw i .L.HaiwHaiL.sayahalwsayacosθ=nwsaya

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.

1Nk=1NL.saya(hal,wk)fr(wk,wHai)cosθhal(wk)
halwk

Untuk rendering aktual, BRDF dan PDF harus ditentukan. Dalam kasus istilah specular dari model Masak-Torrance, saya menggunakan berikut BRDF di mana D=1

fr(wsaya,wHai)=DFGπ(nwsaya)(nwHai)
F=cspec+(1-cspec
D=1m2(nh)4exp((nh)2-1m2(nh)2)
G = min ( 1 , 2 ( nh ) ( n ⋅) w o )
F=cshalec+(1-cshalec)(1-wsayah)5
Dalam persamaan di atas,h=wo+wi
G=min(1,2(nh)(nwHai)wHaih,2(nh)(nwsaya)wHaih)
dancspecadalah warna specular. Semua persamaan, dengan pengecualianF, diekstraksi dari kertas aslinya. F, juga dikenal sebagai pendekatanSchlick, adalah pendekatan yang efisien dan kurang akurat untuk istilah Fresnel yang sebenarnya.h=wHai+wsaya|wHai+wsaya|cshalecFF

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 ) = 1m0,2 Dengan mengganti seragam PDF dan Masak-Torrance BRDF ke dalam estimator Monte Carlo (pemberitahuan bahwawidiganti denganwk, variabel random), saya mendapatkan 1

hal(wk)=12π
wsayawk Sekarang kita dapat membatalkanπdan menghapus penjumlahan karena kita menembak hanya satu sinar acak dari titik persimpangan. Kita berakhir dengan 2Li(p,wk)(DFG
1Nk=1NL.saya(hal,wk)(DFGπ(nwk)(nwHai))cosθ(12π)
π Sejak
2L.saya(hal,wk)(DFG(nwk)(nwHai))cosθ
, kita dapat lebih menyederhanakannya 2 L i ( p , w k ) ( D F Gcosθ=nwk
2L.saya(hal,wk)(DFGnwHai)

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.

1π

Setiap bantuan sangat kami sambut! Terima kasih!

MEMPERBARUI

D1πfr14

Dnew=1πm2(nh)4exp((nh)2-1m2(nh)2)
frnew(wsaya,wHai)=DFG4(nwsaya)(nwHai)
π2L.saya(hal,wk)(DnewFGnwHai)
Dfr

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.

Christian Pagot
sumber
Tidak yakin apakah Anda masih mengunjungi situs ini, tetapi saya punya pertanyaan tentang persamaan Fresnel Anda dan telah mempostingnya di sini
PeteUK

Jawaban:

12

Menurut tulisan ini , the1π di Anda fr seharusnya 14:

fr=DFG4(nwsaya)(nwHai),
jadi Anda akan berakhir dengan
π2L.saya(hal,wk)(DFGnwHai).
serigala
sumber
Saya telah melihat formulasi lain ini untuk Cook-Torrance BRDF, di mana persamaannya dikalikan dengan 14 dari pada 1π. Namun, pada akhirnya, efek modifikasi ini sangat kecil karena kita akan menggantikan 2, hadir dalam persamaan akhir, dengan 1,57 (=π2). Saya telah melakukan tes di sini (untuk berjaga-jaga ...), dan memang masalahnya tetap ada.
Christian Pagot
@Capagot Faktor dari 1/πkadang-kadang dimasukkan ke dalam intensitas sumber cahaya (berdasarkan konvensi) dan ditinggalkan dari BRDF; lihat juga pertanyaan ini . Tapi itu lebih umum dalam rendering waktu-nyata daripada dalam penelusuran jalur. Anda juga mengatakan tes Lambertian Anda cocok dengan Mitsuba dengan sempurna, jadi sepertinya ini bukan masalahnya ... masih mungkin layak untuk dilihat.
Nathan Reed
@ Capagot Saya pikir Anda kehilangan 1π dalam fungsi distribusi Anda D. Makalah yang saya tautkan menyertakan faktor itu dalam distribusi Beckmann, yang Anda gunakan, jadi miliki14 di fr dan 1π di Dharus melakukan trik.
Wolle
@NathanReed Saya sudah membaca artikel tentang penyematan πke dalam warna. Namun, karena alasan yang Anda sebutkan, saya yakin itu bukan masalahnya.
Christian Pagot
@ gelisah Tepat! Sebenarnya, saya sudah melihat sekilas kertas yang Anda sebutkan, tapi saya tidak memperhatikan itu! Saya baru saja mengubah implementasi saya menjadi akun untuk1π di D dan 14 di fr, dan semuanya sekarang berfungsi seperti pesona! Saya akan menyertakan pembaruan untuk pertanyaan dengan jawabannya! Terima kasih!
Christian Pagot
13

Saya memposting ini untuk siapa pun yang bertanya-tanya tentang kebingungan antara persyaratan 1π dan 14.

Syarat 1π adalah kesalahan dari referensi Cook-Torrance asli.

Bahkan, seluruh istilah 14(nωsaya) berasal dari Jacobian dari transformasi dari sudut solid yang dipantulkan ke sudut solid normal.

Menurut sebagian besar surat kabar, 14Istilah pertama kali muncul di [Torrance, 67] .

Untuk penjelasan yang bagus tentang istilah ini, Anda harus memeriksa [Nayar, 91] , lampiran D. Berikut adalah gambar dari makalah yang sama:

dω=dωr4cosθsaya

Juga, Joe Stam setuju dengan Nayar 14 istilah dalam [Stam 01, Model Penerangan untuk Lapisan Kulit yang Dibatasi oleh Permukaan Kasar], lampiran B.

Samu
sumber