I'm doing this in my game (Splatter
). It actually works really nice, but you need to pay attention to some details. From the top of my head:
- what you're doing there is essentially a Deferred Renderer. Most of what's written in the internet about DRs also applies to this topic.
- Graphics can be both drawn and rendered. I drew quite some graphics, and for me it works best to start with the height map (I use this for shadow casting), then calculate a normal map from it, then paint a diffuse map by selecting different regions based on height and change their colours.
- When rendering graphics, watch out for background colors and semi-transparent pixels. All 3D modelling packages I know, especially 3DSMax, do render out correct alpha channels, but still blend the color with the background color. I actually built an import step to remove these blendings and I suggest you doing the same or else your graphics will end up with white/black/whatever borders
- Also watch out for mip maps - fill all transparent pixels with an appropriate color to prevent color bleeding.
- If you draw rotated sprites, use a special shader to rotate the normals when rendering normal maps.
- If you adhered to all transparent pixel suggestions above, scaling and rotating looks fabulous. Use it.
- Renormalize the normals before using it in your light calculations. It helps with interpolated normals and mipmapping.
- You can get nice special effects by restricting rendering to certain map types. For example, a blood or water splash looks cool if you just render out diffuse and specular, this the splash will use the ground's normal and height. Or the other way around: only paint the diffuse map and you'll get a nice 'predator' effect.