LearnOpenGL学习笔记——投光物

华为MetaERP Oracle EBS OM(订单管理)模块详解作为ERP财务解决方案架构师,理解OM模块的业务全景和数据模型至关重要。OM是EBS分销链路的核心引擎,贯穿“订单到收款“(Orde Oracle EBS OM模块是管理销售订单全生命周期的核心模块,涵盖客户管理、订单执行、发运开票、定价及信用控制等功能。其标准流程包括订单录入、预订、发放、发运确认和自动开票等环节,核心数据表涉及订单、客户、发运和定价等业务对象。OM模块与库存、应收、发运等模块深度集成,架构师需重点设计订单类型、信用控制策略和自动开票接口等关键环节,确保业务流程高效流转。 阅读详情

平行光

当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向。当我们使用一个假设光源处于无限远处的模型时,它就被称为定向光,因为它的所有光线都有着相同的方向,它与光源的位置是没有关系的。因为所有的光线都是平行的,所以物体与光源的相对位置是不重要的,因为对场景中每一个物体光的方向都是一致的。由于光的位置向量保持一致,场景中每个物体的光照计算将会是类似的。
在这里插入图片描述

struct Light {
    // vec3 position; // 使用定向光就不再需要了
    vec3 direction;
    vec3 ambient;
    vec3 diffuse;
    vec3 specular;
};
...
void main()
{
  vec3 lightDir = normalize(-light.direction);
  ...
}

点光源

定向光对于照亮整个场景的全局光源是非常棒的,但除了定向光之外我们也需要一些分散在场景中的点光源(Point Light)。点光源是处于世界中某一个位置的光源,它会朝着所有方向发光,但光线会随着距离逐渐衰减。想象作为投光物的灯泡和火把,它们都是点光源。
在这里插入图片描述
衰减
在这里插入图片描述
在这里d代表了片段距光源的距离。接下来为了计算衰减值,我们定义3个(可配置的)项:常数项Kc、一次项Kl和二次项Kq。

  • 常数项通常保持为1.0,它的主要作用是保证分母永远不会比1小,否则的话在某些距离上它反而会增加强度,这肯定不是我们想要的效果。
  • 一次项会与距离值相乘,以线性的方式减少强度。
  • 二次项会与距离的平方相乘,让光源以二次递减的方式减少强度。二次项在距离比较小的时候影响会比一次项小很多,但当距离值比较大的时候它就会比一次项更大了。
    -由于二次项的存在,光线会在大部分时候以线性的方式衰退,直到距离变得足够大,让二次项超过一次项,光的强度会以更快的速度下降。这样的结果就是,光在近距离时亮度很高,但随着距离变远亮度迅速降低,最后会以更慢的速度减少亮度。下面这张图显示了在100的距离内衰减的效果:
    在这里插入图片描述

聚光

我们要讨论的最后一种类型的光是聚光(Spotlight)。聚光是位于环境中某个位置的光源,它只朝一个特定方向而不是所有方向照射光线。这样的结果就是只有在聚光方向的特定半径内的物体才会被照亮,其它的物体都会保持黑暗。聚光很好的例子就是路灯或手电筒。
OpenGL中聚光是用一个世界空间位置、一个方向和一个切光角(Cutoff Angle)来表示的,切光角指定了聚光的半径(译注:是圆锥的半径不是距光源距离那个半径)。对于每个片段,我们会计算片段是否位于聚光的切光方向之间(也就是在锥形内),如果是的话,我们就会相应地照亮片段。下面这张图会让你明白聚光是如何工作的:
在这里插入图片描述

  • LightDir:从片段指向光源的向量。
  • SpotDir:聚光所指向的方向。
  • Phiϕ:指定了聚光半径的切光角。落在这个角度之外的物体都不会被这个聚光所照亮。
  • Thetaθ:LightDir向量和SpotDir向量之间的夹角。在聚光内部的话θ值应该比ϕ值小。
    平滑/软化边缘
    为了创建一种看起来边缘平滑的聚光,我们需要模拟聚光有一个内圆锥(Inner Cone)和一个外圆锥(Outer Cone)。我们可以将内圆锥设置为上一部分中的那个圆锥,但我们也需要一个外圆锥,来让光从内圆锥逐渐减暗,直到外圆锥的边界。

为了创建一个外圆锥,我们只需要再定义一个余弦值来代表聚光方向向量和外圆锥向量(等于它的半径)的夹角。然后,如果一个片段处于内外圆锥之间,将会给它计算出一个0.0到1.0之间的强度值。如果片段在内圆锥之内,它的强度就是1.0,如果在外圆锥之外强度值就是0.0。
在这里插入图片描述
这里ϵ(Epsilon)是内(ϕ)和外圆锥(γ)之间的余弦值差(ϵ=ϕ−γ)。最终的I值就是在当前片段聚光的强度。

https://learnopengl-cn.github.io/02%20Lighting/05%20Light%20casters/

宽压 DC⇌DC 也能“随心所欲”——全桥 LLC 混合控制硬核拆解 硬件派 vs. 软件派:多电平是“器件堆砌”,混合控制是“算法魔改”。预算紧 → 先搞软件。仿真别嫌烦:PLECS 把两条曲线扫透,切换点、死区、φ 都调到波形平滑再上板。温升留 20 ℃ 余量:车规≥125 ℃,实验室测 105 ℃ 就算危险,别玩极限。 阅读详情

相关推荐

EDA与机器学习融合:智能优化芯片设计流程的工程实践

机器学习作为数据驱动的核心技术,通过从历史数据中学习复杂模式,实现对系统行为的预测与优化。其原理在于构建模型,将输入特征映射到目标变量,从而揭示数据背后的内在规律。在工程领域,这项技术的核心价值在于能够将专家经验转化为可量化、可复用的智能模型,显著提升自动化水平与决策效率。电子设计自动化(EDA)是芯片设计的关键支撑,传统流程高度依赖人工试错,面临参数空间巨大、优化周期长等挑战。将机器学习应用于EDA,能够构建预测模型来预估设计性能(PPA),或通过代理模型加速设计空间探索,实现智能化的设计辅助与优化。本文

weixin_30411239的博客 684

【LearnOpenGL学习笔记】——12.投光物+多光源

文章目录1.光源分类 1.光源分类 (1)平行光 到各个物体的光源方向都相等,因此光源位置没必要进行设置,可以通过直接设置光源方向Direction来计算lightDir向量 注意:光的位置和位置向量一般定义为vec3,如果用vec4的话: ①位置向量需要将w分量设置为1.0,这样才能保证平移和投影的正确 ②方向向量需要将w分量设置为0 if(lightVector.w == 0.0) // 注意浮点数据类型的误差 // 执行定向光照计算 else if(lightVector.w == 1.0)

qq_45974407的博客 747

Stata实战:DID平行趋势检验完整操作指南(附reghdfe+coefplot代码)

本文提供了一份使用Stata进行DID平行趋势检验的完整实战指南。文章详细讲解了从数据准备、生成相对时间变量,到利用reghdfe命令构建动态效应模型,以及使用coefplot命令进行结果可视化的全流程操作。核心在于通过检验政策前交互项的显著性,验证处理组与对照组是否满足平行趋势假设,为后续因果推断奠定可靠基础。

weixin_29231725的博客 1380

LearnOpenGL——光照(五)投光物

本文介绍了三种不同类型的光源及其实现方法:定向光、点光源和聚光。重点讲解了定向光的模拟原理,通过定义光线方向向量而非位置向量来模拟无限远光源(如太阳)的效果。同时详细阐述了点光源的衰减机制,提出使用包含常数项、一次项和二次项的公式来实现光线随距离递减的效果,并提供了不同距离下的参数参考表。通过调整这些参数,可以模拟出真实世界中光线的自然衰减特性,从而在3D场景中实现更逼真的光照效果。

QQ805009795的博客 642

MaixCAM2 4K AI相机硬件解析与开发实战

嵌入式AI视觉开发中,边缘计算设备的选择直接影响项目落地效果。以NPU为核心的AI加速技术通过专用指令集优化,可在低功耗下实现10+TOPS算力,典型应用包括工业质检、智能门禁等实时场景。MaixCAM2作为新一代4K AI相机,搭载AX630 SoC芯片,其双核Cortex-A53与NPU的异构架构,在运行YOLOv11n模型时可达113FPS,显著优于传统方案。开发时需注意模型量化部署技巧,如INT8量化需500+张校准图片覆盖多光照条件,避免准确率下降。设备扩展性方面,PMOD接口支持热成像、ToF传

weixin_30819085的博客 690

Zephyr RTOS -- 学习笔记总述

文章目录摘要1. 开发基础部分2. 内核服务入门 本笔记基于 Zephyr 版本 2.6.0-rc2 摘要 1. 开发基础部分 2. 内核服务入门 2.1 线程简介 2.2 线程 2.3 工作队列线程 2.4 调度 2.5 中断 2.6 轮询 API 2.7 信号量

思想给了我们太多的自由,而我们拖累了思想...... 4825

LearnOpenGL学习(光照 -- 投光物,多光源)

将光(Cast)到物体的光源叫做投光物(Light Caster)

zaizai1007的博客 609

一文详解脉搏血氧测量原理与方法

本文摘要:血氧饱和度(SpO2)是评估人体氧合功能的重要指标,反映血红蛋白携氧能力。其测量基于光电容积描记法(PPG),利用红光(660nm)和红外光(940nm)通过组织时的吸收差异计算。脉搏波特征与心血管状态相关,动脉硬化会影响波形特征。Masimo公司的信号提取技术(SET)通过并行算法有效解决了传统血氧仪在运动、弱灌注情况下的测量误差问题,显著提升了临床监测的准确性和可靠性。该技术已成为血氧监测的金标准,在降低误报率、缩短响应时间方面具有显著优势。

m0_50146396的博客 2015

LearnOpenGL 光照—投光物

文章目录写在前面投光物平行光点光源衰减选择正确的值实现衰减聚光手电筒平滑/软化边缘总结 写在前面 原文链接。原文应该是github上的一个项目,本文主要用来记录一些知识点和自己遇到的问题。 投光物 我们目前使用的光照都来自于空间中的一个点。它能给我们不错的效果,但现实世界中,我们有很多种类的光照,每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light Caster)。在这一节中,我们将会讨论几种不同类型的投光物。学会模拟不同种类的光源是又一个能够进一步丰富场景的工具。 我们首先将会讨论定向

xiji333的博客 335

ADS 2023 实战:手把手教你仿真一个中心频率 2.4GHz 的带通滤波器(附工程文件)

本文详细介绍了使用ADS 2023软件设计和仿真中心频率2.4GHz带通滤波器的全流程,包括工程准备、指标定义、原理图设计、仿真优化及实际电路实现。通过切比雪夫滤波器拓扑和参数优化,实现高性能的带通滤波器设计,适用于无线通信系统。附有工程文件和常见问题解决方案,助力工程师快速掌握射频滤波器设计技巧。

weixin_30790841的博客 482

24、汽车黑客技术全解析:诊断代码、车库创建与系统攻防

本文深入探讨了汽车黑客技术的核心内容,包括诊断代码模式与参数ID、创建开放车库社区、汽车系统相关技术、硬件与软件工具、攻击与防御手段,以及车辆通信与网络安全。无论你是汽车安全研究人员、爱好者还是开发者,都能从中获取全面的技术解析与实践指南。

Apple的专栏 228

LearnOpenGL->光照->投光物/多光源

LearnOpenGL光照篇的最后两节

2201_75303014的博客 926

MICCAI‘23 | TSegFormer:基于几何引导Transformer的口内扫描3D牙齿分割

光学口内扫描仪(IOS)在数字牙科中广泛应用于提供牙冠和牙龈的详细3D信息。准确的3D牙齿分割对于各种牙科应用至关重要,但现有方法在复杂边界处容易出错,并且在不同患者之间表现不佳。本文提出了TSegFormer,它通过多任务3D Transformer架构捕捉IOS点云中不同牙齿和牙龈之间的局部和全局依赖关系。此外,作者设计了一种基于新颖点曲率的几何引导损失,以端到端方式优化边界,避免了耗时的后处理,从而实现临床适用的分割。

小白学视觉 291

learnOpenGL_12_投光物

1、 将光投射(Cast)到物体的光源叫做投光物(Light Caster)。包括平行光、点光源、聚光源。 2、 平行光 当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向。当使用一个假设光源处于无限远处的模型时,它就被称为定向光,因为它的所有光线都有着相同的方向,它与光源的位置是没有关系的。 因为所有的光线都是平行的,所以物体与光源的相对位置是不重要的,因为对场景中每一个物体光的方向都是一致的。由于光的位置向量保持一致,场

qq_38526811的博客 427

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LearnOpenGL-光照-5.投光物

这里需要定义平行光的方向**向下**,才符合太阳的光照照射(指向)方向,所以计算漫反射和镜面光强度的时候需要**取反**得到光源的方向向量。 - 简介 当我们使用一个假设光源处于**无限**远处的模型时,它就被称为**定向光**,因为它的所有光线都有着**相同**的方向,它与**光源的位置是没有关系**的。

qq_34060370的博客 1034

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LearnOpenGL笔记- 投光物

现实世界中,在离光源越近的地方光照强度越大,衰减越快,离光源越远的地方光照强度越小,衰减越慢。外圆锥的设置与内圆锥基本一致,在设置在内圆锥内强度为1.0,外圆锥外强度为0.0,之间逐渐递减,可利用如下公式来实现。常数项通常保持为1.0,它的主要作用是保证分母永远不会比1小,否则的话在某些距离上它反而会增加强度,这肯定不是我们想要的效果。在内外圆锥之间逐渐递减,在内圆锥内为大于1的值,在外圆锥外为小于0的值,由此限制在0-1之间。随着距离增长,它的强度明显减弱,并缓慢地在距离大约100的时候强度接近0。

qq_46256596的博客 189

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

OpenGL学习——13.投光物_平行光

在这篇博客文章中,我们将深入探讨OpenGL中的平行光,了解它的工作原理、特点以及如何在渲染中应用它。无论您是初学者还是有一定经验的开发者,阅读本文都将帮助您更好地理解和使用OpenGL中的平行光。本文章不以该学习文档做任何商业盈利活动,一切著作权归原作者所有,本文仅供学习交流,如有侵权,请联系我删除。无论您是一个有经验的OpenGL开发者,还是一个对此领域感兴趣的新手,您的想法和观点都是宝贵的。如果您有任何关于本文中提到的内容的疑问,我将竭诚为您解答。我相信通过我们的互动,我们可以一起学习和提高。

用于记录学习的博客 2368

learnOpenGL 2.4 投光物

多个箱子 创建多个箱子的过程与第一章中类似,下面是主程序中的代码 glm::vec3 cubePositions[] = { ...}; glBindVertexArray(cubeVAO); for (int i = 0; i < 10; i++) { glm::mat4 model = glm::mat4(1.0f); model = glm::translate(model, cubePositions[i]

qq_43533956的博客 187

OpenGL学习——14.投光物_点光源

无论是为游戏创建逼真的光影效果,还是为模拟现实世界中的光照情况,点光源在OpenGL中扮演着重要的角色。在本文中,我们将深入探讨OpenGL中点光源的基本原理、使用方法以及如何优化其性能,为您揭示点光源背后的奥秘。无论您是OpenGL的新手还是经验丰富的开发者,本文都将为您提供有关点光源的全面指南,帮助您在图形编程的旅程中迈出重要的一步。无论您是一个有经验的OpenGL开发者,还是一个对此领域感兴趣的新手,您的想法和观点都是宝贵的。如果您有任何关于本文中提到的内容的疑问,我将竭诚为您解答。

用于记录学习的博客 2198

LearnOpenGL10——实现三种类型的光照(投光物)

转载自 https://learnopengl-cn.github.io/02%20Lighting/05%20Light%20casters/#_9 https://blog.youkuaiyun.com/qq_36696486/article/details/104338653 平行光 当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向。当我们使用一个假设光源处于无限远处的模型时,它就被称为定向光,因为它的所有光线都有着相同的方向,它

白小飞 355

OpenGL with QtWidgets:投光物、多光源

(本文是LearnOpenGL的学习笔记,教程中文翻译地址https://learnopengl-cn.github.io/(备用地址https://learnopengl-cn.readthedocs.io/zh/latest/),写于 2021-10-2) 0.前言 上一节学习了材质和光照贴图(https://gongjianbo1992.blog.youkuaiyun.com/article/details/120397134),教程接下来讲了投光物和多光源。 1.知识点 投光物就是在基础光照的内容上..

龚建波 681

LearnOpenGL笔记7材质、光照贴图、投光

材质、光照贴图材质光照贴图漫反射贴图投光物平行光点光源聚光平滑、软化边缘多光源 材质颜色(material color) 环境光照(ambient lighting) 漫反射光照(diffuse lighting) 镜面光照(specular lighting)通过每个分量指定一个颜色 再加上反光度(shiniess) 材质 片段着色器中,结构体储存物体材质,可以把它们储存为独立的uniform,定义结构体的布局(layout),使用刚创建的结构体为类型,简单声明一个uniform变量。 ambient材质

Suqiaoyi的博客 439

OpenGL学习——15.投光物_聚光

聚光灯是一种模拟现实世界中的手电筒或探照灯效果的光源,可以将光线集中在一个特定的方向上,照亮感兴趣的区域,同时将周围的环境置于阴影之中。无论是为游戏中的闪光效果增添真实感,还是为模拟现实世界中的照明情景,聚光灯在OpenGL中扮演着重要的角色。无论您是OpenGL的新手还是经验丰富的开发者,本文都将为您提供有关聚光灯的全面指南,助您在图形编程的旅程中迈出重要的一步。无论您是一个有经验的OpenGL开发者,还是一个对此领域感兴趣的新手,您的想法和观点都是宝贵的。另外在运行程序时,请打开键盘的英文大写锁定,

用于记录学习的博客 1443

LearnOpenGL笔记——二、光照:“光照贴图”、“投光物”和“多光源”

二、光照:“光照贴图”、“投光物”和“多光源” 2.4 光照贴图 漫反射贴图:实际就是把环境光和漫反射光中的物体对应变量转为了漫反射纹理贴图采样的一点 镜面光贴图:实际就是把镜面反射光中的物体对应变量转为了镜面光纹理贴图采样的一点 练习 2.5 投光物 平行光 点光源 涉及衰减 聚光 手电筒:一个位于观察者位置的聚光 平滑/软化边缘的问题 2.6 多光源 本节内容即为把上一节的内容整合到一起,并把各种投光方式在像素着色器中进行简单的封装 练习:在下面评论区看到有人做

weixin_44478658的博客 216

learnOpenGL-投光物

需要定义光源位置position,光的方向direction,光照角度cutOff。以此计算LightDir:片段指向光源的方向,SpotDir聚光所指方向,Phiϕ聚光半径的切光角,Thetaθ聚光方向SpotDir与片段和光源方向LightDir的夹角。需要根据距离计算光的衰减。要定义constant,linear,quadratic设置三个参数作为衰减公式的参数。需要定义从光源出发的方向direction。但计算时使用的是从片段指向光源的方向。聚光:位于环境中某处的光源,只朝一个方向照射。

Mhypnos的博客 195

【OpenGL_04】颜色、 基础光照、材质、光照贴图、投光物

在LearnOpenGL网站学习,记录一下学习笔记 文章目录颜色颜色基础光照法线矩阵材质材质初定义光照贴图投光物平行光点光源衰减聚光聚光平滑/软化边缘 颜色 颜色 物体呈现的颜色可以由lightColor与ObjectColor进行点乘获得 基础光照 Phong模型相关知识在博客【Notes_5】现代图形学入门——着色(光照模型、着色频率、重心坐标) 法线矩阵 Model变换矩阵的不等比缩放会对法线位置产生影响,为了消除这种影响,要使用法线矩阵,它使用了一些线性代数的操作来移除对法向量错误缩放的影响。

weixin_44794443的博客 509
上一篇: LearnOpenGL学习笔记——光照贴图
下一篇: LearnOpenGL学习笔记——深度测试
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值