DirectX 8 supports bumpmapping even in the fixed function pipeline. This technique uses interpolated data from the vertices and does not look as specular as per-pixel bumpmapping does.