/* Universidade Federal Fluminense
 * Programa de Pós-Graduação em Computação
 *
 * Tópicos Avançados em Computação Visual e Interfaces II (Técnicas Avançadas de Rendering)
 * Professor: Leandro Augusto Frata Fernandes
 *
 * Version: 2012.05.05-001
 */

#ifndef _MATERIAL_HEADER_
#define _MATERIAL_HEADER_

// Include some custom definitions.
#include "basic.h"

// A simple material struct for Phong Reflection Model.
struct Material {
	color4f ambient;
	color4f diffuse;
	color4f specular;
	GLfloat shininess;
};

// Some pre-defined materials.
static const Material bronze = { color4f(0.2125f, 0.1275f, 0.054f, 1.0f), color4f(0.714f, 0.4284f, 0.18144f, 1.0f), color4f(0.393548f, 0.271906f, 0.166721f, 1.0f), 25.6f };
static const Material chrome = { color4f(0.25f, 0.25f, 0.25f, 1.0f), color4f(0.4f, 0.4f, 0.4f, 1.0f), color4f(0.774597f, 0.774597f, 0.774597f, 1.0f), 76.8f };
static const Material gold   = { color4f(0.24725f, 0.1995f, 0.0745f, 1.0f), color4f(0.75164f, 0.60648f, 0.22648f, 1.0f), color4f(0.628281f, 0.555802f, 0.366065f, 1.0f), 51.2f };
static const Material silver = { color4f(0.19225f, 0.19225f, 0.19225f, 1.0f), color4f(0.50754f, 0.50754f, 0.50754f, 1.0f), color4f(0.508273f, 0.508273f, 0.508273f, 1.0f), 51.2f };

#endif // _MATERIAL_HEADER_
