Hi,
Until tangent is available , perhaps you could use bump ( heightmap ) mapping instead of normal mapping.
Not mush difference , normal is better but not mush. heightmap ( bump ) is grayscale only so you can pack it inside your textures in the Alpha channel ( if your objects are not transparent ) , this way you only have one texture that also include the heightmap.
The calculation for a heightmap is mush faster , i use something like this:
color = rocktex.rgb * (clamp( dot( (rocktex.aaa-0.50)*(1.50), LightDir), 0.30, 0.85)+0.50);
( this assumes that the heightmap is baked into the texture "rocktex.aaa" , you could also just use a separate texture for the bump map and use bumptex.rgb instead of rocktex.aaa. )
light direction is set in vertex like this:
LightDir = dot(-ldir,norm)*vec3(1.0) ;
Its a really fast way of doing bump mapping ( height mapping ).
best regards Preben Eriksen,