maybe the geforce3 does only support 2 texture stages in the fixed function pipeline? that would explain it... jcl added the number of texture stages to this table -> http://conitecserver.com/wiki/index.php/ShaderSupportOverview it's strange though that 4 stages can be used with pixel shaders on a geforce3.

@matt: where do you set up bumpenvmat? isn't it needed? and why isn't it necessary to convert the bumpmap to a uv-offset map? could you post a screenshot or a demo of that effect?