#include <GL/glut.h>
#include "iluminacion.h"

/******************************************************************************************/
/* Inicia los parametros de iluminacion de OpenGL                                         */
/* Parametros --> Ninguno                                                                    */
/* Salida ------> Ninguna                                                                        */
/******************************************************************************************/
void iniciaIluminacion(void) {	
	GLfloat lmodel_ambient [] = {0.4f, 0.4f, 0.4f, 1.0f};

	/* Parámetros del modelo de iluminación */

	glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);

	/* Activa la iluminación de la escena */

	glEnable(GL_LIGHTING);	
	glEnable(GL_NORMALIZE);

}

/*************************** DEFINICIÓN DE LAS LUCES **************************************/

/******************************************************************************************/
/* Define y activa la luz 0                                                               */
/* Parametros --> Ninguno                                                                 */
/* Salida ------> Ninguna                                                                 */
/******************************************************************************************/
void luz0 (void) {
	float luz0_posicion[] = {0.0f, 0.0f, 1.0f, 0.0f};
	float luz0_ambiente[] = {0.2f, 0.2f, 0.2f, 1.0f};
	float luz0_difusa[] = {0.5f, 0.5f, 0.5f, 1.0f};
	float luz0_especular[] = {0.6f, 0.6f, 0.6f, 1.0f};

	glLightfv (GL_LIGHT0, GL_POSITION, luz0_posicion);
	glLightfv (GL_LIGHT0, GL_AMBIENT, luz0_ambiente);
	glLightfv (GL_LIGHT0, GL_DIFFUSE, luz0_difusa);
	glLightfv (GL_LIGHT0, GL_SPECULAR, luz0_especular);
	glEnable(GL_LIGHT0);
}

/*************************** DEFINICIÓN DE LOS MATERIALES *********************************/

/******************************************************************************************/
/* Define las propiedades del material cobre                                              */
/* Parametros: Ninguno                                                                    */
/* Salida: Ninguna                                                                        */
/******************************************************************************************/
void cobre(void) {
	float cobre_ambiente[] = {0.33f, 0.26f, 0.23};
	float cobre_difusa[] = {0.50f, 0.11f, 0.0f};
	float cobre_especular[] = {0.95f, 0.73f, 0.0f};
	float cobre_exponente_brillo = 93.0f;
	
	glMaterialfv(GL_FRONT, GL_AMBIENT, cobre_ambiente);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, cobre_difusa);
	glMaterialfv(GL_FRONT, GL_SPECULAR, cobre_especular);
	glMaterialf(GL_FRONT, GL_SHININESS, cobre_exponente_brillo);
}

void blanco(void) {
	float blanco_ambiente[] = {0.33f, 0.26f, 0.23};
	float blanco_difusa[] = {0.50f, 0.11f, 0.0f};
	float blanco_especular[] = {0.95f, 0.73f, 0.0f};
	float blanco_exponente_brillo = 93.0f;
	
	glMaterialfv(GL_FRONT, GL_AMBIENT, blanco_ambiente);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, blanco_difusa);
	glMaterialfv(GL_FRONT, GL_SPECULAR, blanco_especular);
	glMaterialf(GL_FRONT, GL_SHININESS, blanco_exponente_brillo);
}
