How would you use specular maps now based on what he said?

You can’t get there 100%, because you need the default building blocks which cannot simulate disneydiffuse and rough fresnel (that matches principled), and principled can’t use colored glossy. Ignoring these limitations, you’ll get close enough. Can get a bit messy if you try to account for several implementations, depending on how you do it I guess. I tend to always try to reduce things to multiple uses of same nodes, and I tend to regret it :slight_smile:

have a look on this tut for PBR maps

happy bl

hm, the PBR guide looks straightforward.would be interesting to see, how chocofur has build his arroway texture setup.
i have made some quick test,with a trichromatic prinicipled shader build.the results looking the same,except for full back color.

here the testpattern i found in the net.
base color and metallic for metallic setup
diffuse and specular for specular setup

my first test with 0.9

Interesting read - I start realizing why so many people talk about specular vs pbr and what not to do. It has more to do with the render engine (games) than really the system. I just use rendering to produce images and not for games or other engines.

With pbr you can use a mask for specular of you want to define the what has reflection and what not like a sticker is very reflective while the rest of the body a sheet of paper is less specular. But obviously this only makes sense when also the roughness can be used for each part.

If roughness is different then it is better to mix two shaders.

The principled shader is just an easier to use node than always having to craft your own node network for various materials.

I have build a specular shader group,with rgb specular input.the reflection result is a RGB Fresnel aproxximation, and you can connect every shader you want underneath.

example 2,orange specular reflection and white diffuse sub layer

arroway texture tests

note to my self,non color data for spec/reflect/glossy and bump maps

seems to work

Download the mega link for a sample.!hAdXTIoL!xIzOxIbL4goKG4aAGNGUNQ

Tomorrow, if you are interested, I will create a version directly applicable to the specular map. I have to convert it from octane render, which is the engine I usually use.

have downloaded and rendered your helmet,looks great.nice idea to convert specular back to IOR.

edit,inspired by noldos post,i builded a F0 specular map to principled specular converter.
here first testrender

It has to do what kind of texture assets you have. If you’re creating your own textures for Cycles use, there is no reason to output the textures for specular workflow. Metalness workflow (Principled shader) handles energy conservation (albeit “buggy”) for you no matter what you plug into it. Specular workflow (unsupported by Cycles, but Eevee has a node for it) does not do this automatically, and you can easily break energy conservation (white diffuse + white specular = 2*white, not good). Textures output for specular workflow will do so with this accounted for.

Nothing stops you from creating a library with fake user set, link it into your startup file and saving the startup. You can add a shortcut to the library node groups if you want to link them into a previous project. You can make your own shading building blocks and layer them together. Examples could be:

  • Glass.Simple (for thin architectural glass, transparency or refraction based with incoming trick).
  • Glass.Advanced (same as above but with real IOR, no incoming trick).
  • Absorption.Thin Term Mixer (diffuse/translucency + transparency/refraction using incoming trick).
  • Absorption.Thick Term Mixer (diffuse/sss + transparency/refraction not using incoming trick).
  • Glossy.Simple (basic fresnel for when roughness is very low).
  • Glossy.PBR (fresnel that accounts for roughness).
  • Glossy.Advanced (same as PBR but with face angle tint).
  • Glossy.AdvancedTopcoat (basic fresnel, but with darkening of incoming shader).
  • Glossy.Anisotropic.
  • Fuzz (A chain to mix in Velvet shader, I would do the tint options on this one).
  • Shadow Handling (how to handle shadows where refraction is used, or help out/fake other terms).
  • Transparent Backface (makes backfacing faces transparent).
  • GI Color Bleed Control.
    With these, you just chain the shaders one into the other depending on what effect you want. Want fabric? Absorption Term into Fuzz, done. Too much color bleed issues? Add GI Color Bleed Control. Want a metal? Glossy.PBR or Glossy.Anisotropic - done. Want a translucent leaf? Absorption.Thin Term Mixer into PBR.Glossy - done, possibly with added Shadow Handling if desired.

Shader setups isn’t really that hard to setup and setup correctly. But it could be better if fresnel node had roughness input and a thin switch. Even if that rids us from certain aspects of the Principled shader I don’t think many cares about in the first place.


this is (if I have not made any mistakes) the formula for directly connecting the specular map (gamma 2.2, not linearized) to the specular PBR blender node (x is the grayscale value).
I don’t know blender very well, but as soon as I have time I will try to create an arithmetic node to convert it.

I added the new version to the link. (noldo2.blend)

thanks for posting your formula.

i have made a simple converting node group,the formulas for this are…

F0 reflection to IOR


then IOR to principled shader specular

i have posted a rendertest allready some postings above,have checked the F0 to n (IOR) formula with a calculator and its works.

if the spec/reflection map contains F0 reflection data, then the conversation result must be correct.
the only point is that in the texture node,we have to select non-color data for colorspace,since these are only datas that dont need a gamma applyed.

finaly the nodegroup

So what is your guys thought about ?

with metalness shading it seems a lot of the texture hacks that have to be done for specular workflows are not needed anymore.

is then an app like useful when you want to work more with metalness PBR and cannot be belnders build in paint module be sufficient?

I thought this needed some complex number to solve it !
which is hard to do with nodes !

happy bl

Sorry I am lost :wink:

talking about the formula for IOR function of F0

happy bl

it is not that hard to build a formula with complex numbers,even more if you know the formula you want to build.

the formula i used is mainly for dielectric materials.and for the F0 maps this is mostly over 90% the no need for a complex formula.i have double checked the formula(with the well known dielectric fresnel to f0 and back to IOR with the formula)it just works.the rest is from the blender docs,to convert IOR to principled specular.
If you want to make a black detection,that uses some engines in the spec map,for metalness.then this could be easely done additional to this converting nodes.for example with a less /greater than node,if its black then it switch from 0 to 1,this output could be conncted to the metalness input,very easy.

edit,have it done quickly,here it is.if the map contains black (0,0,0)then it switch to 1,the metallic output,should be conncted to the …metallic input.

1 Like

there was another tread about this IOR and PBR

I got a list of IOR and mat for a script if needed
let me know

also another thread using N K values for making PBR materials

happy bl

i am not sure, that this formula in the link, gives the expected value.

as example

you have the IOR of water thats 1.333
to get the F0 reflection of the Water you need this formula…

if you insert 1.333 for water into the formula the result is 0.0200168 at F0 reflection

now calculate IOR back
1 +sqrt (F0) / 1 -sqrt(F0)

the result is 1.333