# bump mapping with 2 normal maps

I was wondering if its actually possible to do bump mapping with 2 normal maps... I have tried doing it this way however I get a function overload on max and dot.

uniform sampler2D  n_mapTex;
uniform sampler2D  n_mapTex2;
uniform sampler2D  refTex;

varying mediump vec2  TexCoord;
varying mediump float vTime;

void main()
{
mediump vec4 wave = texture2D(n_mapTex, TexCoord - vTime);
mediump vec4 wave2 = texture2D(n_mapTex2, TexCoord + vTime);
mediump vec4 bump = mix(wave2, wave, 0.5);
//this extracts the normals from the combined normal maps
mediump vec4 normal = normalize(bump.xyzw * 2.0 - 1.0);
//determines light position
mediump vec3 lightPos = normalize(vec3(0.0, 1.0, 3.0));

mediump float diffuse = max(dot(normal, lightPos),0.0);
gl_FragColor = mix(texture2D(refTex, TexCoord), bump, 0.5);
}

• Are you specifically looking for a way to do it in code? Or are you amenable to stacking and normalizing using an external tool? – Casey Wagner Apr 28 '13 at 3:00
• I am looking for a way to do it in code, if that is possible. – DorkMonstuh Apr 28 '13 at 9:02

In any case, I'm pretty sure you get your error for trying to calculate the dot product between a vec4 and a vec3. The mathematical dot product is only defined for vectors with the same number of dimensions, most programming languages mirror this.