Download

PBR: Implications for texture creation?

Hi all,

I realize this is a pretty broad question… I am trying to teach myself texturing, but the material I am relying on is 2-3 years old already, so obviously PBR was not around at the time it was written. Specifically I am currently working on Luke Aeharn’s book that teaches how to create textures from scratch using photoshop. Also looking at some Gnomon training.

I’ve been doing a fair amount of reading on PBR but I can’t figure out if what I am learning right now is obsolete and I should drop it altogether?

Could a kind soul point me in the right direction?

Thank you!

Although the process of creating roughness maps & metallic maps are different to making specular and gloss maps- it still requires the same skills and techniques. I’d say you’re on the right track and it will help you. There aren’t really many PBR tutorials out there.

Diffuse should be exactly the same - as should normal maps.

The roughness is just greyscale - defining how rough it is (white is actually more rough, meaning less shiny) - almost an inverted B&W specular.

The metallic texture basically changes how the light hits the model. Black: not metal, white: metal.

without PBR - normally you’d need to tweak a specular and add colour, as well as using a gloss map, to ensure the object looks metallic.

I actually think PBR materials are easier to create.

No this will end up in tears …

Main difference is as far as I am concerned is that your diffuse/albedo map shouldn’t contain ambient occlusion (you should infact make a seperate gray scale AO map).

Almost right but there allot more range between full rough and mirrorlike roughness so it takes quite extensive testing to get your materials right, luckily in UE4 you can adjust this on the fly to test out values.

After a few months of playing with PBR I also prefer the workflow it seems allot more natural to me.

This. There must be no shadow information in the textures. Watch this for some tips on PBR texture creation(it’s not Substance specific) http://www.youtube.com/watch?v=LP7HgIMv4Qo

Thank you both!

Good news I guess :slight_smile:

Ghiest, when you say no more AO in the diffuse map, you mean you don’t bake it in anymore I suppose…? I usually store my AO map on the alpha channel and plug it both in roughness and ambient occlusion. Something tells me I’m doing it wrong, reading your answers :confused:

Wow, thanks a lot, I am going to devour this :slight_smile:

PBR workflow

Hi, I believe this is what you’re looking for.
I find this articles invaluable from an artist’s point of view.

https://www.fxguide.com/featured/game-environments-parta-remember-me-rendering/
https://www.fxguide.com/featured/game-environments-partb/
https://www.fxguide.com/featured/game-environments-partc/

The guys from Dontnod clearly know what ther’re talking about, seeing that Remember me was one of the prettiest UE3 games to date on the oldest generation, and customized the engine themselves to render sort of a UE3.5

BTW this is the normal workflow for authoring 3d assets in a traditional vfx linear gamma space pipeline, so it has a lot of uses!

Max

Some General Rules

DIFFUSE
Diffuse (albedo) should be gamma corrected at the source. Usually photographic sources come in PS with a gamma of 2.2, this should be linearized either with a gamma operation of 0.454545454545 or using a dynamic network inside UE’s mat editor. Contrast should be balanced if not a bit washy, saturation should be kept low if you’re going for realism. if you use photographic sources you need to remove shadow details and specular details. If you go out and shoot use a polarizer to get rid of the specular part. Sometimes you can bake microdetails using a very thin AO map. I believe this could be done with the AO input in the mat though, so no need to bake.
recap: GAMMA SHOULD BE LINEARIZED, LITTLE CONTRAST, LITTLE SATURATION, NO SPECULAR, NO SHADOW, NO AO

SPECULAR
Specular should be just intensity values. for different parts of the same material you can paint a RGB map (or a RGBCYM map or anything that you can use) and assign different values to the materials. SPEC is only intensity! you should think about this as a multiplier instead of a detailed map. The master material inside SciFiHallway does this very well.
recap: SPEC SHOULD BE CONSTANT VALUES PER TYPE OF MATERIAL, USE AS A POW MULTIPLIER ONLY

ROUGHNESS
This is where you add details to your speculars. white means blurred (rough) black means sharp (glossy). The magic of spec detail is all here, use this map well. Be careful of GAMMA though, as i don’t know if the roughness input compensates for gamma corrected space.
recap: SPEC DETAIL GALORE. IF HAVING ROUGH TRANSITIONS FROM GLOSS TO ROUGH PLEASE LINEARIZE

NORMAL
Same stuff as before guys!

Thanks a ton, Max! This forum/community is incredibly helpful and patient, even with total noobs like me :slight_smile:

Here are all the good links I could find on PBR (I’m interested in this myself, but not an artist, so I’ve been trying to figure out how I can convert textures to PBR with minimal art skills).

http://artisaverb.info/PBR.html

http://interplayoflight.wordpress.com/2013/12/30/readings-on-physically-based-rendering/ <------ This one links to tons more material

Thank you! I have reading material for the next week or so.

No problem :slight_smile:

If anyone has examples of PBR used for natural/outdoor/forest scenes, I’d love to see that as well, because typically most scenes that use it are only in industrial or residential style settings, where the vast bulk of the materials are manufactured, rather than organic, surfaces.

Yeah, I was wondering the same thing actually. Since it’s all abut light and reflection, how does this apply to leaves, tree bark, etc.

I poked around a bit and I noticed gametextures.com has 150+ PBR-ready mats in their natural section, I am going to dissect some of those.

I grabbed some for the trial and I don’t seem to see anything terribly special about what they’re doing in the textures. That said I haven’t had a chance to really test how all of them look.

Also, quick question: If I’m using Lightmass, and have a material with everything set up right, do I need to do anything else for it to work PBR style?

Yeah, I tested some of their stuff in UE4 and I am sorely disappointed. In particular, their using a specular map seems to contradict the general rule explained by max in this thread, and even to a layman person’s eyes (myself), the result seems really subpar.

Either I am not doing it correctly or their product are not suited to UE4 despite the big “YES! Our textures work with UE4” on their homepage.

Also I am confused by some of the things they’re saying in their latest UE4 tutorial (how to set up a metal mat in UE4) where they say UE4 deals with Albeido maps in a different way compared to CryEngine or Unity. What did he mean by that? If I look at diffuse maps for UE4 starter pack material (which really are Albeido maps, right…?), it looks comparable to examples of Albeido maps I have seens in the reference material pointed out in this thread, except maybe a bit less desaturated… Aren’t they overdoing it?

Look at this for instance:

4d22293cb630016b2646861d85f6600e432512fa.jpeg

Yeah, I tested some of their stuff in UE4 and I am sorely disappointed. In particular, their using a specular map seems to contradict the general rule explained by max in this thread, and even to a layman person’s eyes (myself), the result seems really subpar.

Either I am not doing it correctly or their product are not suited to UE4 despite the big “YES! Our textures work with UE4” on their homepage.

Also I am confused by some of the things they’re saying in their latest UE4 tutorial (how to set up a metal mat in UE4) where they say UE4 deals with Albeido maps in a different way compared to CryEngine or Unity. What did he mean by that? If I look at diffuse maps for UE4 starter pack material (which really are Albeido maps, right…?), it looks comparable to examples of Albeido maps I have seens in the reference material pointed out in this thread, except maybe a bit less desaturated… Aren’t they overdoing it?

Look at this for instance:

4d22293cb630016b2646861d85f6600e432512fa.jpeg

Edit: I guess I found my answer for the specular map…

Says A. Maximo (artisaverb.info)

“if your asset is made completely out of dielectrics, which happens often enough, you don’t need a specular/metallic map altogether and can go by with just a float value instead of map.”

Well personally I have always made diffuse textures with no shadow or specular information. Just good practice. With PBR it’s just more important.

I’m aware of the values between black and white for roughness, of course. I felt my post was clear (maybe not) - I agree with roughness being one of the more difficult - I advise you paint roughness in an application in which you can see the results in realtime (Substance Painter or Substance Designer) unless using a flat roughness, which can be fine for many things.

if using a roughness map, remember to turn off SRGB

PBR is great tech, and I was pretty lost at first too, but it definitely feels more natural

Alright, so after reading through pages and pages for most of the night (seriously, I was up until 5AM, that’s how captivating and complex the topic is atm), I am now more confused than ever with regard to UE4’s seemingly unique take on PBR. Let me explain, or try to.

First off there’s a pretty intense thread going on right now at Polycount where very knowleadgeable people (including Joe Wilson) are discussing the in and outs of the system, and there’s a lot of disagreeing going on, with some seemingly very experienced artists labelling some of what A. Maximo says in his tutorials as fairly innacurate or downright wrong. It has lots of very interesting inputs, and it’s a good read.

The topic was specifically created because someone is compiling a massive document on PBR and was seeking input from experts.

Now to what is really confusing me specifically regarding UE4, and I’d appreciate an answer from someone at Epic on this, is this: so now I understand enough on the topic to know there are basically two different workflows, metalness or specular

Quote from A. Maximo (everyone agrees on this, from what I can see):

*Specular/Metallic

Natural evolution of real-time graphics finally brought us to a point where specular highlight approximation system that we used to have is no longer necessary. We have reflections now. First of all you have to remember that specularity/reflectivity you define in PBR engines is at facing angles only. Everything has Fresnel reflections now so your surface’s reflectivity is going to increase the more grazing the viewing angle becomes relative to the surface normal. If you have any questions about this part please refer to me PBR theory video. Now depending on your engine there are 2 ways things can go with specularity:

    • You still go with the specular texture. Most of your dielectrics on this texture will be confined to a the range of [0,04 to 0,08] and your metals are going to be starting somewhere around 0.6. For most of the metals you will also be using carefully measured values provided by your technical artist( or the internet! ) thanks dontnod - You will either have to manually keep track of energy conservation between your Albedo and Specular: A + S <= Amount of Incoming Light, or your programmers will have to hook something up for you to “renormalize” the lighting energy in your textures.
  • You might have to multiply your specular texture by your AO depending on how good your screen-space AO and self reflection is. Right now more often than not reflections are calculated with “light probes” that don’t provide enough fidelity for self masking and self reflection, so you end up with shiny recesses all around your model. And this is something you have to compensate for with your AO.
    • You ditch the Specular texture and go with Metallic texture instead. Metallic is as straightforward as it sounds: objects made out of metal are generally white on this texture and dielectric are black. Grey values would usually be reserved for transition between layered materials like say dirty metal. I personally like this set-up ‘cause it is very straightforward and leaves little room for ever. One this you have to remember(if you’re making a realistic game) is to never fudge the Metallic values just because you think it’s going to look cool. It usually doesn’t. If the material is not a metal - paint it black. You’ll have plenty of other maps to be creative with. Also if your asset is made completely out of dielectrics, which happens often enough, you don’t need a specular/metallic map altogether and can go by with just a float value instead of map. And finally don’t forget that the more metallic your surface gets the closer to black your albedo contribution becomes. For explanation please refer to my “theory behind PBR” video.

Whatever situation you end up in regarding specular/metallic please remember that no high or mid frequency details is supposed to be in these textures. You only define the types of materials present in your surface with almost flat values and all the major mid to small variation is going to happen in the Roughness Map. *

The issue is UE4 doesn’t seem to follow either. From UE4 documentation I dig up the following:

*Metallic

The Metallic input literally controls how “metal-like” your surface will be. Nonmetals have Metallic values of 0, metals have Metallic values of 1. For pure surfaces, such as pure metal, pure stone, pure plastic, etc. this value will be 0 or 1, not anything in between. When creating hybrid surfaces like corroded, dusty, or rusty metals, you may find that you need some value between 0 and 1.*

So obviously, no metalness map should be plugged in there, which excludes the metalness workflow.

And then regarding Specular:

*Specular

The Specular input should not be connected and left as it’s default value of 0.5 for most cases.

It is value between 0 and 1 and is used to scale the current amount of specularity on non-metallic surfaces. It has no effect on metals.*

And then it proceeds to explain that this is actually where you would plug your cavity map for dielectrics if you had one, which excludes the specular workflow (and simultaneously showed me that gametextures.com way of doing it is completely wrong, I’m going to contact them on this).

Soooo, what is this third workflow we’re supposed to use in UE4? What am I missing here? Could please someone englighten me?

Hi all,

let me try to shed some light on this, as everyone should know a bit about CG in general before trying to understand PBR:

First of all, THE SPECULAR TERM DOESN’T EXIST IN REALITY.
Specular was just a hack to let CG imagery render with view dependent light source reflections.
In the real world all the shiny stuff that you can see is REFLECTION. Hence the drive in CG to raytrace, since it’s an elegant solution to the problem.

Now, materials are roughly divided in two branches: DIELECTRIC (plastic, glass, cement and so on) and NON-DIELECTRIC (METALLIC and other conductors in general).
Why is that? because of phyisics surfaces behave differently to light based on their insulation power.

In addidtion to that, reflection are always view-angle dependent. This is described by the Fresnel equation. Even metals have a fresnel index, it’s just that it’s somewhat flatter.

So why metals are coloured that way?
long answer is this: http://physics.stackexchange.com/questions/72368/why-are-most-metals-gray-silver
Since i doubt that quantum physics is really what we’re after here’s the short answer:
Metals reflect almost all light because they require more energy than visible light carry to absorbe it. Since it’s wavelenght we’re talking here some metals are reddish (bronze, copper) because they can absorbe the more powerful end of the spectrum (blue).

What does this mean for us? As a rule of thumb, dielectric materials have always a color, depend on their light absorption power. some of that gets reflected as a whole (creating reflections), and the reflection direction depends on how smooth the surface is.
So, dielectric materials have a diffuse (albedo) colour, and a reflection based on a correct fresnel value (depending on the type of surface). The roughness in this case is how coarse the surface is, hence burred reflections (dry wood, concrete and so on).
Non dielectric have only reflection and roughness. the only thing we have to approximate is how to tint the reflections.

This is an example workflow:

DIELECTRIC:
Diffuse (albedo): no shadow, no AO (only microAO if you need it, but it’s usually best to multiply that in the spec channel or use the AO input provided), colour needs to be as phisically correct as possible (refer to the dontnod article i pasted earlier to see some values).
Metalness: ******* 0!
Spec (reflection): any value that works with your albedo. Remember the law of energy conservation here Albedo and Specular: A + S <= Amount of Incoming Light (Maximo is right here). Multiply your micro AO to get rid of unwanted reflections as needed. Be careful with this as it’s a hack only meant for reducing artifacts.
Roughness (glossiness): depending on the surface, the more coarse the more you paint it white. This is where you detail everything, as it is tied to reflection (and reflection is everywhere!)

NON-DIELECTRIC 01:
Diffuse (albedo): use this to tint the specular (reflection) term.
Metalness: depends but HIGH (1 for most cases)!
Spec (reflection): not really needed!
Roughness (glossiness): depending on the surface, the more coarse the more you paint it white. This is where you detail everything, as it is tied to reflection (and reflection is everywhere!)

Now, you cannot have perfect control over your fresnel, since it’s approximated by the microfacet BRDF in the shader, but you can emulate that with a careful use of metalness-diffuse-specular. Glossiness is there for variation and just shows how blurry is the reflection.

This is another pretty good tutorial:
http://www.marmoset.co/toolbag/learn/pbr-practice
Notice how it tells you not to use the microAO on the specular. It’s just a hack so they’re right, but it also depends on your settings. If you export to mobile you won’t have SSR so this becomes a good way to remove artifacts.