1,
(环境光,漫射光和镜面反射光),这三种模型都是基于平行光的。平行光只是通过一个向量来表示,没有光源起点,因此它不会随着距离的增大而衰减
点光源:它有光源起点而且有衰减效果,距离光源越远光线越弱。
平行光的方向是恒定的,但点光源光线的方向是变化的,四处扩散。
点光源向各个方向均匀照射,因此点光源的方向要通过计算物体到点光源之间的向量得到,这就是为什么要定义点光源的起点而不是它的方向。

但3D图形中这个公式计算的结果看上去效果并不好。例如:当距离很近时,光的强度接近无穷大了。另外,开发者除了通过设置光的起始强度外无法控制点光源的亮度,这样就太受限制了,因此我们添加了几个新的因素到公式中使对其的控制更加灵活:

在分母上添加了三个光衰减的参数因子,一个常量参数,一个线性参数和一个指数参数。当将常量参数和线性参数设置为零且指数参数设置为1时,就和实际的物理公式是对应的了,也就是这个特殊情况下在物理上是准确的。当设置常量因子参数为1时,调节另外两个参数整体上就有比较好的衰减变化效果了。
常量参数的设置是要保证当距离为0时光照强度达到最大(这个要在程序内进行配置),然后随着距离的增大光照强度要慢慢减弱,因分母在慢慢变大。
控制好线性参数因子和指数参数因子的变化,就可以实现想要的衰减效果,线性参数主要用于实现缓慢的衰减效果而指数因子可以控制光强度的迅速衰减。

2,

3,

4,

转载于:https://www.cnblogs.com/liuhan333/p/6629641.html

OpenGL_17_点光源相关推荐

  1. 6-6.用HLSL定义点光源

    6-6.用HLSL定义点光源 问题 直到现在,你已经用定向光照亮你的场景,它对添加阳光到3D世界很有用.常常,你也将需要一个单点光照,例如手电筒或爆炸.这种光源叫点光源. 方案 从你的XNA项目传递点 ...

  2. 利用OLED构成可控点光源: SSD1306

    简 介: 关键词: OLED,光敏电阻 #mermaid-svg-eZR9a846A386fB2N .label{font-family:'trebuchet ms', verdana, arial; ...

  3. Opengl-阴影(分为定向光的和点光源的)

    前言 我们模拟了光照,发现真的很厉害,加上天空盒子,再加上反射感觉很逼真,但是看着看着你会发现..不对,没影子.是的,光和影分不开的,有光的地方就会有影子,这才是真实的道理.怎么模拟影子呢?这就要用到 ...

  4. OpenGL在frag着色器中模拟点光源

    在3D世界中,模拟点光源实现对墙壁的光照.效果还是非常不错的. 思路如下: 准备一张墙壁图像. 自动生成墙壁的法线纹理. 模拟点光源. 添加漫反射. 随着时间变换进行规律性移动. 代码如下: #iCh ...

  5. OpenGL 点光源的多遍阴影贴图

    OpenGL点光源的多遍阴影贴图 OpenGL点光源的多遍阴影贴图简介 源代码剖析 主要源代码 OpenGL点光源的多遍阴影贴图简介 我们学习了阴影贴图的基础知识-第一次从光源位置通过使用光方向作为视 ...

  6. OpenGL 点光源阴影Point Shadows

    OpenGL点光源阴影Point Shadows 点光源阴影Point Shadows简介 生成深度立方体贴图 光空间的变换 深度着色器 万向阴影贴图 显示立方体贴图深度缓冲 PCF 点光源阴影Poi ...

  7. unity 烘焙参数 设置_Unity通用渲染管线(URP)系列(九)——点光源和聚光灯

    200+篇教程总入口,欢迎收藏: 放牛的星星:[教程汇总+持续更新]Unity从入门到入坟--收藏这一篇就够了​zhuanlan.zhihu.com 本文重点内容: 1.支持更多类型的灯光 2.包含实 ...

  8. C++ opengl 点光源

    关键源码如下: light.h #pragma once #include "ggl.h" class Light { protected:GLenum mLightIdentif ...

  9. UnityShader16:点光源和聚光灯

    一.点光源.聚光灯的特点 关于点光源和聚光灯的特点,可以参考下面的文章,只需要关心理论部分就ok了 点光源:https://blog.csdn.net/Jaihk662/article/details ...

最新文章

  1. Android NotificationCompat通知消息
  2. shell取出多列文件中某一列重复的数据
  3. Apache Ivy 2.5.0发布
  4. Python 程序的抽样分析器 - Py-Spy
  5. 什么是html的混杂模式_HTML的完整形式是什么?
  6. 应用管理系列 — 怎么管理Sybase数据库
  7. 公司管理系列--最难挖的阿里,最好挖的百度;最难走的360,最易走的腾讯
  8. kettle在linux定时任务_linux环境下kettle部署(JDK安装配置,kettle安装配置,资源库配置,定时执行job)...
  9. java常用算法手册 赵志云_Java常用算法手册
  10. 量子计算机未来猜想,太厉害了吧?这台量子计算机能预测16种不同的未来​!...
  11. c语言的按位取反运算符
  12. NSSM 注册PYTHON服务
  13. 一款用C++语言实现的3D游戏引擎(附源码),适用于想学3D游戏开发
  14. ps基础学习:图层叠加
  15. 通过3dmax将max文件导出为unity3d可用的带贴图的fbx文件
  16. 计算机一级二级三级缓存,CPU一级缓存,二级缓存和三级缓存是什么意思? CPU缓存有什么用?...
  17. 2.CPU体系架构-寄存器
  18. 真正实现网络下载,文件不落地.解决XmlHttp对象、winnet.dll、URLDownloadToFile生成的ie缓存(Hook_CreateFileW阻止缓存生成)
  19. #bzoj2240#积木游戏(DP? 贪心?)
  20. 彻底删除Cygwin

热门文章

  1. SAPGUI里实现自定义的语法检查
  2. python绘制不带颜色曲线图_Python数据可视化库-Matplotlib——折线图,子图绘制
  3. linux7自带haprox版本,CentOS7.4—构建最新版haproxy高可用群集
  4. linux防火墙没看3306访问不,Linux配置防火墙,开启80端口、3306端口
  5. 组合总和Python解法
  6. unity ui插件_用Unity制作GalGame/视觉小说游戏的模型素材与插件推荐
  7. 西门子博图的FB块_西门子S7-300/400PLC OB-FB-FC-DB块介绍
  8. ansible(自动化运维上)——ansible部署,添加主机组,连通性测试
  9. linux卸载已安装的java_Linux 中如何卸载已安装的软件(转载)
  10. c++如何输入数组_从一个数组中找出 N 个数,其和为 M 的所有可能最 nice 的解法...