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

材质笔记 - Simluate Solid Surface

光的行为

    当光和物体相遇时,光会有三种行为:被物体反射、穿过物体(物体是透明或半透明的)或者被吸收。

高光反射和漫反射

    高光反射(Specular Reflection)会在表面光滑且反光的物体上看到,比如镜子,不锈钢球等,此时光线在物体表面是直接“弹”到了反射方向。还有一种反射叫做漫反射(Diffuse Reflection),此时光线被吸收并反射到了四面八方。下图白色箭头表示高光反射,红色箭头表示漫反射:


漫反射系数:Base Map

    在Unity中,URP/Lit Shader需要Base Map来表示漫反射系数。其他Shader通常称这个属性为Albedo或Diffuse Map(从技术上严格地来讲,它们并不是完全相同的东西)。

    Albedo这个词描述了漫反射的度量值。通常就是指颜色值,通过RGB三通道值表达。RGB值可以转换为Hue(色调),Saturation(饱和度)和Luminosity(亮度)。Albedo的luminosity对应于漫反射的量,hue和saturation描述了从表面出来的光的质量。

Specular workflow

    日常生活中有许多金属物体比如钢笔,不锈钢球等,在光源下它们会产生高光反射。在Shader中,高光又是怎么和漫反射进行描述和区别的呢?

    让物体表面看起来像是金属一样的属性叫做高光度(Specularity)。高光度和光滑度(smoothness)是不同的。我们可以将一颗苹果擦到很光滑,但没办法将它擦成金属外观。但是光滑的物体是有一些高光度的。

    下图中的苹果,smoothness都一样,但specularity从左至右依次增强。


       和漫反射表面一样,金属表面会吸收光。在阳光下放置一个金属物体,过一段时间后,它会变烫。

        Specular workflow

        有两种workflow可供我们使用来指定材质中的金属外观(metallic apperance)。当使用URP/Lit Shader中的Specularity属性时,用到的是Specular workflow(后面笔记再解释Metallic workflow)。

        在Specular workflow中:

  •         闪亮的金属表面拥有高Specularity以及高Smoothness。
  •         闪亮的非金属表面拥有低的Specularity和高Smoothness。
  •         Smoothness控制高光反射的范围,Specular Map控制了高光反射的量的大小以及高光反射的颜色。
  •         Specular Map可使用RGB颜色值

        下面通过实验来说明:

        在Unity场景中选择一个物体,比如苹果,选择苹果的材质


        Inspector中将其Workflow Mode设置为Specular


    将其Smoothness进行调整,比如设置为1。


    接下来,设置Specular Map,然其看起来像是一颗金属苹果,带镜面反射效果。


Metallic workflow

        在Unity中,Specular workflow是更加科学的让物体有金属感的方式。另一种方式,metallic workflow是一种更加简单的方式,但这种方式并不严格遵循物理光学的规则。

        Metallic workflow中:

  •         闪亮的金属表面拥有高Metallic和高Smoothness
  •         闪亮的非金属表面使用0或者低的Metallic和高Smoothness
  •         Smoothness控制高光反射的范围
  •         Metallic map值使用灰阶值

        之前的苹果的例子中,我们将Metallic Map设置为1,Smoothness设置为1,可以得到和Specular workflow类似的效果。

Specular workflow和Metallic workflow对比


        具体应用中改如何选择哪种workflow呢?在导入资源的时候,我们可能会看到有一些资源使用Specular workflow,另外一些资源使用Metallic。实际上我们也不必纠结,只要能达到想要的效果即可。Metallic workflow通常来说更常见,因为它使用起来更加简单,但其是一种经验性的近似。Specular workflow基于真实世界中反射的物理规则,但Specular Map用起来是很有挑战的事情。

Smoothness

       也称作gloss或glossiness。它影响高光的范围。光滑的表面上,光线会反射到统一的方向上,因此我们能够从物体表面看到光源的形状。对于一个粗糙的表面,仍然有高光反射存在,但反射光的方向是分散的。

        下图的五颗苹果,Metallic都是0.5,但Smoothness从左至右依次增加。

相关文章:

材质笔记 - Simluate Solid Surface

光的行为 当光和物体相遇时,光会有三种行为:被物体反射、穿过物体(物体是透明或半透明的)或者被吸收。 高光反射和漫反射 高光反射(Specular Reflection)会在表面光滑且反光的物体上看到,比如镜…...

设计模式-值类型与引用类型、深拷贝与浅拷贝、原型模式详解

一. 值类型和引用类型 1. 前言 (1). 分类 值类型包括:布尔类型、浮点类型(float、double、decimal、byte)、字符类型(char)、整型(int、long、short等)、枚举(entum)、结构体(struct)。 引用类型:数组、字符串(string)、类、接口…...

ssm高校功能教室预约系统java idea maven

本网站所实现的是一个高校功能教室预约系统,该系统严格按照需求分析制作相关模块,并利用所学知识尽力完成,但是本人由于学识浅薄,无法真正做到让该程序可以投入市场使用,仅仅简单实现部分功能,希望日后还能…...

C语言学习笔记-强制类型转换

强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型…...

docker数据卷插件

在docker中,对接外部存储我们通常需要docker的数据卷插件。docker中简要可分为两类 docker卷插件和CSI插件,其中docker卷插件分为两个版本,旧版的传统插件(legacy plugin/non-managed plugin)和新版的托管插件(managed plugin)。下面分章节讨…...

第二章-线程(3)

线程一、线程的定义二、线程的实现一、线程的定义 线程: 线程是进程中的一个实体,是系统独立调度和分派的基本单位。 进程是资源的拥有者,线程是系统独立调度和分配的基本单位。 进程与线程的比较: 调度:线程调度快…...

C++学习记录——칠 类和对象(4)

文章目录1、const成员2、取地址及const取地址操作符重载3、构造函数续集1、初始化列表2、explicit关键字4、static成员5、匿名对象6、友元1.友元函数2、友元类7、内部类1、const成员 看一段代码 class A { public:void Print(){cout << _a << endl;} private:int…...

Python-项目实战--飞机大战-碰撞检测(8)

目标了解碰撞检测方法碰撞实现1.了解碰撞检测方法pygame提供了两个非常方便的方法可以实现碰撞检测&#xff1a;pygame.sprite.groupcollide()两个精灵组中所有的精灵的碰撞检测groupcollide(group1, group2, dokill1, dokill2, collided None) -> Sprite_dict如果将dokill…...

T06 成绩排序

查找和排序 题目&#xff1a;输入任意&#xff08;用户&#xff0c;成绩&#xff09;序列&#xff0c;可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 示例&#xff1a; jack 70 peter 96 Tom 70 smith 67 从高到低 成…...

【机器学习】Linear and Nonlinear Regression 线性/非线性回归讲解

文章目录一、回归问题概述二、误差项定义三、独立同分布的假设四、似然函数的作用五、参数求解六、梯度下降算法七、参数更新方法八、优化参数设置一、回归问题概述 回归&#xff1a;根据工资和年龄&#xff0c;预测额度为多少 其中&#xff0c;工资和年龄被称为特征&#xff0…...

PyQt5数据库开发1 4.1 SQL Server 2008 R2如何开启数据库的远程连接

文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服务器 4 设置sa用户属性 5 配置服务器 6 重新登录 7 配置SSCM 8 确认防火墙设置 注意事项 前言 SQL Server 2008 R2如何开启数据库的远程连接 SQL Server 2008默认是不允许远程连…...

javassm高校学生评教系统的设计与实现idea msyql

伴随着社会以及科学技术的发展&#xff0c;互联网已经渗透在人们的身边&#xff0c;网络慢慢的变成了人们的生活必不可少的一部分&#xff0c;紧接着网络飞速的发展&#xff0c;管理系统这一名词已不陌生&#xff0c;越来越多的学校、公司等机构都会定制一款属于自己个性化的管…...

为什么神经网络做不了2次函数拟合,网上的都是骗人的吗?

环境&#xff1a;tensorflow2 kaggle 这几天突发奇想&#xff0c;用深度学习训练2次函数。先在网上找找相同的资料这方面资料太少了。大多数如下&#xff1a; 。 给我的感觉就是&#xff0c;用深度学习来做&#xff0c;真的很容易。 网上写出代码分析的比较少。但是也找到了…...

【Java】Help notes about JAVA

JAVA语言帮助笔记Java的安装与JDKJava命名规范JAVA的数据类型自动类型转换强制类型转换JAVA的运算符取余运算结果的符号逻辑运算的短路运算三元运算符运算符优先级JAVA的流程控制分支结构JAVA类Scanner类Java的安装与JDK JDK安装网站&#xff1a;https://www.oracle.com/java/…...

2023北京老博会,北京养老展,第十届中国国际老年产业博览会

2023第十届&#xff08;北京&#xff09;国际老年产业博览会&#xff0c;将于08月28-30日盛大举办&#xff1b; 2023北京老博会&#xff1a;2023第十届中国&#xff08;北京&#xff09;国际老年产业博览会The 2023 tenth China (Beijing) International Aged industry Expo&a…...

C++展开模板参数包、函数参数包-(lambda+折叠表达式)

开门见山 以下代码可展开模板参数包和展开函数参数包。 // lambda折叠表达式(需C17) #include <iostream> using namespace std;// 1.展开模板参数包 template<typename ...T> void Func1() {([]() {cout << typeid(T).name() << endl;}(), ...);// …...

【Spark分布式内存计算框架——Spark Core】7. RDD Checkpoint、外部数据源

第五章 RDD Checkpoint RDD 数据可以持久化&#xff0c;但是持久化/缓存可以把数据放在内存中&#xff0c;虽然是快速的&#xff0c;但是也是最不可靠的&#xff1b;也可以把数据放在磁盘上&#xff0c;也不是完全可靠的&#xff01;例如磁盘会损坏等。 Checkpoint的产生就是…...

Connext DDSQoS参考

1 QoS策略列表 ConnextDDS 6.1.1版中所有QoS策略的高级视图。 1. QoS策略描述...

【正则表达式】获取html代码文本内所有<script>标签内容

文章目录一. 背景二. 思路与过程1. 正则表达式中需要限定<script>开头与结尾2. 增加标签格式的限定3. 不限制<script>首尾的内部内容4. 中间的内容不能出现闭合的情况三. 结果与代码四. 正则辅助工具一. 背景 之前要对学生提交的html代码进行检查&#xff0c;在获…...

有 9 种springMVC常用注解高频使用,来了解下?

文章目录1、Controller2、RequestMapping2.1 RequestMapping注解有六个属性2.1.1 value2.1.2 method2.1.3 consumes2.1.4 produces2.1.5 params2.1.6 headers2.2 Request Mapping&#xff08;"/helloword/?/aa"&#xff09;的Ant路径&#xff0c;匹配符2.3 Request …...

【ES6】掌握Promise和利用Promise封装ajax

&#x1f4bb; 【ES6】掌握Promise和利用Promise封装ajax &#x1f3e0;专栏&#xff1a;JavaScript &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享方向&#xff1a;目…...

REDIS-持久化方案

我们知道redis是内存数据库&#xff0c;它的数据是存储在内存中的&#xff0c;我们知道内存的一个特点是断电数据就丢失&#xff0c;所以redis提供了持久化功能&#xff0c;可以将内存中的数据状态存储到磁盘里面&#xff0c;避免数据丢失。 Redis持久化有三种方案&#xff0c;…...

五、Java框架之Maven进阶

黑马课程 文章目录1. 分模块开发1.1 分模块开发入门案例示例&#xff1a;抽取domain层示例&#xff1a;抽取dao层1.2 依赖管理2. 聚合和继承2.1 聚合概述聚合实现步骤2.2 继承 dependencyManagement3. 属性管理3.1 依赖版本属性管理3.2 配置文件属性管理&#xff08;了解&#…...

1.前言【Java面试第三季】

1.前言【Java面试第三季】前言推荐1.前言00_前言闲聊和课程说明本课程介绍目前考核的变化趋势vcr集数和坚持学长谷粉面试题复盘反馈最后前言 2023-2-1 12:30:05 以下内容源自 【尚硅谷Java大厂面试题第3季&#xff0c;跳槽必刷题目必扫技术盲点&#xff08;周阳主讲&#xff0…...

06分支限界法

文章目录八数码难题普通BFS算法全局择优算法&#xff08;A算法&#xff0c;启发式搜索算法&#xff09;单源最短路径问题装载问题算法思想&#xff1a;队列式分支限界法优先队列式分支限界法布线问题最大团问题批处理作业调度问题分支限界法与回溯法的区别&#xff1a; &#x…...

Docker Compose编排

一、概念1、Docker Compose是什么Docker Compose的前身是Fig&#xff0c;它是一个定义及运行多个Docker容器的工具通过 Compose&#xff0c;不需要使用shell脚本来启动容器&#xff0c;而使用 YAML 文件来配置应用程序需要的所有服务然后使用一个命令&#xff0c;根据 YAML 的文…...

Docker进阶 - 11. Docker Compose 编排服务

注&#xff1a;本文只对一些重要步骤和yml文件进行一些讲解&#xff0c;其他的具体程序没有记录。 目录 1. 原始的微服务工程编排(不使用Compose) 2. 使用Compose编排微服务 2.1 编写 docker-compose.yml 文件 2.2 修改并构建微服务工程镜像 2.3 启动 docker-compose 服务…...

福利篇2——嵌入式岗位笔试面试资料汇总(含大厂笔试面试真题)

前言 汇总嵌入式软件岗位笔试面试资料,供参考。 文章目录 前言一、公司嵌入式面经1、小米1)面试时长2)面试问题2、科大讯飞1)面试时长2)面试题目3、其余公司面经二、嵌入式笔试面试资料(全)三、嵌入式岗位薪资报告四、硬件岗位薪资报告一、公司嵌入式面经 1、小米 1)…...

[ubuntu]LVM磁盘管理

LVM是 Logical Volume Manager&#xff08;逻辑卷管理&#xff09;的简写&#xff0c;是Linux环境下对磁盘分区进行管理的一种机制&#xff0c;由Heinz Mauelshagen在Linux 2.4内核上实现。LVM可以实现用户在无需停机的情况下动态调整各个分区大小。1.简介 ​ LVM本质上是一个…...

开源流程引擎Camunda

开源流程引擎Camunda 文章作者&#xff1a;智星 1.简介 Camunda是一个轻量级的商业流程开源平台&#xff0c;是一种基于Java的框架&#xff0c;持久层采用Mybatis&#xff0c;可以内嵌集成到Java应用、SpringBooot应用中&#xff0c;也可以独立运行&#xff0c;其支持BPMN&a…...

浙江省住房建设局网站/合肥网站维护公司

微软的Ado.Net支持连接池,.EntityFrameworkCore.MySql同样支持连接池&#xff0c;并且默认也是开启连接池的&#xff0c;EntityFramework的使用教程请查看我的另一篇文章 EntityFramework基本使用_シ❤゛甜虾的个人博客-CSDN博客讲到EntityFramework&#xff0c;就先讲下数据分…...

wordpress 编辑图片无法显示/个人网站设计模板

弁言&#xff1a;我爱您没有是果为您是谁&#xff0c;而是我正在您里前是谁。接下去小编给列位读者分享1些恋爱英文本性署名&#xff0c;欢送各人浏览。1、Feeble story, just making excuses.惨白有力的陈述&#xff0c;只是正在诡辩罢了。2、I wait for you to come back.我等…...

wordpress指定页面连接数据库连接/51外链代发网

大数据最基础的就是数据的存储和计算&#xff0c;而 Hadoop 就是为存储和计算而生&#xff0c;是最基础的大数据处理工具。这篇简单写写 Hadoop 2.x 的安装&#xff0c;启动和测试。 一、准备环境 大数据环境的部署&#xff0c;一般都是集群&#xff0c;机器数量为奇数&#…...

如何做收费视频互动网站/怎么快速推广自己的产品

任何平台都有一套规则&#xff0c;抖音也不例外&#xff0c;那么想玩好抖音&#xff0c;那么利用规则去做就是最好的办法。那么佛山抖音老师教几个实用技巧吧&#xff01; 技巧一、调整发布时间 有统计显示&#xff0c;有62%的用户&#xff0c;会在饭前和睡前刷抖音&#xff0c…...

河北石家庄最新消息今天/关键词优化seo排名

作者 firedragonpzy 地址&#xff1a;http://www.firedragonpzy.com.cn/index.php/archives/2103 想必读者一看这个题目又要纳闷了&#xff0c;神马又是“管理者模式”啊&#xff1f;管理者&#xff08;Manager&#xff09;就是专门负责管理其它类的实例的类&#xff0c;比…...

亳州做企业网站/市场营销方案范文

为什么80%的码农都做不了架构师&#xff1f;>>> 1. vector<int>* 就是声明一个指向vector<int>的指针vector<int>* pV new vector<int>();pV->push_back(1);vector<int>::iterator it pV->begin();cout << *it &l…...