Microscratches / Swirl marks / Spiderwebbing

Circular ‘spiderweb’ around bright highlights in the reflections, caused by microscratches catching light at different angles. We see this effect quite often on real world surfaces that have been scuffed, scratched and worn out for a while.

Over the years, I’ve tried to achieve this effect in VRay for quite a few times… unsuccessfully

After finding some leads on how to approach this on VRay forums, finally I think I’ve got a method that gives good looking results, naturally I also made a tutorial :)

First of all, forget about using a regular Bump map, it simply doesn’t look right in my experience. You need to use a Normal map to simulate those extremely tiny scratches.
This sort of map is best hand drawn in Photoshop, since you can easily make it tileable. Draw a bunch of scratches in the center of the image, making sure none of them approach the borders. Then, use Offset filter and draw a few more in the white areas. Keep doing until everything is well covered up in scratches.

Here’s a quick video on how I do it and my resulting map.

Now using the NVidia Normal Map filter, generate a Normal map.

Ok, now that we got the map, we can create our shader.
The shader we are creating is going to be pure reflection. So start with a Vray mat with pure black Diffuse, pure White Reflection and no Fresnel.

Add Normal Bump to the Bump slot and load in the map. Make sure it’s Gamma is set to 1.0 and filtering is disabled. I’ll use the strength of the Normals at 1.5

Now convert the material to VrayBlend and duplicate this first layer a few times.
For each subsequent coat layer, lower the Normal strength a bit. This will create a more gradual falloff around the highlights.
So in my example I used 1.5 for the first layer, 1.0 for the second, 0.5 for the third, and finally 0 for the fourth. This last layer gives pure, smooth reflections, without the scratches. You can adjust the blend amount of the last layer to control the strength of the scratches. Just make the pure reflection stronger to make it less worn.

So far the result looks like this:


This is basically our completed Reflection coat.

If you want to add these scratches to a material like polished plastic – it’s easy.
Create a new material, set up your diffuse color/etc and use it as the base layer in a new VrayBlend.

Now add our scratched reflection shader to the Coat slot and use a Falloff map in the blend amount slot, set it to Fresnel (1.4~3)

Ta-da! Your plastic now has a scratched up clear coat.

plastic microscratches

Same technique can be used to add these scratches to any other material. Just look out for the ones that already have strong glossy reflections – it’s best to disable them altogether and just use the coat.

Obviously there are still some things to tweak, like adjusting the normal strength in different layers or increasing the number of layers and so on, but I think this is a pretty good starting point!

Perhaps you use a different method to achieve this result? If you do, please share in the comments!

59 thoughts on “Microscratches / Swirl marks / Spiderwebbing

  1. Hello,

    It seems that you rotate the map slightly in those normal map copies…did you mention that?

  2. Nice mat! Only used car and used teapot =))))

  3. You are the best :)
    Love the tutorial!

  4. Waw!!Long time I wondered how to achieve a similar effect,this has solved that problem to me. I will put into practice for my next project Thanks!

  5. Austris, with this effect it’s so realistic, almost every material has something like this in the reality, amazing!

    Thanks again :)

  6. Love your tutorial. Thank you very much!

  7. Woa…amazing…you’re more than an expert.You’re my idol.:)

  8. THANKS a lot Dear for this Nice Tip… Good Luck ! :)

  9. Orlando Hoyos

    Eres un experto, muy buen aporte, millones de gracias.

  10. Austris you are a genoius.

    I’ve been working on various methods to achieve this effect. Thank you for this great tutorial

  11. Thomas Chadail

    Hi Austris,
    Tricky technic, thanks for sharing.
    I tried to recreate this effect: first using your nVidia generated normal map, then with a xNormal generated normal map as this is the tool I am used to. In both cases the shader is exactly the same, only the maps differ.
    The render with your map is fine (although I had to push the bump value to 60, 40 and 20 instead of 1.5, 1 and 0.5 like you), but there is something weird with the other: it seems like I offset the UV coordinates of normal maps from one slot to another but I didn’t.
    Here are the renders:

    • Interesting results. The first thing I can think of is that the midpoint of the normal map is somehow wrong in the XNormal generated map. If you load it up with gamma 1.0 – the midpoint should be exactly the same in all three layers, ie only the scratches should affect the surface.
      It looks like in your example, the whole shader is bumped up (or down) slightly depending on the bump strength, compare the dominant purple pixel RGB values in photoshop for both textures to see if that’s the case. If they don’t match – there’s your answer.

      The bump strength in my example is actually 30, it is the normal bump normal strength that is 1.5, 1.0, 0.5…

      Also, this effect is best seen with very bright light sources like camera flash or direct sunlight, your test scene has a pretty cloudy look, so it’s not the best hdri to test with :)

      • Thomas Chadail

        Thank you Austris, you are right: I checked both normal maps and it appears that the RGB midpoint values were not exactly the same. That’s because I usually correct xNormal maps with a slight curve (bad habbit though !). So I got rid of the strange bump offset in my render, but now I notice that the scratches effect is more convincing with the nVidia normal map than with the xNormal map. So I think I am going to work with the nVidia plugin from now on.

        Just a question: to recreate the exact same normal map as yours, I had to activate “Wrap”, “Invert X” and “Invert Y” settings. Do you always use these settings ?

        • There was a mistake in the map I posted. The settings were left from a different texture. As a result the map actually needed a negative normal bump value to appear correct.
          The correct texture would be generated with wrap or invert options off.

          The settings can be different when creating a normal map from photo-sourced texture.

  12. Thank you Austris, you said “forget about using a regular Bump map, it simply doesn’t look right”, can you please explain why regular bump map won’t work? It would be great for better understanding..
    Thank you for another great tutorial!

  13. Man, thanks! this is pure awesome, my hat goes off to you good Sir.

  14. Огромное спасибо ! Супер !

  15. its great
    thank alot

  16. THX for nice mat … %)

  17. İt is not about just scratches.
    Really amazing that your way of thinking for solving problem of the get very close real final.
    I think map is big part and map and photoshop are should be good partner.
    You showed us that.
    You are very good trainer.
    Please dont stop.

    Thanks a lot.

  18. I wonder how many times I have tried to recreate this effect. Looking at that stainless steel wash basin. Thank you so much!

  19. THX for sharing this great tutorial
    excuce me but i couldn’t watch the video tutorial
    and ithought it’s one of those errors you’ve said
    i thought should tell you
    thank you again dear master ;)

  20. Thanks for yet another great tutorial!

  21. Thank you very much for share your knowledges . Congratulations Austris.

  22. Your results look great
    This plugin might be worth a try

  23. I am very glad to knew about this technique,
    Austris u are always great

  24. I just can’t get it to look like that at all…

    The VRayLights don’t “feather out”… what am I doing wrong?

    Could you possibly share your max file?

    • The setup is a bit finicky. In some lighting scenarios it doesn’t work that well, you might need to play around with the normal bump values.

      It also helps when there are few lights much brighter than the rest of the environment. Think camera flash, sunlight, spotlight, etc Your scene looks very evenly lit.

      *note, the normal map posted was inverted and actually needs negative Normal Bump value. My mistake!

  25. Hesham Elshipli

    Thank you Austris.

  26. Nice tutorial! Have you considered to make tutorials for Corona render ? Have you tried it?

  27. Thank you Austris.

  28. mahmood lachi nany

    very nice tutorial

  29. thanks top tut

  30. kim jong kwon

    Thanks Austris.

    I would like to know nVidia options of normal map into this tuto.

  31. kim jong kwon

    I tried to test this tutorial.
    Good ~


  32. Hi
    how I can get this effect using mental ray?

  33. I tried different ways but it did not work.

  34. borgesdaniel.com

    You are the best.

  35. This technique looks like Grant Warwick’s ones. Have you checked his workflow out Austris? I would love to know your point of view over his way to create shaders with v-ray.

    take care!

    • Grant has a very interesting workflow. I’m subscribed to his course, but I do not use his techniques ‘as is’ – I take some of the ideas, tweak them and incorporate them into my own workflow.

  36. привет! Austris твои уроки самые лучшие, они мне очень помогли, и твои работы очень реалистично получаются очень хотелос бы что ты сделал урок по теме вдохновение как ты подбираешь предмети интерьера или экстерера и как ты продумаешь дизайн комнаты

  37. very very nice.tnx a lot

  38. все круто. тока сукпер загадкой остаеца каким раком 3 коата в бленде подряд с серым смешиванием создают плавный спад хайлайтов? я понял и увидел что это работает но не понял КАК?

    • The radius of the circular highlights is determined by bump strength, more bump = larger circle of scratches.
      Combining in blend is not straightforward, it’s not 4 layers = 25% strength each. It’s something like 12.5% first layer, 12.5% second layer, 25% third layer and 50% fourth layer (with default medium grey blend amount). This makes the first layers weaker than the ones after them. So the layers with most bump are less visible, this makes the smooth falloff. Now that I see it written down, it’s clear that the second layer should have a brighter blend amount, to make the transition even smoother.

      I’m not a mathematician or programmer, so this is all just done by eye. To get a perfect, smooth falloff, there would probably need to be more layers with exact blending amount and bump strength calculated.

  39. и еще я не опнял вот этого места. я обычно работаю в компакт режиме. но создал мат, переключился в слейт и не увидел этой привязки и не понял куда она идет вообще. при попытке протянуть туда вереваку спрашивает через какую карту…

    • It’s a technical issue with vray blend material.
      Developers say that the Coat Dup is needed for some reason, but it’s not a special slot with any effect, it’s just a duplicate of the regular coat that is only visible in slate editor.

  40. as always nice and effective tutorial. i want to ask one thing not regarding this its all about material .. when i put my camera to any object ( on which material is applied) texture appear blurred. if i want to show concrete wall just by putting camera near to it ..it will not appear as real as i see in real jpeg.

  41. Good day,

    Great material, I would say one of the most advanced and realistic.
    Can I ask you to show me how to make a dark grey Alucobond Material, It never seems to work with me.
    Thank you very much

  42. Really nice tut.
    It works really well, (better if you have many little scratches in your map)

    But actually I don’t get why it makes a twirl effect around specs from a map made of straight lines…
    Can you explain it ? :)

  43. Hi There! Cool tutorial.

    I am having trouble getting the effect you have show in your image. I have followed the tut and created a scratch map but I end up with “offset” high lights that don’t look right at all. Any idea why this could be? See link for image.


    Second question: It looks like your scratches are circular but mine are more angular. What can I do to emulate your effect? I think this is as similar question to the one directly above mine from “lawl”

    • Hi,
      my first thought is that your normal map is wrong – either you are loading it with the wrong gamma (should be set to 1.0)
      or there is something about the way it was generated (different plugin?)

      • Where can you set the gamma for the bump normal? Do you not have gamma/color correction turned on in Max?

        I used the same plugin and settings that you have shown above. I have tried inverting the green channel, red channel, swapping them, etc with no luck. However, a vray normal map with different bump settings (i.e. not 30) works pretty well.

        Thus, I am wondering if it is something to do with the bump normal?

Leave a Reply

Your email address will not be published. Required fields are marked *