tag:blogger.com,1999:blog-3460906122833508895.post233840951525515162..comments2017-12-23T08:36:12.731-06:00Comments on Graphic Rants: Specular BRDF ReferenceBrian Karishttp://www.blogger.com/profile/03069330593380092516noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-3460906122833508895.post-1263211946414012762015-03-11T20:50:47.402-05:002015-03-11T20:50:47.402-05:00Those that implement this should note the singular...Those that implement this should note the singularity that occurs when n.v is approximately 0 (diverging fresnel reflectance and complete geometric attenuation competing with each other). When computing the final result, n.v should be floored to some epsilon to prevent artifacts. In any case, viewing a surface at a completely orthogonal angle is non-physical and should not be modeled.Jeremy Onghttps://www.blogger.com/profile/06478936258544670170noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-25762398219963138462014-09-21T21:59:09.954-05:002014-09-21T21:59:09.954-05:00It does make a difference but I removed it a while...It does make a difference but I removed it a while ago because I felt it is less accurate. <br /><br />Disney has recently done the same, mentioned in an addendum to their course notes.<br />Brian Karishttps://www.blogger.com/profile/03069330593380092516noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-67839282757143012042014-09-19T18:29:07.271-05:002014-09-19T18:29:07.271-05:00Hi Brian, thanks for posting this.
I realize in y...Hi Brian, thanks for posting this.<br /><br />I realize in your course notes you mention that you decided to follow disney's model of re-mapping roughness using (Roughness+1)/2.<br /><br />In the UE4 source it appears that the mapping has gone away even for analytic light sources, did it not make a difference?Calvin Hsuhttps://www.blogger.com/profile/08450933946032730929noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-72234174779037312972014-07-01T21:48:06.246-05:002014-07-01T21:48:06.246-05:00Replaced the Kelemen function.
Equivalent but thi...Replaced the Kelemen function.<br /><br />Equivalent but this one uses terms more similar to the others. Uses double angle cosine identity.<br /><br />dot(V,L) = 2 * dot(V,H)^2 - 1Brian Karishttps://www.blogger.com/profile/03069330593380092516noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-30463319133190333832014-07-01T21:39:53.772-05:002014-07-01T21:39:53.772-05:00Morgan,
These functions are only defined within t...Morgan,<br /><br />These functions are only defined within the hemisphere. max(0,x) or saturating are ways to make undefined parameters do something sensible. Translating these into shader code will require it as well as preventing divide by zero. I changed the Kelemen function to make it clearer. That was the only one that was ambiguous.Brian Karishttps://www.blogger.com/profile/03069330593380092516noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-28732130256583832652014-04-16T08:24:44.179-05:002014-04-16T08:24:44.179-05:00Great reference, thanks for writing this up! Blinn...Great reference, thanks for writing this up! Blinn's paper is available online here http://research.microsoft.com/pubs/73852/p192-blinn.pdf if you'd like to add it to the references.thinkinggamerhttp://interplayoflight.wordpress.com/noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-69971659644558973102014-04-02T05:33:57.153-05:002014-04-02T05:33:57.153-05:00For the Beckmann/Phong G1, the definition of c is ...For the Beckmann/Phong G1, the definition of c is missing. It is:<br /><br />c = \frac{|m \cdot n|}{\alpha \sqrt{1 - (m \cdot n)^2}}.Morganhttps://www.blogger.com/profile/10895207997945851010noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-38211411898143370272014-03-31T22:31:35.872-05:002014-03-31T22:31:35.872-05:00I could understand it easily. Thanks to your lucid...I could understand it easily. Thanks to your lucid explanation!!Changminhttps://www.blogger.com/profile/06847531921896341816noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-79159573804181974022014-03-31T20:55:09.526-05:002014-03-31T20:55:09.526-05:00Yes m stands for the microfacet normal. The NDF di...Yes m stands for the microfacet normal. The NDF discribes the distribution of these microfacets. For the microfacet to reflect to the view the vector needs to be half way between the light and the view vector. So, the NDF is then telling you the amount of microfacets that line up to reflect towards that view. This is a long way to say that yes in practice you input the half vector for m. Brian Karishttps://www.blogger.com/profile/03069330593380092516noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-82396185701982961222014-03-31T20:46:46.005-05:002014-03-31T20:46:46.005-05:00Thanks for the posting. :)
I think that "m&q...Thanks for the posting. :)<br /><br />I think that "m" in NDF may be half vector. Is it right?Changminhttps://www.blogger.com/profile/06847531921896341816noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-58485939663574564532014-03-28T07:56:45.112-05:002014-03-28T07:56:45.112-05:00Can you add the max(0, ...) calls? E.g., in Blinn-...Can you add the max(0, ...) calls? E.g., in Blinn-Phong, the central factor should be: max(0, n . m)Morganhttps://www.blogger.com/profile/10895207997945851010noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-90159321110347773392013-09-03T09:09:46.512-05:002013-09-03T09:09:46.512-05:00Thanks for the blog and video, it makes very inter...Thanks for the blog and video, it makes very interesting reading.Frank Doddhttps://www.blogger.com/profile/09218621472963645120noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-77893537689150929872013-09-01T16:54:01.637-05:002013-09-01T16:54:01.637-05:00Thanks for posting all these, and for the great Si...Thanks for posting all these, and for the great Siggraph presentation.bjhttps://www.blogger.com/profile/16667383923629087847noreply@blogger.comtag:blogger.com,1999:blog-3460906122833508895.post-72694110772750321642013-08-23T21:33:58.893-05:002013-08-23T21:33:58.893-05:00Hi,
Thanks to post all these explanations about th...Hi,<br />Thanks to post all these explanations about the physical based lighting.I have tried to implement it and I got a result but I'm not sure if the calcule is really correct.Maybe could you tell me, my pixel shader code is here : http://pastebin.com/yhkL5KmC.<br />Thanks for the helpMichael Ségurahttps://www.blogger.com/profile/09042014447985855398noreply@blogger.com