Car Paint Shader for Cycles

I am starting to appreciate the functionality of rendering with Cycles and the node system. Although I think Luxrender still provides the best car paint materials, you can use Cycles to achieve a similar finish in less time.

I would point out that my friends and I customize and restore cars as a hobby. I have spent a great deal of time mixing, spraying, and observing real paint on real cars. I don’t use photos or movies or TV to compare paint.

The Cycles gloss shader is too shiny and reflective to use alone for car paint. We’ve all seen the renders with an oily finish on them. The clarity of the reflection is adjustable in the roughness settings, not the amount of reflection. As Andrew Price points out in some of his Cycles tutorials, you need the diffuse shader mixed with the gloss shader to moderate the amount of reflection.

I went back to the Luxrender materials panel to use as a model for the Cycles paint shader. Luxrender not only allows for the main color (diffuse) but allows several colors for highlights (specular). The amount of reflection is much more realistic, so the clarity of the reflection is the main adjustment to make.

Translating that back to a Cycles shader, I ended up with three pairs of glossy/diffuse shaders. The first is for the main color. I used the color on the diffuse shader, then mixed it with a 10% gloss/90% diffuse factor.

The second pair is a highlight wherein the diffuse shader receives a very light version of the main color. This is also mixed with a 10%-90% gloss/diffuse ratio. The third pair is the brightest highlight, using an almost white color for the diffuse shader, mixed like the other two.

Now I take the two highlight layers and mix them together. I want the lightest (last pair) highlight to be 10% and the other highlight to be 90% of the reflection. To give this reflection depth, I add a Fresnel node to control the factor of the mixed shader node. At the moment I have it set at 1.0.

Next I take the mixed shader nodes with the primary car color and use another mixed shader node to combine it with the mixed shader node for the highlights. Once more I add a Fresnel node to control the factor of the mixing. Since I want a deeper reflection I am using a setting of 1.175.

Obviously all of the numerical settings can be adjusted if you desire a different look. This isn’t meant to be a definitive shader, hopefully its a more realistic starting point.

Peter Drakulic recently posted tutorials on making metallic paint and pearlescent paint through his CGI Trainer series on Vimeo. Although he used strictly glossy shaders, I believe his technique for adding the pearls and metallics can be easily implemented with the node system I am using.

I have a WIP thread for the Alfa Romeo that shows the Luxrender results, if you wish to compare them yourself.

So car modellers, I hope you find this useful and please post any improvements you make!



Wooooo love it must to try on my ship. Good work!

Brilliant, thanks for the nodes setup, cant wait to use it once i got to textureing my rolls royce phantom I, i made a pretty good nodes system for getting yellow to look right on cars, wasnt easy, but nowhere near as complex as this, im sure this will give great results :slight_smile:
nice work mate.

here i have changed the colour to one more original for this car (although in the end i might go with racing green) but just to test out the nodes setup, and im already stunned at how realistic the paint is, thank you.

Glad to see everyone found this useful. Nice looking Roller!

very helpful xD i need to print it out so i dont forget it lol.
cheers :slight_smile: theres a thread for it in the WIP section if you wanna keep up to date on this car, it will be using your shader :wink:

Hi art dekko,

I will have a test with this set up tomorrow and see what it’s like, thanks for sharing :wink:

To give this reflection depth, I add a Fresnel node to control the factor of the mixed shader node. At the moment I have it set at 1.0.

That is a very realistic material! But just for clarification: A fresnel of 1.0 means 0% reflection. So the third pair is not contributing to the material!

whoooooooa! I have spent the last two days picking apart nodes, trying to get an accurate paint job for my first car model (Audi R10). After going through several stages of confusion, I finally decided that paint is freakin’ hard. Tried fiddling with the Fresnel all over the place, but it never looked right. Set the project aside with the brain-bookmark: my problem’s not reflection angle or clarity, it’s the paint color itself. We SEE the paint.
Right about the point I started thinking about shrinkwrapping the whole thing and making physical layers, I knew I wasn’t thinking clearly.

Beautiful. This is exactly what I was looking for (of course) and didn’t know how to say.

Boy have I scratched my head over the Fresnel discussions. Leave that poor light alone! Thanks so much for posting this.

I like how simple is that. And that it still works in 2.8

did you try with a principle shader
with lot’s of glossy should give something nice and quick

but depends if you need some flakes

there is a thread on that done 3 years ago
let me know I can find it - if not loss

happy cl

How you observe the underlying paint is affected by the thickness of the topcoat. A thick topcoat will darken the underlying paint at glancing angles. It’s not about increasing the fresnel, but actually darken the underlying. Also, I believe this topcoat will pick up some of the underlying colour after bouncing around in there in total internal reflections if it ever bounces out again.

Any flakes should be mixed in with the underlying layer. Any highlight broadening due to diffraction effects will require more than one glossy node.

the starting post is almost 7 years old.

if you want to make a simple reflection amount to your Fresnel setup.then simply drop a math multiply node,between Fresnel and Mix shader.

with a multiply of 1 you get the original amount from the Fresnel,with 0.5 the half value.with 0.1 10% and so on.

or make a custom Fresnel,with a layer weight node into a RGB curve node.and setup your own Fresnel curve in the RGB curve node.

there are more methods like costum Fresnel falloff math,but i think this should work as a starting point.

btw the Fresnel value from the starter post is lower than water with 1.1xx.usally a carpaint has some polyurethane clear coat or similar,which is a kind of plastic.mostly with a IOR around 1.5
it depents ofcourse of the paint manufacture ect.i have read in some papers from Mercedes Benz,a few months ago,they a using clear coat from around 1.6 to 2.0 depending what underlaying paint is used,to get the best optical appearence,especialy with effect coating in combination.

for interesting read