From: Jeff Russell <jeffdr@8m...>  20091111 19:25:04

The progression Jon mentioned between a rough surface and a smooth one is interesting to me though. The use of the halfvector does break down for very smooth surfaces, it seems. It could be worth considering what that means exactly. I just finished a game where we used cube maps for specular lighting contributions from the sun & sky. Several cube images were used, each "preblurred" to a set specular power around the reflection vector. Halfvector was not an option I think (every pixel in the map is a light source). Is there a way to get this "halfvectorlike" behavior out of a cube lookup? Feels like the answer is no... On Wed, Nov 11, 2009 at 12:31 PM, Nathaniel Hoffman <naty@...> wrote: > Jon, > > It is inarguable that H produces much more realistic results  a simple > observation of light streaks on wet roads and similar scenes with a > comparison to renderings of the two formulations proves this without a > doubt. > > However, there are also good, fundamental, theoretical reasons to prefer > H. I seem to be explaining this poorly  I will give it another try, but > first, here are some pointers to other explanations: > > There is a good diagram illustrating the difference in behavior of the two > vectors in Figure 7 of this paper: > http://people.csail.mit.edu/addy/research/ngan05_brdf_eval.pdf. > > There is also some discussion about it in Appendix A of this paper: > > http://graphics.stanford.edu/courses/cs44805winter/Schilling1997TechRep.pdf > > "RealTime Rendering, 3rd edition" also has some discussion of it on pages > 249251. If you don't have a copy of the book, you can "look inside" at > Amazon: > > http://www.amazon.com/RealTimeRenderingThirdTomasAkenineMoller/dp/1568814240 > , > click on "search inside this book", look for "half vector" (in quotes)  > you will get a link to page 249. > > OK, now I'll have another go As we both agree, the reflection vector is > fundamental for a perfectly flat mirror. Imagine a directional or point > light shining on the mirror. There are only visible reflections when V == > R(L, N) (view vector is equal to the reflection of the light vector around > the surface normal). > > Now how should we treat a surface which is not perfectly flat? A good > model (which comes to us from fields outside graphics but has been very > successful in graphics) is to treat such a surface as a statistical > collection of stochasticallyoriented perfect mirrors, each one too tiny > to be individually visible. A useful description of such a surface for > purposes of rendering is a normal distribution function, or NDF, which > gives the statistical distribution of the microfacet normals relative to > the overall macroscopic normal. > > Given a light direction L and a view direction V, how bright will we > observe the surface to be? Let's assume for simplicity that each of these > mirrors is 100% reflective at all angles (silver comes close to that). > Then it is clear that the brightness is proportional to the percentage of > microfacets from which there are visible reflections, in other words those > for which V == R(L, N_u) (here I use N_u for the microfacet normal to > distinguish from the overall surface normal N). > > It is simple to demonstrate that this is equivalent to N_u == H. Therefore > we should "plug" H into the microfacet distribution function, which yields > the (N dot H) formulation for isotropic surfaces. > > I can think of no similarlyprincipled way to derive the reflection vector > formulation, and none has appeared in the literature. > > I hope this has convinced you that the H formulation is superior to R both > in terms of realism and theoretical soundness. > > Thanks, > > Naty Hoffman > > > But that's equally true for the reflection vector! If all the > > micromirrors were perfectly flat, then an infinite specular power > > would be applied, and you'd get a perfect reflection of the lighting > > environment  in fact, this is what environment mapping gives you. > > > > As the mirrors start deviating from the perfectly flat state, the > > specular power would decrease, and the specular reflection area would > > grow in size. I don't see how you can say that the halfangle > > formulation is more meaningful. We're still talking about reflected > > light. In the perfectly reflected case, clearly the reflection vector > > is 100% meaningful and accurate, and any other formulation would be > > less meaningful. I don't see how "meaningfulness" would change as > > smoothness goes from 100% to 99.9% or 95% or 50%. > > > > I do agree that the math gives you a different assumed microfacet > > distribution in the case of the reflection formulation versus the > > halfangle formulation. Both are approximations, of course. However, > > what I don't get, is why the reflection vector approximation is > > considered so inferior to the more expensive halfangle vector > > approximation. Does it have anything to do with the space integral of > > the reflection cone formed by the vector in question spread out by the > > power function? If so, how? > > > > Sincerely, > > > > jw > > > > > > On Sun, Nov 8, 2009 at 9:41 AM, Nathaniel Hoffman <naty@...> wrote: > > > >> The halfangle formulation is not just more physically correct than the > >> reflectionvector formulation, it is fundamentally more meaningful. > > ... > >> The halfvector comes from microfacet theory. Imagine that the surface > >> is > >> actually a large collection of tiny flat mirrors when viewed under > >> magnification. Recall that a mirror only reflects light in the > >> reflection > >> direction. For given light vector L and view vector V, only mirrors > >> which > > > > > >  > > Americans might object: there is no way we would sacrifice our living > > standards for the benefit of people in the rest of the world. > > Nevertheless, whether we get there willingly or not, we shall soon > > have lower consumption rates, because our present rates are > > unsustainable. > > > > >  > > Let Crystal Reports handle the reporting  Free Crystal Reports 2008 > > 30Day > > trial. Simplify your report design, integration and deployment  and > focus > > on > > what you do best, core application coding. Discover what's new with > > Crystal Reports now. http://p.sf.net/sfu/bobjjuly > > _______________________________________________ > > GDAlgorithmslist mailing list > > GDAlgorithmslist@... > > https://lists.sourceforge.net/lists/listinfo/gdalgorithmslist > > Archives: > > > http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithmslist > > > > > > >  > Let Crystal Reports handle the reporting  Free Crystal Reports 2008 30Day > trial. Simplify your report design, integration and deployment  and focus > on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobjjuly > _______________________________________________ > GDAlgorithmslist mailing list > GDAlgorithmslist@... > https://lists.sourceforge.net/lists/listinfo/gdalgorithmslist > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithmslist >  Jeff Russell Engineer, 8monkey Labs http://www.8monkeylabs.com 