OpenGL多光源Multiple lights

  • 多光源Multiple lights简介
  • 定向光
  • 点光源
  • 合并结果

多光源Multiple lights简介

我们在前面的教程中已经学习了许多关于OpenGL中光照的知识,其中包括冯氏着色(Phong Shading)、材质(Material)、光照贴图(Lighting Map)以及不同种类的投光物(Light Caster)。在这一节中,我们将结合之前学过的所有知识,创建一个包含六个光源的场景。我们将模拟一个类似太阳的定向光(Directional Light)光源,四个分散在场景中的点光源(Point Light),以及一个手电筒(Flashlight)。

为了在场景中使用多个光源,我们希望将光照计算封装到GLSL函数中。这样做的原因是,每一种光源都需要一种不同的计算方法,而一旦我们想对多个光源进行光照计算时,代码很快就会变得非常复杂。如果我们只在main函数中进行所有的这些计算,代码很快就会变得难以理解。

GLSL中的函数和C函数很相似,它有一个函数名、一个返回值类型,如果函数不是在main函数之前声明的,我们还必须在代码文件顶部声明一个原型。我们对每个光照类型都创建一个不同的函数:定向光、点光源和聚光。

当我们在场景中使用多个光源时,通常使用以下方法:我们需要有一个单独的颜色向量代表片段的输出颜色。对于每一个光源,它对片段的贡献颜色将会加到片段的输出颜色向量上。所以场景中的每个

OpenGL多光源Multiple lights相关推荐

  1. OpenGL multiple lights多光源的实例

    OpenGL multiple lights多光源 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #in ...

  2. OpenGL学习脚印:光源类型和使用多个光源(Light source and multiple lights)

    写在前面 上一节光照中使用材质和lighting maps介绍了使用材质属性和lighting maps使物体的光照效果能反映物体的材料特性,看起来更逼真.在前面的章节中使用的实际上都是一个点光源,本 ...

  3. Multiple Lights

    Multiple Lights 到目前为止,所有的effect中都只使用了一种光源(不算ambient light).但没有理由说明不能在同一种effect中结合使用directinal,point和 ...

  4. Vulkan_Shader_Day06—光照(多光源_Multiple lights)

    多光源_Multiple lights 我们在前面的教程中已经学习了许多关于Vulkan中光照的知识,其中包括冯氏着色(Phong Shading).材质(Material).光照贴图(Lightin ...

  5. 学习OpenGL:光源的种类和实现

    按照冯氏光照模型的说法,任何光线都被分割成环境光照.漫反射光照和镜面光照三部分,这三部分分别与物体产生作用叠加后得到我们看到的颜色.但是实际上在现实中有许多种不同的光源(Light Source),比 ...

  6. OpenGL完整教程专栏完整目录

    OpenGL完整教程专栏完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:OpenGL完整教程 数量:314篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加上去的博文, ...

  7. OpenGL进阶(十九) - 多光源

    从光说起 先看一段wiki中对光的定义 光是一种人类眼睛可以见的电磁波(可见光谱),视知觉就是对于光的知觉[1].光只是电磁波谱上的某一段频谱,一般是定义为波长介于400至700纳米(nm)之间的电磁 ...

  8. OpenGL学习之材质RGB值和光源RGB值关系

     材质的颜色与光源的颜色有些不同.对于光源,R.G.B值等于R.G.B对其最大强度的百分比.若光源颜色的R.G.B值都是1.0,则是最强的白光:若值变为0.5,颜色仍为白色,但强度为原来的一半,于 ...

  9. OPENGL学习脚印

    OPENGL学习脚印 声明:本文转载自wangdingqiao的博客专栏–OPENGL学习脚印,仅仅对OPENGL学习脚印专栏的文章进行了整理,方便初学者按照顺序学习.同时也在这里感谢原创博主提供的学 ...

最新文章

  1. R语言使用hexSticker包将ggplot2包可视化的结果转换为六角图(六角贴、六角形贴纸、ggplot2 plot to hex sticker)、并自定义设置文本的内容、文本对应的字体
  2. Dalvik Virtual Execution with SmaliVM
  3. Flink 在爱奇艺广告业务的实践
  4. ad 4层板设计实例文件_案例 | 美研【风险管理专业】1620Fall 310+申请实例
  5. Java获取登录用户IP地址
  6. 《剑指Offer》 二维数组中的查找
  7. 第2节 mapreduce深入学习:12、reducetask运行机制(多看几遍)
  8. python入门经典代码-Python入门经典
  9. 过期不候--具备生命周期的数据的技术实现方案
  10. Apollo ROS安装教程
  11. 除了Google Adsense外比较适合英文站投放的国外广告联盟
  12. BZOJ5109:[CodePlus 2017]大吉大利,晚上吃鸡! (最短路+Hash表+二进制压位)
  13. macbook清理磁盘空间
  14. 万兆交换机用什么网线_万兆交换机SFP+端口是否能与千兆交换机SFP端口连接?...
  15. WINDOWS下多个桌面切换
  16. 宝马上海车展全球首发新车;宁德时代宣布锂电产业最大规模碳中和规划;玛氏中国冰淇淋本土化生产 | 美通企业周刊...
  17. Taro引入阿里图标
  18. 拼多多校招-----六一儿童节(python)
  19. 服务器串口硬盘梅捷主板设置,梅捷主板bios设置ahci
  20. ROS通信机制一---话题通信

热门文章

  1. linux %3e%3e 重定向,当我访问HTTPS时,网站保持重定向到HTTP,无明显原因
  2. 分享一些Java开发人员在编程中最容易踩雷的地方!
  3. 大数据技术分享:hive内部常用函数都有哪些?
  4. android view 渐变动画,Android自定义view渐变圆形动画
  5. centos 6.8安装git_CentOS7安装GitLab、汉化、邮箱配置及使用
  6. python矩阵的平方_NumPy之计算两个矩阵的成对平方欧氏距离
  7. Python使用request包请求网页乱码解决方法
  8. minute教会你shell
  9. 爬虫笔记:Requests库详解
  10. Class 类文件结构