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=∫Ωρm∗D∗G∗cos(α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=F∗D∗G4∗cos(θ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 (1−F(α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 1−F 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+(1−F(αh))∗rd∗k
Dengan k dipilih, sedemikian rupa
rd∗k=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 1−F(αh). Namun, [SHI, p.46] mengutipnya secara tidak benar, kata mereka ia digunakanF(θi) dan 1−F(αh). Dengan asumsi ini, mereka tentu saja benar dalam berpikir [SCH] bukan penghematan energi, tetapi ini membuat saya percaya ituF(αh) dan 1−F(α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