Learning resources for intermediate material usage

So, alright, I understand the basics of PBR in theory after going through Epic’s excellent youtube Material tutorials and starting to pour over the documentation. That having been said, I’m finding that there’s a gigantic gap between my understanding of how PBR and materials work, and how I see people with actual art and technical art backgrounds using them.

Take roughness, as an example: my instinctive approach is to plug a simple float in, vary its value, recompile the material to see what changed, and continue until I’ve gotten it looking roughly the way I would like. However, the other day I read someone casually comment that if you lerp the roughness between two values based on the texture you end up with a roughness that matches the texture underneath it. This looks tremendously better, makes perfect sense, and I would have never thought of this while experimenting on my own.

There must be some domain of knowledge that I’m missing, since trying to work out what even simple mats, like the ones in the Infinity Blade content are doing, utterly confuses me, but I’m genuinely unsure where I should be looking for more background. So is there anywhere I can go that bridges the gap between “Here is how PBR works,” and “Here is a forest of brilliant but cryptic math”?

Roughness is where you want most of the detail on a texture, a float or plain texture isn’t going to work for anything but a perfect untouched surface.

The polycount wiki has a lot of great information about PBR and texturing.

For figuring out what a material is doing, make sure you are showing the preview on each step.

That wiki is great, thank you for the recommendation!

There likely isn’t a single exhaustive answer here, but for the specific project I want to learn material/shader design for, we’re going for a very intentionally flat and low-poly style, almost reminiscent of ps2 graphics. We’re ending up with a situation where the textures look pretty great on their own, but simply plunking the texture and its normal on a material and calling it good leads to everything looking unpleasantly flat and dead. We don’t want to go crazy and build complicated materials for each surface type, because detailed PBR + realistic lighting look weird when applied to low-poly models, but plugging the texture directly into the base color node and calling it good (or creating a single scalar value for each PBR node and editing it by hand) is obviously too far in the other direction.

So is there a general approach that we should be looking into here? I’ve been experimenting with making everything a material instance of a single root mat (to simulate the ps2’s kinda everything-is-plastic uniformity), but that hasn’t had good results so I’m thinking of dividing it by the largest possible category (e.g. environment/clothes/skin). Roughness has a lot of effect with minimal instructions, since we can plug the texture’s normal in and just lerp + clamp it, I’m assuming metallic and specular can always be kept to 0 (since realistic metal or glass are immediately and obviously jarring in a low-res world), but that leaves a huge amount of unused tools still available to refine the shader’s look.

That float describes my materials so far perfectly. Do you have a screenshot of how to achieve this trick? :slight_smile:

Sure! This is a screenshot from the master material for tiled floors in the infinity blade grasslands map, which I would highly suggest checking out; the material setups it uses are for the most part pretty simple, it’s one of the few professionally-done maps I’ve found whose logic I can actually follow without consulting references: