So while working on a mat using roughness/metallic and converting for a spec/gloss system I noticed something strange.
By default a 0 metallic value = 59ish specular value. So you've got a range of about 0-59 spec values that you're not able to achieve with metallic. The strange part - at least with my particular material is the acceptable values for organic non-metals - ranging from about 40 - 60ish create a vast difference in the look of the material.
Notice the roughness metallic mat looks kinda pale compared to the richer colors in the spec/gloss
Ideas on why this is, and how to logically achieve comparable results using roughness metallic?
Replies
Now I may easily be wrong on this, but I thought the whole point of the metallic workflow was to sacrifice some of that accuracy you're looking for in order to speed up production times and possibly cut down on the amount of textures required by just giving non-metallics a shared, pre-defined specular value.
When you're slaving away creating a ground texture with the camera zoomed right in, you may notice the slight difference a tiny change in specular makes, but will people who are playing the game notice when their camera is at more of a distance and they're busy doing other things to stop and compare materials? The difference between the two halves of that image aren't glaring to me. If the accuracy is worth the extra work, just switch shaders to one with a spec map, or maybe a metallic shader that has a different spec value for non metallics.
There's been rumblings going around it seems, that a secondary-specular map (I've heard it called a Reflectivity map, just to make this generation's terms more confusing) for your non-metallics is becoming a thing to control the specular value beyond the baseline .5 specular value Metallic PBR-shaders slap onto everything.
If you're using UE4 (or possibly Marmoset 2, I dunno) you could try to input a grayscale specular map to essentially "boost" the roughness map by forcing the shader to return a lower specular value for particularly rough/non-reflective materials.
The baseline in the shader remains at .5, I think, so make that white and go down from there. If you want it to go above .5, I think you need to introduce scalars into your material.
Yea this gens terminology has been so crazy. I get so lost converting maps sometimes. I'm a texture artist at Gametextures.com and our goal is to get all the mats to look similar in all the engines, but at the same time get the best look/quality possible.
I've always worked with roughness metallic rather than spec/gloss, but this go around I decided to try building a spec map instead of the straight convert and noticed a stark difference.
@Der that's a good point. Changing the light didn't fix it necessarily but did make it significantly less obvious.
Still a frustrating predicament but thank you guys so much for the explanation.
So if I understand correctly - spec/gloss is gonna give more control and thus for some mats give you a better looking material. Roughness/metallic is there to speed up the process and use a system that's easier to grasp than having to look up spec values per mat. And unfortunately some systems like UE4 won't have it.
@Der as far as the reflectivity map is this equivalent to UE4's specular channel where you can for a lack of a better word - finagle - the reflectivity?
Here it is with a better light setup for balance.
Yeah, pretty much. Like Der said, engines that use Metalness automatically set specular to the same value across all non-metals, since most non-metals fall within the same range, give or take a few digits. Unreal leaves the Specular node open for variation(although they don't recommend it for most cases) or stylized stuff. If you're doing a single tiling texture or have a texture that uses most of the same real-world materials, you wouldn't have to use a texture either. A simple Constant 1 between 0 and 1 would work too.
Just to clarify on metallic vs specular, is metallic a form of specular or its own thing? Someone told me that metallic is not a type of specular and I just want to clear this up.
it is kinda like a Specular map, yes, even if it has not the same usage.
The metallic map defines metal. White means: Metal, Black means: insulator (non-metal)
The conversion from an insulator to a metallic look is done by the BRDF/Shader.
In the Spec/Gloss workflow you need to define a metallic colour in the specular map, instead of just saying 'This is metallic'.
So the Metallic map and the specular map are not the same but are kinda comparable.
Best Regards
This is the way I'm used to working with PBR:
0 in metallic texture = Use a uniform standardized value to define your reflectivity curve:
1 in metallic texture = Fetch the value to be used to define your reflectivity curve from the Albedo texture.
I.e. If you do define metallic surfaces you also need to tell the surface what kind of metall it is by coloring the same area in the Albedo texture with the "correct" IOR based value. There's lookup charts for this.
The concept of having a reflectance texture sounds a lot like having a separate texture to define the IOR based values instead of storing them in the Albedo as I described above? The same as having a separate "substance" texture which I was used to working with a few years back. Am I right on this?
From what I have played with working in metallic layers, there is much more control in regards to reflective and how dull the texture can be. If you have something like an old car with rust and paint chipping away, the rusted areas of the metal can be made less shiny on the roughness map to make it look like the rust has dulled the surface. Seeing a slightly shiny paint go to a dull metal and then a really dull rust adds more to the overall image believably.
You can input a grayscale specular map into this, and when you do it gives you full access to the 0.08 range, this is important because some materials (gemstones particularly) are above the 0.04 that metalness defaults to for non metals.
As mentioned above, the whole point of the metalness workflow is to simplify things, because over 90% of non-metals in the real world fall into such a similar range that it just makes sense to give them a blanket reflective value. If you really need the increased range, the tools are there, but they're deliberately obscured (in UE4 by just not talking about it even though the input is there) and in Toolbag2 by calling it "Advanced", because unless you know exactly what you're doing, chances are you just don't need it.
It's for "fringe" cases of non-metallics that fall outside of the 0.04 reflectivity range. Some gemstones can go up to 0.16 for example, while skin is 0.028 and water is 0.016, which are both much lower (almost half for skin and below half for water) than the blanket value. The "specular" input in UE4 and Toolbag2's "Advanced Metalness" module both only affect non-metallics.
especially because in theory you don't even need a texture map for the extended range, you could plug a constant in instead if you are into the layered material workflow.