Unity | HDRP高清渲染管线学习笔记:材质系统Lit着色器

news2024/11/18 22:59:35

 

目录

一、Lit着色器

1. Surface Options

2. Surface Inputs(表面输入)

3. Transparency Inputs

二、HDRP渲染优先级


       我们可以把现实世界中的物体分成不透明物体和透明物体(其中包括透明或者半透明)。在实时渲染时,其实我们模拟的就是物体的表面。当然在模拟透明物体时我们还要考虑光透过物体时发生的吸收和折射现象。

一、Lit着色器

1. Surface Options

  • Surface Type(表面类型)

        在Lit中把表面类型分成了两类:Opaque(不透明)和Transparent(透明)。

  • Rendering Pass(渲染通道)

        这一选项在选择Transparent(透明)表面类型下出现,我们可以为当前材质选择以下渲染通道:

  1. Before Refraction:在渲染折射效果之前渲染当前材质所关联的物体。这也就意味着HDRP会在渲染折射效果时,将当前材质所关联的物体考虑进折射的计算中。
  2. Default:在默认渲染阶段参与渲染。
  3. Low Resolution:在默认渲染阶段完成以后,以一半的分辨率渲染当前材质所关联的物体。
  • Blending Mode(混合模式)

        这一选项在选择Transparent(透明)表面类型下出现。该选项用于确定通过何种混合方式,把当前透明材质表面每个像素的颜色与背景颜色相混合,从而获得透明材质上每个像素的最终颜色值。

        如果指定了Base Map并且Base Map的Alpha通道是纯黑色(代表完全透明),这时我们再调节颜色选择器中的A(Alpha)值就没有意义了。如果没有指定Base Map或者Base Map中没有包含Alpha通道,则玻璃材质的透明度就由颜色选择器的A(Alpha)值来控制。(如下图,Base Map的Alpha通道周围不是纯黑色,所以调整颜色选择器中的A(Alpha)值还会影响物体的周边。)

 

  • Preserve specular lighting(保持高光光照信息)

这一选项在选择Transparent(透明)表面类型下出现。进行Alpha混合以后会导致高光的强度减弱。启用此选项可以让透明表面保持高光的强度,适用于表现光线在玻璃或者水面上的反射效果。

  • Receive Fog(获取雾效)

        这一选项在选择Transparent(透明)表面类型下出现。启用此选项可以让场景中的雾效影响透明表面。如果禁用此选项,HDRP则不会在计算场景雾效时将当前材质考虑在内。

  • Back Then Front Rendering(从后往前渲染)

        (需要在HDRP配置文件中启用Transparent Backface选项):这一选项在选择Transparent(透明)表面类型下出现。启用该选项以后HDRP会用两个Draw Call来渲染当前材质关联的物体。HDRP会使用第一个Draw Call渲染物体背面的三角面,使用第二个Draw Call渲染正面的三角面。

  • Transparent Depth Prepass(透明深度预处理)

        (需要在HDRP配置文件中启用Transparent Depth Prepass选项):这一选项在选择Transparent(透明)表面类型下出现。启用该选项后,HDRP会把透明表面的多边形数据添加到深度缓冲(Depth Buffer)中。使用这些深度缓冲中的多边形数据可以优化渲染排序。这一过程会在处理光照之前完成,因此有助于提升GPU的性能。注意,在渲染透明通道之前,这些深度信息会被写入一个单独的渲染通道中,然后被用于处理渲染排序。

  • Transparent Depth Postpass(透明深度后处理)

        (需要在HDRP配置文件中启用Transparent Depth Postpass选项):这一选项在选择Transparent(透明)表面类型下出现。启用该选项后,HDRP会把透明表面的多边形数据添加到深度缓冲(Depth Buffer)中,以供后处理(Post Processing)使用。这一过程会在处理光照之前完成。如果你想进行Motion Blur(运动模糊)和Depth of Field(景深)这类需要用到深度信息的后处理,可启用此选项,它对这些后处理效果的正确计算很有帮助

  • Transparent Writes Motion Vectors(透明写入运动矢量)

        (需要在HDRP配置文件中启用Motion Vectors选项):这一选项在选择Transparent(透明)表面类型下出现。启用该选项后,HDRP会写入使用此材质的透明物体的Motion Vector(运动矢量)数据,这样HDRP才能计算使用当前材质的透明物体的Motion Blur(运动模糊)这类后处理效果。

  • Cull Mode(剔除模式)

        用于决定是剔除透明物体网格的正面(Front)还是背面(Back)。

  • Alpha Clipping(透明度剪裁)

        启用此选项,我们可以用材质的Alpha通道来控制渲染表面上哪些区域,不渲染哪些区域,从而在透明部分和不透明部分之间创建明显的边界。

        Threshold:使用Threshold数值控制Alpha的临界值。如果把Threshold数值设置为0.05,那么Alpha值小于等于0.05的区域会被渲染,Alpha值大于0.05的区域则不会被渲染。

  • Material Type(材质类型)
  1. Standard(标准)材质类型可用于模拟大部分材质。
  2. Specular Color:使用这一材质类型可以在物体表面生成带颜色的高光效果。因为Specular Color使用的不是Metallic工作流,而是Specular工作流,所以在下方的Surface Inputs(表面输入)中不再有Metallic滑块。
  3. Iridescence:彩虹色,用于制作肥皂泡。
  • Receive Decals(显示贴花)

        启用此选项可以让当前材质显示贴花,比如玻璃上的白色圆点。

  • Receive SSR(显示在屏幕空间反射中)

        启用此选项时,HDRP会在计算屏幕空间反射时把与当前材质关联的物体考虑进去。

  • Displacement Mode(置换模式)

        置换模式和高度图用于为模型的网格增加细节表现。当设置了置换模式时,下方Surface Inputs(表面输入)部分会出现Height Map(高度图)选项。(高度图见下文详解)HDRP提供两种置换模式。

  • Vertex displacement(顶点置换):根据高度图来置换网格上的顶点。
  • Pixel displacement(像素置换):根据高度图来置换模型表面的像素。

2. Surface Inputs(表面输入)

        Surface Inputs中的参数用于控制物体表面的各种属性,比如颜色、透明度、高光、表面细节、纹理所用的UV等。

  • Base Map(基础纹理)

        用于控制表面的颜色和透明度。如果不指定纹理,物体会使用颜色选择器中的颜色作为表面颜色;如果指定了纹理,物体表面的最终颜色由纹理和颜色选择器所选的颜色一起决定。

  • Mask Map(遮罩贴图)
Mask Map的四个通道分别用于保存用途不同的贴图

         在Red、Green、Blue和Alpha四个通道中保存的贴图其实都是灰度图。灰度图提供的是对应最终纹理上每个像素点的数值(每张灰度图控制着不同的参数)。纯白色对应最大值1(有效果),颜色越黑数值越小直到为0(无效果)

        在同一张Mask Map中保存四张贴图的好处是:因为这四张贴图的UV坐标相同,所以渲染器只需要采样一次就能拿到最多四张贴图的信息。请注意,使用Mask Map时并不需要每次都使用4个通道。你完全可以按照自己的需求选择一个或者多个通道使用。

         如果我们没有指定Mask Map,这时的Metallic和Smoothness两个选项的数值都在0~1之间。Metallic数值越高,物体表面的金属反光越强烈。Smoothness数值越高,物体表面越平滑,越像一面镜子;反之物体表面看上去越粗糙。

        如果我们指定了Mask Map,Metallic Remapping、Smoothness Remapping和Ambient Occlusion Remapping选项会出现滑块。

  1. Metallic用于控制金属表面的反光度,数值越高,金属反光越强烈。它的数值在0~1之间。因为我们添加了Mask Map,所以HDRP会获取Red通道中Metallic贴图的灰度图信息用于计算物体表面各处的金属反光强度:纯黑色对应数值0,纯白色对应数值1,其他灰度对应0~1之间的数值。如上图,我们想要模拟的是陶瓷杯子,红色通道中是纯黑色的贴图,因为控制的是Metallic的数值,并且纯黑色对应数值0。所以无论你如何调节材质界面上Metallic滑块,数值始终为0。如果把红色通道中的贴图颜色改为白色,那么贴图所提供的Metallic数值则为1。这时可以利用Metallic滑块将数值调整到0~1之间(这时会看到瓶子会有金属反光。不过我们想要模拟的是陶瓷,有了金属反光其实就不对了)。
  2. Smoothness Remapping滑块可以把从Mask Map的Alpha通道中获取的灰度信息,映射到滑块对应的最小值和最大值区间内,用于控制物体表面的光泽度。
  3. Ambient Occlusion Remapping滑块可以把从Mask Map的Green通道中获取的灰度信息,映射到滑块对应的最小值和最大值区间内,用于控制物体表面的环境光遮蔽。
  • Normal Map Space(法线贴图空间)和Normal Map(法线贴图)

        在Normal Map Space中可以选择TangentSpace(切线空间)或者ObjectSpace(物体空间)。两种法线贴图空间的区别是:

  1. TangentSpace可应用于任何类型的网格上,包括动画时网格会变形的角色模型。
  2. ObjectSpace可应用于使用Planar-mapping的静态物体上(网格不会变形的物体)。这一类法线贴图上除了包含切线空间法线贴图信息,还包含方向数据。而且因为Unity不需要对它做Transform的计算,所以它相比切线空间法线贴图更省性能。

        我们可以为Normal Map关联一张法线贴图,用于为物体表面增加细节信息。可以通过滑块来控制细节信息的强度大小(数值在0~8之间)。法线贴图为物体表面增加细节的原理是,使用保存在法线贴图中的信息,通过改变物体表面的光照信息让表面“看上去”多了一些细节。但是本质上物体表面并没有发生真正的形变。

  • Height Map(高度图)

        当设置了置换模式时会出现该选项。高度图本质上就是一张黑白颜色的灰度图。白色区域代表了受影响表面高的地方;颜色越深,受影响的表面就越低。与法线贴图不同,高度图会改变受影响表面的区域,从而增加更多的细节。一般高度图和法线贴图配合使用。

  • 参数Amplitude(幅度)

        当设置置换模式为Pixel displacement(像素置换)时会出现该选项。用于控制高度图置换效果的强度。

  • Iridescence Mask(彩虹色遮罩)

        使用 Iridescence 这一材质类型时出现。可以在这里使用一张灰度图控制彩虹色的强弱。0代表没有彩虹色,1代表彩虹色效果最强。我们也可以直接使用固定数值(0~1之间)来控制整个表面的彩虹色强弱。

  • Specular Color(高光颜色)

        使用Specular Color这一材质类型时出现。此选项可以让你手动设置高光颜色(Specular Color)。这里关联的纹理使我们可以在像素级别定义高光颜色。如果你在颜色选择器中选择一个颜色,HDRP会将此颜色和纹理上的每一个像素相乘从而得到最终的高光颜色。

  • Energy Conserving Specular Color(能量守恒高光颜色)

        使用Specular Color这一材质类型时出现。如果启用这一选项,HDRP会在高光效果太强烈时降低材质的漫反射色,这可以让材质看上去更加“物理正确”。因为PBR(基于物理的渲染)的能量守恒(Energy Conservation)守则对于物体表面的正确渲染非常重要。这一守则认为,反射和散射光的能量必须小于物体表面接收到的光能量。 

3. Transparency Inputs

        以下是所有与折射相关的参数。

  • Refraction Model(折射模型)

        在此可以选择HDRP处理折射的方式:

  1. None:透明材质没有折射行为。
  2. Box:算法使用的是正方体形状的模型。光线入射时进入一个平面,光线出射时也是通过一个平面。适用于我们讲解的中空玻璃瓶之类的物体。
  3. Sphere:算法使用的是球状的模型,可以生成类似放大镜的折射效果。适用于模拟实心的透明物体,比如放大镜镜片、玻璃球等。
  4. Thin:算法使用的是长方体形状的模型。与Box模型不同的是,Thin模型的厚度被定义为5cm。可用于模拟窗户上的玻璃。
  • Index Of Refraction(折射率)

        用于控制折射效果的强度。数值越大,折射效果越强。(折射率=光在真空中的速度/光在当前透明材质中的速度)各种物质的折射率可以参考:https://zh.wikipedia.org/zh-cn/折射率。

  • Thickness(物体厚度)

        可以使用一张厚度贴图(Thickness Map)来控制透明物质的厚度(基于像素级别的)。如果不使用厚度贴图,也可以使用滑块来控制透明物体的总体厚度。注:此选项在Thin折射模型下不出现,因为在Thin模型下厚度被规定为5cm。

  • Transmittance Color(透射颜色)

        具有折射性质的透明物体可以对穿过物体的光线进行染色。可以在这里指定一张贴图(基于像素级别的)给经过的光线染色,也可以单独使用颜色选择器选择一个总体的颜色。如果这两种方式都使用了,那么最终光线的颜色由贴图的颜色和从颜色选择器中选择的颜色共同决定。

二、HDRP渲染优先级

        渲染管线会先渲染离相机最远的物体,最后渲染离相机最近的物体。在HDRP中会按照材质(Material)的Sorting Priority(排序优先级)和渲染组件(Mesh Renderer)的Priority值来排序场景中物体的渲染排序。数值越大,渲染越靠后,离相机越近。

        HDRP对透明物体进行渲染排序时所用的优先级:(由强到弱)材质从Depth Write中获得的深度信息→材质的Sorting Priority数值→Mesh Renderer组件的Priority数值→相机离开物体的距离。

 

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

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

相关文章

Debian二次开发网关支持Docker+RS485+网口

随着物联网技术的不断发展,瑞芯微边缘计算网关作为一种集成多种接口和功能的智能网关,逐渐成为了物联网领域中的热门产品。本文将详细介绍瑞芯微边缘计算网关的特点和优势,并探讨其在实际应用中的广泛应用。 瑞芯微Linux系统边缘计算网关是一…

【Java】 Java 私有接口方法的使用

本文仅供学习参考! 相关教程地址: https://www.baeldung.com/java-interface-private-methods https://www.geeksforgeeks.org/private-methods-java-9-interfaces/ https://www.runoob.com/java/java9-private-interface-methods.html 接口是定义一组方…

java之路—— SpringMVC的常用注解解析以及作用、应用

创作不易,真的希望能给个免费的小 文章目录 1、Controller2、RequestMapping3.GetMapping、PostMapping、PutMapping、DeleteMapping4. RequestParam5.PathVariable6.RequestHeader7.CookieValue8.RequestBody9.ResponseBody10.SessionAttribute11.ControllerAdvice…

二层、三层交换机是什么?有什么区别?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解二层交换机和三层交换机是什么,以及他们的区别。 目录 一、二层交换机是什么? 二、二层交换机的主…

本地生活多城市合伙人系统开发

本地生活多城市合伙人项目是一种基于本地生活服务的创业项目,旨在为各个城市的居民提供方便、实惠、高品质的生活服务。该项目通过招募多个城市的合伙人,建立完整的本地生活服务平台和供应链体系,覆盖不同类型的本地生活服务,如餐…

Nginx的Rewrite(地址重定向)

目录 前言 一、Rewrite 跳转场景 二、Rewrite 跳转实现 三、Rewrite实际场景 3.1Nginx跳转需求的实现方式 3.2rewrite放在 server{},if{},location{}段中 3.3对域名或参数字符串 四、Rewrite正则表达式 五、Rewrite语法格式 5.1rewrite语法格式…

互联网常见架构接口压测性能分析及调优手段建议

目录 互联网常见架构接口压测性能分析及调优手段建议 1 接口名称: 获取列表 1.1 压测现象:单台tps700多,应用cpu高负载 1.1.1 问题分析: 1.1.2 改进措施: 1.1.3 改进效果: 1.2 压测现象:数据库资源利用率高 1.2.1 问题分析: 1.2.2 改进措施: 1.2.3 改…

SciencePub学术 | 计算机科学类重点SCIEEI征稿中

SciencePub学术 刊源推荐:计算机科学类重点SCIE&EI征稿中!信息如下,录满为止: 一、期刊概况: 计算机科学类重点SCIE&EI 【期刊简介】IF:3.0-3.5,JCR 2区,中科院4区; 【检…

使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图

大家好,我是带我去滑雪! 一幅精美的科研绘图会有诸多益处,精美的图像可以更好地传达研究结果和数据分析的重要信息。通过使用清晰、直观和易于理解的图像,可以更好地向读者展示研究的发现,有助于读者理解和解释数据。还…

JAVA开发(记一次504 gateway timeout错误排查过程)

一、问题与背景: 最近在发布一个web项目,在测试环境都是可以的,发布到生产环境通过IP访问也是可以的,但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通,域名却不行&…

如何在矩池云上运行 AI 图像编辑工具 DragGAN

5 月,DragGAN 横空出世,在开源代码尚未公布前,就在Github上斩获近 20000 Star,彼时,页面上只有效果图和一句“Code will be released in June”,然而这也足够带给人们无限期待。 在6月末,在若干…

SpringBoot最多可以处理多少个请求?

SpringBoot最多可以处理多少个请求? SpringBoot夺命连环14问,1天刷完别人半个月的springboot面试内容,比啃书效果好多了!_哔哩哔哩_bilibili 最小线程数:最少的厨师的量,饭店人不多的时候的量。 最大线程数…

微信可以自动跟圈的软件有吗?

对于许多人而言,每日发朋友圈已成为必要的任务之一,如同上学时老师检查作业般。但发圈何尝不像是写作业一样呢?有许多小号需发几十上百条朋友圈,令人感到枯燥、浪费时间。再加上我们还有其他事务要处理,例如服装店老板…

让你不再疑惑ai绘画生成器有哪些

有一天,设计师小李接到了一份任务,要在短时间内完成一幅复杂的插画。小李感到非常苦恼。于是,他开始寻找一种新的解决方案。通过搜索和咨询同事,小李发现通过使用ai绘画工具可以提高快速绘制图画的速度.那么,你知道最新…

paddlespeech 声纹识别embedding向量提取

参考: https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md 注意 1)安装paddlespeech,参考: https://blog.csdn.n…

儿童牙刷语音方案,低功耗语音芯片NV040C,支持UART指令

随着人们对生活品质的追求越来越高,家庭中的日常用品也开始注重便携性、功能性与智能化。牙刷作为家庭必备的清洁用品,同样也在走向智能化的方向。为此,市场上出现了一些支持语音指令的儿童牙刷语音方案,其中低功耗语音芯片NV040C…

TypeScript 中接口类型【Interfaces】的定义使用解读

导语: 什么是 类型接口? 在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类(classes)去实现(implement&#x…

从“裸辞”到“终于找到理想工作”,面试了37家公司,经过5个月的时间终于如愿以偿。

软件测试行业裸辞5个月,面试了37家公司,终于找到理想工作了... 在软件测试行业里工作已经有7年的时间了。然而,在今年初,我因为一些原因选择了离开原来的公司,成为了一名“裸辞族”。我并不后悔这个决定,因…

QT Creator上位机学习(一)基本类别及主体框架解析

系列文章目录 文章目录 系列文章目录前言基础认识多种项目3种基类文件管理编译 项目程序项目管理文件UI文件信号与槽主程序窗体头文件窗体源文件 前言 之前也学习制作过串口上位机和利用Qchart完成数据的曲线显示等等,但大多只是对网上的程序进行拼接,这…

15.RocketMQ中的负载均衡

1.3负载均衡 1.3.1什么是负载均衡 负载均衡(Load Balance)是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免单台服务器过载。 RocketMQ中的负载均衡主要可以分为生产者发送消息的负载均衡和消费者订阅消息的负载均衡…