OpenGL学习笔记(十三)—— 材质

现实世界的物体,对光产生不同的反应;针对镜面高光,也有不同的反应;物体在反射光的时候,如果散射的光比较少,则会产生较小的高光点,如果散射的光比较多,则会产生较大的高光点。

材质属性

当描述一个物体的时候,一般是通过一个 材质颜色(Material Color)反光度(Shininess) 来控制材质的属性;其中材质颜色包括:环境光照(Ambient Lighting)漫反射光照(Diffuse Lighting)镜面光照(Specular Lighting)。如下结构体:

1
2
3
4
5
6
7
/* 材质属性 */
struct Material {
vec3 ambient; /* 环境光照 */
vec3 diffuse; /* 漫反射光照 */
vec3 specular; /* 镜面光照 */
float shininess; /* 反光度 */
};
  • ambient:在环境光照下这个物体反射得是什么颜色(通常这和 物体颜色 是相同的)。
  • diffuse:在漫反射光照下物体的颜色(同样:漫反射颜色也要设置为需要的物体颜色)。
  • specular:镜面光照对物体的颜色影响(或者甚至可能反射一个物体特定的镜面高光颜色)。
  • shininess:影响镜面高光的散射/半径。

光照属性

光源对 环境光漫反射镜面光 分量也具有着不同的 强度

1
2
3
4
5
6
7
/* 光照属性 */
struct Light {
vec3 position; /* 光源位置 */
vec3 ambient; /* 环境光照·强度 */
vec3 diffuse; /* 漫反射光照·强度 */
vec3 specular; /* 镜面光照·强度 */
};
  • 环境光照:通常设置为一个比较低的强度(这样环境光颜色不会太过显眼)。
  • 漫反射光照:通常设置为光所具有的颜色(通常是一个比较明亮的白色)。
  • 镜面光照:通常会保持为 vec3(1.0)(以最大强度发光)。

材质属性表
























































































































































































































































































































































Name Ambient Diffuse Specular Shininess
emerald 0.0215 0.1745 0.0215 0.07568 0.61424 0.07568 0.633 0.727811 0.633 0.6
jade 0.135 0.2225 0.1575 0.54 0.89 0.63 0.316228 0.316228 0.316228 0.1
obsidian 0.05375 0.05 0.06625 0.18275 0.17 0.22525 0.332741 0.328634 0.346435 0.3
pearl 0.25 0.20725 0.20725 1 0.829 0.829 0.296648 0.296648 0.296648 0.088
ruby 0.1745 0.01175 0.01175 0.61424 0.04136 0.04136 0.727811 0.626959 0.626959 0.6
turquoise 0.1 0.18725 0.1745 0.396 0.74151 0.69102 0.297254 0.30829 0.306678 0.1
brass 0.329412 0.223529 0.027451 0.780392 0.568627 0.113725 0.992157 0.941176 0.807843 0.21794872
bronze 0.2125 0.1275 0.054 0.714 0.4284 0.18144 0.393548 0.271906 0.166721 0.2
chrome 0.25 0.25 0.25 0.4 0.4 0.4 0.774597 0.774597 0.774597 0.6
copper 0.19125 0.0735 0.0225 0.7038 0.27048 0.0828 0.256777 0.137622 0.086014 0.1
gold 0.24725 0.1995 0.0745 0.75164 0.60648 0.22648 0.628281 0.555802 0.366065 0.4
silver 0.19225 0.19225 0.19225 0.50754 0.50754 0.50754 0.508273 0.508273 0.508273 0.4
black plastic 0.0 0.0 0.0 0.01 0.01 0.01 0.50 0.50 0.50 0.25
cyan plastic 0.0 0.1 0.06 0.0 0.50980392 0.50980392 0.50196078 0.50196078 0.50196078 0.25
green plastic 0.0 0.0 0.0 0.1 0.35 0.1 0.45 0.55 0.45 0.25
red plastic 0.0 0.0 0.0 0.5 0.0 0.0 0.7 0.6 0.6 0.25
white plastic 0.0 0.0 0.0 0.55 0.55 0.55 0.70 0.70 0.70 0.25
yellow plastic 0.0 0.0 0.0 0.5 0.5 0.0 0.60 0.60 0.50 0.25
black rubber 0.02 0.02 0.02 0.01 0.01 0.01 0.4 0.4 0.4 0.078125
cyan rubber 0.0 0.05 0.05 0.4 0.5 0.5 0.04 0.7 0.7 0.078125
green rubber 0.0 0.05 0.0 0.4 0.5 0.4 0.04 0.7 0.04 0.078125
red rubber 0.05 0.0 0.0 0.5 0.4 0.4 0.7 0.04 0.04 0.078125
white rubber 0.05 0.05 0.05 0.5 0.5 0.5 0.7 0.7 0.7 0.078125
yellow rubber 0.05 0.05 0.0 0.5 0.5 0.4 0.7 0.7 0.04 0.078125

效果

Materials

Demo


参考

教程来源:https://learnopengl.com/

------ 本文结束 ------
欣赏此文?求鼓励,求支持!