OpenGL多光源Multiple lights
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相关推荐
- OpenGL multiple lights多光源的实例
OpenGL multiple lights多光源 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #in ...
- OpenGL学习脚印:光源类型和使用多个光源(Light source and multiple lights)
写在前面 上一节光照中使用材质和lighting maps介绍了使用材质属性和lighting maps使物体的光照效果能反映物体的材料特性,看起来更逼真.在前面的章节中使用的实际上都是一个点光源,本 ...
- Multiple Lights
Multiple Lights 到目前为止,所有的effect中都只使用了一种光源(不算ambient light).但没有理由说明不能在同一种effect中结合使用directinal,point和 ...
- Vulkan_Shader_Day06—光照(多光源_Multiple lights)
多光源_Multiple lights 我们在前面的教程中已经学习了许多关于Vulkan中光照的知识,其中包括冯氏着色(Phong Shading).材质(Material).光照贴图(Lightin ...
- 学习OpenGL:光源的种类和实现
按照冯氏光照模型的说法,任何光线都被分割成环境光照.漫反射光照和镜面光照三部分,这三部分分别与物体产生作用叠加后得到我们看到的颜色.但是实际上在现实中有许多种不同的光源(Light Source),比 ...
- OpenGL完整教程专栏完整目录
OpenGL完整教程专栏完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:OpenGL完整教程 数量:314篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加上去的博文, ...
- OpenGL进阶(十九) - 多光源
从光说起 先看一段wiki中对光的定义 光是一种人类眼睛可以见的电磁波(可见光谱),视知觉就是对于光的知觉[1].光只是电磁波谱上的某一段频谱,一般是定义为波长介于400至700纳米(nm)之间的电磁 ...
- OpenGL学习之材质RGB值和光源RGB值关系
材质的颜色与光源的颜色有些不同.对于光源,R.G.B值等于R.G.B对其最大强度的百分比.若光源颜色的R.G.B值都是1.0,则是最强的白光:若值变为0.5,颜色仍为白色,但强度为原来的一半,于 ...
- OPENGL学习脚印
OPENGL学习脚印 声明:本文转载自wangdingqiao的博客专栏–OPENGL学习脚印,仅仅对OPENGL学习脚印专栏的文章进行了整理,方便初学者按照顺序学习.同时也在这里感谢原创博主提供的学 ...
最新文章
- R语言使用hexSticker包将ggplot2包可视化的结果转换为六角图(六角贴、六角形贴纸、ggplot2 plot to hex sticker)、并自定义设置文本的内容、文本对应的字体
- Dalvik Virtual Execution with SmaliVM
- Flink 在爱奇艺广告业务的实践
- ad 4层板设计实例文件_案例 | 美研【风险管理专业】1620Fall 310+申请实例
- Java获取登录用户IP地址
- 《剑指Offer》 二维数组中的查找
- 第2节 mapreduce深入学习:12、reducetask运行机制(多看几遍)
- python入门经典代码-Python入门经典
- 过期不候--具备生命周期的数据的技术实现方案
- Apollo ROS安装教程
- 除了Google Adsense外比较适合英文站投放的国外广告联盟
- BZOJ5109:[CodePlus 2017]大吉大利,晚上吃鸡! (最短路+Hash表+二进制压位)
- macbook清理磁盘空间
- 万兆交换机用什么网线_万兆交换机SFP+端口是否能与千兆交换机SFP端口连接?...
- WINDOWS下多个桌面切换
- 宝马上海车展全球首发新车;宁德时代宣布锂电产业最大规模碳中和规划;玛氏中国冰淇淋本土化生产 | 美通企业周刊...
- Taro引入阿里图标
- 拼多多校招-----六一儿童节(python)
- 服务器串口硬盘梅捷主板设置,梅捷主板bios设置ahci
- ROS通信机制一---话题通信
热门文章
- linux %3e%3e 重定向,当我访问HTTPS时,网站保持重定向到HTTP,无明显原因
- 分享一些Java开发人员在编程中最容易踩雷的地方!
- 大数据技术分享:hive内部常用函数都有哪些?
- android view 渐变动画,Android自定义view渐变圆形动画
- centos 6.8安装git_CentOS7安装GitLab、汉化、邮箱配置及使用
- python矩阵的平方_NumPy之计算两个矩阵的成对平方欧氏距离
- Python使用request包请求网页乱码解决方法
- minute教会你shell
- 爬虫笔记:Requests库详解
- Class 类文件结构