//////////////// *** VERTEX SHADER PART *** ///////////////////
varying float LightIntensity;
const float specularContribution = 0.1;
const float diffuseContribution = 1.0 - specularContribution;
void main(void)
{
vec3 ecPosition = vec3 (gl_ModelViewMatrix * gl_Vertex);
vec3 tnorm = normalize(gl_NormalMatrix * gl_Normal);
vec3 lightVec = normalize((gl_LightSource[0].position.xyz) - ecPosition);
vec3 reflectVec = reflect(-lightVec, tnorm);
vec3 viewVec = normalize(-ecPosition);
float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0);
spec = pow(spec, 16.0);
LightIntensity = diffuseContribution * max(dot(lightVec, tnorm), 0.0)
+ specularContribution * spec;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}
//////////////// *** FRAGMENT SHADER PART *** ///////////////////
varying float LightIntensity;
uniform sampler2D myTexture;
void main (void)
{
vec3 lightColor = vec3 (texture2D(myTexture, gl_TexCoord[0].st)); // kada ne koristim ovu funkciju sve radi OK
gl_FragColor = vec4 (lightColor * LightIntensity, 1.0);
}
Problem je sto je aplikacija neverovatno spora. Primer koji koristi ovaj kod radi super ali sam napravio svoju aplikaciju i sve ide sporo ( bez koriscenja texture, znaci samo difuzna, specular i ambient color, framerate je > 1000 ).
Ukljucivao sam i slozenije primere ( Bump + Reflection ) i sve ide glatko. Problem u OpenGL kodu? Verovatno, ali koji?