Saya tidak dapat menemukan alasan yang bagus untuk ini di mana saja. Vektor refleksi yang digunakan dalam phong memiliki dasar sederhana dalam fisika. Tetapi setengah vektor yang digunakan dalam blinn tampaknya tidak memiliki dasar rasional, dan bukan merupakan refleksi yang tepat. Namun itu digunakan dalam setiap fungsi yang disebut "berbasis fisik" fungsi. Jika ada dasar fisik yang baik untuk itu, saya ingin tahu.
Apa yang saya dapat temukan adalah beberapa alasan:
Ini lebih cepat - ada informasi beragam tentang ini, tetapi meskipun demikian itu akan menjadi alasan yang bagus ... di tahun 1998.
Ini menangani sudut lebih tinggi dari 90 derajat lebih baik - sejauh yang saya tahu satu-satunya alasan untuk ini adalah karena istilah phong telah digunakan secara tidak benar. Produk titik refleksi dan tampilan memberikan sudut antara -1 dan +1. Biasanya sudut ini dijepit ke 0 ke 1, ini adalah penyebab langsung dari masalah 90 derajat. Normalisasi ulang sudutnya alih-alih menjepitnya dan Anda mendapatkan cakupan penuh 180 derajat. Saya menolak untuk percaya bahwa operasi x * 0,5 + 0,5 yang sederhana telah menghindari dunia grafis selama 40 tahun.
ia menangani tepi dengan lebih baik - Tepi "masalah" juga ada dalam solusi blinn, hanya pada tingkat yang lebih rendah. Penyebab utamanya adalah simulasi pencahayaan area yang tidak tepat pada terminator, yang seharusnya penting untuk shader "berbasis fisik" apa pun. Tetapi bahkan dalam situasi yang lebih sederhana fungsi sigmoid dapat mendekati garis terminator lunak dengan benar. Mengalikan ke dalam istilah lambert tidak benar karena melemahkan istilah specular dengan tidak tepat, ini dapat membatalkan istilah fresnel dan menyebabkan kesalahan lebih lanjut.
Ini memiliki pantulan yang panjang di tepian - Bagi saya kelihatannya sementara refleksi anisotropik mungkin realistis, blinn bukanlah cara yang tepat untuk mengimplementasikannya, karena hanya muncul di tepian. Ini hanya kebetulan kebetulan bahwa kesalahan dalam istilah H terjadi terlihat realistis.
Tak satu pun dari alasan ini yang memuaskan, saya ingin memilah kegilaan ini.
Saya ingin mengklarifikasi bahwa saya tidak berbicara tentang blinn dan phong secara khusus , tetapi tentang komponen vektor H dan R, yang digunakan sebagai dasar untuk shader ini dan juga yang lainnya.