Bump mapping

What do you think about this?
http://vcg.iei.pi.cnr.it/bumpmapping.html#light

I know there are several bump mapping techniques but i never heard of something like that. It seems to be a very easy way to get single pass bump mapping with specular lighting without and “non standard” opengl extensions!?

That sure looks interesting, but I think there are a couple of problems.

The specular is just precalculated into the palette without considering view direction on a per-pixel basis, so it can’t provide correct hilight, altough like the pictures show, it may sometimes look ok. It doesn’t allow for texture tiling either, so you won’t be using this on the enviroment.

And for the characters, well, doesn’t look like this technique can deal with animation, cause after deforming the mesh two normals that share the same palette entry may point in very different directions.

On the other hand, for a static objects like cars or planes this looks quite perfect, you can get complex materials with multiple lights in one pass even with old hardware.

-Ilkka

as far as i understand it, the normals in the normal map of all surfaces have to be in the same coordinate system, so they can share the same index table. this means that for large scenes, you need very large amounts of normal maps, maybe simply too much.

If you use no normal maps (interpolated normals), you can get (diffuse + ambient) * colorMap in one pass, per-pixel, on two-texture hardware, using GL_NORMAL_MAP texgen mode and using the texture coordinate matrix to orient the light to the model. You then add in (specular * lightColor) * specularMap in the second pass, using GL_REFLECTION_MAP.

If you use object-space normal maps, you can still do it for diffuse, but there are no dependent reads on two-texture hardware, so there’s really no way to get normal-mapped specular highlights.

The technique seems to work, but the cost is so high(preprocessing and memory), and there are flexibility drawbacks as mentioned.

Maybe in some very special cases where you need to see bumpmaps on older hardware it would work good. But with new hardware and standard pixel shading extensions so readily available it doesn’t seem like this technique fits in with the current state of the industry.