PBR uygulamaları ile karışık


14

Matematiğin harika dünyasını keşfediyorum ve PBR ve isimlendirme ile büyük bir duvara çarpıyorum, bu yüzden birkaç sorum var: BRDF anladığım kadarıyla bir malzemenin ışığa nasıl tepki verdiğini açıklıyor (gelen doğrudan ışık ve yansımalar). Ama "Cook-Torrance" da yansımalar hakkında hiçbir şey göremiyorum, onu nasıl entegre ettiğimi anlamıyorum, bu yüzden sadece dağınık ışık ve yansımalar alıyorum.

Ben "Oren-Nayar" gibi farklı "yaygın terim" hakkında çok şey okudum DFG adayı Cook-Torrance farklı bir "D" gibi bir parçası mı? spekülatif hesaplamalar olmadan değiştirir mi?

Blender sanatçısı geçmişimden "GGX" hakkında çok şey okudum, bulanık bir yansıma yaratan bir şey olduğunu düşündüm ama yanılmışım gibi görünüyor ve şimdi bu GGX terimini mikro faset normal gibi birçok farklı durumda buluyorum bu eğitimde dağıtım

Kısacası soru şu: "Oren-Nayar" ve "GGX" ve "Cook-Torrance" birbirleriyle nasıl ilişkiliyse (eğer öyleyse) ve bu algoritmaya "vec3 yansıması" nı nasıl entegre edebilirim?

Daha önce de söylediğim gibi matematikte bir acemi oldum, bu yüzden cevabınız "matematik ağır" ise denklemlerinizin bir glsl / hlsl versiyonunu yazın, benim için anlamak daha kolaydır, bu yüzden bir denklik bana çok yardımcı olacaktır

Not: Sorumun bulanık olduğunu anlıyorum ama aynı zamanda konuyu anlamam kadar bulanık.


1
Size yardımcı olabilecek bir şey, "aynasal" "ayna gibi" anlamına gelir. Dolayısıyla, aynasal ve dağınık yansımalar hakkında konuşurken, aynasal yansımalar gibi yansıtma, insanların normalde yansıma olarak adlandırdıkları anlamına gelir. Dağınık sadece "aydınlanmak şeyler" dir. Onlar da ışığı yansıtıyorlar, ancak birçok farklı yönden yansıtıyorlar, bu yüzden sonuç, bir görüntüyü tanıyabileceğiniz bir şey değil. Gerçek nesnelerde speküler ve yaygın yansıma arasında bir ölçek var ve bu, PBR kontrollerinin "pürüzlülük" parametresi.
Alan Wolfe

Orijinal Cook-Torrance belgesini okumaya çalışabilirsiniz : inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.pdf - mümkün olduğunca sonunda listelenen referansları kontrol ettiğinizden emin olun (çoğu çevrimiçi olarak kullanılabilir). Biraz zaman alacaktır, ama neler olduğunu "derinlemesine" anlamak için kesin bir yoldur.
17'de

Yanıtlar:


12

DFG mikrofaset tabanlı BRDF ailesinde ortaya çıkar. Basitçe üç terimin ürünüdür:

  • D: Mikrofaset dağılımı.
  • F: Fresnel katsayısı.
  • G: Mikro yüzler arasındaki geometrik zayıflama.

Birisi Cook-Torrance dediğinde, genellikle dağıtımın (D) Beckmann olduğu bir mikrofacet BRDF anlamına gelir, ki bu da orijinal Cook-Torrance belgesinin neyle ilgili olduğunu düşünüyorum.

GGX gerçekten sadece farklı bir dağılımdır (D terimi). GTR başka bir tanesidir. İsimler genellikle bu dağılımı kullanan bir BRDF anlamına gelen bir kısayol olarak kullanılır.

Şimdi bunların hepsi mikro yüzler üzerinde speküler yansıma (veya kırılma), dolayısıyla fresnel terimi olduğunu varsayar. Benzer bir fikir alır, ancak dağınık (lambertian) mikrofacetler kullanırsanız, Oren-Nayar BRDF'yi alırsınız. Bence mikrofacetlerin gauss dağılımına dayandığını düşünüyorum ama detaylara aşina değilim.


tamam, bu biraz daha açık ama yine de ışınımı / yürüyüşü veya SSR / cubemap kullanarak bir ışını yeniden başlatmaktan aldığım "vec3 yansımaColour" ile ne yapacağımı hala açıklamıyor. Bu sadece bir spot ışığı / spot ışığı dikkate alan denklemler gibidir, ancak alan ışıkları veya yansımalar için hiçbir fikir yoktur. Aynı zamanda "speküler" in mantıklı olmadığı için sadece yansıma yerine "beyaz nokta" ile ilgili olduğu
görülüyor

@newin Bir PBR modelinde aynasal ve yansıma aynı şey için farklı isimlerdir. Işın bir ışığa çarptığında özel bir vurgu, başka bir nesneye (veya bir ortama) çarptığında bir yansıma. Yansımanıza gelinceRenk, ışının nasıl üretildiğine bağlıdır. Doğrudan aydınlatmayı örnekliyor musunuz? Alan ışıkları? BRDF ve çevre haritasını entegre etmek? Açık Işık Örneklemesi ile Aşamalı Yol İzlemeyi okumaya çalışın , işlemle ilgili birkaç şeyi temizleyebilecek uzun bir cevap var.
Olivier

Eğer "vec3 yansımaColour" bir ışık gibi davranılması gerektiğini doğru anlıyorsam ve örgü yayan ışık yapmak istiyorsanız ben sadece albedo içine> 1 bir değer koymak gerekir ve bu kadar mı? (PBR'yi farklı senaryoya entegre etmeye çalışıyorum, birincisi ışık yayan kafesler istediğim bir raymarcher, diğeri SSR kullanan ve muhtemelen cubemaps kullanacak bir oyun motorudur)
newin

@ yeni yayılan ışık diğer her şeyin üstüne eklenir. BRDF'ler ile ilgisi yoktur. Ağınız ışık yaymaktan başka bir şey yapmazsa, ondan daha fazla ışın izlemenize bile gerek yoktur. Büyük bir albedo ışığı (fiziksel olarak yanlış) güçlendirir, yaratmaz.
Olivier
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.