当前位置: 首页 > news >正文

OpenGL3.3_C++_Windows(22)

材质:

  • 决定物体在渲染过程中最终视觉呈现的关键因素之一,它通过一系列光学(投光物)和物理参数(反光度,反照率、金属度,折射率……)准确模拟现实世界中的材料特性,从而增强虚拟环境的逼真度和沉浸感。
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);

首先看一下冯氏光照模型镜面反射的计算:

  • 将(视线,反射光线)点乘,角度越小(0——90)cos越大,
  • 通过max控制结果非负,当(>90)度,结果为负值,取0,【0——1】
  • 通过pow,取反光度^幂,当反光度越高,函数的曲线会陡增的越明显
  • 反光度越高,反射光的能力越强,散射得越少,高光点就会越小

注意:

  • 物体反光度很时,没有什么大影响,大多数观察方向与反射方向的pow结果都很小,只有一小部分很亮,大部分都是暗的,这种一个小圆圈点的断层几乎每什么影响
  • 物体反光度很时,高光 的范围会很大,当(视线,反射光线)(>90)度,结果为负值取0,会出现了很大的的断层(亮部--暗部)
  • 对于漫反射angle为负数是正确的,(入射光线,法线)点乘,如果>90度,光线位于物体片段的下方,确实不会产生漫反射结果。

Blinn-Phong着色模型:(解决了断层问题)

  • 对镜面光模型的处理上有一些不同,不再依赖于反射向量
  • 半程向量:

  • 光线与视线夹角一半方向上的一个单位向量,当半程向量与法线向量越接近时,镜面光分量就越大。
  • 当视线正好与反射向量对齐时,半程向量就会与法线完美契合,当观察者视线越接近于原本反射光线的方向时,镜面高光就会越
  • 半程向量与表面法线之间的夹角都不会超过90度:(除非光源在表面以下)

  • 首先如果视线在表面下,我们看不到片段,所以不必关心它的最终结果,光源在表面以下会照射底面,而照射不到上面,所以视线和光线都应在表面上方。而法线距离半程的最大值,为视线和光线都为0 / 180 度时

计算半程:

vec3 halfwayDir = normalize(lightDir + viewDir);  
spec = pow(max(dot(normal, halfwayDir), 0.0), 16.0);
  • 向量相加(入射光线 + 视线 ) /  |(入射光线 + 视线 )|正规化(只关心半程向量方向,不关系长度)

  • 计算Blinn-Phong的镜面光:……只需要dot(半程,法线)……

  • 半程向量与表面法线的夹角通常会小于观察与反射向量的夹角(意味着相同片段位置,dot结果更大,pow结果更大,高光散射范围广):
  • 所以应将镜面反光度设置更高一点,让高光范围更集中

http://www.lryc.cn/news/386564.html

相关文章:

  • electron-builder 打包过慢解决
  • leetcode226反转二叉树
  • 【自然语言处理系列】探索NLP:使用Spacy进行分词、分句、词性标注和命名实体识别,并以《傲慢与偏见》与全球恐怖活动两个实例文本进行分析
  • 【Rust】function和methed的区别
  • python基础语法 003-4 数据类型集合
  • Vue如何引用组件
  • vue3中省市区联动在同一个el-form-item中咋么设置rules验证都不为空的效果
  • 如何集成CppCheck到visual studio中
  • GWO-CNN-SVM,基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)
  • Go-知识测试-工作机制
  • 【小程序静态页面】猜拳游戏大转盘积分游戏小程序前端模板源码
  • JupyterServer配置
  • 信息检索(57):MINIMIZING FLOPS TO LEARN EFFICIENT SPARSE REPRESENTATIONS
  • Python 面试【中级】
  • [Open-source tool]Uptime-kuma的簡介和安裝於Ubuntu 22.04系統
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 灰度图像恢复(100分) - 三语言AC题解(Python/Java/Cpp)
  • leetcode494. 目标和
  • 数据结构简介
  • PyScript:在浏览器中释放Python的强大
  • 巴黎成为欧洲AI中心 大学开始输出AI创始人
  • 完全离线的本地问答模型LocalGPT如何实现无公网IP远程连接提问
  • 【算法专题--栈】栈的压入、弹出序列 -- 高频面试题(图文详解,小白一看就懂!!)
  • 如何高效安全的开展HPC数据传输,保护数据安全?
  • Java部分复习笔记整理
  • GoLang语言
  • ctfshow web入门 sqli-labs web517--web524
  • Spring Cloud Gateway 跨域配置和跨服务请求跟踪
  • 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-29残差网络ResNet
  • 解锁音乐潮流:使用TikTok API获取平台音乐信息
  • 基于yolo的物体识别坐标转换