Notice: After all of the awesome advice given here, I ended up creating a node group that clones 3DS Max's falloff map (for the most part). Feel free to download in my latest answer to this question.

In 3DS Max and VRay, I can create a "Falloff" map. Here is a description from the docs:

The direction used to specify the angular falloff varies, depending on the methods you choose. However, with the default settings, the map generates white on faces whose normals point outward from the current view, and black on faces whose normals are parallel to the current view.

I'm not sure at all how to implement this in Blender - I am not a node wizard. but it's extremely valuable when creating materials for fabrics and textiles. Intuition tells me someone has managed to implement this already.

Here's a screenshot:

Falloff Node

Edit: I just created a couple of images that show this map in action when rendering clothing / textiles. I would recommend opening both images in to tabs and then quickly cycling between them to see the change.

With Falloff:

With Falloff

Without Falloff:

Without Falloff

Going to add an edit here. Here are the things I have tried so-far without much luck:

  1. Layer Weight Node (Facing into MixRGB factor)
  2. Fresnel Node
  3. Velvet Shader BSDF (This has given me the best results so-far)

Velvet Shader attempt:

My attempt so far

Can someone point me to a working/better implementation or substitute for this behavior?

Really appreciate any help at all.


3 Answers 3


"With the default settings, the map generates white on faces whose normals point outward from the current view, and black on faces whose normals are parallel to the current view."

What you're describing sounds like the dot product of the incoming vector and the normal vector. Probably, clamped:

enter image description here

If I've misunderstood what "point outward" means, you may want to multiply the dot product by -1.0 instead of 1.0.

Use of the incoming vector might not be appropriate for Cycles-- some variation of the view vector (from camera data) might be appropriate instead, although I can't figure out what space that vector is in; or, you might just do it for camera rays only. Remember, incoming vector can be incoming from camera, or incoming from reflection or refraction or anything else, given Cycles bounces.

The dot product does not give a value that varies linearly with angle. It varies linearly with projection of incoming onto normal, which isn't the same thing. It is common to prefer arccosine(dot(v1,v2)) to dot(v1,v2), which varies linearly with the angle instead.

enter image description here

Which requires a bit of remapping to pi-based stuff. Both of these examples are black where the normal is perpendicular to incoming and white where it is parallel with incoming; the difference is how they interpolate between those two colors.

  • $\begingroup$ I'm still trying to grasp your explanation, but thank you very much for the reply. How does this differ from the Layer Weight node (facing output)? (From the docs: Weight that blends from the first to the second shader as the surface goes from facing the viewer to viewing it at a grazing angle) $\endgroup$
    – fmotion1
    Feb 3, 2021 at 4:05
  • 4
    $\begingroup$ At 0.5 blend, the layer weight is white where normal is perpendicular to incoming, whereas the dot product is black where the normal is perpendicular to incoming. And vice versa. But that's addressable with an invert node-- layer weight is just a transformed (inverted) dot product with the incoming, they are in essence the same thing, $\endgroup$
    – Nathan
    Feb 3, 2021 at 4:15
  • $\begingroup$ @Jay: BTW, since it looks like the falloff node in Max has a mix curve, you can get a similar level of control by just sticking an RGB Curves node in there (use the Color slot for both input and output) $\endgroup$ Feb 4, 2021 at 6:40
  • $\begingroup$ Or I guess it's the Image slot for in/out now (they changed it) $\endgroup$ Feb 4, 2021 at 6:44
  • 1
    $\begingroup$ That's exactly what I did in the final node group shown below in my answer. :) $\endgroup$
    – fmotion1
    Feb 4, 2021 at 7:01

This effect is built into the Principled BSDF node and can be controlled via the Sheen parameter.
enter image description here

Here is a cloth object without sheen, with sheen set to 2, and with sheen tint set to 1 respectively.
enter image description here
enter image description here
enter image description here

  • $\begingroup$ I completely overlooked sheen, thank you. But I will say that it's not exactly the same effect that I'm going for. The falloff map needs to operate independently from the shader itself. For instance, what if I want to use falloff to modulate the base color only? Or just the bump? Or both? There is no way to do that with sheen. I am glad to finally learn what sheen is though! I created a better node group last night that I am going to fine tune today, and release on here. $\endgroup$
    – fmotion1
    Feb 3, 2021 at 21:17
  • $\begingroup$ I personally like to use the layer weight node's "Fresnel" output for about 95% of the viewing-angle based mixing that I do (since the blend value is easy to use being 0 to 1), but there are quite literally millions of ways you could do it based off of the dot product/facing value or the Fresnel node itself. Sidenote: the Fresnel node and the Fresnel output of Layer Weight use the same formula but they're controlled differently. blend = 1 - (1 / IOR) and IOR = 1 / (1 - blend) $\endgroup$
    Feb 3, 2021 at 22:00

So I took it upon myself today to create a flexible clone of 3DS Max's falloff map after reading all of the helpful replies to this thread. I came up with a pretty good node group that I'm quite happy with.

It's very simple, but there is a lot of flexibility with regards to how you can control the intensity and "look" of the falloff. You can dial in extremes as well as very subtle effects.

Falloff Map 1

Like in 3DS Max, you can mix textures/maps by populating the side and front color inputs.

Hope this helps someone.



You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .