I've done this many times in much the same way without problems so I'd guess the shader is not the problem.
In fact I've just tried your shader with the demo you posted yesterday (modified very slightly) and as far as I can tell it works fine.
Here's the code I've just used:
file$="test.dbo"
bApplyShader = 1
ColorMaskFX = 1
NormalFX = 2
world = 1
load effect "Color_wMask.fx",ColorMaskFX,0
`load effect "DirectionColorBump.fx",NormalFX,0
`load effect "GGBump04.fx",NormalFX,0 ` one of mine I used for testing yesterday
load effect "bumpLightMap.fx",NormalFX,0 ` the one you've just posted
`load image "white.bmp",1
load image "wall11c.jpg",2
load image "wall11c_n.jpg",3
load image "test_lm1.bmp", 1 ` the light map in your demo I assume
load object file$,world
`///////Fix UVs and apply a shader/////// **** NO NEED TO FIX UVs !!!!!
if bApplyShader = 1
texture object world, 0, 1 ` light map
texture object world,1,2 ` colour map
texture object world,2,3 ` normal map
set object effect world,NormalFX
endif
`///////////////////////////////////////
do
gosub _CAMERACONTROLS
sync
loop
`/////////////////////////////////////////////////////////////////////////////////////////////////////////
_CAMERACONTROLS:
if MOUSECLICK() = 1
key = 1
if shiftkey()
move camera 0.1
else
move camera 2.0
endif
endif
if MOUSECLICK() = 2
key = 1
if shiftkey()
move camera -0.1
else
move camera -2.0
endif
endif
oldcAY# = cAY#
oldcAX# = cAX#
cAY# = WrapValue(cAY#+MousemoveX()*0.1)
cAX# = WrapValue(cAX#-MousemoveY()*0.1)
caZ# = Camera angle Z()
YRotate camera CurveAngle(cAY#,oldcAY#,4)
XRotate camera CurveAngle(cAX#,oldcAX#,4)
Position Listener camera position x (),camera position y(), camera position z()
Rotate Listener camera angle x(), camera angle y(), camera angle z()
position mouse sw/2,sh/2
return
So you must have done something different somewhere.