Bingung dengan implementasi PBR

13

Saya menemukan dunia matematika yang indah dan saya menabrak tembok besar dengan PBR dan penamaan jadi saya punya beberapa pertanyaan: Sejauh yang saya mengerti, BRDF menggambarkan bagaimana suatu bahan bereaksi terhadap cahaya (cahaya langsung yang masuk dan pantulan). Tetapi dalam "Cook-Torrance" saya tidak melihat apa-apa tentang refleksi saya tidak mengerti bagaimana saya mengintegrasikannya jadi saya hanya mendapatkan cahaya dan refleksi yang difus.

Saya telah membaca banyak tentang "istilah difus" yang berbeda seperti "Oren-Nayar" apakah ini bagian dari Cook-Torrance seperti "D" yang berbeda pada nominator DFG? apakah itu menggantikannya tanpa perhitungan specular?

Saya sudah membaca banyak tentang "GGX" dari latar belakang blender artist saya, saya pikir itu adalah sesuatu yang membuat refleksi buram tapi sepertinya saya salah dan sekarang saya menemukan istilah GGX ini dalam banyak situasi yang berbeda seperti pada micro-facet normal distribusi dalam tutorial ini

Jadi singkatnya pertanyaannya adalah: bagaimana "Oren-Nayar" dan "GGX" dan "Cook-Torrance" saling berhubungan (jika ada) dan bagaimana cara saya mengintegrasikan "refleksi vec3" dalam algoritma tersebut?

Seperti yang saya katakan sebelumnya saya seorang pemula dalam matematika jadi Jika jawaban Anda adalah "matematika yang berat" tolong tulis versi glsl / hlsl dari persamaan Anda, akan lebih mudah untuk memahami saya sehingga kesetaraan akan banyak membantu saya

PS: Saya mengerti pertanyaan saya buram tetapi juga kabur seperti pemahaman saya tentang hal itu.

baru
sumber
1
Sesuatu yang mungkin membantu Anda adalah "specular" berarti "seperti cermin". Jadi, ketika berbicara tentang refleksi specular dan difus, specular berarti cermin seperti refleksi, apa yang orang biasa sebut refleksi. Diffuse hanyalah "benda yang menyala". Mereka memantulkan cahaya juga, tetapi mereka memantulkan dari berbagai arah yang berbeda, sehingga hasilnya bukanlah apa pun yang Anda dapat mengenali gambar. Ada skala antara refleksi specular dan difus dalam objek nyata, dan ini adalah bagian dari apa yang "kekasaran" parameter kontrol PBR.
Alan Wolfe
Anda dapat mencoba membaca makalah Cook-Torrance asli: inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.pdf - pastikan untuk memeriksa referensi yang tercantum di bagian akhir juga, bila mungkin (kebanyakan mungkin) tersedia online). Ini akan memakan waktu, tetapi ini adalah cara yang pasti untuk memahami "secara mendalam" apa yang terjadi.
bersihkan

Jawaban:

12

DFG muncul dalam keluarga BRDF berbasis mikrofacet. Ini hanyalah produk dari tiga istilah:

  • D: Distribusi microfacet.
  • F: Koefisien fresnel.
  • G: Atenuasi geometris antara mikrofacet.

Ketika seseorang mengatakan Cook-Torrance, mereka biasanya berarti BRDF mikrofaset di mana distribusinya (D) adalah Beckmann, yang saya pikir adalah apa yang dimaksud dengan makalah Cook-Torrance asli.

GGX sebenarnya hanya distribusi yang berbeda (istilah D). GTR adalah satu lagi. Nama-nama tersebut sering digunakan sebagai jalan pintas untuk berarti BRDF menggunakan distribusi itu.

Sekarang semua ini mengasumsikan refleksi specular (atau pembiasan) pada microfacets, maka istilah fresnel. Jika Anda mengambil ide serupa tetapi menggunakan mikrofacet difus (lambertian), Anda mendapatkan BRDF Oren-Nayar. Saya pikir seseorang didasarkan pada distribusi mikrofacet yang gaussian tetapi saya tidak terbiasa dengan detailnya.

Olivier
sumber
oke, itu sedikit lebih jelas tetapi masih tidak menjelaskan apa yang harus saya lakukan dengan "vec3 reflectionColour" yang saya dapatkan dari meluncurkan kembali ray di raytracing / marching atau menggunakan SSR / cubemap. Ini seperti persamaan hanya memperhitungkan titik cahaya / sorotan tetapi tidak tahu untuk lampu area atau refleksi. Tampaknya juga "specular" hanya terkait dengan "titik putih" alih-alih refleksi karena apa yang tidak masuk akal = /
newin
@newin Dalam model PBR, specular dan refleksi adalah nama yang berbeda untuk hal yang sama. Ini adalah sorotan specular ketika sinar menyentuh cahaya, pantulan ketika itu mengenai objek lain (atau lingkungan). Adapun refleksiColour Anda, itu tergantung bagaimana sinar dihasilkan. Apakah Anda mengambil contoh pencahayaan langsung? Lampu area? Mengintegrasikan BRDF dengan peta lingkungan? Cobalah membaca Pelacakan Jalur Progresif dengan Sampling Cahaya Eksplisit , ada jawaban panjang yang mungkin menjelaskan beberapa hal tentang proses tersebut.
Olivier
Jadi jika saya mengerti dengan benar bahwa "vec3 reflectionColour" harus diperlakukan sebagai cahaya dan jika saya ingin membuat cahaya memancarkan mesh saya hanya harus meletakkan nilai> 1 di Albedo dan hanya itu? (Saya mencoba untuk mengintegrasikan PBR ke skenario yang berbeda yang pertama adalah raymarcher di mana saya ingin jerat memancarkan cahaya, yang lain adalah mesin game yang menggunakan SSR dan mungkin akan menggunakan cubemaps)
newin
@newin light emitted ditambahkan di atas segalanya. Itu tidak terkait dengan BRDF. Jika jaring Anda tidak menghasilkan apa-apa selain memancarkan cahaya, Anda bahkan tidak perlu melacak sinar lebih jauh darinya. Albedo besar akan memperbesar cahaya (salah secara fisik), bukan membuatnya.
Olivier