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

文章目录

  • 前言
  • 一、Lambert漫反射计算1
    • 1、MixRealtimeAndBakedGI 函数有三个重载
    • 2、3号 调用了 2号
    • 3、1号调用了 SubtractDirectMainLightFromLightmap函数
    • 4、我们重点来看 Lambert漫反射的实现部分
    • 5、其余部分
  • 二、Lambert漫反射计算2
    • 1、LightingLambert


前言

在之前的文章中,我们已经知道了 SimpleLit 下的主光数据怎么获取。

  • Unity中URP下获取主灯信息
  • Unity中ShaderGraph下获取主灯

有了这些数据,我们就可以计算 Lambert漫反射 和 BulinnPhone高光反射 了。


一、Lambert漫反射计算1

  • 我们在获取了主光信息后

Light mainLight = GetMainLight1(inputData, shadowMask, aoFactor);

  • 就来到了 Lambert 漫反射的计算(这里同时包含了实时光照 和 全局光照GI的计算)

MixRealtimeAndBakedGI(mainLight, inputData.normalWS, inputData.bakedGI, aoFactor);
在这里插入图片描述

  • 我们来分析一下 MixRealtimeAndBakedGI 函数

1、MixRealtimeAndBakedGI 函数有三个重载

  • 我们这里为了方便称呼,把他们分别称为 1号、2号、3号重载 在这里插入图片描述
  • 调用时,我们首先调用了 3号
    在这里插入图片描述

2、3号 调用了 2号

在这里插入图片描述

3、1号调用了 SubtractDirectMainLightFromLightmap函数

  • 该函数就是实现了 Lambert漫反射计算的核心部分 同时混合了 GI
    在这里插入图片描述

4、我们重点来看 Lambert漫反射的实现部分

在这里插入图片描述

  • 得到 d o t ( N ⃗ , L ⃗ ) dot(\vec{N},\vec{L}) dot(N ,L ),并且限制范围在[0,1]之间

half contributionTerm = saturate(dot(mainLight.direction, normalWS));

  • 然后,用计算出的漫反射结果 与 主光颜色混合,就得到了最终的漫反射颜色

half3 lambert = mainLight.color * contributionTerm;

5、其余部分

  • GI相关
    在这里插入图片描述
  • 阴影相关
    在这里插入图片描述

二、Lambert漫反射计算2

  • 在 CalculateBlinnPhong 函数中,也有计算 Lambert 光照的部分
    在这里插入图片描述
  • CalculateBlinnPhong 调用了 LightingLambert函数来计算Lambert漫反射
    在这里插入图片描述

1、LightingLambert

在这里插入图片描述

  • 其中主要进行了两步
  1. 得到 d o t ( N ⃗ , L ⃗ ) dot(\vec{N},\vec{L}) dot(N ,L ),并且限制范围在 [0,1]之间

half NdotL = saturate(dot(normal, lightDir));

  1. 混合 主光颜色 和 点积结果

return lightColor * NdotL;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

hot100:06三数之和

题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 算法思想: 使用双指针的思想,首先需要先对数组进行排序,让数组满足单调性,这样在相加的时候更加方便更新条件;再遍历…

【代码整理】基于COCO格式的pytorch Dataset类实现

import模块 import numpy as np import torch from functools import partial from PIL import Image from torch.utils.data.dataset import Dataset from torch.utils.data import DataLoader import random import albumentations as A from pycocotools.coco import COCO …

【机器学习300问】14、什么是特征工程?

当我学习到这个知识点的时候十分困惑,因为从名字中我完全无法理解这个什么东西。于是呢我就去问了一下维基百科,下面是他的回答: 特征工程(英语:feature engineering)又称特征提取(英语&#xf…

Jetbrains Writerside 使用教程

系列文章目录 前言 一、入门 Writerside 是基于 IntelliJ 平台的 JetBrains 集成开发环境。使用它可以编写、构建、测试和发布技术文档。 如果你想将 Writerside 作为另一个 JetBrains IDE 的插件,请参阅 Writerside 作为插件。 1.1 安装 Writerside…

cetos7搭建部署k8s 版本1.28

主机分配 内存最少是4G cpu个数最少两个 IP内存CPU主机名192.168.231.12044K1 192.168.231.12144K2192.168.231.12244K3 关闭防火墙 systemctl stop firewalled 关闭swap vim /etc/fstab 设置主机名称 hostnameset 安装docker 三个主机 初始化集群 在mas…

相关系数(皮尔逊相关系数和斯皮尔曼相关系数)

本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:5.1 对数据进行描述性统计以及皮尔逊相关系数的计算方法_哔哩哔哩_bilibili 注:直接先看 ( 三、两个相关系数系数的比较 ) 部分&#x…

VC++中使用OpenCV进行颜色检测

VC中使用OpenCV进行颜色检测 在VC中使用OpenCV进行颜色检测非常简单,首选读取一张彩色图像,并调用函数cvtColor(img, imgHSV, COLOR_BGR2HSV);函数将原图img转换成HSV图像imgHSV,再设置好HSV三个分量的上限和下限值,调用inRange函…

自动化测试:5分钟了解Selenium以及如何提升自动化测试的效果

在快节奏的技术世界里,自动化测试已经成为确保 Web 应用程序质量和性能的重要手段。自动化测试不仅加快了测试过程,还提高了测试的重复性和准确性。Selenium,作为领先的自动化测试工具之一,为测试人员提供了强大的功能来模拟用户在…

C++-类和对象(3)

1. 再谈构造函数 1.1 构造函数体赋值 我们在创建一个对象时,编译器会调用该对象的构造函数对该对象的成员进行初始化。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day…

Linux系统安装Samba服务器

在实际开发中,我们经常会有跨系统之间文件传递的需求,Samba 便是能够在 Windows 和 Linux 之间传递文件的服务,功能也是非常强大和好用,本篇文章将介绍如何在 Linux 系统上安装 Samba 服务,以 CentOS7 系统为例。 一、…

SpringBoot:详解Bean生命周期和作用域

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、生命周期二…

大数据平台的硬件规划、网络调优、架构设计、节点规划

1.大数据平台硬件选型 要对Hadoop大数据平台进行硬件选型,首先需要了解Hadoop的运行架构以及每个角色的功能。在一个典型的Hadoop架构中,通常有5个角色,分别是NameNode、Standby NameNode、ResourceManager、NodeManager、DataNode以及外围机。 其中 NameNode 负责协调集群…

手把手教你购买阿里云服务器以及Ubuntu环境下宝塔搭建网站

阿里云服务器Ubuntu通过宝塔搭建网站详细教程 前言一、阿里云服务器的购买二、进入控制面板2.1 修改密码2.2 开放端口号 三、 测试服务器是否可以连接四、 安装nginx搭建网站(选做)五、安装宝塔5.1 登录宝塔官网5.2 卸载预装的mysql和nginx5.3 安装宝塔5.4 访问宝塔控制台5.5 修…

CSS:backdrop-filter实现毛玻璃的效果

实现效果 实现代码 /* 关键属性 */ background-color: rgba(255, 255, 255, 0.4); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);完整代码 <style>/* 遮罩层 */.mo-mask {position: fixed;top: 0;bottom: 0;left: 0;right: 0;width: 100%;height…

Hadoop3完全分布式搭建

一、第一台的操作搭建 修改主机名 使用hostnamectl set-hostname 修改当前主机名 关闭防火墙和SELlinux 1&#xff0c;使用 systemctl stop firewalld systemctl disable firewalld 关闭防火墙 2&#xff0c;使用 vim /etc/selinux/config 修改为 SELINUXdisabled 使用N…

考研C语言刷题基础篇之分支循环结构基础(二)

目录 第一题分数求和 第二题&#xff1a;求10 个整数中最大值 第三题&#xff1a;在屏幕上输出9*9乘法口诀表 第四题&#xff1a;写一个代码&#xff1a;打印100~200之间的素数 第五题&#xff1a;求斐波那契数的第N个数 斐波那契数的概念&#xff1a;前两个数相加等于第三…

爬虫进阶之selenium模拟浏览器

爬虫进阶之selenium模拟浏览器 简介环境配置1、建议先安装conda2、创建虚拟环境并安装对应的包3、下载对应的谷歌驱动以及与驱动对应的浏览器 代码setting.py配置scrapy脚本参考中间件middlewares.py 附录&#xff1a;selenium教程 简介 Selenium是一个用于自动化浏览器操作的…

继电器开关电路图大全

继电器是一种电控制器件&#xff0c;是当输入量&#xff08;激励量&#xff09;的变化达到规定要求时&#xff0c;在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统&#xff08;又称输入回路&#xff09;和被控制系统&#xff08;又称输出回路&#xff0…

USB-C接口给显示器带来怎样的变化?

随着科技的不断发展&#xff0c;Type-C接口已经成为现代电子设备中常见的接口标准。它不仅可以提供高速的数据传输&#xff0c;还可以实现快速充电和视频传输等功能。因此&#xff0c;使用Type-C接口的显示器方案也受到了广泛的关注。本文将介绍Type-C接口显示器的优势、应用场…

基于C++11的数据库连接池【C++/数据库/多线程/MySQL】

一、概述 概述&#xff1a;数据库连接池可提前把多个数据库连接建立起来&#xff0c;然后把它放到一个池子里边&#xff0c;就是放到一个容器里边进行维护。这样的话就能够避免数据库连接的频繁的创建和销毁&#xff0c;从而提高程序的效率。线程池其实也是同样的思路&#xf…