Sorry, to resurrect this thread, but I felt this is a better place to put what I found than into a new thread.
Where to begin? Well, I have found out something for sure, we can make bump maps, they have to be in grayscale, that means not rgb mode but grayscale mode in photoshop, with no alpha channel
And as for dimensions, they must be a power of 2 squared, (2x2, 4x4, 8x8, ... , 256x256, 512x512, 1024x1024, 2048x2048... etc.)
So now we have a texture that is considered a valid bumpmap, it won't crash your game, and will work when called/defined as a bumpmap.
In its txi there are some fields we can now fill namely:
isbumpmap 1 // Mandatory, without this it won't be treated as a bumpmap
bumpmapscaling 1 // this is for how high or low the bumps should be (0.5, 0.75, 1, 2.25 etc.)
The following are some commands, from Never Winter Nights, that are in the kotor/tsl .exe but I haven't tested out in game yet
// Specify what kind of bumpmapping this bump map will do: specular, diffuse, or both. These values are ignored if this texture is not a bump map.
isdiffusebumpmap 1
isspecularbumpmap 1
// Specify a color for specular bumpmap highlights (RGB). This value is modulated with the bumpmapping light's color to produce the final highlight color. 1=255, 0=0
specularcolor 0.5 0.5 0.8
So, here comes the theortical part.
How does kotor do bump maps? in two ways,
A from a grayscale texture then renders a tangent normal map,
B from a pre rendered tangent-space normal map.
Almost all the bumpmaps in kotor are prerendered, they come out in rgb when we extract the with ktool, but they also always crash the tpc viewer. It seems this is the more efficient way to do it, but it is not something currently we can do, (we can keep experimenting) but what was needed for efficiency in 2003, is a luxury, I'd say we can afford to take in 2014.
in the end the gpu get's the same thing from either method, (according to glintercept).
Lastly here is the experiment I ran, let's see what we can do now with bump maps!
my experiment: