I am asking this in the right forum?
here is some code from a glsl script that works with an ati card but not a nvidia card.Would anyone here know how to correct it for an nvidia gfx card? It puts in a spot light that works with texture maps.. but not properly with a Nvidia 6200.. it works properly with a ATI Radeon X800 XL. If I cahnge the spot lights intensity and soft spot it has absolutely no effect.
I'm using blender a really cool open source 3d app with a game engine with some GLSL capability. Any help would be great thanks. Any hints or tips/corrections welcome
here's a pic of it on the nvidia 6200 with the light intensity cranked really high and still no difference

an image of the spot light on the ATI Radeon X800 XL working correctly. .yes blender game engine doesn't yet support shadows :-(

VertexShader = """
varying vec2 texcoords;
varying vec3 normal,lightDir,halfVector;
varying vec4 vcol;
varying float dist;
void main()
{
vec4 ecPos;
vec3 aux;
/* first transform the normal into eye space and normalize the result */
normal = normalize(gl_NormalMatrix * gl_Normal);
/* now normalize the light's direction. Note that according to the
OpenGL specification, the light is stored in eye space.*/
ecPos = gl_ModelViewMatrix * gl_Vertex;
aux = vec3(gl_LightSource[0].position-ecPos);
lightDir = normalize(aux);
/* compute the distance to the light source to a varying variable*/
dist = length(aux);
/* Normalize the halfVector to pass it to the fragment shader */
halfVector = normalize(gl_LightSource[0].halfVector.xyz);
vcol = gl_Color;
texcoords = gl_MultiTexCoord0.st;
gl_Position = ftransform();
}
"""
FragmentShader = """
const float AmbF = %f;
const vec4 AmbG = vec4(%f,%f,%f,%f);
uniform sampler2D color;
varying vec2 texcoords;
varying vec3 normal,lightDir,halfVector;
varying vec4 vcol;
varying float dist;
void main()
{
vec3 n,halfV;
float NdotL,NdotHV;
vec4 diff0,amb;
float diffuse0;
float spec0;
float att,spotEffect;
vec4 texture = texture2D(color,texcoords);
// ambient color * factor
amb= AmbG*AmbF;
const float specular_power = 100.0; // > sharp spec
/* a fragment shader can't write a verying variable, hence we need
a new variable to store the normalized interpolated normal */
n = normalize(normal);
/* compute the dot product between normal and ldir */
NdotL = max(dot(n,normalize(lightDir)),0.0);
if (NdotL > 0.0) {
spotEffect = dot(normalize(gl_LightSource[0].spotDirection), normalize(-lightDir));
if (spotEffect > gl_LightSource[0].spotCosCutoff) {
spotEffect = pow(spotEffect, gl_LightSource[0].spotExponent);
att = spotEffect / (gl_LightSource[0].constantAttenuation +
gl_LightSource[0].linearAttenuation * dist +
gl_LightSource[0].quadraticAttenuation * dist * dist);
diff0 = gl_LightSource[0].diffuse;
halfV = normalize(halfVector);
NdotHV = max(dot(n,halfV),0.0);
}
}
texture *= vcol;
gl_FragColor = texture+(att*((amb) + (diffuse0*diff0*NdotL+spec0*diff0)))-0.5;
}
""" %\