LearnOpenGL笔记7材质、光照贴图、投光

阅读: 评论:0

LearnOpenGL笔记7材质、光照贴图、投光

LearnOpenGL笔记7材质、光照贴图、投光

材质、光照贴图

  • 材质
  • 光照贴图
    • 漫反射贴图
  • 投光物
    • 平行光
    • 点光源
    • 聚光
    • 平滑、软化边缘
  • 多光源

材质颜色(material color)
环境光照(ambient lighting)
漫反射光照(diffuse lighting)
镜面光照(specular lighting)通过每个分量指定一个颜色
再加上反光度(shiniess)

材质

片段着色器中,结构体储存物体材质,可以把它们储存为独立的uniform,定义结构体的布局(layout),使用刚创建的结构体为类型,简单声明一个uniform变量。
ambient材质向量定义了在环境光照下物体反射颜色,通常和物体颜色相同。diffuse材质向量定义了漫反射光照下物体颜色。specular材质设置的镜面光照。
shiniess镜面高光散射半径。

光照贴图

一个物体可能不会只要一种材质,漫反射贴图,镜面光贴图,对物体的漫反射分量和镜面光分量有着更精确的控制,

漫反射贴图

其实就是和纹理差不多,只不过在光照场景名字叫做,漫反射贴图,表现物体所有漫反射颜色纹理图像。
sampler2D是不透明类型,只能够通过uniform定义。

投光物

光投射到物体的光源叫做投光物(lighter caster),

平行光

光源处于无限远,称为 定向光(directional light),所有光线相同方向,和光源位置无关。
所有光线平行,物体和光源相对位置不重要。
定义一个光线方向向量模拟定向光。首先对light.direction向量取反。我们目前使用的光照计算需求一个从片段至光源的光线方向,但人们更习惯定义定向光为一个从光源出发的全局方向。所以要对全局光照方向向量取反改变方向,现在是一个指向光源的方向向量了。为了展示定向光对多个物体有相同的影响,再次使用坐标系统。

点光源

朝着所有方向发光,光线随距离衰减(attenuation)。
随着距离减少光强度,

计算衰减值。
d是片段距光源的距离,
设置参数值的时候考虑因素:
环境、希望光覆盖的距离、光的类型;一般是经验值

聚光

位于环境中的某个位置,只朝一个特定的方向而不是所有的方向照射光线,相当于路灯,手电筒,
表示因素:世界空间位置、一个方向、一个切光角;切光角制定了聚光的半径。

平滑、软化边缘

为了创建一种边缘平滑的聚光,需要模拟聚光有一个内圆锥和一个外圆锥。
让光从内圆锥逐渐减暗直到外圆锥边界。

多光源

不同光源封装到GLSL函数,每一种光源计算方法不同,
在场景中使用多个光源:一个单独的颜色向量代表片段输出颜色。对每一个光源,对片段的贡献颜色将会加到片段的输出颜色向量上。场景中每个光源都会计算对各自片段的影响。

void main()
{// 属性vec3 norm = normalize(Normal);vec3 viewDir = normalize(viewPos - FragPos);// 第一阶段:定向光照vec3 result = CalcDirLight(dirLight, norm, viewDir);// 第二阶段:点光源for(int i = 0; i < NR_POINT_LIGHTS; i++)result += CalcPointLight(pointLights[i], norm, FragPos, viewDir);    // 第三阶段:聚光//result += CalcSpotLight(spotLight, norm, FragPos, viewDir);    FragColor = vec4(result, 1.0);
}

GLSL uniform数组(GLSL Uniform Array):一个uniform值数组。它的工作原理和C语言数组大致一样,只是不能动态分配内存。

本文发布于:2024-01-28 01:58:07,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063782933986.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:材质   笔记   贴图   LearnOpenGL
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23