So I recently signed up for GameTextures. It advertises UE4 support, which means (as far as I'm aware) that it supports the metalness workflow. I'm not using UE4, but I AM using the metalness workflow so I figure it must be possible to beat the maps they give into submission for my purposes.
I download a few textures and here's where things get confusing.
I get that most of these you're supposed to just plug in a flat metalness value. But for the ones that give you a "mask" texture, you have to guess what those values are. Guesswork sucks when I'm dealing with, say, dusty metal where I'm not entirely sure what the metalness value for "dust on metal" should be. I shouldn't have to guess - why not just include a metalness map? Would that be so hard? That's not so bad, I suppose, but then I got to this one.
http://gametextures.com/clean-oak-barrel.html
PBR Ready? Yes. Oooh, look at those nice shiny bands.
But then I took a look at the diffuse texture.
The bands which represent the metal are a really dark grey value. Eh? That doesn't look right, not for metalness workflows.
Actually, both of the two supplied images (albedo and diffuse) have this issue. The only difference is that the diffuse image has slightly brighter edges on the metal bands.
The result is that plugged into a metalness PBR shader they look something like rough black plastic, not the shiny metal you see in the preview image. Certainly not what I would expect of a so-called "UE4-ready" texture.
So really, that's my main complaint about the service. The textures you actually get are frequently confusing, and sometimes not even remotely "UE4-ready" like they advertise.
Replies
I will be.
Thankfully, I haven't paid just yet. I'm still within the 14-day trial period.
I'd LOVE to use their service - I really would, because these textures are very high quality - but as it is I'd really like to see them make things less utterly confusing and guesswork-heavy before I would feel comfortable actually paying a subscription.
Except it isn't right, not in a metalness workflow
Because the metalness value is supposed to do that FOR YOU. That is, if metalness is set to 1.0, the reflection map takes its color from your diffuse map, and your materia's albedo is set to zero/black.
If the albedo color is black, and metalness is one, it tries to take reflection color from the diffuse map - but all it gets is a near-black value which reduces the reflectivity of the material and causes it to look more like plastic than metal.
It's a custom-written viewport shader for 3DS Max. But the same concepts and inputs apply.
http://imgur.com/a/o1QuL#0
The first image is where I manually brightened up the metal albedo in Photoshop. The Metalness then picks up the brighter color and the result looks like metal.
The second image is the unmodified source albedo texture. Notice how it looks more like black plastic even though metalness is set to 1 for the metal bands.
Exactly.
I wouldn't normally be upset, but they did specifically say their textures were UE4 compatible which is a bit misleading if some textures only support specular color workflow (which UE4 does not support).
As for his problem, I'll just copy paste the solution to the email he also sent us:
Thanks for the OP's post and I hope he can accept my apologies for our website not being up to snuff. It's not easy creating materials which work with all of the different game engines, and for the particular material we began work on it far before UE4 had even announced that they were moving toward a metalness workflow.
That being said, this material is definitely still very useful inside of UE4, as are all of our materials. Like most things UE4 they do take a bit of set up to make work properly.
So, the biggest differences (as it seems like you are already aware) are that in Metalness workflow a metal material takes its specular color from the base material, and in roughness/ specular workflow the metal takes its color from the specular texture. Both workflows are fine, and have their own merits, but to be sure, they are different. Lucky for us, we include a "mask" file instead of a metalness texture, which is just as useful. Using it you can easily mask between different materials and set up shaders which blend the physically correct specular color back into the base color input, resulting in proper metalness workflow.
Attached is a screenshot of this material setup and working well in UE4. You may use the gloss map if you like, sometimes I Find I have better results in UE4 just by setting up a LERP tree dedicated to having fine control over the different materials of a shader.
Yes, this is not quite a great metalness workflow, but it definitely does work. The mask texture is included with all of our PBR materials and makes setup a breeze. I did this demo in less than two minutes, but then again, I've practiced quite a bit.
The LERP tree is set up to take the color channels of specific materials as alpha, then use the constant 1 and constant 3 nodes as the inputs for those specific element types.
I'm sorry for the trouble, we do have tutorials set up (admittedly, they're not in great places and are kind of outdated, as we're learning this at the same time as well.) Great places to look for them are our FAQ, and our blog - which has a fantastic search feature which can point you in the direction you need to go.
The MASK file IS indeed a greyscale metalness texture, as you requested. It's very simple to use - you pick the color channel which represents the "metal" sections of a texture, and plug that channel directly into the metalness input.
For Gloss maps, sRGB is not needed, so you need to open those up and turn of sRGB (UE4 imports it as sRGB as a default), then invert and plug in to roughness. Like I said above, I tend to prefer just setting up a LERP tree to handle that for me.
I can see why this wouldn't be ideal for you having your own shader having to figure out which materials are metal and which aren't - so I definitely see where you are coming from here. I didn't realize you were trying to do this all in your own shader, which definitely makes things a bit more complicated.
As stated though, our materials DO work in UE4, just like most things in UE they take a little bit of tweaking to make look correct. We're working to fix it, and changes are coming but we have a large library and rolling them out is no small task.
If anyone wants to download the material themselves so they can see, you can grab that right here.
If you're curious what the mask file looks like that I talk about, it's right here:
https://www.dropbox.com/s/daudftdvfa0sovd/Misc_OakbarrelClean_PBR.zip?dl=0
That said, I'd like to suggest including more maps in the future. Even in UE4, working around the different texture types inevitably will involve different shaders for different specific scenarios and more shader instructions. I'd think just the following maps would work perfectly fine for almost every PBR setup:
- 2 Albedo maps (one for metalness, one for specular)
- Roughness map as it already is
- Normal map as it already is
- Specular color map as it already is
- Metalness map
That would satisfy just about every use case already, and would be perfect for people to use textures from the site as good base textures.
EDIT: I hope you know I'm not angry, and there's no sour taste in my mouth The only reason I cancelled the subscription is because I'd prefer to wait until the site better suits my particular needs before becoming a paying subscriber.
I think at this point everybody is scrambling to move to the new PBR workflow, and there's bound to be a ton of confusion and general wierdness in the process.
Well just know we're here to help man, that's my job 24/7 and I take it very, very seriously. If your artist needs anything or needs custom textures, or even needs PSDs or custom masks literally every single "contact us" button on our website goes right to my phone so that I can be there to help ASAP.
Also their custom texture service is pretty much unbeatable as far as I know, they do some great work.
While not perfect by any means, I managed to get a nice proof of concept prototyped in Unity.
It takes a source albedo map and specular map, and attempts to:
1.) Correct the albedo map for metalness by moving specular color into albedo
2.) Determine the contents of the metalness map based on the brightness of the specular map.
There's a bit of fudge factor involved, there's a Remap Range slider which can be used to sort of "fudge" the resulting metalness map, so for instance on the aforementioned oak barrel texture I had to play around with the slider in order to get the wood to be black and the metal bands to be white.
Still, it works well enough I guess.
or perhaps even going from a physically based map to older rendering methods by adjusting the specular value using the roughness map?
Unfortunately it seems it's not quite so simple to go the other way.