Unity中URP下的SimpleLit的 BlinnPhong高光反射计算

文章目录

  • 前言
  • 一、回顾Blinn-Phong光照模型
    • 1、Blinn-Phong模型:
  • 二、URP下的SimpleLit的 BlinnPhong
    • 1、输入参数
    • 2、程序体计算


前言

在上篇文章中,我们分析了 URP下的SimpleLit的 Lambert漫反射计算。

  • Unity中URP下的SimpleLit的 Lambert漫反射计算

我们在这篇文章中,进行 URP下的SimpleLit的 BlinnPhone 高光反射计算的分析。


一、回顾Blinn-Phong光照模型

  • 在BRP下,我们进行过Blinn-Phong高光反射的推导和实现.
  • Unity中Shader光照模型Blinn-Phong原理及实现

1、Blinn-Phong模型:

Specular = SpecularColor * Ks * pow(max(0,dot(N,H)),Shininess)

  • Specular:高光反射的最终颜色
  • SpecularColor:高光反射颜色
  • Ks:反射系数
  • N:顶点法向量
  • H:入射光线L 和 视线向量V的半角向量
  • Shininess:高光指数,用于模拟高光的范围

二、URP下的SimpleLit的 BlinnPhong

在这里插入图片描述

1、输入参数

  • lightColor:主光颜色
  • lightDir:主光方向
  • normal:法线信息
  • viewDir:视线方向向量

以上这些,我们在之前的步骤中,已经分析过了
我们主要看 specular 和 smoothness

  • specular:高光颜色
  • smoothness:光滑度
  • 这两个颜色都是在 初始化 SurfaceData 中完成的
    在这里插入图片描述
    在这里插入图片描述
  • SampleSpecularSmoothness
    在这里插入图片描述
    首先:对specularSmoothness进行了初始化
    在这里插入图片描述
    然后:如果赋予了高光纹理,则进行高光纹理的采样,赋值给specularSmoothness
    在这里插入图片描述
    在这里插入图片描述
    否则:将 高光 颜色赋予specularSmoothness
    在这里插入图片描述
    在这里插入图片描述
    最后:按 alpha 的来源给 specularSmoothness.a 赋值
    在这里插入图片描述
    在这里插入图片描述
    这个 a 经过处理后就是smoothness

half smoothness = exp2(10 * surfaceData.smoothness + 1);

  • 该处理扩大了,smoothness 的变化率,并且使其在[0,1]之间,从1开始
    在这里插入图片描述

2、程序体计算

  • 先计算出 L 和 V 的半角向量

float3 halfVec = SafeNormalize(float3(lightDir) + float3(viewDir));

  • 再计算出法线和半角向量的点积

half NdotH = half(saturate(dot(normal, halfVec)));

  • 使用 smoothness 调节高光的范围

half modifier = pow(NdotH, smoothness);

请添加图片描述

  • 混合高光颜色

half3 specularReflection = specular.rgb * modifier;

  • 混合主光颜色

return lightColor * specularReflection;

请添加图片描述

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

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

相关文章

Java基于沙箱环境实现支付宝支付

一、支付宝沙箱环境介绍 沙箱环境是支付宝开放平台为开发者提供的安全低门槛的测试环境,开发者在沙箱环境中调用接口无需具备所需的商业资质,无需绑定和开通产品,同时不会对生产环境中的数据造成任何影响。合理使用沙箱环境,可以…

Android14实战:调整A2DP音量曲线(五十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

【Linux install】Ubuntu和win双系统安装及可能遇到的所有问题

文章目录 1.前期准备1.1 制作启动盘1.2关闭快速启动、安全启动、bitlocker1.2.1 原因1.2.2 进入BIOSshell命令行进入BIOSwindows设置中高级启动在开机时狂按某个键进入BIOS 1.2.3 关闭Fast boot和Secure boot 1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小 2.开始安装2.1 使用…

大模型的学习路线图推荐—多维度深度分析【云驻共创】

🐲本文背景 近年来,随着深度学习技术的迅猛发展,大模型已经成为学术界和工业界的热门话题。大模型具有数亿到数十亿的参数,这使得它们在处理复杂任务时表现得更为出色,但同时也对计算资源和数据量提出了更高的要求。 …

源 “MySQL 5.7 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确

Is this ok [y/d/N]: y Downloading packages: 警告:/var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-server-5.7.44-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 检…

canvas绘制旋转的椭圆花

查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

MySQL-函数-日期函数

常见的日期函数 案例

Hypervisor 和Docker 还有Qemu有什么区别与联系?

Hypervisor Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,可以让多个操作系统和应用共享硬件资源,也叫做虚拟机监视器(VMM)。 Hypervisor有两种类型:Type I和Type II。 Type I 直接运行在硬件上&a…

LabVIEW电火花线切割放电点位置

介绍了一个电火花线切割放电点位置分布评价系统,特别是在系统组成、硬件选择和LabVIEW软件应用方面。 本系统由两个主要部分组成:硬件和软件。硬件部分包括电流传感器、高速数据采集卡、开关电源、电阻和导线。软件部分则由LabVIEW编程环境构成&#xf…

复杂高层建筑环境多模态导航服务和引导管理机器人系统设计(预告)

课题基础 机器人工程ROS方向应用型本科毕业设计重点课题学生验收成果 将上面这篇所涉及的算法等应用到如下环境中。 Gazebo新环境AWS RoboMaker Hospital医院场景适用于ROS1和ROS2 高层可以简化为多层测试。最典型的就是两层及以上。 简介 随着城市化进程的加速和高层建筑…

中美比特币储备曝光

作者:秦晋 自1月10日,美国SEC审批通过包含贝莱德在内的11只比特币现货ETF之后,短时间内,其总交易量已超过130亿美元。其资产管理规模超过白银ETF,成为美国第二大ETF商品类别。 据《Bitcoin Magazine》报道,…

分享一个“产业级,开箱即用”的NLP自然语言处理工具

NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向 自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能到计算语言学的多个计算研究领域都在研究计…

JAVASE进阶(设计模式、设计原则)(更新中...)

目录 一、注解 内置注解:JAVA中已经定义好的注解。 元注解:修饰注解的注解。 自定义注解。 二、克隆 JAVA中对clone的实现? 浅克隆 深克隆 那么该如何做到深克隆呢? 三、常用设计模式 1、创建型模式 单例模式 工厂模式 工…

【GitHub项目推荐--一个语音机器人项目】【转载】

推荐一个腾讯大佬开源的语音对话机器人:wukong-robot ,悟空机器人在 GitHub 上斩获 3.2K 的 Star。 这是一个简单灵活的中文语音对话机器人项目,目的是让中国的开发者也能快速打造个性化的智能音箱,同时,该项目还是第…

QTableWidget 双击单元格修改数据

本章介绍通过双击单元格,进入单元格,进行编辑,并对比是否修改了数据,如果修改了更新到数据库。 其他关于QTableWidget的操作,请查看上一篇文章《QTableWidget 用法-CSDN博客》 修改单元格内容,与原值比较…

vue3 npm i 一直卡到不动

一. 首先node 版本要18.0及以上 查看node版本并安装指定版本 二. 查看npm镜像源以及指定安装npm的镜像 三. 删除项目中的package-lock.json文件 最好是把node_modules安装包也删除掉,然后npm i 就可以了

配置jdk环境变量

查看jdk在什么地方的命令 echo $JAVA_HOME 查看jdk的执行路径--使用which java whereis java zip -qr jdk21.zip jdk21/ 手动配置Java环境变量 修改配置环境 vim /etc/profile 把下面的配置放到文件的最后一行 export JAVA_HOME/usr/local/jdk1.8.0_202 # 这里设置…

网络安全人员一定要知道的Metasploit渗透框架!

简介 Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。 Metasploit官网:www.metasploit.com/ Metasploit的Github仓库地址:githu…

时间序列预测 — CNN-LSTM-Attention实现多变量负荷预测(Tensorflow):多变量滚动

专栏链接:https://blog.csdn.net/qq_41921826/category_12495091.html 专栏内容 ​ 所有文章提供源代码、数据集、效果可视化 ​ 文章多次上领域内容榜、每日必看榜单、全站综合热榜 ​ ​ ​ ​ ​ ​ ​ 时间序列预测存在的问题 ​ 现有的大量方法没有真正的预测未…

【目标检测】YOLOv7算法实现(二):正样本匹配(SimOTA)与损失计算

本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本篇文章在YOLOv5算法实现的基础上,进一步完成YOLOv7算法的实现。…