Hi,
I was wondering if anyone knows if a chart exists outlining the specular cosine values which accurately represent the tightness of the specular highlight for different materials.
Basically I would like to know what grey scale values for my gloss/specular cosine map.
I am trying to represent plastic, paper, cast iron, painted metal etc in one shader.
Obviously I can play around with the values until the material look realistic in the view port, however it would be good to obtain ball park values, at least just as a starting point, then tweak based on weathering etc.
Let me know your thoughts.
Thanks
Replies
Check around 8:42
https://www.youtube.com/watch?v=LNwMJeWFr0U
Really nice video. Thanks for the share.
So from what I can gather it is saying is that we ditch our spec map and replace it with a reflection map. I'm assuming this is because if something doesn't reflect any light at all then it shouldn't have any kind of specular highlight (no matter how tight or wide).
Is this how you intemperate it?
I would still be keen to know if anyone knows of a chart with a list of different materials gloss/roughness values.
If not I guess I'll have to just use my eyes ;-)
Thanks again for your time
http://seblagarde.wordpress.com/2011/08/17/feeding-a-physical-based-lighting-mode/
The reason that Spec is replaced with a reflectivity map is because, in reality, there is no such thing as specular or diffuse, there is only two types of reflections, specular and diffuse...
http://blog.selfshadow.com/publications/s2013-shading-course/
http://blog.selfshadow.com/publications/s2012-shading-course/
http://interplayoflight.wordpress.com/2013/12/30/readings-on-physically-based-rendering/
It's basically a one-stop shop for all things PBR-related, including pretty much all of the links posted above.
Keep in mind that a ton of it is very technical and math-heavy, but just about everything in there has some useable information for artists.
Is it a relatively new technique?
I'm not sure if you mean roughness or specular values in your OP. It seems like you're talking about roughness/glossiness though. And in that case materials hardly have a definitive roughness value. Every material (aluminum, plastic etc...) have endless roughness variations. Think about how rough a surface can be in real world. A plastic ball can be perfectly new or old, brushed and scratched. Roughness/Glossiness is one of the maps that we as artists get to be most creative with.
But if you'r talking about relectance(specular) values then, yeah, most of them are somewhat mesurable. Most dielectric(non-metals) have their facing angle reflectance at 0.04(linear space), metals start at around 0.6 and the specific values can be found following the links the folks have posted above.
I also have a free next gen asset up that you're very free to download, play around, reverse engineer,etc...HERE. I'm also supplying source materials so you're more then welcome to take a stab at texturing it on your own
I hope this helps
JordanN here's some info on the history of IBL and PBR:
http://renderwonk.com/publications/s2010-shading-course/snow/sigg2010_physhadcourse_ILM.pdf
Escpeially in the world of real-time CG they are quite novel concepts. There's only a handful of games released running with PBR so not enough people have experience with it to be able to share some.
There is some really good stuff here.
d1ver,
Yes I did mean roughness. I totally appreciate that roughness values can change depending on if the object is old or new.
I was hoping for a value based on it's pristine condition then I could overlay some variation based on the weathering.
jordanW,
Thanks for the chart.
Really helpful!
May be a silly question but should I add any ambient occlusion to the roughness/gloss map?
Thanks everyone!
d1ver,
Thanks for the share on you next gen weapon. Really nice.
No, roughness is purely a function of how rough or smooth the surface is. I always suggest not putting pure AO in any texture in a modern engine. Its fine to use AO as a base for color shifts, dirt painting etc... but most engines are already calculating AO at multiple frequencies: Large Scale AO with lightmaps or some sparse method, SSAO that usually uses depth and normals.
I would slightly disagree with that. Yes in case of a new-ish factory produced asset roughness will probably be uniform. But if you are doing a worn asset it's quite logical to assume that it's not going to be brushed by everyday use where AO is. So you can add inverted AO to your roughness to mimic that. Yes you wanna be careful, but it's more of an artistic choice and each outcome is going to be a realistically plausible scenario.
In my experience so far roughness is a great map to show some unique wear when you're producing it for a unique asset and not a tileable layer.
agitat3d, anytime man.
If you are using Glossiness in your project then multiplying it by AO is the same thing as adding inverted AO to roughness. You might not want to go 100% opacity on that multiplication but it still could be a valid artistic choice.
Yes that was basically what I was asking. Thinking about it now I can see why it wouldn't make sense to use wholesale AO in your gloss map.
I guess if we were doing things totally realistic we wouldn't have AO in any of our maps.
Thanks again
When you multiply AO on your diffuse and spec, what you're doing is removing light even from direct light sources and reflections, which is just incorrect. Large scale AO should mask ambient diffuse light and nothing else. If you plug an AO map in as a separate texture it can be used much more intelligently.
If you want to mask reflections, a reflection occlusion mask is a better choice, and a solution like screen-space reflections is much better yet. AO does not mask specular reflections in reality, reflections simply reflect other objects near them, though traditionally this has been too expensive to do, so we usually add AO to the spec to cut down on inappropriate cubemap reflections (ie: the sky reflecting on an inside check of a mesh which the sky wouldn't logically hit).
As far as multiplying AO on gloss straight up, again this just doesn't make any sense. Using AO as a base to generate masks for material layers like dust or dirt is a great idea, but you really need to think of it in those terms. You're creating a layer of an entirely different material, actually defining that material, dust for instance, not just throwing an AO map onto the gloss as an artistic choice. I think its really important to be clear about this concept.
From a previous post:
Yes in case of a new-ish factory produced asset, roughness will probably be uniform. But if you are doing a worn asset it's quite logical to assume that it's not going to be brushed by everyday use where AO is. So you can add inverted AO to your roughness to mimic that.Yes you wanna be careful, but it's more of an artistic choice and each outcome is going to be a realistically plausible scenario.
Roughness can and should be used to describe wear. Not everything has to be a new material layer and not all materials are uniform across an object. A single material type can have varying roughness on different parts of the object depending on wear. If something is extensivly brushed in everyday use then the least brushed parts are going to be where AO is.
Definitely not saying it's a must for every asset, just saying that it's plausible.
Gloss/roughness definitely should be used to describe wear, materials of varying ages with have a very wide range of difference microsurface values, and a signle surface on a texture could have a lot of contrast and variation as well. I think we all understand that.
However, again I think its really important to think about the material you are trying to represent, rather than just throwing AO over the entire gloss map. Different materials age differently, different materials will pick up dust, oxidize, stain, etc at different rates and often with totally different effects. AO on gloss is not a universal solution, I want that to be perfectly clear. This sort of thing is really easy to spiral into the miss-information category if repeated enough.
Again, AO can be a great source (along with various other sources, like convexity/concavity masks, object space normals, etc) for generating initial masks for various effects, like dust or dirt that would naturally be rougher than freshly polished metal or glossy plastic. AO can be used as a starting point for a lot of things, however, AO multiplied on your gloss texture without any further thought is a bad idea.
Exactly like "never put AO in your textures". My point is the same as yours: "think about the material you're trying to represent" and be fully informed of your options.
With further thought however it is a valid option because:
Yep, ok cool, looks like we're mostly arguing semantics then.