OpenGL3.3_C++_Windows(8)

材质&&漫反射,光照贴图

  1. 使用struct为材质建立结构体,以便方便管理
  2. 漫反射贴图是物体的颜色值(纹理)(通过 UV 坐标映射到渲染物体的表面),材质是物体的属性(物体对光的交互)
  3. glm::rotate(lightPos, glm::radians(0.1f), glm::vec3(0.0f, 1.0f, 0.0f)) 表示旋转的对象、旋转的角度和旋转的轴。
  4. /\/\/\/\/\//\/\/\/\/\/\/\/\//\/\///\/\/\/\//\/\/\/\//\//\/\/\/\/\\/
  5. 向量转化:
  6. 访问向量的前几个分量:xyzw,rgba,stpq(.)符号访问
  7. 增添分量:vecx( vecx,……,……)
  8. /\/\/\/\/\//\/\/\/\/\/\/\/\//\/\///\/\/\/\//\/\/\/\//\//\/\/\/\/\\/
  9. 光照贴图:由黑白颜色组成 * 镜面反射光,颜色黑到白(0.0——1.0),所以贴图颜色值越接近白色,镜面反射越强
  10. 光照贴图作用:根据贴图决定,镜面光对物体的每个部分的影响

投光物

  1. 我们可以根据物体的材质,计算光对物体的影响,但是光也有自己的模型(平行光,点光,聚光)
  2. 比如点光根据半径范围,强度逐渐衰减,那么根据物体与点光源的距离,需要获得新的光照强度,再计算光对物体的影响
  3. 比如聚光,会有方向以及切光角,在聚光范围内才会有光强度,并且如果执行了边缘软化,也会有光强度的影响
  4. 平行光不会向周围发射,光线平行,意味着不同位置的物体,接受的光线角度是一致的
  5. /\/\/\/\/\//\/\/\/\/\/\/\/\//\/\///\/\/\/\//\/\/\/\//\//\/\/\/\/\\/
  6. 点光源:之前模拟的就是点光源,这次增加了衰减,更真实的渲染效果
  7. 衰减:光线传播距离的增长逐渐削减光的强度
  8. d为片段到光的距离,距离越远d越大,一次项越大,作为分母,衰减值越小
  9. 二次项随着d的增加,变化幅度越快,作为分母,衰减值越小
  10. 衰减 = 1.0f /(1(控制分母>1,让强度值保持在0——1之间,让光强度只会减少不会增加)+一次项(线性)+二次项(距离越远,衰减速度越慢))
  11. 一次项:1/10 = 0.1;1/20= 0.05;1/30=0.03
  12. 二次项:1/100 = 0.01;1/400 = 0.0025;1/900=0.0011
  13. 由此可见,衰减速度都会越来越慢,并且二次项,对速度影响更大
  14. 通过一次二次项系数,调整衰减函数,从而影响光源的半径(点光源),
  15. 衰减值分别乘以环境光、漫反射和镜面光颜色
// attenuation
float distance    = length(lightPos - v_Position);
float attenuation = 1.0 / (light.constant + light.linear * distance + light.quadratic * (distance * distance));    
  1. /\/\/\/\/\//\/\/\/\/\/\/\/\//\/\///\/\/\/\//\/\/\/\//\//\/\/\/\/\\/
  2. 聚光:只朝一个特定方向而不是所有方向照射光线,只有在聚光方向的特定半径内的物体才会被照亮
  3. 光的位置,SpotDir聚光的方向,LightDir光线方向,Phi𝜙聚光半径的切光角,Theta𝜃光线方向和聚光方向的夹角
  4. 计算LightDir向量和SpotDir向量之间的点积,角度越大,光强度越小。
  5. 向量的标准化:向量每个分量  /  向量长度(标量),最后向量长度变为1,方向不变
  6. 将要被点乘的向量归一化,指关心方向,所以点乘结果和向量长度无关,只和方向有关
  7. /\/\/\/\/\//\/\/\/\/\/\/\/\//\/\///\/\/\/\//\/\/\/\//\//\/\/\/\/\\/
  8. 以摄像机作为手电筒,相机前方为聚光方向
  9. 如何判断当前的片段是否在聚光内呢?
  10. 从聚光起始点(摄像机位置)到片段的向量(光线),计算与聚光方向的dot点乘,然后判断点乘的cos角度,是否在切光角内部,
  11. 因为切光角是角度,为了节约一点性能开销,需要把切光角glm::cos()转为cos,而不是将点积结果的反余弦
  12. 这里theta 差值 > light.cutOff进行光照计算:是因为角度都转化为了cos,一个0度的角度表示的是1.0的余弦值,而一个90度的角度表示的是0.0的余弦值。从而角度越大,cos越小,所以应该>cos角度才行。
  13. 最后如果在聚光内,执行光照计算,否则只有纹理颜色值+一点环境光(让场景在聚光之外时不至于完全黑暗)

  14. 我们现在就有了两个光源,手电筒,和点光源
  15. /\/\/\/\/\//\/\/\/\/\/\/\/\//\/\///\/\/\/\//\/\/\/\//\//\/\/\/\/\\/
  16. 边缘软化:新建外圆锥,原切光角为内圆锥,光从内圆锥逐渐减暗,直到外圆锥的边界
  17. 计算:(  (当前角度cos - 外光切cos) / (内光切 cos- 外光切cos) )
  18. 注意,角度越大cos越小,设内外光切不变,内 - 外 = 正值
    1. 角度>在内外光切之间,分子为正数,差值 < 内外光切差值,聚光强度 <1
    2. 角度>外光切时,分子为负数,聚光强度 < 0 
    3. 角度<内光切时,分子为正数,差值 > 内外光切差值,聚光强度 >1
  19. 不再需要if-else,因为在切光角范围外,聚光强度为负,
  20. 是为了光照避免为负数,需要clamp()约束到0——1之间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/27026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW故障预测

在LabVIEW故障预测中&#xff0c;振动信号特征提取的关键技术主要包括以下几个方面&#xff1a; 时域特征提取&#xff1a;时域特征是直接从振动信号的时间序列中提取的特征。常见的时域特征包括振动信号的均值、方差、峰值、峰-峰值、均方根、脉冲指数等。这些特征能够反映振动…

LLM 中什么是Prompts?如何使用LangChain 快速实现Prompts 一

LLM 中什么是Prompts&#xff1f;如何使用LangChain 快速实现Prompts 一 Prompt是一种基于自然语言处理的交互方式&#xff0c;它通过机器对自然语言的解析&#xff0c;实现用户与机器之间的沟通。 Prompt主要实现方式是通过建立相应的语料库和语义解析模型&#xff0c;来将自…

「实战应用」如何用DHTMLX将上下文菜单集成到JavaScript甘特图中(一)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求&#xff0c;是最完善的甘特图图表库。 DHTMLX Gantt是一个高度可定制的工具&#xff0c;可以与项目管理应用程序所需的其他功能相补充。在本文中您将学习如何使用自定义上…

【Numpy】一文向您详细介绍 np.sqrt()

【Numpy】一文向您详细介绍 np.sqrt() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;曾…

AI日报|Luma推出AI视频模型,又一Sora级选手登场?SD3 Medium发布,图中文效果改善明显

文章推荐 AI日报&#xff5c;仅三个月就下架&#xff1f;微软GPT Builder出局AI竞争赛&#xff1b;马斯克将撤回对奥特曼的诉讼 谁是最会写作文的AI“考生”&#xff1f;“阅卷老师”ChatGPT直呼惊艳&#xff01; ⭐️搜索“可信AI进展“关注公众号&#xff0c;获取当日最新…

Three.js的渲染器:WebGLRenderer、CSS3DRenderer、SVGRenderer

我们都晓得渲染器是负责将场景中的3D对象转换为2D图像&#xff0c;然后显示在屏幕上&#xff0c;three.js内置了多种渲染器&#xff0c;来应对不同的和需求&#xff0c;贝格前端工场老司机&#xff0c;简要和大家分享下。 一、渲染器的定义和作用 在Three.js中&#xff0c;渲…

凯伦股份中标中铁置业2024-2026年度防水材料框架协议采购项目!

近日&#xff0c;凯伦股份收到了中铁置业集团有限公司发来的中标通知书&#xff0c;确定凯伦公司为其2024年度-2026年度防水材料框架协议采购项目的中标人&#xff0c;正式成为中铁置业集团的合作供应商。 中铁置业集团有限公司是中国中铁股份有限公司的全资子公司&#xff0c;…

Llama3-8B到底能不能打?实测对比

前几天Meta开源发布了新的Llama大语言模型&#xff1a;Llama-3系列&#xff0c;本次一共发布了两个版本&#xff1a;Llama-3-8B和Llama-3-70B&#xff0c;根据Meta发布的测评报告&#xff0c;Llama-3-8B的性能吊打之前的Llama-2-70B&#xff0c;也就是说80亿参数的模型干掉了70…

一篇文章教你学会如何用云服务器搭建https网站

首先我们要明白为什么要通过云服务器来搭建https网站&#xff0c;这是因为通过使用云服务器搭建 HTTPS 网站&#xff0c;可以为我们提供更高的安全性和信任度。 一&#xff0c;前期的准备工作分为三大类&#xff1a;一台云服务器&#xff0c;域名&#xff0c;SSL证书&#xff1…

RAG 实践-Ollama+AnythingLLM 搭建本地知识库

什么是 RAG RAG&#xff0c;即检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09;&#xff0c;是一种先进的自然语言处理技术架构&#xff0c;它旨在克服传统大型语言模型&#xff08;LLMs&#xff09;在处理开放域问题时的信息容量限制和时效性不足。RAG的…

pg——psql命令行交互式客户端工具

1、启动数据库 ./pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log 2、登录数据库 psql template1 3、查看所有数据库 \l 4、创建数据库 create database testdb; 5、连接某数据库 \c 数据库 6、查看数据下的表 \d 7、 查看数据库下的所有schema \dn 8、查看表的结构…

BSV及BTC减半来袭,Teranode如何确保节点未来依然有足够的收入

​​发表时间&#xff1a;2024年4月12日 随着BTC第四次区块奖励减半的完成&#xff0c;加密资产行业正处于某种程度的狂热之中。这使得与扩容以及经济可持续性相关的讨论日益增加。 BTC价格的波动性强是众所周知的&#xff0c;经常几分钟内价格突然飙升或急速下跌&#xff0c;…

wmv转换mp4怎么操作?3个格式转换方法分享

wmv转换mp4怎么操作&#xff1f;将WMV转换为MP4格式&#xff0c;可以方便我们在多种设备和平台上流畅播放视频。MP4格式具有广泛的兼容性和优化过的编码&#xff0c;使其在各种媒体播放器、智能手机、平板电脑以及电视上都能得到良好的支持。此外&#xff0c;MP4格式的视频文件…

Spring Boot集成tablesaw插件快速入门Demo

1 什么是tablesaw&#xff1f; Tablesaw是一款Java的数据可视化库&#xff0c;主要包括两部分&#xff1a; 数据解析库&#xff0c;主要用于加载数据&#xff0c;对数据进行操作(转化&#xff0c;过滤&#xff0c;汇总等)&#xff0c;类比Python中的Pandas库&#xff1b; 数据…

网络安全(补充)

针对网络信息系统的容灾恢复问题&#xff0c;国家制定和颁布了《信息安全技术信息系统灾难恢复规范&#xff08;GB/T 20988-2007&#xff09;》&#xff0c;该规范定义了六个灾难恢复等级和技术要求&#xff1a;第一级基本支持&#xff08;要求至少每周做一次完全数据备份&…

上海晋名室外危废品暂存柜助力储能电站行业危废品安全储存

近日又有一台SAVEST室外危废暂存柜项目成功验收交付使用&#xff0c;此次项目主要用于储能电站行业废油、废锂电池等危废品的安全储存。 用户单位在日常工作运营中涉及到废油、废锂电池等危废品的室外安全储存问题。4月中旬用户技术总工在寻找解决方案的过程中搜索到上海晋名的…

华为wlan实验

分为三步&#xff1a;1、网络互通&#xff0c;2、AP上线&#xff0c;3、wlan业务 1、网络互通 crow-sw: vlan batch 20 100 dhcp enable int vlan 20 ip add 192.168.20.1 24 dhcp select interfaceinterface GigabitEthernet0/0/2port link-type accessport default vlan 100…

matlab 任意二维图像转点云

目录 一、概述二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 给定任意一张图片,通过代码操作将图片转成点云。图像中包含大量可用信息,其中必不可少的信息为像素坐标和像素值,将像…

FastDFS简介与调优

背景&#xff1a;FastDFS在公司使用多年&#xff0c;一直作为主要文件存储服务使用。经过多场景、多项目实战检验。稳定性、性能均满足实战要求。相关使用介绍及调优给大家分享一下。 1.简介 FastDFS是淘宝架构师_余庆用C语言编写的一款开源的分布式文件系统&#xff0c;源码目…

汇编:EFLAGS寄存器

EFLAGS寄存器是x86架构处理器中的一个状态寄存器&#xff0c;用于存储当前处理器状态和控制特定操作&#xff1b;寄存器中的各个标志位可以影响指令执行&#xff0c;并且指令执行过程中也可以修改这些标志位&#xff0c;每个位都有特定的含义。 EFLAGS寄存器图示&#xff1a; …