Unity中Shader光照模型Phong

news2024/11/16 3:24:07

文章目录

  • 前言
  • 一、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

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

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

相关文章

Prometheus-Prometheus安装及其配置

Prometheus-Prometheus安装及其配置 Prometheus安装下载解压 配置启动prometheus校验配置文件表达式浏览器 Prometheus安装 Prometheus的安装针对Linux的安装,其他的安装方式可以查看Prometheus官网 下载 sudo wget https://github.com/prometheus/prometheus/re…

四款数字办公工具大比拼,在线办公无压力

在线办公软件使企业、员工实现办公场所、距离的自由,尤其是近几年,受“口罩”的影响,远程办公软件的使用者也越来越多,无论是财务、行政、还是设计师,都开始追求好用的在线办公软件,作为办公软件发烧友&…

发送消息时序图

内窥镜消息队列发送消息原理 目的 有一个多线程的Java应用程序,使用消息队列来处理命令 时序图 startumlactor User participant "sendCmdWhiteBalance()" as Controller participant CommandConsumer participant MessageQueueUser -> Controller:…

​左手 Serverless,右手 AI,7 年躬身的古籍修复之路

作者:宋杰 “AI 可以把我们思维体系当中,过度专业化、过度细分的这些所谓的知识都替代掉,让我们集中精力去体验自己的生命。我挺幸运的,代码能够有 AI 辅助,也能够有 Serverless 解决我的运营成本问题。Serverless 它…

mybatis拦截器源码分析

mybatis拦截器源码分析 拦截器简介 mybatis Plugins 拦截器由于Mybatis对数据库访问与操作进行了深度的封装,让我们应用开发效率大大提高,但是灵活度很差拦截器的作用:深度定制Mybatis的开发抛出一个需求 :获取Mybatis在开发过程中执行的SQL语句(执行什么操作获取那条SQL语句…

RK3562开发板:升级摄像头ISP,突破视觉体验边界

RK3562开发板作为深圳触觉智能新推出的爆款产品,采用 Rockchip 新一代 64 位处理器 RK3562(Quad-core ARM Cortex-A53,主频最高 2.0GHz),最大支持 8GB 内存;内置独立的 NPU,可用于轻量级人工智能…

谷歌浏览查询http被自动转化成https导致页面读取失败问题处理

原因: 谷歌浏览器版本升级,安全问题考虑自动转化https 解决方案: 一、打开配置页面: chrome://flags/ 二、禁止自动转化

vue3_setup基础_渲染函数(ref,reactive)

一、setup语法糖 是什么:组合式Api (vue2为option Api) 来解决什么问题:使用(data,computed,methonds,watch)组件选项来组织逻辑通常都很有效。然而,当我们组件变的更大的时候,逻辑…

ansible的介绍安装与模块

目录 一、ansible简介 二、ansible特点 三、Ansible核心组件与工作原理 1、核心组件 2、工作原理 四、ansible的安装 五、ansible 命令行模块 1.command 模块 2.shell 模块 3.cron 模块 4.user 模块 5.group 模…

01 时钟配置初始化,debug

1. 开启debug series,否则只能下载一次,再次下载要配置boot 2.f0外部时钟配置 h750 配置 实测可用

股票印花税如何征收,万一免五的低费率成本计算以及券商选择

印花税国家收的,不管是深市沪市都收,如下图所示,可以看到,证券交易印花税自2008年9月之后改为单向收取,今年8月份更是降到了0.05%,也就是万分之5,以现在的视角看历史,在最早90年的千…

【数据结构】算法的空间复杂度

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 算法空间复杂度的定义 算法的时间复杂度和空间复杂度是度量算法好坏的两个重要量度,在实际写代码的过程中,我们完全可以用空间来换时间,比如说,我们要判断某某年是不是闰年,大…

基于Vue构建的快速开发框架

一、Vue结合低代码 "低代码"是一种快速开发应用的方法,它使开发者能够通过图形界面和预构建的块进行设计和构建,而不是手动编写大量的代码。这种方法被广泛用于快速应用开发、移动应用开发、业务流程管理和数据库应用开发等领域。 Vue.js 是一…

【Proteus仿真】【51单片机】智能语音家居陪护机器人

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用OLED液晶、按键、蜂鸣器、DS18B20温度传感器、人体红外传感器、语音识别模块、继电器、风扇、LED等。 主要功能: 系统运行后&#xff0…

Kafka生产者使用案例

1.生产者发送消息的过程 首先介绍一下 Kafka 生产者发送消息的过程: 1)Kafka 会将发送消息包装为 ProducerRecord 对象, ProducerRecord 对象包含了目标主题和要发送的内容,同时还可以指定键和分区。在发送 ProducerRecord 对象前&#xff0c…

FPGA面试题(7)

一.解释一下SPI的四种模式 01时钟极性CPOL空闲状态为低电平空闲状态为高电平时钟相位CPHA在第一个跳变沿采样在第二个跳变沿采样 模式CPOLCPHA描述模式000sclk上升沿采样,sclk下降沿发送模式101sclk上升沿发送,sclk下降沿采样模式210sclk上升沿发送&…

解决nav2_bringup tb3_simulation_launch.py 无法启动Gazebo的问题

方法 1 断网再开gazebo. 评价: 方便且有效, 但来回联网很麻烦 参考: https://blog.csdn.net/James___H/article/details/116906217 方法 2 断网能打开是因为gazebo软件开启时会自动从网络下载模型,下载过程必然漫长, 另外你懂的, 网络问题嘛, vpn也解决不了的话…

jmeter压测记录、使用方法

jmeter压测记录、使用方法 1、非gui方式执行压测命令2、压测命令输出解读 1、非gui方式执行压测命令 sh jmeter.sh -n -t test.jmx -l result.jtl2、压测命令输出解读 Active: 10 Started: 10 Finished: 0 Active: 10 表示一共10个活动(正在进行的压测线程&#…

基于Cl2/BCl3电感偶联等离子体的氮化镓干蚀特性

引言 氮化镓(GaN)具有六方纤锌矿结构,直接带隙约为3.4eV,目前已成为实现蓝光发光二极管(led)的主导材料。由于GaN的高化学稳定性,在室温下用湿法化学蚀刻来蚀刻或图案化GaN是非常困难的。与湿法蚀刻技术相比,干法蚀刻技术可以提供…

前端axios下载导出文件工具封装

使用示例: import { fileDownload } from /utils/fileDownloadfileDownload({ url: process.env.VUE_APP_BASE_URL /statistic/pageList/export, method: post, data: data })工具类: import store from ../store/index import {getAccessToken } fro…