CSCI441 OpenGL Library 5.17.0
CS@Mines CSCI441 Computer Graphics Course Library
Loading...
Searching...
No Matches
materials.hpp
Go to the documentation of this file.
1
10#ifndef CSCI441_MATERIALS_HPP
11#define CSCI441_MATERIALS_HPP
12
13#include "constants.h"
14
15#ifdef CSCI441_USE_GLEW
16 #include <GL/glew.h>
17#else
18 #include <glad/gl.h>
19#endif
20
21#include <glm/vec4.hpp>
22#include <glm/gtc/type_ptr.hpp>
23
24namespace CSCI441 {
25
30 namespace Materials {
31
35 struct Material {
39 [[maybe_unused]] GLfloat diffuse[4];
44 [[maybe_unused]] [[nodiscard]] glm::vec4 getDiffuse() const { return glm::make_vec4(diffuse); }
48 [[maybe_unused]] GLfloat specular[4];
53 [[maybe_unused]] [[nodiscard]] glm::vec4 getSpecular() const { return glm::make_vec4(specular); }
57 [[maybe_unused]] GLfloat shininess;
61 [[maybe_unused]] GLfloat ambient[4];
66 [[maybe_unused]] [[nodiscard]] glm::vec4 getAmbient() const { return glm::make_vec4(ambient); }
67 };
68
72 [[maybe_unused]] constexpr Material BRASS = { {0.780392f, 0.568627f, 0.113725f, 1.0f}, {0.992157f, 0.941176f, 0.807843f, 1.0f},27.8974f, {0.329412f, 0.223529f, 0.027451f, 1.0f} };
76 [[maybe_unused]] constexpr Material BLACK_PLASTIC = { {0.01f, 0.01f, 0.01f, 1.0f}, {0.50f, 0.50f, 0.50f, 1.0f},32.0f, {0.0f, 0.0f, 0.0f, 1.0f} };
80 [[maybe_unused]] constexpr Material BLACK_RUBBER = { {0.01f, 0.01f, 0.01f, 1.0f}, {0.4f, 0.4f, 0.4f, 1.0f},10.0f, {0.02f, 0.02f, 0.02f, 1.0f} };
84 [[maybe_unused]] constexpr Material BRONZE = { {0.714f, 0.4284f, 0.18144f, 1.0f}, {0.393548f, 0.271906f, 0.166721f, 1.0f},25.6f, {0.2125f, 0.1275f, 0.054f, 1.0f} };
88 [[maybe_unused]] constexpr Material BRONZE_POLISHED = { {0.4f, 0.2368f, 0.1036f, 1.0f}, {0.774597f, 0.458561f, 0.200621f, 1.0f},76.8f, {0.25f, 0.148f, 0.06475f, 1.0f} };
92 [[maybe_unused]] constexpr Material CHROME = { {0.4f, 0.4f, 0.4f, 1.0f}, {0.774597f, 0.774597f, 0.774597f, 1.0f},76.8f, {0.25f, 0.25f, 0.25f, 1.0f} };
96 [[maybe_unused]] constexpr Material COPPER = { {0.7038f, 0.27048f, 0.0828f, 1.0f}, {0.256777f, 0.137622f, 0.086014f, 1.0f},12.8f, {0.19125f, 0.0735f, 0.0225f, 1.0f} };
100 [[maybe_unused]] constexpr Material COPPER_POLISHED = { {0.5508f, 0.2118f, 0.066f, 1.0f}, {0.580594f, 0.223257f, 0.0695701f, 1.0f},51.2f, {0.2295f, 0.08825f, 0.0275f, 1.0f} };
104 [[maybe_unused]] constexpr Material CYAN_PLASTIC = { {0.0f, 0.50980392f,0.50980392f,1.0f}, {0.50196078f,0.50196078f,0.50196078f,1.0f},32.0f, {0.0f, 0.1f, 0.06f , 1.0f} };
108 [[maybe_unused]] constexpr Material CYAN_RUBBER = { {0.4f, 0.5f, 0.5f, 1.0f}, {0.04f, 0.7f, 0.7f, 1.0f},10.0f, {0.0f, 0.05f, 0.05f, 1.0f} };
112 [[maybe_unused]] constexpr Material EMERALD = { {0.07568f, 0.61424f, 0.07568f, 1.0f}, {0.633f, 0.727811f, 0.633f, 1.0f},76.8f, {0.0215f, 0.1745f, 0.0215f, 1.0f} };
116 [[maybe_unused]] constexpr Material GOLD = { {0.75164f, 0.60648f, 0.22648f, 1.0f}, {0.628281f, 0.555802f, 0.366065f, 1.0f},51.2f, {0.24725f, 0.1995f, 0.0745f, 1.0f} };
120 [[maybe_unused]] constexpr Material GOLD_POLISHED = { {0.34615f, 0.3143f, 0.0903f, 1.0f}, {0.797357f, 0.723991f, 0.208006f, 1.0f},83.2f, {0.24725f, 0.2245f, 0.0645f, 1.0f} };
124 [[maybe_unused]] constexpr Material GREEN_PLASTIC = { {0.1f, 0.35f, 0.1f, 1.0f}, {0.45f, 0.55f, 0.45f, 1.0f},32.0f, {0.0f, 0.0f, 0.0f, 1.0f} };
128 [[maybe_unused]] constexpr Material GREEN_RUBBER = { {0.4f, 0.5f, 0.4f, 1.0f}, {0.04f, 0.7f, 0.04f, 1.0f},10.0f, {0.0f, 0.05f, 0.0f, 1.0f} };
132 [[maybe_unused]] constexpr Material JADE = { {0.54f, 0.89f, 0.63f, 1.0f}, {0.316228f, 0.316228f, 0.316228f, 1.0f},12.8f, {0.135f, 0.2225f, 0.1575f, 1.0f} };
136 [[maybe_unused]] constexpr Material OBSIDIAN = { {0.18275f, 0.17f, 0.22525f, 1.0f}, {0.331741f, 0.328634f, 0.346435f, 1.0f},38.4f, {0.05365f, 0.05f, 0.06625f, 1.0f} };
140 [[maybe_unused]] constexpr Material PEARL = { {1.0f, 0.829f, 0.829f, 1.0f}, {0.296648f, 0.296648f, 0.296648f, 1.0f},11.264f, {0.25f, 0.20725f, 0.20725f, 1.0f} };
144 [[maybe_unused]] constexpr Material PEWTER = { {0.427451f, 0.470588f, 0.541176f, 1.0f}, {0.333333f, 0.333333f, 0.521569f, 1.0f},9.84615f, {0.105882f, 0.058824f, 0.113725f, 1.0f} };
148 [[maybe_unused]] constexpr Material RED_PLASTIC = { {0.5f, 0.0f, 0.0f, 1.0f}, {0.7f, 0.6f, 0.6f, 1.0f},32.0f, {0.0f, 0.0f, 0.0f, 1.0f} };
152 [[maybe_unused]] constexpr Material REB_RUBBER = { {0.5f, 0.4f, 0.4f, 1.0f}, {0.7f, 0.04f, 0.04f, 1.0f},10.0f, {0.05f, 0.0f, 0.0f, 1.0f} };
156 [[maybe_unused]] constexpr Material RUBY = { {0.61424f, 0.04136f, 0.04136f, 1.0f}, {0.727811f, 0.626959f, 0.626959f, 1.0f},76.8f, {0.1745f, 0.01175f, 0.01175f, 1.0f} };
160 [[maybe_unused]] constexpr Material SILVER = { {0.50754f, 0.50754f, 0.50754f, 1.0f}, {0.508273f, 0.508273f, 0.508273f, 1.0f},51.2f, {0.19225f, 0.19225f, 0.19225f, 1.0f} };
164 [[maybe_unused]] constexpr Material SILVER_POLISHED = { {0.2775f, 0.2775f, 0.2775f, 1.0f}, {0.773911f, 0.773911f, 0.773911f, 1.0f},89.6f, {0.23125f, 0.23125f, 0.23125f, 1.0f} };
168 [[maybe_unused]] constexpr Material TIN = { {0.427451f, 0.470588f, 0.541176f, 1.0f}, {0.333333f, 0.333333f, 0.521569f, 1.0f},9.84615f, {0.105882f, 0.058824f, 0.113725f, 1.0f} };
172 [[maybe_unused]] constexpr Material TURQUOISE = { {0.396f, 0.74151f, 0.69102f, 1.0f}, {0.297254f, 0.30829f, 0.306678f, 1.0f},12.8f, {0.1f, 0.18725f, 0.1745f, 1.0f} };
176 [[maybe_unused]] constexpr Material WHITE_PLASTIC = { {0.55f, 0.55f, 0.55f, 1.0f}, {0.70f, 0.70f, 0.70f, 1.0f},32.0f, {0.0f, 0.0f, 0.0f, 1.0f} };
180 [[maybe_unused]] constexpr Material WHITE_RUBBER = { {0.5f, 0.5f, 0.5f, 1.0f}, {0.7f, 0.7f, 0.7f, 1.0f},10.0f, {0.05f, 0.05f, 0.05f, 1.0f} };
184 [[maybe_unused]] constexpr Material YELLOW_PLASTIC = { {0.5f, 0.5f, 0.0f, 1.0f}, {0.60f, 0.60f, 0.50f, 1.0f},32.0f, {0.0f, 0.0f, 0.0f, 1.0f} };
188 [[maybe_unused]] constexpr Material YELLOW_RUBBER = { {0.5f, 0.5f, 0.4f, 1.0f}, {0.7f, 0.7f, 0.04f, 1.0f},10.0f, {0.05f, 0.05f, 0.0f, 1.0f} };
189 }
190}
191
192#endif // CSCI441_MATERIALS_HPP
constexpr Material BRASS
brass material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:72
constexpr Material BLACK_PLASTIC
plastic black material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:76
constexpr Material JADE
jade material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:132
constexpr Material BLACK_RUBBER
black rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:80
constexpr Material GOLD_POLISHED
polished gold material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:120
constexpr Material TIN
tin material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free.fr/cours/opengl/mate...
Definition: materials.hpp:168
constexpr Material GOLD
gold material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:116
constexpr Material RUBY
ruby material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:156
constexpr Material YELLOW_PLASTIC
plastic yellow material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:184
constexpr Material OBSIDIAN
obsidian material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:136
constexpr Material REB_RUBBER
red rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:152
constexpr Material TURQUOISE
turquoise material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:172
constexpr Material GREEN_PLASTIC
plastic green material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:124
constexpr Material COPPER
copper material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:96
constexpr Material SILVER
silver material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:160
constexpr Material SILVER_POLISHED
polished silver material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:164
constexpr Material WHITE_PLASTIC
plastic white material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:176
constexpr Material WHITE_RUBBER
white rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:180
constexpr Material PEWTER
pewter material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:144
constexpr Material BRONZE
bronze material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:84
constexpr Material RED_PLASTIC
plastic red material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:148
constexpr Material COPPER_POLISHED
polished copper material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:100
constexpr Material YELLOW_RUBBER
yellow rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:188
constexpr Material CYAN_RUBBER
cyan rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:108
constexpr Material EMERALD
emerald material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:112
constexpr Material CHROME
chrome material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:92
constexpr Material CYAN_PLASTIC
plastic cyan material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:104
constexpr Material BRONZE_POLISHED
polished bronze material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:88
constexpr Material PEARL
pearl material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:140
constexpr Material GREEN_RUBBER
green rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:128
CSCI441 Helper Functions for OpenGL.
Definition: ArcballCam.hpp:17
Material Helpers for Phong Reflectance Model.
stores material properties used within the Phong Reflectance Model
Definition: materials.hpp:35
GLfloat shininess
Shininess value to control exponential falloff of Specular Reflectance.
Definition: materials.hpp:57
glm::vec4 getSpecular() const
RGBA values for Specular Reflectance.
Definition: materials.hpp:53
glm::vec4 getAmbient() const
RGBA values for Ambient Reflectance.
Definition: materials.hpp:66
GLfloat diffuse[4]
RGBA values for Diffuse (Lambertian) Reflectance.
Definition: materials.hpp:39
GLfloat ambient[4]
RGBA values for Ambient Illumination.
Definition: materials.hpp:61
GLfloat specular[4]
RGBA values for Specular Reflectance.
Definition: materials.hpp:48
glm::vec4 getDiffuse() const
RGBA values for Diffuse Reflectance.
Definition: materials.hpp:44