@@ -292,33 +292,32 @@ bool GLSLShaderModule::applyShaderMaterial(Renderer *renderer, Material *materia
292292 ambientVal[0 ] = renderer->ambientColor .r ;
293293 ambientVal[1 ] = renderer->ambientColor .g ;
294294 ambientVal[2 ] = renderer->ambientColor .b ;
295- ambientVal[3 ] = 1 ;
296-
297- GLfloat data4[] = {light.color .x * light.intensity , light.color .y * light.intensity , light.color .z * light.intensity , 1.0 };
298- glLightfv (GL_LIGHT0+lightIndex, GL_DIFFUSE, data4);
299-
300- data4[0 ] = light.specularColor .r * light.intensity ;
301- data4[1 ] = light.specularColor .g * light.intensity ;
302- data4[2 ] = light.specularColor .b * light.intensity ;
303- data4[3 ] = light.specularColor .a * light.intensity ;
304- glLightfv (GL_LIGHT0+lightIndex, GL_SPECULAR, data4);
305-
306- data4[3 ] = 1.0 ;
307-
308- glLightfv (GL_LIGHT0+lightIndex, GL_AMBIENT, ambientVal);
309- glLightf (GL_LIGHT0+lightIndex, GL_SPOT_CUTOFF, 180 );
310-
311- data4[0 ] = light.position .x ;
312- data4[1 ] = light.position .y ;
313- data4[2 ] = light.position .z ;
314- glLightfv (GL_LIGHT0+lightIndex, GL_POSITION, data4);
315-
316- glLightf (GL_LIGHT0+lightIndex, GL_CONSTANT_ATTENUATION, light.constantAttenuation );
317- glLightf (GL_LIGHT0+lightIndex, GL_LINEAR_ATTENUATION, light.linearAttenuation );
318- glLightf (GL_LIGHT0+lightIndex, GL_QUADRATIC_ATTENUATION, light.quadraticAttenuation );
319-
320- }
321- lightIndex++;
295+ ambientVal[3 ] = 1 ;
296+
297+ GLfloat data4[] = {light.color .x * light.intensity , light.color .y * light.intensity , light.color .z * light.intensity , 1.0 };
298+ glLightfv (GL_LIGHT0+lightIndex, GL_DIFFUSE, data4);
299+
300+ data4[0 ] = light.specularColor .r * light.intensity ;
301+ data4[1 ] = light.specularColor .g * light.intensity ;
302+ data4[2 ] = light.specularColor .b * light.intensity ;
303+ data4[3 ] = light.specularColor .a * light.intensity ;
304+ glLightfv (GL_LIGHT0+lightIndex, GL_SPECULAR, data4);
305+
306+ data4[3 ] = 1.0 ;
307+
308+ glLightfv (GL_LIGHT0+lightIndex, GL_AMBIENT, ambientVal);
309+ glLightf (GL_LIGHT0+lightIndex, GL_SPOT_CUTOFF, 180 );
310+
311+ data4[0 ] = light.position .x ;
312+ data4[1 ] = light.position .y ;
313+ data4[2 ] = light.position .z ;
314+ glLightfv (GL_LIGHT0+lightIndex, GL_POSITION, data4);
315+
316+ glLightf (GL_LIGHT0+lightIndex, GL_CONSTANT_ATTENUATION, light.constantAttenuation );
317+ glLightf (GL_LIGHT0+lightIndex, GL_LINEAR_ATTENUATION, light.linearAttenuation );
318+ glLightf (GL_LIGHT0+lightIndex, GL_QUADRATIC_ATTENUATION, light.quadraticAttenuation );
319+ lightIndex++;
320+ }
322321 }
323322
324323 vector<LightInfo> spotLights = renderer->getSpotLights ();
@@ -346,82 +345,82 @@ bool GLSLShaderModule::applyShaderMaterial(Renderer *renderer, Material *materia
346345 ambientVal[2 ] = renderer->ambientColor .b ;
347346 ambientVal[3 ] = 1 ;
348347
349- GLfloat data4[] = {light.color .x * light.intensity , light.color .y * light.intensity , light.color .z * light.intensity , 1.0 };
350- glLightfv (GL_LIGHT0+lightIndex, GL_DIFFUSE, data4);
351-
352- data4[0 ] = light.specularColor .r * light.intensity ;
353- data4[1 ] = light.specularColor .g * light.intensity ;
354- data4[2 ] = light.specularColor .b * light.intensity ;
355- data4[3 ] = light.specularColor .a * light.intensity ;
356- glLightfv (GL_LIGHT0+lightIndex, GL_SPECULAR, data4);
357-
358- data4[3 ] = 1.0 ;
359-
360- glLightfv (GL_LIGHT0+lightIndex, GL_AMBIENT, ambientVal);
361- glLightf (GL_LIGHT0+lightIndex, GL_SPOT_CUTOFF, light.spotlightCutoff );
362-
363- glLightf (GL_LIGHT0+lightIndex, GL_SPOT_EXPONENT, light.spotlightExponent );
364-
365- data4[0 ] = dir.x ;
366- data4[1 ] = dir.y ;
367- data4[2 ] = dir.z ;
368- glLightfv (GL_LIGHT0+lightIndex, GL_SPOT_DIRECTION, data4);
369-
370- data4[0 ] = pos.x ;
371- data4[1 ] = pos.y ;
372- data4[2 ] = pos.z ;
373- glLightfv (GL_LIGHT0+lightIndex, GL_POSITION, data4);
374-
375- glLightf (GL_LIGHT0+lightIndex, GL_CONSTANT_ATTENUATION, light.constantAttenuation );
376- glLightf (GL_LIGHT0+lightIndex, GL_LINEAR_ATTENUATION, light.linearAttenuation );
377- glLightf (GL_LIGHT0+lightIndex, GL_QUADRATIC_ATTENUATION, light.quadraticAttenuation );
378-
379- if (light.shadowsEnabled ) {
380- if (shadowMapTextureIndex < 4 ) {
381- switch (shadowMapTextureIndex) {
382- case 0 :
383- strcpy (texName, " shadowMap0" );
384- strcpy (matName, " shadowMatrix0" );
385- break ;
386- case 1 :
387- strcpy (texName, " shadowMap1" );
388- strcpy (matName, " shadowMatrix1" );
389- break ;
390- case 2 :
391- strcpy (texName, " shadowMap2" );
392- strcpy (matName, " shadowMatrix2" );
393- break ;
394- case 3 :
395- strcpy (texName, " shadowMap3" );
396- strcpy (matName, " shadowMatrix3" );
397- break ;
398- }
399-
400- int texture_location = glGetUniformLocation (glslShader->shader_id , texName);
401- glUniform1i (texture_location, textureIndex);
402- glActiveTexture (GL_TEXTURE0 + textureIndex);
403- glBindTexture (GL_TEXTURE_2D, ((OpenGLTexture*)light.shadowMapTexture )->getTextureID ());
404- textureIndex++;
405-
406- int mloc = glGetUniformLocation (glslShader->shader_id , matName);
407- light.textureMatrix = light.textureMatrix ;
408-
409-
410- GLfloat mat[16 ];
411- for (int z=0 ; z < 16 ; z++) {
412- mat[z] = light.textureMatrix .ml [z];
413- }
414- glUniformMatrix4fv (mloc, 1 , false , mat);
415-
416-
417- }
418- shadowMapTextureIndex++;
348+ GLfloat data4[] = {light.color .x * light.intensity , light.color .y * light.intensity , light.color .z * light.intensity , 1.0 };
349+ glLightfv (GL_LIGHT0+lightIndex, GL_DIFFUSE, data4);
350+
351+ data4[0 ] = light.specularColor .r * light.intensity ;
352+ data4[1 ] = light.specularColor .g * light.intensity ;
353+ data4[2 ] = light.specularColor .b * light.intensity ;
354+ data4[3 ] = light.specularColor .a * light.intensity ;
355+ glLightfv (GL_LIGHT0+lightIndex, GL_SPECULAR, data4);
356+
357+ data4[3 ] = 1.0 ;
358+
359+ glLightfv (GL_LIGHT0+lightIndex, GL_AMBIENT, ambientVal);
360+ glLightf (GL_LIGHT0+lightIndex, GL_SPOT_CUTOFF, light.spotlightCutoff );
361+
362+ glLightf (GL_LIGHT0+lightIndex, GL_SPOT_EXPONENT, light.spotlightExponent );
363+
364+ data4[0 ] = dir.x ;
365+ data4[1 ] = dir.y ;
366+ data4[2 ] = dir.z ;
367+ glLightfv (GL_LIGHT0+lightIndex, GL_SPOT_DIRECTION, data4);
368+
369+ data4[0 ] = pos.x ;
370+ data4[1 ] = pos.y ;
371+ data4[2 ] = pos.z ;
372+ glLightfv (GL_LIGHT0+lightIndex, GL_POSITION, data4);
373+
374+ glLightf (GL_LIGHT0+lightIndex, GL_CONSTANT_ATTENUATION, light.constantAttenuation );
375+ glLightf (GL_LIGHT0+lightIndex, GL_LINEAR_ATTENUATION, light.linearAttenuation );
376+ glLightf (GL_LIGHT0+lightIndex, GL_QUADRATIC_ATTENUATION, light.quadraticAttenuation );
377+
378+ if (light.shadowsEnabled ) {
379+ if (shadowMapTextureIndex < 4 ) {
380+ switch (shadowMapTextureIndex) {
381+ case 0 :
382+ strcpy (texName, " shadowMap0" );
383+ strcpy (matName, " shadowMatrix0" );
384+ break ;
385+ case 1 :
386+ strcpy (texName, " shadowMap1" );
387+ strcpy (matName, " shadowMatrix1" );
388+ break ;
389+ case 2 :
390+ strcpy (texName, " shadowMap2" );
391+ strcpy (matName, " shadowMatrix2" );
392+ break ;
393+ case 3 :
394+ strcpy (texName, " shadowMap3" );
395+ strcpy (matName, " shadowMatrix3" );
396+ break ;
397+ }
398+
399+ int texture_location = glGetUniformLocation (glslShader->shader_id , texName);
400+ glUniform1i (texture_location, textureIndex);
401+ glActiveTexture (GL_TEXTURE0 + textureIndex);
402+ glBindTexture (GL_TEXTURE_2D, ((OpenGLTexture*)light.shadowMapTexture )->getTextureID ());
403+ textureIndex++;
404+
405+ int mloc = glGetUniformLocation (glslShader->shader_id , matName);
406+ light.textureMatrix = light.textureMatrix ;
407+
408+
409+ GLfloat mat[16 ];
410+ for (int z=0 ; z < 16 ; z++) {
411+ mat[z] = light.textureMatrix .ml [z];
412+ }
413+ glUniformMatrix4fv (mloc, 1 , false , mat);
414+
415+
416+ }
417+ shadowMapTextureIndex++;
418+ } else {
419+ light.shadowsEnabled = false ;
420+ }
421+
422+ lightIndex++;
419423 }
420- else {
421- light.shadowsEnabled = false ;
422- }
423- }
424- lightIndex++;
425424 }
426425 glPopMatrix ();
427426
0 commit comments