[tuhopuu-devel] Re: Minnaert diffuse shader

Jorge Bernal jbernalmartinez at gmail.com
Fri Jan 14 16:15:11 CET 2005


Hi

I've playing a little with the "mixed" Minnaert shader and i think that this way
is more intuitive (in my opinion) and also it has the best of the two
implements :) .

Regards
Jorge Bernal


On Thu, 13 Jan 2005 23:41:13 +1100, Jonathan Merritt
<j.merritt at pgrad.unimelb.edu.au> wrote:
> Hi Everyone,
> 
> In the absence of further comments, I've played with the Minnaert model
> a bit more and committed my latest changes.  You can see an example of
> the diffuse shading models here:
>     http://www.warpax.com/temp/diffuse-test.png
> Sorry about my choice of a really gaudy purple.  It's getting late over
> here, so I don't feel like fixing it.  Please make your own demo images,
> and post them to Elysiun! :-)
> 
> The darkness parameter of the Minnaert shader can now take on both
> positive and negative values.  Positive values tend to look more like a
> specular model, or a metal, because they darken the "glancing edges" of
> an object.  Negative values look more like velvet, because they lighten
> the edges.  (See the demo image.)
> 
> A major problem with all versions of the shader (mine, nVIDIA's and the
> "original"), is that in the "velvet" mode, they all show very large
> peaks in intensity around the edges of the object (caused by raising
> small positive numbers to a negative power).  This caused some quite
> unsightly artifacts in the original patch version.  To combat these
> artifacts, I have used a "clamp and attenuate" scheme.  The algorithm
> for i is:
> 
> i = nl * pow( MAX2( nv*nl, 0.1 ), darkness );
> if (darkness < 0.0)
>     i /= pow( 0.1, darkness );
> 
> As you can see, the first part is the ordinary Minnaert shader with
> slight clamping of of low nv*nl.  The second part isolates the "velvet"
> case, and reduces the overall brightness so that the rim will never be
> greater than 1.0 brightness (maybe I've overdone this darkening - it can
> be adjusted if necessary?).  The overall shader is still C_0 continuous
> at darkness = 0, with darkness = 0 being identical to the Lambertian shader.
> 
> I'm now wondering: "why limit this kind of attenuation to the Lambertian
> case alone?" ... why not attenuate any diffuse shader (eg: Oren-Nayar,
> Toon, etc.) in the same kind of way? :-)
> 
> Anyway, please play with this and tell me what you think! :-)
> 
> Jonathan Merritt.
> 
> _______________________________________________
> tuhopuu-devel mailing list
> tuhopuu-devel at projects.blender.org
> http://projects.blender.org/mailman/listinfo/tuhopuu-devel
>


More information about the tuhopuu-devel mailing list