美文网首页OpenGL学习笔记
【四十八,投光物-01定向光】

【四十八,投光物-01定向光】

作者: Woodlouse | 来源:发表于2019-12-18 23:26 被阅读0次

投光物

投光 : 光源把光照射到物体上;

定向光

当光源被设置为无限远时,它被称为定向光(Directional Light),因为所有的光线都有着同一个方向,独立于光源位置。

我们最常见的定向光源的例子是:太阳,来自于太阳的所有光线都被定义为平行光:


定向光示意图

所有的光线都是平行的,对于场景中的每个物体光的方向都保持一致,物体和光源的位置保持怎样的关系都无所谓。由于光的方向向量保持一致,光照计算会和场景中的其他物体相似。

开发

  1. 修改片段着色器中光源的定义,去除光的位置定义,加入方向的定义,如下:
struct Light
{
//    vec3 position;
    
    vec3 direction;
    
    vec3 ambient;
    vec3 diffuse;
    vec3 specular;
};
uniform Light light;
  1. 将光方向标准化
vec3 lightDir = normalize(-light.direction);
  1. 设置光的方向
//设置定向光的属性
m_pShader->setVec3("light.direction", -0.2f, -1.0f, -0.3f);
  1. 添加多个物体
for(int i=0; i<10; i++) {
        glm::mat4 model = glm::mat4(1.0f);
        model = glm::translate(model, cubePositions[i]);
        model = glm::rotate(model, glm::radians(20.0f *float(glfwGetTime())), glm::vec3(1.0f, 0.3f, 0.5f));
        model = glm::scale(model, glm::vec3(0.5f));
        m_pShader->setMat4("model", model);
        
        glDrawArrays(GL_TRIANGLES, 0, 36);
    }
  1. 运行效果


    定向光效果图

定向光代码

相关文章

  • 【四十八,投光物-01定向光】

    投光物 投光 : 光源把光照射到物体上; 定向光 当光源被设置为无限远时,它被称为定向光(Directional ...

  • 重新自学学习openGL 之光照投光物

    概念 将光投射(Cast)到物体的光源叫做投光物(Light Caster) 分类 定向光(Directional...

  • 投光物

    一个光源把光投射到物体上,叫做投光(Light casters)。 定向光 当一个光源很远的时候,来自光源的每条光...

  • LearnOpenGL 投光物

    定向光 当一个光源很远的时候,来自光源的每条光线接近于平行。这看起来就像所有的光线来自于同一个方向,无论物体和观察...

  • 2022-05-25

    我们向光而生,寻光前行

  • 坚持分享第1054天心里有光眼里才有光 眼里有光才能看见光 看到光才能走向光 走向光才能成为光 成为一束光才能温暖...

  • 定投日记01

    Day2,今天是定投开始的第二天 因为喜欢李笑来,上周无意间接触了《定投——大佬的自我修养》这本书,如获至宝,周末...

  • 定投是每个人不知不觉在做的事情

    大家好,我是坚持原创从不转载的一米时光。本文从数据上分析定投的威力:定投是最大化复利的工具。 01 定投就是定期定...

  • 人生就像一场定投

    01.你知道的定投 我经常与客户聊定投,很多人对它并不陌生,定投是一种定期(如每月、每周)定额(如每次拿1000)...

  • 向光班的故事16

    今天开始,我和孩子们一起商量把班级定位向光班,向光而行,我们现在可能成为不了光,但我们可以向光,向光学习,最后成为...

网友评论

    本文标题:【四十八,投光物-01定向光】

    本文链接:https://www.haomeiwen.com/subject/wqupnctx.html