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.mzph.cn/pingmian/37326.shtml

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

相关文章

【MySQL】InnoDB的存储结构

InnoDB的存储结构:每个表都会生成一个表空间文件,这个文件里面最小结构就是行,存储的真正的数据,一个页来管理若干行,一个区来管理若干页,一个区组来管理若干区。段并不是真正的物理存储结构,它…

汇总大语言模型LLM的评测基准数据集(BenchMarks)

文章目录 0. 引言1. 知识与语言理解1.1 MMLU1.2 ARC1.3 GLUE1.4 Natural Questions1.5 LAMBADA1.5 HellaSwag1.6 MultiNLI1.7 SuperGLUE1.8 TriviaQA1.9 WinoGrande1.10 SciQ 2. 推理能力2.1 GSM8K2.2 DROP2.3 CRASS2.4 RACE2.5 BBH2.6 AGIEval2.7 BoolQ 3. 多轮开放式对话3.1 …

vue3中获取Excel和csv文件中的内容

1.效果 2.安装 npm install xlsxyarn add xlsx 3.引入使用 <el-upload ref"uploadRef" :on-change"changeFile" :show-file-list"false" class"mr10" accept".csv, .xlsx, .xls"action"#" :auto-upload&quo…

滚动表格(vue版本)【已验证可正常运行】

演示图 注&#xff1a;以下代码来自于GPT4o&#xff1a;国内官方直连GPT4o 代码 <template><div><div class"alarmList-child" ref"alarmList" mouseenter.stop"autoRoll(1)" mouseleave.stop"autoRoll()"><div…

基于DPU的Ceph存储解决方案

1. 方案背景和挑战 Ceph是一个高度可扩展、高性能的开源分布式存储系统&#xff0c;设计用于提供优秀的对象存储、块存储和文件存储服务。它的几个核心特点是&#xff1a; 弹性扩展&#xff1a;Ceph能够无缝地水平扩展存储容量和性能&#xff0c;只需添加新的存储节点即可&am…

【AUTOSAR 基础软件】DEM模块详解(诊断故障管理)

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中DEM模块相关的内容详解。本文从ISO标准&#xff0c;AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码分析四个维度来帮读者清晰的认识和了解DEM这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都…

查询DBA_TEMP_FILES报错,删除临时表空间报错ORA-60100

SYMPTOMS 查询DBA_TEMP_FILES报错如下图 ORA-01157: cannotidentify/ock data fle 201 -see DBWR trace fle ORA-01110: data fle 20 1: D:APPADMINISTRATORIORADATA MARTIDATAFILE 01157,00000-"cannotidentify/ock data fle %s -see DBWR trace fle"*Cause: The b…

2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试…

云计算:重塑数字时代的基石

目录 一、引言 二、云计算的定义与特点 三、云计算的发展历程 四、云计算的应用场景 五、云计算面临的挑战 六、云计算的未来发展趋势 七、结语 一、引言 随着信息技术的飞速发展&#xff0c;云计算已经逐渐渗透到我们生活的方方面面。从个人用户的在线存储、在线办公&…

应用案例 | 如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全

一、货物运输 不同种类的货物对运输的要求不同&#xff0c;钢铁、煤炭、矿石等大宗物资通常对运输要求较低&#xff0c;而电子产品、IT 产品、家电等高价值敏感类货物则更强调运输的安全性和时效性&#xff0c;往往希望能尽可能安全和快速送达这类货物&#xff0c;使之尽快进入…

laravel对接百度智能云 实现智能机器人

创建API Key和 Secret Key进入网址&#xff1a;百度智能云千帆大模型平台 如下图操作&#xff1a; 填写完毕点击确认后&#xff0c;即可得到sk和ak 后端接口实现代码&#xff1a; //调用百度智能云第三方机器人接口public function run($text) {$curl curl_init();curl_setop…

前后端分离项目验证码实现

一、验证码实现流程&#xff1a; 1、后端使用工具生成二维码&#xff08;包括image的字符串和code字符&#xff09;&#xff1b; 2、使用uuid生成唯一的key值&#xff0c;将key和code以键值对的形式存储到redis缓存中&#xff0c;设置过期时间&#xff1b; 3、将image字符串…

一、评估代码质量好坏的几个维度

评估代码质量好坏的几个维度 一、代码质量1、可维护性2、灵活性3、简洁性4、可复用性5、可测试性6、可扩展性7、可读性二、编程方法论1、面向对象2、设计原则3、设计模式4、编程规范5、重构三、提高代码质量方法论总结四、简单了解:什么是设计模式五、设计模式的分类六、UML图…

2024年计算机行业投资策略:AI创新推动行业加速发展

2023年,计算机行业在AI创新的推动下呈现出"M"型走势,年初在ChatGPT带动的大模型、AI算力以及行业应用的推动下,板块强势上行,4月和6月分别出现年内高点,其后随着AI、信创等热门板块的调整,指数回调幅度明显。从年初到12月26日,申万计算机指数上涨3.61%,跑赢沪…

阿一网络安全培训中心专门为你准备了一份WScan使用教程

下载地址&#xff1a;https://github.com/chushuai/wscan/releases 版本的选择 Windows就选windows_amd64 Linux就选linux_amd64 mac就选darwin_amd64 下载好后&#xff0c;运行一次exe会生成一个config.yaml文件 把该文件中plugins下面的所有插件的enabled设置为True。&…

数据库使用笔记

1.mysql数据库频繁访问导致连接超时 解决办法一&#xff1a; 优化查询&#xff1a;检查并优化SQL查询语句&#xff0c;减少不必要的数据库调用。增加连接池大小&#xff1a;如果应用程序使用连接池&#xff0c;可以考虑增加连接池的最大连接数。&#xff08;注&#xff1a;不能…

【JavaScript脚本宇宙】从入门到精通:让你的JavaScript项目无坚不摧的测试框架指南

众里寻他千百度&#xff1a;为你的JavaScript项目选择最佳测试框架 前言 本文将对几个常用的JavaScript测试框架进行比较&#xff0c;包括Jest、Mocha、Jasmine、AVA、QUnit和Cypress。每个框架都将从概述、主要特性、安装与配置以及示例代码等方面进行介绍。通过比较这些框架…

Selenium进行Web自动化滚动

在使用Selenium进行Web自动化时&#xff0c;计算页面内的滚动条位置或执行滚动操作通常涉及JavaScript执行。Selenium的WebDriver提供了执行JavaScript代码的功能&#xff0c;这可以用来获取滚动条的位置或滚动到页面上的特定位置。 获取滚动条位置 你可以使用JavaScript的wi…

Nginx网站服务详解(设置并发数、实现不同虚拟主机等)

一、nginx的最大并发数设置已经状态收集模块 [root192 nginx]# cat nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/user ngin…

单源最短路径问题(Dijstra)

#include<iostream> using namespace std; #define MAX 500 #define INT 999 typedef struct {char vex[MAX];int Edge[MAX][MAX];int vexnum,arcnum; }MGraph; void InitMG(MGraph &MG) {cout<<"输入顶点数和边数&#xff1a;";cin>>MG.vexnu…