Unity | HDRP高清渲染管线学习笔记:Volume

news2024/12/25 23:47:47

目录

一、Volume框架

二、Volume Profile

三、Volume重载

1.Visual Environment(环境设置)

1.1 Sky type

1.2 Ambient Mode

2.Sky

2.1 HDRI Sky(HDRI天空)

2.2 Gradient Sky(渐变天空)

2.3 Physically Based Sky(基于物理的天空)

3.Exposure(屏幕曝光)

3.1 Mode

3.2 Metering Mode(测光模式)

3.3 Limit Min和Limit Max

3.4 Compensation

3.5 Adaptation(适应)

4.Fog(雾效制作)

4.1 Volume组件中的Fog(全局雾效)

4.2 Local Volumetric Fog(局部雾效)

5.Material(材质)


一、Volume框架

        Volume框架是HDRP最重要的组成部分之一。Volume框架的作用总结如下:

  • 为场景设置来自天空盒的环境光照。
  • 设置各种阴影效果,包括场景中的Contact Shadow和Micro Shadow。
  • 设置场景中的雾效。
  • 设置基于屏幕空间的反射和折射(Screen Space Reflection和Screen Space Refraction)、环境光遮蔽(Ambient Occlusion)。
  • 设置后处理效果(Post-processing)。
  • 设置实时光线追踪(Ray Tracing)。

        每个Volume的模式可以按照需要设置成Global(全局)或者Local(本地):

  • Global模式意味着这个Volume是针对整个场景生效。不管相机朝向哪里,Global模式的Volume都会被计算在内。
  • Local模式的Volume则只在它的碰撞体(Collider)作用区域内生效。选择Local模式后,界面上会出现Add Collider按钮,你可以单击该按钮为当前的Volume添加一个碰撞体。一般我们使用性能最好的Box Collider。当然,如果有特殊需求,也可以使用其他类型的碰撞体。

        全局Volume总是对场景中的相机产生影响,而本地Volume只有当相机进入所设定的碰撞体(Collider)范围以后才会对其产生影响。

二、Volume Profile

        要让Volume组件生效,需要为它添加一个Profile(配置文件)。Profile的本质是一个Scriptable Object,它本身并没有任何特殊功能,只是一个用来保存配置数据的地方。

        在菜单Edit→Project Settings→HDRP Default Settings中已经包含了一个默认的Volume Profile。如果你没有在场景中设置任何Volume,那么这个默认的Volume就会起作用。因此,在场景中添加的Volume的各项属性就称为Override(重载)。

三、Volume重载

        单击Volume组件中的Add Override按钮可以看到目前的Volume重载被分成了9类(这个列表并不是固定不变的,随着HDRP版本的升级,里面的内容会越来越丰富)。

1.Visual Environment(环境设置)

1.1 Sky type

        可以在Sky type中选择None、Gradient Sky、HDRI Sky和Physically Based Sky四种天空类型。

  1. None:此Volume不会渲染天空盒。
  2. Gradient Sky:将渲染的天空分成高、中和低三层,你可以为这三层分别指定一个颜色。
  3. HDRI Sky:使用一个Cubemap(立方体贴图)来渲染整个天空。
  4. Physically Based Sky:用于模拟一个球状星球的天空。天空的大气层有两个部分。随着海拔高度的降低,大气层的空气密度会以指数级的速度降低。

1.2 Ambient Mode

        可以选择Static和Dynamic两种模式。

  1. Static(静态模式):在静态模式下,整个场景的环境光来自烘焙所得的Sky环境光。可以使用Lighting窗口中的Static Lighting Sky属性设置环境光。
  2. Dynamic(动态模式):在动态模式下整个场景的环境光来自在Visual Environment中设置的Sky环境光,这让我们可以动态地改变当前场景中的环境光。

2.Sky

        Volume组件中的Visual Environment重载的类型设置为Gradient Sky、HDRI Sky和Physically Based Sky三种天空类型:

2.1 HDRI Sky(HDRI天空)

        如果在Visual Environment中将Sky设置为HDRI类型,那么需要添加HDRI Sky这个重载并进行具体设置。

  • Hdri Sky

        指定一张用于渲染天空的Cubemap。

  • Intensity Mode(光照强度模式)

        用于控制来自天空的环境光强度,有如下三种模式可选:

  1. Exposure:使用单位为EV100的数值来计算天空的亮度。
  2. Multiplier:使用一个固定的乘数来控制天空的亮度。
  3. Lux:使用单位为Lux的数值来计算天空的亮度。

  •  Rotation(旋转HDRI贴图):

        拖动滑块可以旋转Cubemap从而改变当前相机可视范围内的天空显示。

  • Update Mode(更新模式):

        有三种更新模式可选择:

  1. On Changed:当一个或者多个与天空相关的参数发生变化时更新。
  2. On Demand:只有通过脚本中API触发才会更新。
  3. Realtime:按照在Update Period中指定的间隔时间自动更新。

2.2 Gradient Sky(渐变天空)

  • Top、Middle和Bottom

        分别用于控制大气层上半层的颜色、地平线的颜色、大气层下半层的颜色(低于地平线的那部分)。

  • Gradient Diffusion

        用于控制地平线部分的颜色覆盖区域的大小(Middle),分成两种情况:

  1. 该值大于0,默认值为1。如果设为0,则地平线部分的颜色会覆盖整个天空;值越大,地平线部分的颜色覆盖区域越小(这部分大气层看上去越厚)。
  2. 该值小于0,如果值小于0,则Top和Bottom区域的颜色会互换。值越小,地平线部分的颜色覆盖的区域越小(这部分大气层看上去越厚)。
  • Intensity Mode

        可以选择使用Exposure(单位为EV100);也可以选择使用一个固定的乘数值。

2.3 Physically Based Sky(基于物理的天空)

        基于物理的天空不仅适合用于创造地球环境,也可以用于创造外星球环境。

  •  Planet Center Position

        因为地球的直径大约为12742km,所以将这里的Y轴数值设置为-6378100m。

  • Ground Color Texture

        用于控制星球表面的纹理。

  • Ground Tint

        用于为Ground Color Texture着色。

  • Ground Emission Texture

        用于控制星球表面自发光部分的纹理。

  • Ground Emission Multiplier

        应用于Ground Emission Texture的乘数器。

3.Exposure(屏幕曝光)

        曝光指的是相机感光元器件接受的光线强度。曝光的数值越高,相机接受的光线强度就越大。在设置好Sky以后,需要通过控制Exposure重载来调整当前相机所看到的整个画面。

        因为HDRP是完全基于物理的渲染系统,所有的灯光设置和材质设置都是基于物理的,所以要想正常显示场景画面,就必须为场景设置正确的曝光。

        如果一个Volume被添加了Exposure重载,那么所有受当前Volume影响的相机都会使用这个Exposure重载,受它的影响。这个曝光影响的是在当前Camera窗口显示的最终效果。

3.1 Mode

        Volume中的Exposure重载包含五种模式:Fixed、Automatic、Automatic Histogram、 Curve Mapping和Use Physical Camera。​​​

Fixed(固定曝光)

使用固定数值来控制曝光,该模式可应用于曝光变化不大的场景。

HDRP的光照系统是完全基于物理的,所以可以参考物理世界真实的曝光值。(见上图 EV100的数值)

Automatic(自动曝光)

根据当前相机的位置信息和相关场景信息来自动调节场景曝光。非常适用于曝光随位置不同而发生变化的场景。

Automatic Histogram(直方图)

这种模式下,系统会根据场景中的亮度分布自动调整曝光值。通过分析场景中的直方图信息,系统会根据亮度范围和对比度调整曝光值。

Curve Mapping(曲线控制曝光)

通过曲线来控制场景的曝光。X轴代表目前场景的曝光,Y轴代表我们想要的曝光。曲线控制的方式一般留给业内专家使用。
Use Physical Camera(物理相机控制曝光)物理相机的各项属性在Camera组件中。如果选择此选项,则Volume界面中只剩下Compensation(补偿)这一项。(使用物理相机的好处是,如果你对真实世界的各种相机参数很熟悉,就可以利用已有的知识来精确控制画面的曝光)

3.2 Metering Mode(测光模式)

        用于控制如何采样场景中的灯光以进行曝光计算,有五种模式可选择:

Average(平均)针对整个画面进行采样,计算结果很稳定。
Spot(点测光)只针对画面中央的区域进行采样,计算结果不大稳定。如果画面中央的采样区域较暗,则整个画面可能曝光过度;反之则可能曝光不足。
Center Weighted(中心加权)取前两者的优点。相机会为画面中的每个像素添加一个权重,最中心的像素权重最大,离开中心越远的像素权重越小。最后按照每个像素的权重对曝光进行计算。
Mask Weighted(遮罩加权)该模式使用遮罩来定义不同区域的权重。用户可以创建遮罩,根据遮罩的强度或颜色等属性,调整不同区域的测光权重。
Procedural Mask(程序化遮罩)该模式使用程序化生成的遮罩来定义不同区域的权重。用户可以使用代码或着色器生成程序化的遮罩,并根据生成的遮罩调整测光权重。

3.3 Limit Min和Limit Max

        分别用于控制场景自动曝光的最小值和最大值。可以用这两个值分别调节当相机处于场景的暗部和亮部时整体的曝光。

3.4 Compensation

        类似于很多相机上的设置,用于对通过自动计算获得的曝光进行补偿。如果你想获得曝光过度或者曝光不足的效果,可以使用这个参数来控制。通常情况下设置为0。

3.5 Adaptation(适应)

        用于控制画面在明暗之间变化过程中,也就是从黑暗到光明或者从光明到黑暗的转变过程中画面曝光的变化速度。可以有如下选择:

  1. Fixed(固定的):HDRP固定的方式,无须输入任何参数。
  2. Progressive(渐变的):可以设置Speed Dark to Light(从黑暗到光明的变化速度)和Speed Light to Dark(从光明到黑暗的变化速度)的值。参数值越大,曝光的变化速度越快。

4.Fog(雾效制作)

        如果要制作体积雾效果(Volumetric Fog),首先要确保已经打开当前项目使用的HDRP配置文件中Lighting下的Volumetric Fog。

  • Volume组件中的Fog:适合制作全局雾效。
  • 顶部菜单GameObject→Rendering下的Local Volumetric Fog(需要与Fog配合使用):适合制作局部雾效,比如漂浮在空中的云团。

4.1 Volume组件中的Fog(全局雾效)

  • Fog Attenuation Distance(雾效衰减距离)

        用于控制雾的能见度,数值的单位为m。如果设置为10m,则意味着只能从当前位置看到10m开外的地方。

  • Base Height(基础高度)

        用于控制连续雾效与指数雾效的边界高度。(eg:把Base Height参数的值设置成2m,表示在从地板开始向上2m的空间里,雾是连续的,没有衰减;从2m的高度开始向上,雾开始会以指数衰减的方式显示。)

  • Maximum Height(最大高度)

        用于控制能够显示雾的最高高度,到了这个高度,雾的浓度会降到最底部雾浓度的37%。

  • Max Fog Distance(雾效最大距离)

        此最大距离以当前相机为起点。超过此最大距离以后,雾将不再被渲染。建议将此距离设置为大于相机组件中Clipping Planes→Far的数值,以防止天空盒上的雾和场景中物体上的雾看起来不一致。

  • Color Mode(颜色模式)

        用于控制雾的颜色:

  1. Constant(不变的颜色):也就是使用单一颜色;
  2. Sky Color(天空颜色):该颜色适合在添加了天空盒的场景中使用,HDRP会对天空的颜色进行采样来控制雾的颜色。

        在Sky Color模式下,会多出一个Tint选项。Tint中的颜色会与天空色进行相乘的操作(Multiply),因此这个颜色不会大幅度改变雾的颜色。

  • Volumetric Fog(体积雾)

        要想让场景具有体积雾的效果或者所谓“上帝之光”的效果,就需要打开这个选项。注意,体积雾的效果比较消耗性能,所以在使用时要注意实际性能消耗,视情况而定。

  • Albedo(反照率)

        用于控制雾的整体颜色。不过在模拟真实世界时,我们一般不调整雾本身的颜色(雾本身是没有颜色的),因为雾反射的是天空和环境光的颜色。

  • Ambient Light Probe Dimmer(环境光光照探针调光器)

        使用这个参数可以调整来自天空的环境光强度。数值越大,场景中的雾越亮,反之越暗。

4.2 Local Volumetric Fog(局部雾效)

  • Single Scattering Albedo(单次散射反照率)

        用于控制雾的颜色。

  • Fog Distance(雾效距离)

        用于控制雾的浓度。

  • Size(大小)

        用于控制长方体的长宽高。

  • Blend Distance(混合距离)

        可以实现雾的边缘淡化,不让雾看上去是包含在一个长方体中。

  • Density Mask Texture

        可实现移动动画。

  1. 为它指定一个Texture3D资源作为输入,才能调整Scroll参数让雾移动起来。
  2. 可以设置Scroll X、Y和Z的数值,这样雾会沿着用三个数值综合计算出的移动方向进行移动。
  3. 可以通过调整Tiling参数在相应的方向上增加雾的厚度。

5.Material(材质)

        在HDRP中,Diffusion Profile用于保存次表面散射(Subsurface Scattering)的配置信息。要让相关的次表面散射材质应用这些Diffusion Profile,需要先将它们添加到HDRP配置文件中。

         HDRP允许在同一个场景中同时使用15个Diffusion Profile。

        如果某些Diffusion Profile只被应用在部分场景中,我们也可以只把这些Diffusion Profile添加到当前场景的Volume组件中的Diffusion Profile Override中,这样就不需要将它们添加到应用于整个项目的HDRP配置文件中了。这样做的好处是可以减少渲染时因为要寻找到正确的Diffusion Profile而消耗的性能。这对于包含很多植被的场景尤其有用,因为通常这样的场景会有很多的重复绘制(Overdraw)。

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

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

相关文章

JAVA日志框架

JAVA日志框架 常见日志框架日志级别阿里日志规约什么时候打印日志配置文件log4j.propertieslogback-spring.xmllogback的默认配置 导入依赖日志使用方式,引入slf4j的API输出用户日志 常见日志框架 日志框架:Log4j 、Logback 。 日志门面:Slf…

第2章:SpringMVC的@RequestMapping注解

一、SpringMVC搭建框架 1.创建一个Maven程序的步骤 ①在pom.xml导入maven依赖 <!--打包方式是war--> <!--war 包通常用于网站&#xff0c;它是一个可以直接运行的 web 模块--> <packaging>war</packaging> <dependencies><!-- SpringMVC --…

二战阿里巴巴成功上岸,准备了小半年,拿23k也不算很高吧~

先说下我基本情况&#xff0c;本科不是计算机专业&#xff0c;现在是学通信&#xff0c;然后做图像处理&#xff0c;可能面试官看我不是科班出身没有问太多计算机相关的问题&#xff0c;因为第一次找工作&#xff0c;阿里的游戏专场又是最早开始的&#xff0c;就投递了&#xf…

如何获取 C#程序 内核态线程栈

一&#xff1a;背景 1. 讲故事 在这么多的案例分析中&#xff0c;往往会发现一些案例是卡死在线程的内核态栈上&#xff0c;但拿过来的dump都是用户态模式下&#xff0c;所以无法看到内核态栈&#xff0c;这就比较麻烦&#xff0c;需要让朋友通过其他方式生成一个蓝屏的dump&…

线程同步(一)

上篇文章讲述了什么是线程&#xff0c;以及在Linux系统下线程的相关操作 线程&#xff08;Linux系统实现&#xff09;_小梁今天敲代码了吗的博客-CSDN博客 本文将继续讲述线程的相关知识——线程同步 目录 1.线程同步的概念 2.线程不同步可能会发生什么 3.线程同步方式 …

机器学习——聚类算法详解

1.聚类问题 1&#xff09;聚类问题与核心概念 聚类算法做的事情&#xff0c;就是对无标签的数据&#xff0c;基于数据分布进行分群分组&#xff0c;使得相似的数据尽量落在同一个簇内。 我们先对比区分一下聚类和分类&#xff1a; 聚类是一种无监督学习&#xff0c;而分类是…

第十三届蓝桥杯C++B组j国赛

第十三届蓝桥杯C组 题目 2693: 蓝桥杯2022年第十三届决赛真题-卡牌 题目描述 这天&#xff0c;小明在整理他的卡牌。 他一共有 n 种卡牌&#xff0c;第 i 种卡牌上印有正整数数 i(i ∈ [1, n])&#xff0c;且第 i 种卡牌 现有 ai 张。 而如果有 n 张卡牌&#xff0c;其中…

硬件测试—温升测试之JinKo 多路温度测试仪使用说明

一、概述 1.1&#xff1a;测试概述 在硬件测试中&#xff0c;温升测试也是很重要的一项测试&#xff0c;产品各项器件在稳定的环境温度下满载工作的芯片温度&#xff0c;根据测试情况评估散热需求。 1.2&#xff1a;产品图片 1.3&#xff1a;使用设备 名称 厂家 型号 PC电脑…

Acer Aspire V3-572G电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板Acer Aspire V3-572G 处理器i7 5500U 2 Cores/4 Threads2,4Ghz已驱动 内存Any Samsung, Hynix or Kingston DDR3 8GB(4GBx2).已驱动 硬…

CSDN 每日一练用例数据缺失了怎么办?

CSDN 每日一练用例数据缺失了怎么办&#xff1f; 引子1、用例与结果不匹配2、阅读理解困难3、用例数据缺失 用例数据缺失&#xff0c;却有人 AC &#xff1f;神奇的 c28761 津津的储蓄计划70093 近视的小张 小结最后的吐槽 引子 老顾最近几个月经常在 CSDN 举办的周赛上浑水摸…

Tomcat 部署

一.Tomcat介绍 Servlet 是 Java Servlet 的简称&#xff0c;可以理解为是一个服务连接器&#xff0c;是用 Java 编写的服务器端程序&#xff0c;具有独立于平台和协议的特性&#xff0c; 简单的理解&#xff1a;servlet 就是一个中间件&#xff0c;包含了接口和方法&#xff0…

5.2.6 地址解析协议ARP

5.2.6 地址解析协议ARP 我们知道要想实现全球范围内主机之间的通信&#xff0c;必须要有两个统一&#xff0c;一个是地址&#xff0c;另一个是数据格式&#xff0c;我们使用IP地址来实现统一的地址&#xff0c;使用IP分组实现统一的数据格式&#xff0c;在前面局域网的学习中我…

【AIGC】13、GLIP | 首次将 object detection 重建为 phrase grounding 任务

文章目录 一、背景二、方法2.1 将 object detection 和 phrase grounding 进行统一2.2 Language-aware deep fusion2.3 使用语义丰富的数据来进行预训练 三、效果3.1 迁移到现有 Benchmarks3.2 在 COCO 上进行零样本和有监督的迁移3.3 在 LVIS 上进行零样本迁移学习3.4 在 Flic…

android 如何分析应用的内存(四)

android 如何分析应用的内存&#xff08;四&#xff09; 接上文 在介绍细节部分时&#xff0c;先介绍了各种工具的使用&#xff0c;而这些工具&#xff0c;大部分都用来调试&#xff0c;诸如&#xff1a;特定内存点&#xff0c;堆栈&#xff0c;寄存器&#xff0c;变量值等的…

MySQL安装流程 及 8.0与5.7区别

一、MySQL版本介绍 1、MySQL 8.0 窗口函数&#xff1a;MySQL 8.0版本支持窗口函数&#xff0c;这是数据分析工作中非常常用的一类函数。窗口函数可以让用户在单个查询中跨多个行检索数据&#xff0c;并在查询结果中对数据执行计算。隐藏索引&#xff1a;在MySQL 8.0版本中&am…

C++STL详解 string【C++】

文章目录 函数模板函数模板的原理函数模板的实例化模板参数的匹配原则 类模板类模板的定义格式类模板的实例化 string 函数模板 函数模板的原理 template <typename T> //模板参数 ——类型 void Swap(T& x1, T& x2) {T tmp x1;x1 x2;x2 tmp; } int main()…

牛客网语法刷题篇(C语言) — 输出格式化

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paperjie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《C语言—语法篇》专栏&#xff0c;笔者用重金(时间和精力)打造&#xff0c;基础知识一网打尽&#xff0c;…

解析Linux中断子系统之中断映射

中断是当前计算机系统的基础功能&#xff0c;也是系统响应外设事件的必备桥梁。不同的架构对中断控制器有不同的设计理念&#xff0c;本文针对ARM公司提供的通用中断控制器&#xff08;GIC,Generic Interrupt Controller&#xff09;介绍在linux系统中的硬件中断号与软件中断号…

SpringBootWeb登录认证

1. 登录功能 1.1 需求 在登录界面中&#xff0c;我们可以输入用户的用户名以及密码&#xff0c;然后点击 “登录” 按钮就要请求服务器&#xff0c;服务端判断用户输入的用户名或者密码是否正确。如果正确&#xff0c;则返回成功结果&#xff0c;前端跳转至系统首页面。 1.2 …

简单聊一聊数据库驱动

数据库驱动通常是数据库厂家提供的&#xff0c;他们按照jdbc协议对自家数据库封装了一套可对外调用的API。在应用程序和数据库之间起到了桥接的作用。它是一个软件组件&#xff0c;提供了与特定数据库系统进行通信的接口和功能。 1. 数据库驱动的作用&#xff1a; 连接数据库&…