**I have faced this quadrant light diference (****http://www.youtube.com/watch?v=PtczGOO5Oyg****) during the use of this python script :**

import GameLogic as g

objlist = g.getCurrentScene().getObjectList()

g.setLogicTicRate(60.0)

# -------------------------------------

ShaderObjects = [ objlist[‘OBNameOfobjecHere’] ]

MaterialIndexList = [0,1]

GlobalAmbient = [0.39,0.35,0.32,1]

AmbF = 0.5

# -------------------------------------

VertexShader = “”"

uniform mat4 mvi;

vec4 Tangent;

varying vec4 vcol;

varying vec3 lvec,vvec;

vec3 TBN(in vec3 by)

{

vec3 tangent = (Tangent.xyz);

vec3 binormal = cross(gl_Normal, Tangent.xyz)*Tangent.w;

vec3 normal = gl_Normal;

vec3 tvec;

tvec.x = dot(tangent, by);

tvec.y = dot(binormal, by);

tvec.z = dot(normal, by);

return tvec;

}

void main() {

gl_Position = ftransform();

// texcoord now (vec4())

Tangent = gl_MultiTexCoord1;

vec4 light0 = (mvi*gl_LightSource[0].position)-gl_Vertex;

vec4 view = mvi[3]-gl_Vertex;

lvec = TBN(light0.xyz);

vvec = TBN(view.xyz);

gl_TexCoord[0] = gl_MultiTexCoord0;

vcol =gl_Color;

}

“”"

FragmentShader = “”"

varying vec4 vcol;

varying vec3 lvec,vvec,hvec;

uniform sampler2D color;

uniform sampler2D bump;

void main() {

vec4 diffuse_color = vcol*gl_LightSource[0].diffuse;

vec4 specular_color = gl_FrontMaterial.specular;

vec4 colormap = texture2D(color, gl_TexCoord[0].st);

vec3 lv = normalize(lvec);

vec3 vv = normalize(vvec);

vec3 nv = normalize(2.0*texture2D(bump, gl_TexCoord[0].st).xyz-1.0);

float diff = max(dot(lv, nv), 0.0);

float spec = pow(max(dot(reflect(-vv, nv), lv),0.0), gl_FrontMaterial.shininess);

vec4 diff_pass = colormap*(diff*diffuse_color);*

vec4 spec_pass = specspecular_color;

gl_FragColor = vec4(0.1,0.1,0.1,1.0)+diff_pass+spec_pass;

}

“”"

def MainLoop ():

# for each object

for obj in ShaderObjects:

mesh_index = 0

mesh = obj.getMesh(mesh_index)

while mesh != None:

for mat in mesh.materials:

# regular TexFace materials do NOT have this function

if not hasattr(mat, “getMaterialIndex”):

return

mat_index = mat.getMaterialIndex()

# find an index

found = 0

for i in range(len(MaterialIndexList)):

if mat_index == MaterialIndexList[i]:

found=1

break

if not found: continue

shader = mat.getShader()

if shader != None:

if not shader.isValid():

shader.setSource(VertexShader, FragmentShader,1)

# shader.setAttrib(g.SHD_TANGENT)

shader.setUniformDef(‘mvi’, g.MODELVIEWMATRIX_INVERSE)

shader.setSampler(‘color’, 0)

shader.setSampler(‘bump’, 1)

mesh_index += 1

mesh = obj.getMesh(mesh_index)

**I guess it is related to new UV maping tools (unwrap) and GLSL integration.**