Mengapa setengah vektor tidak digunakan dalam penghitungan BRDF Fresnel yang difus?

8

Saat ini saya sedang bekerja dengan Presentasi PBR Diffuse Earl Hammon Jr untuk GGX + Smith Microsurfaces (sekarang disebut sebagai [PBR, p.XYZ] dan telah membaca (antara lain) Naungan Berbasis Fisik Brent Burley di Disney (sekarang disebut sebagai [DIS] , hal. XYZ] untuk mendapatkan komponen BRDF difus yang baik. Saya terjebak dalam menggabungkan keduanya dengan Istilah Fresnel.

Pengantar singkat untuk vektor dan sudut saat saya menggunakannya:

  • ωi adalah vektor cahaya
  • ωo adalah view vector
  • ωn adalah geometri makro yang normal

  • θi adalah sudut antara ωi dan ωn

  • θo adalah sudut antara ωo dan ωn
  • θh adalah sudut antara ωn dan ωh
  • αhi adalah sudut antara ωi dan ωh
  • αho adalah sudut antara ωo dan ωh (perbedaan ini adalah untuk klarifikasi)
  • αh adalah salah satu sudut αhi, αho, karena mereka sama

sekarang mengingat itu rs adalah istilah BRDF dari komponen specular tanpa faktor fresnel dan rd sesuai dengan istilah komponen difus tanpa hal-hal fresnel, faktor fresnel ditulis sebagai F(angle). [PBR, hal.105] menyebutkan bahwa cahaya difus ditransmisikan dua kali, sekali masuk dan sekali keluar. Dengan demikian, komponen Fresnel harus dikalikan dua kali. [PBR, hlm. 106] selanjutnya mengatakan hukum Fresnel adalah symmetrix, yang berarti masuk dan pergi adalah arah yang independen (yaitu tidak masalah bahwa begitu kita masuk ke materi dari udara dan begitu kita pergi ke udara). Sekarang saya akan berasumsi (untukF1 adalah Fresnel untuk masuk dan F2 adalah untuk Fresnel meninggalkan materi) untuk digunakan

(1F1(αhi))(1F2(αho))

F1 dan F2 memiliki fungsi yang sama, dan αhi dan αho Oleh karena itu sudutnya sama

(1F(αh))2

Ini akan mengarah ke brdf f:

f=F(αh)rs+(1F(αh))2rd

Tetapi keduanya [PBR, hal.113] dan [DIS, hal.14] digunakan

f=F(αh)rs+(1F(θi))(1F(θo))rd

seperti halnya kertas asli untuk menggunakan perhitungan semacam ini oleh Shirely et al. 1997. Saya hanya tidak mengerti ini, mengapa mereka berubah dari sudut microfacet ke sudut makro? Sudut microfacet mengarah ke percakapan energi

F[0,1] (1F)[0,1] (1F)2[0,1] dan (1F(αh))>=(1F(αh))2)

itu harus timbal balik

f(θi,θo)=F(αhi)rs+(1F(αhi))(1F(αho)rd=F(αh)rs+(1F(αh))2rd=F(αho)rs+(1F(αho))(1F(αhi))rd=f(θo,θi)

dan dengan demikian memenuhi persyaratan BRDF. Sudut mikrofacet digunakan untuk istilah specular, oleh karena itu lebih masuk akal untuk menginterpolasi antara komponen specular dan difus (mengabaikan fakta dua transmisi untuk argumen ini). Sebaliknya, [PBR, hal.113] dan [DIS, hlm. 14] menempatkanθh ke dalam perhitungan kekasaran dan meninggalkan yang agak tidak bisa dijelaskan.

Selain kebingungan saya tentang ini, dalam slide penjelasan [PBR, hal.187] menggunakan produk titik ωhωo (dan karenanya αhosudut) dan kemudian pada [PBR, hal. 191] juga produk titikωhωi (αhi).

Tara
sumber

Jawaban:

5

Saya akhirnya menemukan kelemahan dalam argumentasi saya untuk menggunakan vektor setengah untuk bagian difus.

tl; versi dr:

αhi dan αhotidak sama, asumsi ini hanya berfungsi untuk bagian specular. Karenanya konservasi energik tidak diberikan.

Lebih benar: Per definisi αhi=αho, tetapi Anda tidak diperbolehkan menggunakannya dalam persamaan, Anda harus menggunakan normals mikrofacet alih-alih setengah vektor. Microfacet normal dan setengah vektor umumnya tidak sama.

versi panjang:

BRDF difus (seperti yang specular) adalah integrasi atas semua normal mungkin mikrofaset. Bentuk BRDF yang digeneralisasi adalah:

(1)

f=ΩρmDGcos(αhi)cos(αho)cos(θi)cos(θo)

dimana ρm adalah perilaku cahaya ketika mencapai microfacet, D adalah fungsi distribusi normal, G adalah fungsi geometri dan sisanya adalah normalisasi [PBR, hal.16-25] [HEI, hal.61f.]

Sekarang untuk specular BRDF, perilakunya adalah refleksi sempurna. Ini berarti, hanya mikrofaset yang mikrofasetnya normalωm sama dengan setengah vektor ωh antara cahaya (ωi) dan melihat (ωo) arah memantulkan cahaya dari arah cahaya ke arah tampilan. Secara matematis, ini berarti fungsi Delta Diracδ(ωh). Jumlah cahaya yang dipantulkan ditentukan oleh FresnelF. Dengan memperhitungkan perubahan domain integrasi [PBR, hal.31-41], ini mengarah pada (ρm,s menjadi reaksi spesifik spesifik dari microfacets untuk bagian specular):

(2)

ρm,s=δ(ωh)F4αhiαho

Tancapkan ini ke (1) dan Anda integrasikan ke mana sajaωm, tetapi fungsi dirac delta membuat Anda mengabaikan apa pun di mana ωmωh. Ini adalah hal yang baik tentang fungsi-fungsi delta dirac, yang "membatalkan" integral. Karena itu, Anda datang ke BRDF yang terkenal dan terkenal [PBR, hal.43]

(3)

fs=FDG4cos(θi)cos(θo)

dan di sini Anda dapat dengan anggun berasumsi αhi=αho. Bagian Fresnel membuat ini satu sisi interpolasi linier (melihat karena ini adalah rasio cahaya yang dipantulkan secara spekulatif).

Namun di sisi lain, Anda masih memiliki integral dan Anda tidak dapat "membatalkan" dengan apa pun. Membiarkanθmi menjadi sudut antara mikrofacet normal dan dir cahaya, theta_mo antara mikrofacet normal dan dir view (sebagai lawan dari αhi dan αho, yang secara khusus didefinisikan untuk setengah sudut!). Itu berarti 2 hal penting:

(4)

θmiαhi=αh=αhoθmoωmωh

dan ρm,d (karena reaksi difus cahaya ketika mencapai microfacets) tergantung pada Fresnel, ia hanya dapat menggunakan bagian yang tidak dipantulkan, tetapi Anda tidak bisa hanya berasumsi SETIAP mikrofacet difusley normal memantulkan semua cahaya yang tidak dipantulkan secara specular (yaitu (1F(αh))).

Jadi masalahnya sekarang adalah, Anda memiliki satu sisi interpolasi linear menjadi BRDF specular yang dapat dipecahkan secara analitis tanpa integral. Di sisi lain, Anda memiliki faktor interpolasi dalam integral, dan dengan demikian Anda akan menggunakannya untuk setiap microfacet normal. Ini bukan penghematan energi lagi, jika Anda membuat modelρm,d dengan istilah lambertian.

Jika Anda berhasil menarik 1F bagian dari integral, maka dan hanya kemudian Anda dapat menggunakan vektor setengah untuk kedua BRDFs specular dan difus, jika tidak, Anda perlu menanganinya secara berbeda.

Jika Anda masih ingin menggunakan setengah vektor untuk "Fresnelinterpolasi", maka Anda perlu menormalkan.

f=F(αh)rs+(1F(αh))rdk

Dengan k dipilih, sedemikian rupa

rdk=1

Catat itu rd masih termasuk integral atas semua normal mungkin mikrofacet.

Menggunakan θi dan θo

Saya kira saya harus menambahkan kalimat tentang sudut yang sebenarnya digunakan, karena pertanyaan yang saya ajukan pada awalnya bukan hanya "mengapa tidak αh"tetapi juga" mengapa θi dan θo". Jadi bagi orang yang bertanya-tanya apakah ini benar: Tidak. Ini hanya perkiraan.

Sebagai gantinya, kita dapat memodifikasi istilah matte menjadi perkiraan sederhana yang menangkap perilaku sudut kualitatif yang penting [...].

[SHI, hal.46]

Diskusi tentang mengapa ini sangat sulit untuk dipecahkan

Sekarang [DIS, hal.14] dan [PBR, hal.100.184] mengutip [SHI] dan [ASH] tentang ini, di mana [ASH] menggunakan [SHI], jadi itu bermuara pada model yang terakhir. Dan melihat [DIS] dan [PBR] adalah publikasi non-ilmiah (meskipun dipikirkan dengan baik), saya tidak bisa menyalahkan mereka terlalu banyak, tapi sungguh, cara yang lebih baik untuk mengutip makalah atau penjelasan tambahan mungkin bisa membantu dan menyelamatkan saya sekitar 2 minggu berpikir, membaca dan hampir memulai makalah tentang mengapa semua orang (seharusnya) salah.

Lebih jauh, tidak satu pun dari mereka yang benar-benar menjelaskan perkiraan difusnya, [PBR, p.193] hanya menyebutkan mencoba fungsi yang berbeda sampai ia melihat yang ia sukai.

Selain itu, [SHI, hal.46] sebenarnya mengutip [SCH, hal.10f.] Yang menggunakan interpolasi linier antara F(αh) dan 1F(αh). Namun, [SHI, p.46] mengutipnya secara tidak benar, kata mereka ia digunakanF(θi) dan 1F(αh). Dengan asumsi ini, mereka tentu saja benar dalam berpikir [SCH] bukan penghematan energi, tetapi ini membuat saya percaya ituF(αh) dan 1F(αh)akan menjadi. Kesalahan mereka mungkin berasal dari mereka yang menggunakanF(θi) sendiri, saya tidak bisa mengatakannya.

literatur

  • [ASH] Model BRDF anisotropik phong, dalam Journal of Graphics Tools Vol. 5, No. 2, Michael Ashikhmin dan Peter Shirley, 2000
  • [SCH] Model BRDF Inexpsensive untuk Rendering Berbasis Fisik, di Computer Graphics Forum Vol. 13, No. 3, Christophe Schlick, 1994
  • [SHI] Penilaian Praktisi terhadap Model Refleksi Cahaya, dalam Konferensi Pasifik Kelima tentang Grafik dan Aplikasi Komputer, 1997. Prosiding, Peter Shirley, Helen Hu, Brian Smits dan Eric Lafortune, 1997
  • [DIS] Naungan Berbasis Fisik di Disney, di SIGGRAPH 2012 Kursus: Naungan Berbasis Fisik dalam Produksi Film dan Game, Brent Burley, 2012
  • [HEI] Memahami Fungsi Masking-Shadowing di BRDFs Berbasis Microfacet, dalam Jurnal Teknik Grafik Komputer Vol. 3, No. 2, Eric Heitz, 2014
  • [PBR] PBR Diffuse Lighting untuk GGX + Smith Microsurfaces, di GDC2017, Earl Hammon Jr., 2017
Tara
sumber
1

Kami sebenarnya sedang mempelajari kertas itu untuk model GGX BRDF kami sendiri & edge_tint logam, dan kami telah menemukan satu masalah penting.

Hammon masih menggunakan pendekatan Fresnel Schlick untuk jejak-bidang mikrofacet-nya yang pada kenyataannya hanya bekerja untuk dielektrik (dan konduktor tetapi dengan hack).

Tapi kami menggunakan Fresnel yang sebenarnya (membuang polarisasi) dan melakukan perhitungan penuh, memungkinkan kami untuk mengatur F0=0 ketika kita tidak ingin specular di permukaan sama sekali.

https://github.com/Crisspl/IrrlichtBAW/commit/914b50d7238fc4a30f23fc2a4ea570e467f4ab75#r34031272

Masalahnya adalah bahwa Schlick berantakan F0<0.02, sehingga difusi GGX akan terlalu gelap untuk bahan-bahan tersebut (karena masih menganggap transmitivitas rendah pada sudut pandang).

Selain itu, sesuatu yang menyebalkan bagi saya adalah penggunaan DIS dan PBR (1F(θi))(1F(θo)) yang merupakan pendekatan penjumlahan-jumlah (fresnel dengan rata-rata facet normal) alih-alih perhitungan yang tepat yang akan menjadi rata-rata tertimbang fresnel dengan setiap facet normal yang mungkin, ditimbang tentu saja oleh fungsi distribusi normal.

Dalam PBR smoothkomponen bisa tetap apa adanya (kecuali bahwa Schlick perlu diganti dengan Fresnel yang tepat) tapi saya ingin tahu apa roughdan multiharus menjadi denganF0<0.02 .

Saya kira itu roughmungkin akan berubah sangat sedikit, tetapi cukup untuk membuat perbedaan (sejak denganα=1 GGX NDF adalah konstanta) jika F0=0.

Saya harap kita bisa mengirim email ke E. Hammon dan melihat apakah simulasi dapat dijalankan kembali untuk Fresnel penuh dan rentang IoR (F0) yang diperluas, termasuk 1,0 (0,0).

EDIT: Seb. Lagarde juga memiliki keprihatinan yang sama seperti yang saya lakukan tentang Fresnel yang digunakan http://openproblems.realtimerendering.com/s2017/02-PhysicallyBasedMaterialWhereAreWe.pdf

Aduh
sumber