OpenGL学习笔记

【四十,光照-光照基础_03镜面反射光照】

2019-12-05  本文已影响0人  Woodlouse

镜面反射光照

镜面光照

依赖因素:

  1. 光的方向向量;
  2. 物体的法向量;
  3. 观察者的观察方向;

计算过程

  1. 计算反射向量;
  2. 计算视线向量和发射向量的夹角,夹角越小,镜面光的作用越大;

观察向量的计算
使用观察者世界空间位置和片段位置来计算

实现

镜面光照的实现主要是修改片段着色器,在片段着色器中:

uniform vec3 viewPos;
    //Specular
    float specularStrength = 0.5f;
    vec3 viewDir = normalize(viewPos - FragPos);
    vec3 reflectDir = reflect(-lightDir, Normal);
    float spec = pow(max(dot(viewDir, reflectDir), 0.0), 128);
    vec3 speclular = specularStrength * spec * lightColor;

运行效果

镜面反射

这个效果图和文章示例中的差很远呢,看不到一个比较亮的光斑


镜面反射

上一篇下一篇

猜你喜欢

热点阅读