Hi, thought I'd drop a couple of good tutorials on PROPER normal map creation.
No kids, don't throw everything you got into CrazyBump or NormalMap-Online. Take some time to do PROPER normal maps and perhaps your visuals won't end up looking like asset flips.
http://www.opengl-tutorial.org/assets/i ... iniTut.jpg (save this image in case it goes offline)
https://www.katsbits.com/tutorials/text ... images.phpNow if you read the second tutorial, under the comments section, someone said it's possible to "generate" results with high-passing and what-not. That's cool too. Personally, I would recommend a workflow of first hand-painting your heightmaps and then converting that to a normal map to describe the huge cavities of the texture, and then using a generated (from diffuse) image to layer on top for micro detail (things like tiny bumps, surface irregularities etc). You'd typically paste the generated version on a separate layer and use the eraser tool to take out any parts that would collide with the main cavities from the hand-painted version.
BUT WAIT! Combining normal maps might not be as straight forward as you think it is. There's actually a trick to it. If you try to Google this stuff, there's a looooot of posts talking about maths and things like that, however I found the best way to do it that is the simplest and doesn't require math:
There's a pretty easy and completely correct (from mathematical point of view) method to combine two normal maps in PS.
Say, layer A is basic NM, layer B is detail NM. So to put detail from B over A you have to do the following steps:
1. Clone layer B - B2
2. Go to blue channel of B2 and fill it with neutral gray.
3. Set B2 layer blending to Overlay
4. Select original B and set it to Multiply blending mode.
5. Select red and green channels of B and fill them with pure white.
6. Put B and B2 into the new group, use group mask and opacity to adjust blending.
7 (Optional). If your target engine doesn't perform runtime NM normalization - you have to do in manually using for example Xnromal's plugin.
But actually everything always works fine even without normalization.
I have not covered best practices for generating specular maps yet. I'm still experimenting with this to find the best way. But you usually can get good results by taking a greyscale version of your diffuse and playing with the levels. I'll update this post once I've found a good specularity workflow.
Lastly, I intentionally haven't covered anything about PBR because the implementation in GZDoom is still incomplete (no reflection probes).