I’m new to Cycles and and no expert in light theory, so I might be using the wrong terminology here and there and my understanding of things is almost certainly incomplete, but with that in mind I have question that’s about half light theory and half Cycles.
Using the gloss shader and its roughness attribute I’m unable to create speculars as sharp/narrow as exist on many materials in reality no matter which roughness model I use or how low I set the value. Something I’ve noticed both in reality and in Cycles is that the parallel rays of the sun produce wider speculars than the non-parallel rays of a lamp. Still, real sunlight can produce much sharper speculars than what I can achieve in Cycles, in materials like metals or even the Earth’s oceans seen from space.
Now, there are probably ways I could cheat to get sharper speculars, but unless that’s necessary I’d rather not do it. I’d like to get a realistic result without messing with the shader model in unrealistic ways. I’m wondering if there’s some other material parameter I should be using that would affect this?
I’ve attached a couple of examples: the narrowest specular I can achieve in Cycles, and an example of a real material I’m unable to replicate. Both are under roughly head on sunlight.
Good attitude! In this case you don’t need to cheat, you can simply adjust the size and the strength of your light source to achieve sharper specularity (and sharper shadows):
Jep, there are two material parameters that can influence the specularity of an object:
Fresnel (this is what you searched for)
Add a Fresnel node (Add/Input/Fresnel) and connect it with the roughness input. Play around with the IOR value (values greater and near 1 will result in a sharp specularity falloff)
Normals
With the normal input you can - for example - create reflecting bumps in your surface without adding them to your model. As a simple test-setup add a noise texture and plug the color output into the normal input.
Ha! It’s indeed the size of the lamp. Thanks for pointing that out. I had assumed this wouldn’t be an issue with a sun lamp since I assumed it would, well, approximate the sun. That assumption was very wrong.
As far as I can reason, for a sun lamp its size is its angular size - as it’s located outside the scene and is essentially always the same size as it doesn’t have a location as such. I found an old thread over at CGTalk about this. (I can’t link things yet, google “A Physically Accurate Sun Size in Blender Cycles” if you’re curious) It turns out the default sun size is about 300 times too big!
So, the material or shader is not inaccurate - I’m sure you would actually get very wide speculars if the sun in the sky was 300 times the diameter it is - but it doesn’t approximate our Sun at Earth distance at all.
For comparison, here’s a render with an accurate sun size. Two smooth-surfaced object in approximately head on sunlight, in Cycles and in reality. It looks rather correct now.
The reflections are affected by the lights in your scene, the material settings of the object and the details of the object’s geometry (crevices, gaps, beveled edges).
For the lighting you can use hdr maps for better reflections, also you can use area lights or mesh lights with emission material.There is also an addon that can help you light your models: https://github.com/leomoon-studios/blender-light-studio
In the material settings you can used a low roughness value like 0,001 (GGX is more physically correct, Beckmann produces sharper reflections, Ashikhmin-Shirley is something inbetween the previous two and Sharp has zero roughness). You can also use a bump or normal map for more detail and the reflections to appear on.
Don’t forget to put enough samples in the render settings/sampling tab.
Here is an example file with a sun light: specular.blend (647 KB)