Unity | HDRP高清渲染管线学习笔记:示例场景解析

news/2024/5/19 10:36:09/文章来源:https://blog.csdn.net/weixin_39766005/article/details/130867569

目录

一、HDRP入门

1.HDRP设置

 1.1 HDRP配置文件中的全部设置项

        1.1.1 Rendering下的Lit Shader Mode

        1.1.2 Lighting 下的Volumetrics(体积光)和Screen Space Reflection(屏幕空间反射)

2.离线渲染VS实时渲染

3.Volume组件

3.1Sky and Fog Volume 天空&雾效

4.光照贴图烘焙

5.HDRP材质和着色器

5.1 Mesh

5.2 Material

5.3 Shader

5.4 Texture

        5.4.1 Surface Options

        5.4.2 Surface Inputs

二、RenderPipeline相关菜单

1.HDRP Wizard窗口

2.LookDev

3.Rendering Debugger

三、HDRP基于物理的渲染

四、总结


        首先HDRP是面向高端硬件的,它是集成了各种最先进渲染技术的解决方案。因此它的最佳应用场景是PC、主机平台AAA游戏,或者云游戏。(Unity版本为2022.1.2)

一、HDRP入门

        自Unity 2018版本开始,Unity在原先的标准渲染管线(Built-in Render Pipeline)基础上增加了可编程渲染管线(Scriptable Render Pipeline,SRP)

        在SRP发布之前,所有平台都是通过同一个标准渲染管线来做渲染输出。虽然使用非常方便(无须选择适配渲染管线),但是标准渲染管线对于开发者而言就像一个黑盒子,里面的渲染逻辑完全不可知。开发者也无法通过代码去控制整个渲染的流程,无法选择需要渲染的内容。随着SRP的发布,开发者可以通过C#代码直接指定渲染内容和控制渲染流程,也可以为自己的游戏或者应用定制独特的渲染管线。

        为了帮助内容创作者尽快使用上SRP,Unity提供了两个在创建项目时就可以选择的模板:高清渲染管线(High Definition Render Pipeline,HDRP)和通用渲染管线(Universal Render Pipeline,URP)。HDRP目前可用于制作基于PC、Xbox One(或更新)和PlayStation 4(或更新)平台的游戏或者应用,也支持输出高端VR应用;URP则可用于所有平台(包括HDRP支持的所有平台)的游戏和应用开发。HDRP对于高端移动平台的支持目前正在研发之中。

1.HDRP设置

        HDRP的全称是High Definition Render Pipeline(高清渲染管线)。它是基于Scriptable Render Pipeline(简称SRP,中文翻译为“可编程渲染管线”)实现的一个模板。

        在设置渲染管线时我们要用到Project Settings(项目设置)界面,所以先通过菜单Edit→Project Settings… 打开项目设置界面。可以把渲染管线的设置分成以下几种情况。

  • 使用默认的内置渲染管线:如果在项目设置界面中将Graphics的Scriptable Render Pipeline Settings参数设置为None,那么Unity使用的就是内置渲染管线。
  • 使用HDRP:要将渲染管线设置为HDRP,需要给Scriptable Render Pipeline Settings关联一个HDRP配置文件(在Project窗口中)
    可以创建多个拥有不同配置信息的HDRP配置文件,然后在不同的平台上使用它们。比如为PC、Xbox One和PlayStation 4分别创建对应的HDRP配置文件,然后在构建不同平台的应用时,手动关联相应的HDRP配置文件。当然也可以通过脚本来动态判断和设置,所需脚本API为GraphicsSettings.renderPipelineAsset。
  • 使用URP(Universal Render Pipeline,中文翻译为“通用渲染管线”)

 1.1 HDRP配置文件中的全部设置项

        注意:我们之前在Edit→Project Settings中的Graphics的Scriptable Render Pipeline Settings参数设置为HDRenderPipelineAsset。但在Quality中有多个levels,每个level对应的Render Pipeline Asset不同,默认是High Fidelity level,对应的Render Pipeline Asset为HDRP High Fidelity,那么该项目起作用的Render Pipeline Asset为HDRP High Fidelity,而不是HDRenderPipelineAsset。unity对这两个设置的解释如下:

  • Graphics中Scriptable Render Pipeline Settings:This defined the default render pipeline,which Unity uses when there is no override for a given quality level.
  • Quality中Render Pipeline Asset:Specifies the Render Pipeline Asset to use for this quality level.It overrides the value set in the Graphics Setting Window.

        HDRP的设置信息分为以下几个部分:

  • Rendering(渲染)
  • Lighting(光照)
  • Lighting Quality Settings(光照质量设置)
  • Material(材质)
  • Post-processing(后处理)
  • Post-processing Quality Settings(后处理质量设置)
  • XR(XR相关设置)
  • Virtual Texturing(虚拟纹理)

        1.1.1 Rendering下的Lit Shader Mode

        控制Lit Shader使用的渲染模式,其下有Forward Only、Deferred Only和Both三种模式。

  • Forward模式可以提供更多的高级材质,但是相应的性能消耗较大(比如使用的内存通常较大)。
  • 如果选择Both模式,那么HDRP会预先生成针对Forward和Deferred两种模式的Lit Shader variants(Lit着色器变体),这样就可以在运行时(Runtime)中针对不同的相机在这两种模式间切换。当然,如果选择Both,内存的占用将会变大,因为内存中包含了更多的Lit着色器变体。

        1.1.2 Lighting 下的Volumetrics(体积光)和Screen Space Reflection(屏幕空间反射)

        如果在Render Pipeline Asset配置文件中勾选了Volumetrics选项,那么在Sky and Fog Volume的Fog中的Volumetric Fog配置就会生效。如果关闭了Screen Space Reflection选项,即使Sky and Fog Volume添加了Screen Space Reflection这个Volume Override,该界面也会提醒此功能不可用。(由此可见,HDRP配置文件在HDRP项目中所处的中心地位,以及它与单独的Volume组件之间的父子关系)

2.离线渲染VS实时渲染

        所谓DCC,就是Digital Content Creation的缩写,即数字内容创作。DCC的范围包括二维/三维、音频/视频剪辑合成、动态/互动内容创作、图像编辑等。通常传统DCC软件的离线渲染器:画质好、耗时长。渲染一帧画面(也就是一张图片)所需的时间,按照场景的复杂度和所用电脑的运算能力,从几秒到几十小时甚至上百小时不等。

        使用实时渲染引擎:画质没离线渲染强、耗时短。可以在Unity编辑器中以每秒几十帧甚至上百帧的速度渲染画面。

        虽然在实时渲染引擎中获得的画面质量,还无法与离线渲染的画质相提并论,但是两者之间的差距正在迅速缩小。使用实时渲染引擎可以在Unity编辑器中以每秒几十帧甚至上百帧的速度渲染画面。随着Unity工具链的不断发展,Unity本身也开始逐渐具备传统DCC工具的部分功能。

3.Volume组件

        通过HDRP项目模板来创建项目,Unity会为我们自动设置好所有的HDRP高清渲染管线资源,建议保留项目窗口中的HDRPDefaultResources、Presets和Settings三个文件夹,否则需要手动生成HDRP渲染管线相关的配置文件。

        HDRP使用Volume框架将天空的光照、阴影、后处理等设置集中到了一起。在示例场景中有一个Volume:Sky and Fog Volume负责天空、雾效效果。

        Volume组件:Volume框架其实就是一个组件,它和Camera组件本质上是一样的,因为两者都可以被添加到GameObject中,为其添加功能。

        场景中可以有多个Volume组件,例如Sky and Fog Volume和Post Process Volume,当然把这两个Volume合二为一,也就是只需要一个Volume关联一个Profile。不过如果合二为一的话,一方面Volume组件上的列表会变得很长,不利于后期维护。另一方面如果我们使用多个Local(本地)的后处理Volume,那么就无法灵活处理它们了。将具有不同功能的Volume进行合理的区分,将它们关联到不同的Profile,有助于后期维护和功能管理。

3.1Sky and Fog Volume 天空&雾效

        Sky and Fog Volume提供基于HDRI的光照,控制曝光度、雾效等。

● Mode(模式)

        可以将Volume设置为Global(全局)模式或者Local(本地)模式:

  • 如果设置为全局模式,则Volume上的效果默认会影响整个场景。
  • 设置为本地模式,则可以为其指定不同形状的碰撞体,比如Box、Sphere等。

        设置为本地模式时,Volume上的效果只会在相机与Volume上的碰撞体发生碰撞时被触发。例如,如果场景中有多个房间,每个房间的朝向是不一样的,则可以为每个房间设置一个本地模式的Volume,比如朝北房间是偏冷色调,朝南房间因为有阳光照射进来可以设置为偏暖色调。当场景中的相机进入北房间时,相机与此房间中Volume上的碰撞体发生碰撞,从而触发偏冷色调的本地Volume,所以整个画面看上去就是冷色调。进入南房间时则用相同的机制触发偏暖色调的本地Volume,此时整个画面过渡变化为暖色调。

● Profile(配置文件)

        使用Volume框架的一个好处是可以把组件和具体的设置进行分离。Volume组件上的所有设置其实来自于关联的Profile。在开始设置之前,需要先创建一个新的Volume Profile或者关联一个已经存在的Profile。Profile是一个用Unity资源格式保存到本地磁盘上的文件,这也意味着我们可以使用别人已经创建好的Profile,或者将自己的Profile分享给别人使用(要确保大家使用的Unity版本是互相兼容的)。

Visual Environment

        主要用于选择天空盒的格式。可以选择:

  • None(不使用天空盒,不会有来自天空盒的环境光)
  • Gradient Sky(使用渐变色程序化生成的简单天空盒)
  • HDRI Sky(从关联的HDRI高动态图片采样获得天空盒的光照信息)
  • Physically Based Sky(基于物理的程序化生成的天空盒,可以用于模拟日夜变换、大气层厚度等复杂天空效果)。

● Physically Based Sky

        如下图所示,因为选择的Visual Environment类型是Physically Based Sky,所以要为Volume指定一个Physically Based Sky。

 ● Fog

        在这里可以控制场景中雾气的浓度、离地面的高度,也可以设置距离远近。还可以配合使用灯光组件的Volumetrics(体积光)属性创造体积光效果。

● Add Override

        在Volume组件中,我们可以通过该按钮为当前Volume添加以下各个大类的配置信息,并通过Volume组件对这些效果进行调整。

4.光照贴图烘焙

        与传统的离线渲染不同,实时渲染要求以每秒几十帧的速度生成画面,因此我们需要使用很多方法来减少各方面的计算量。要让整个场景看起来真实,需要为其生成全局光照信息(Global Illumination)。但是按照目前的算法和设备的算力,实时生成全局光照信息还不现实。(当然,目前最先进的实时光线追踪(Realtime Raytracing)功能已经可以使用高端显卡实现,比如Nvidia公司的RTX系列显卡)。不过对于大多数设备来说,还是需要使用像光照贴图烘焙(Lightmapping)这样的技术来预计算全局光照信息,将计算好的光照信息保存到光照贴图(Lightmap)上,然后在实时渲染时将它们应用到场景中,来实现全局光照的效果。

5.HDRP材质和着色器

        要渲染某个模型,需要将Mesh、Material、Shader和Texture组合在一起才行:

5.1 Mesh

        Mesh代表的是模型本身,用于表现形状。

5.2 Material

        一个Mesh可以关联多个Material,用于控制模型不同部分的材质表现。比如我们的模型上有塑料的部分,也有金属的部分。只用一种材质来表现这两种完全不同的材料的表面是不可能的,因此需要使用两种材质来表现塑料和金属这两种表面。

5.3 Shader

        每种Material都与一个指定的Shader相关联。Shader是一段代码,包含了用于计算屏幕上每个像素点颜色的具体算法。Shader进行计算的时候会考虑当前场景的光照信息以及在Material上提供的具体配置信息。

        在HDRP中常用的一个Shader是Lit Shader。Lit Shader可以模拟非常多的材质表面,比如金属、玻璃、木材等。

5.4 Texture

        在Surface Inputs参数集合中可以指定各种Map。这些Map所关联的就是Texture(通过Photoshop、Substance Painter等工具生成的Bitmap图片),其用于为模型添加各种细节。

        5.4.1 Surface Options

        Surface Type(表面类型)

        它有两个选项:Opaque(不透明的)和Transparent(透明的)。这是一个基本选项,在设置其他参数之前,你首先要决定你的物体是不是透明的。

        Material Type(材质类型)

        不管选择哪种表面类型,都会显示6种材质类型:Subsurface Scattering(次表面散射)、Standard(标准)、Anisotropy(各向异性)、Iridescence(彩虹色)、Specular Color(高光颜色)和Translucent(半透明)。默认选择的是Standard材质类型。

        可以根据物体表面的特性来选择不同的材质类型。以下列出了部分可应用上述6种材质类型的物体。

材质类型应用
Subsurface Scattering(次表面散射)用于模拟光线与半透明物体交互时产生的现象,俗称SSS。光线进入物体以后,有部分会发生散射并模糊,然后再次返回物体外面(出射角度与入射角度不同)。可用于模拟皮肤、树叶、蜡烛、玉器及瓷器釉面等。
Standard(标准)可用于表现大部分材质,属于PBR材质制作流程中的Metallic Workflow。此工作流把物体分为金属和非金属两类。
Anisotropy(各向异性)各向异性材质适用于模拟拉丝金属表面或者天鹅绒。这类材质表面,从不同的角度看过去,会出现不同的高光现象。
Iridescence(彩虹色)彩虹色材质的特性是,当你的观察角度或者光照角度变化时,物体表面的颜色会发生渐变(渐变色)。这非常适合用于模拟肥皂泡、彩虹色金属表面和昆虫的翅膀等。
Specular Color(高光颜色)可用于表现大部分材质,属于PBR材质制作流程中的Specular Workflow。此工作流类似内置渲染管线中的Standard (Specular setup)。
Translucent(半透明)半透明材质可以和一张Thickness Map配合使用,用于模拟半透明物体。它和次表面散射材质的区别是,出射光线在射出物体之前不会变模糊。

        5.4.2 Surface Inputs

  1. Base Map:用于为模型提供Albedo颜色信息。
  2. Mask Map:通过使用一张将信息储存到RGBA四个通道中的纹理,来一并控制Metallic(金属反光-Red通道)、Ambient Occlusion(环境光遮蔽-Green通道)、Detail Mask(细节遮罩-Blue通道)和Smoothness(光滑度-Alpha通道)。使用一张纹理控制四种属性可以降低内存的占用。
  3. Normal Map:法线贴图用于为模型表面添加更多模型上不存在的细节。

二、RenderPipeline相关菜单

1.HDRP Wizard窗口

        通过Wizard窗口,我们可以快速检查当前项目是否拥有HDRP项目所要求的设置。在此窗口中最主要的是HDRP、HDRP+VR和HDRP+DXR这三个分区。

  • HDRP分区:普通HDRP项目默认使用该快速配置检查列表。如果这里有一项没有通过检查,则界面上会出现Fix按钮,你可以针对每一项单独修复,也可以一键修复所有检查项。
  • HDRP+VR分区:适用于针对HDRP VR项目的配置检查。
  • HDRP+DXR分区:适用于针对HDRP光线追踪项目的配置检查。

2.LookDev

        通过Look Dev窗口,我们可以将模型置于多个HDRI环境下,以便进行快速查看和效果比较。

3.Rendering Debugger

        Debug窗口的作用是,我们通过调整这里不同的参数,可在Game窗口或者Scene窗口实时查看相关的信息。

        举个例子:如果修改Material→Common Material Property为Albedo(反照率贴图),则在Game窗口中可以看到模型上只加载Albedo的效果;如果为Normal(法线贴图),则在Game窗口中可以看到模型上只加载Normal(法线贴图)的效果。

三、HDRP基于物理的渲染

        基于物理的意思是,我们把现实世界中灯光和材质的一些本质信息用计算机图形学表达出来。比如用真实世界中的光照单位来模拟灯光的亮度,模拟真实世界光线的反射和折射从而实现全局光照的效果;用真实世界中物体表面对光的反应对不同材质的属性进行模拟,比如金属材质的反射、玻璃材质的反射和折射、皮肤和树叶的次表面散射、肥皂泡的彩虹色,以及汽车油漆外面包裹的清漆等。

        当然,因为实时渲染要求至少每秒30帧的画面输出,所以我们还无法完整地模拟真实世界的各种效果。但是随着计算机算力的进一步提升,包括CPU、GPU、存储、带宽等的提升,我们会逐步将这些模拟提升到接近真实世界的水平。

四、总结

        一个HDRP场景中除了包含模型外,还需要包含相机、灯光、光照探针、反射探针。然后最重要的是,使用Volume控制整个场景的光照和后处理效果。也需要使用光照贴图烘焙技术来为场景添加全局光照明。

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

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

相关文章

把字节大佬花3个月时间整理的软件测试面经偷偷给室友,差点被他开除了···

写在前面 “这份软件测试面经看起来不错,等会一起发给他吧”,我看着面前的面试笔记自言自语道。 就在这时,背后传来了leder“阴森森”的声音:“不错吧,我可是足足花了三个月整理的” 始末 刚入职字节的我收到了大学室…

照片资源异地共享 ? tftgallery、xampp、快解析三种工具就能实现!

我的工作中,经常会收到处理各种图片的任务,在处理完图片之后,怎么发送给客户呢?传输的实现,需要一个安全而稳定的环境和即时方便的工具去进行操作与下载。一般情况下,我们大多会选择微信、QQ来作为传输下载…

基于stm32F407的hal库,移植FreeRTOS的具体步骤和遇到的问题(看正点原子的视频)

1. 资料准备 因为板子是stm32F407的第二版的,所以开始下的资料是旧版本的,但是旧版本的FreeRTOS工程没有hal库的,都是标准库的,这里是下载stm32F407最新版的资料,进行移植。 资料可以在正点原子官网下载,…

什么是可视化开发平台?拥有什么优势?

随着科技的进步和发展,可视化开发平台拥有广阔的市场前景,在提升企业办公企业效率、做好数据管理等方面具有自身的特色和优势。在办公自动化发展的年代,低代码开发平台是助力企业实现提质增效办公效率的得力助手,其可视化、易操作…

淘宝层级改版,五力模型上线!

最近临近618,淘系又各种功能改版,现在店铺层级也开始陆续改版了。从原来的只需要提升销售金额,到现在的五力模型。我们先说一下原来的店铺层级考核,跟现在的区别主要是哪? 1.原来店铺层级的考核升级特别简单&#xff0…

论文解读 | IROS 2022:MV6D:在RGB-D图像上使用深度逐点投票网络进行多视角6D姿态估计

原创 | 文 BFT机器人 01 研究背景 在计算机视觉领域,6D姿态估计是一种重要的任务,用于确定物体在3D空间中的位置和方向。它在许多应用领域具有广泛的应用,如机器人操作、虚拟现实、增强现实、物体跟踪等。 然而,传统的6D姿态估计方…

Windows Copilot,来了!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 5 月 23 日,微软 2023 Build 开发者大会正式开幕,跟 Google I/O 和 Apple WWDC 一样,每年微软都会在 Build 大会上发布各种新产品。 由于最近几个月 Cha…

webpack简单的搭建和使用

随便创建一个空的文件夹,例如说:explore 然后我们测试一下我们的node是否存在 可以正确打印出版本 我们再次输入:npm init -y 创建一个package.json文件 出现这样的情况就成功了 然后我们要安装webpack在终端上输入命令: npm i …

智能排班系统 【管理系统功能、操作说明——下篇】

文章目录 页面与功能展示排班日历月视图(按职位查询)月视图(按员工查询)周视图 排班任务管理创建排班计算任务设置任务的排班规则设置工作日客流量导入任务计算查看任务结果发布任务任务多算法计算 页面与功能展示 排班日历 在排…

LiveGBS流媒体平台国标GB/T28181功能-作为下级级联到海康大华宇视华为等第三方国标平台同样支持对接政务公安内网国标视频平台

LiveGBS流媒体平台国标GB/T28181功能-作为下级级联到海康大华宇视华为等第三方国标平台同样支持对接政务公安内网国标视频平台 1、什么是GB/T28181级联2、搭建GB28181国标流媒体平台3、获取上级平台接入信息3.1、如何提供信息给上级3.2、上级国标平台如何添加下级域3.2、接入Li…

注意力Transformer

注意力 注意力分为两步: 计算注意力分布 α \alpha α 其实就是,打分函数进行打分,然后softmax进行归一化 根据 α \alpha α来计算输入信息的加权平均(软注意力) 其选择的信息是所有输入向量在注意力下的分布 打…

如何快速搭建SpringBoot+Vue前后端分离的开发环境

唠嗑部分 今天我们来说一说,如何快速搭建SpringBootVue前后端分离的开发环境 需要前置环境nodejs,请自行安装(傻瓜式安装) SpringBoot采用2.4.2版本,Vue采用Vue2版本 言归正传 创建Vue项目 1、安装vue npm install -g vue/cli2、检查v…

当二叉树遇上递归:如何判断单值二叉树?

本篇博客会讲解力扣“965. 单值二叉树”的解题思路,这是题目链接。 先来审题: 以下是输出示例: 以下是提示: 本题非常适合使用递归实现。分以下情况讨论: 若是空树,则符合单值二叉树的性质。若非空&am…

【亲测有效】idea部署jrebel插件

idea部署jrebel插件 1.背景 最近在维护tomcat项目,工程修改代码后需要rebuild才能更新class文件,进而运行生效。 同事介绍jrebel可以实现热部署,于是接入使用。 2.简介 JRebel是一套JavaEE开发工具。 Jrebel 可快速实现热部署&#xff0c…

软考A计划-2022年05月软件设计师下午真题及答案解析

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Axure教程—水平方向多色图(中继器)

本文将教大家如何用AXURE制作动态水平方向多色图 一、效果介绍 如图: 预览地址:https://l83ucp.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87822666 二、功能介绍 简单填写中继器内容即可生成动态水平多色…

类和对象 --- 封装+对象特性

👂 快乐E调 - 林澜叶 - 单曲 - 网易云音乐 👂 Plain Jane (Freestyle) - Ombre2Choc Nation - 单曲 - 网易云音乐 1.5倍速,跟着敲,初识C 目录 🏆封装 🌳属性和行为作为整体 🌳案例 -- 设置…

操作系统层面下——进程状态讲解

目录 一.进程的状态:运行态 1.什么是运行状态? 2.进程进入内存的详细图解: 总结: 二.进程的状态:阻塞态 1.什么是阻塞状态? 三.进程的状态:挂起态 1.什么是挂起态? 2.阻塞与挂起的…

网络安全是一个好专业吗?

前言 网络安全作为一个专业领域,在当今数字时代正变得越发重要和关键。无论是企业还是个人,面对着越来越频繁的网络威胁和攻击,网络安全领域的专业人员扮演着至关重要的角色。那么,从一个资深网安工程师的角度来看,网…

11-FastDFS文件服务器 和 Nginx

1、什么是FastDFS 1、开源的轻量级分布式文件系统,用于解决大数据量存储和负载均衡等问题。 2、优点: 支持HTTP协议传输文件(结合Nginx); 对文件内容做Hash处理,节约磁盘空间; 支持负载均衡、整体性能较佳。 3、FastDFS的二个角色:跟踪服务器(Tracker)、存储服务器…