CSCI441 OpenGL Library 5.9.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 <glad/gl.h>
14
15#include <glm/vec4.hpp>
16#include <glm/gtc/type_ptr.hpp>
17
18namespace CSCI441 {
19
24 namespace Materials {
25
29 struct Material {
33 [[maybe_unused]] GLfloat diffuse[4];
38 [[maybe_unused]] [[nodiscard]] glm::vec4 getDiffuse() const { return glm::make_vec4(diffuse); }
42 [[maybe_unused]] GLfloat specular[4];
47 [[maybe_unused]] [[nodiscard]] glm::vec4 getSpecular() const { return glm::make_vec4(specular); }
51 [[maybe_unused]] GLfloat shininess;
55 [[maybe_unused]] GLfloat ambient[4];
60 [[maybe_unused]] [[nodiscard]] glm::vec4 getAmbient() const { return glm::make_vec4(ambient); }
61 };
62
66 [[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} };
70 [[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} };
74 [[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} };
78 [[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} };
82 [[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} };
86 [[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} };
90 [[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} };
94 [[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} };
98 [[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} };
102 [[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} };
106 [[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} };
110 [[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} };
114 [[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} };
118 [[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} };
122 [[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} };
126 [[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} };
130 [[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} };
134 [[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} };
138 [[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} };
142 [[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} };
146 [[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} };
150 [[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} };
154 [[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} };
158 [[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} };
162 [[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} };
166 [[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} };
170 [[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} };
174 [[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} };
178 [[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} };
182 [[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} };
183 }
184}
185
186#endif // CSCI441_MATERIALS_HPP
constexpr Material BRASS
brass material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:66
constexpr Material BLACK_PLASTIC
plastic black material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:70
constexpr Material JADE
jade material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:126
constexpr Material BLACK_RUBBER
black rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:74
constexpr Material GOLD_POLISHED
polished gold material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:114
constexpr Material TIN
tin material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free.fr/cours/opengl/mate...
Definition: materials.hpp:162
constexpr Material GOLD
gold material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:110
constexpr Material RUBY
ruby material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:150
constexpr Material YELLOW_PLASTIC
plastic yellow material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:178
constexpr Material OBSIDIAN
obsidian material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:130
constexpr Material REB_RUBBER
red rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:146
constexpr Material TURQUOISE
turquoise material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:166
constexpr Material GREEN_PLASTIC
plastic green material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:118
constexpr Material COPPER
copper material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:90
constexpr Material SILVER
silver material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:154
constexpr Material SILVER_POLISHED
polished silver material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:158
constexpr Material WHITE_PLASTIC
plastic white material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:170
constexpr Material WHITE_RUBBER
white rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:174
constexpr Material PEWTER
pewter material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:138
constexpr Material BRONZE
bronze material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:78
constexpr Material RED_PLASTIC
plastic red material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:142
constexpr Material COPPER_POLISHED
polished copper material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:94
constexpr Material YELLOW_RUBBER
yellow rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:182
constexpr Material CYAN_RUBBER
cyan rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:102
constexpr Material EMERALD
emerald material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:106
constexpr Material CHROME
chrome material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:86
constexpr Material CYAN_PLASTIC
plastic cyan material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:98
constexpr Material BRONZE_POLISHED
polished bronze material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:82
constexpr Material PEARL
pearl material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay.free....
Definition: materials.hpp:134
constexpr Material GREEN_RUBBER
green rubber material from teapots.c demo SGI 1994, Mark J. Kilgard (http://devernay....
Definition: materials.hpp:122
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:29
GLfloat shininess
Shininess value to control exponential falloff of Specular Reflectance.
Definition: materials.hpp:51
glm::vec4 getSpecular() const
RGBA values for Specular Reflectance.
Definition: materials.hpp:47
glm::vec4 getAmbient() const
RGBA values for Ambient Reflectance.
Definition: materials.hpp:60
GLfloat diffuse[4]
RGBA values for Diffuse (Lambertian) Reflectance.
Definition: materials.hpp:33
GLfloat ambient[4]
RGBA values for Ambient Illumination.
Definition: materials.hpp:55
GLfloat specular[4]
RGBA values for Specular Reflectance.
Definition: materials.hpp:42
glm::vec4 getDiffuse() const
RGBA values for Diffuse Reflectance.
Definition: materials.hpp:38