热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LightweightRenderPipeline

(翻译)LightweightRenderPipeline(LWRP),轻量级渲染管线,是一个Unity预制的ScriptableRenderPipeline(SRP)。LWRP可

(翻译)

Lightweight Render Pipeline (LWRP),轻量级渲染管线,是一个Unity预制的Scriptable Render Pipeline (SRP)。LWRP可以为移动平台提供图形渲染功能,但你也可以在高端主机和PC上使用LWRP。LWRP使用简化的、基于物理的光照和材质。

LWRP使用single-pass 前向渲染(forward rendering)。使用LWRP,可以在几个平台上 得到优化了的实时渲染性能。

LWRP支持以下平台:



  • Windows and UWP

  • Mac and iOS

  • Android

  • XBox One

  • PlayStation4

  • Nintendo Switch

  • All current VR platforms

Lightweight Render Pipeline有两种可用的模板: LWRP和LWRP-VR。LWRP-VR具有预先开启的VR设置(pre-enabled settings for VR)。两者的文档是一样的。

注意: Built-in和 custom Lit Shaders无法和LWRP一起工作。因为LWRP有一套新的standard shaders。如果你升级(upgrade)当前项目来使用LWRP,你需要升级 built-in shaders到LWRP对应的新的shaders。(LWRP提供了相应的工具)

注意: 使用LWRP的项目无法与 High Definition Render Pipelin及Unity built-in rendering pipeline兼容。因此开发前,你要想清楚用哪一个渲染管线。


Getting started with LWRP

为了使用Lightweight Render Pipeline,你可以新建一个项目或者升级已存在的项目。

一旦你有了一个使用LWRP的项目,你必须创建一个Scriptable Render Pipeline (SRP) Asset (LWRP提供了工具),然后配置项目的Graphics settings。

接下来三个子章节为细节讨论:



  • 创建一个新项目来使用LWRP

  • 升级旧项目来使用LWRP

  • 配置LWRP,包括创建SRP Asset,修改Graphics settings。


Using LWRP in a new Project

如果你想在新项目中使用LWRP,你可以用LWRP模板(templates)来创建新项目。

使用用模板创建新项目(适用于Unity 2018.1后的版本):



  1. 打开Unity。在Unity主页(Home),点击New来创建一个新项目(new Project)。模板(Template)下拉框中选择LWRP模板。

  2. 点击Create Project。Unity会自动为你创建一个带有全部LWRP功能的新项目。

关于更多关于模板使用的信息,请查阅Project Templates

注意: 创建完项目后,在开始使用LWRP前,你必须配置LWRP,即创建SRP Asset,修改Graphics settings。具体做法,请继续看本文下面的** Configuring LWRP for use**。


Installing LWRP into an existing Project

如果你是新建项目来使用LWRP,可以直接跳过这一小节,直接看下一小节Configuring LWRP for use

你可以通过Unity的Package Manager System来下载和安装最新版本的LWRP。

为已存在的项目安装LWRP:



  1. 在Unity中,打开项目。在顶部的导航条,点击 Window > Package Manager来打开Package Manager窗口。选择All标签页。这个标签页显示了当前版本的Unity可以使用的包(packages)。

  2. 从packages列表中选择Lightweight Render Pipeline。在窗口右上角点击Install。这会直接为你的项目安装LWRP。

注意: 在开始使用LWRP前,你必须配置LWRP,即创建SRP Asset,修改Graphics settings。具体做法,请继续看本文下面的** Configuring LWRP for use**。

注意: 把一个已存在的项目切换到LWRP会消耗大量时间和资源。LWRP使用custom lit shaders,是不和built-in Unity lit shaders兼容的。你必须手动修改或转换大量内容。嫌麻烦的话,可以考虑使用LWRP启动一个新项目。


Configuring LWRP for use

为了配置和使用LWRP,你必须首先:



  • 创建Lightweight Render Pipeline Asset,然后

  • 添加此Asset到项目的Graphics settings中。

下面有更详细的步骤。


Creating the Lightweight Render Pipeline Asset

Lightweight Render Pipeline Asset控制着项目的全局rendering和quality settings,并且创建rendering pipeline instance。rendering pipeline instance包含中间资源(intermediate resources)和render pipeline的实现。

创建一个Lightweight Render Pipeline Asset的步骤:



  1. 在Editor中,转到Project window。

  2. 在Project window中右击,选择Create > Rendering > Lightweight Render Pipeline > Pipeline Asset。或者在顶部菜单栏中点击 Assets > Rendering > Lightweight Render Pipeline > Pipeline Asset

  3. 对于此新创建的Asset,可以使用默认的名字或者输入一个新名字。现在你已经创建了一个LWRP Asset。

提示: 你可以为不同平台(或不同测试环境)创建多个具有不同配置的LWRP Assets。


Adding the Asset to your Graphics settings

为了使用Lightweight Render Pipeline,你必须把刚刚新创建的LWRP Asset添加到Unity的Graphics settings中。如果不这样做,Unity会尝试使用built-in render pipeline。



  1. 在顶部菜单栏点击: Edit > Project Settings > Graphics

  2. Render Pipeline Settings域中添加你刚创建的LWRP Asset。

    添加完成。


Lightweight Render Pipeline Asset

LWRP Asset为Lightweight Render Pipeline控制着几个graphical features和quality settings。它是一个scriptable object,继承自RenderPipelineAsset。当你把LWRP Asset设置到Graphics settings时,Unity会从built-in render pipeline切换到LWRP。你可以直接在LWRP中调试相应的配置,而不用去别的地方了。

你可以拥有多个LWRP assets,并在它们之间进行切换。例如,你可以有一个打开阴影的LWRP Asset和一个关闭阴影的LWRP Asset。然而,你不能在HDRP/SRP和LWRP assets之间进行切换,因为它们之间是互不兼容的。


Shader Stripping

Unity可以从单个Shader源文件中编译出多个Shader变体(Shader Variants)。Shader Variants的数量取决于你的Shader中包含了多少关键字。在默认着色器中,Lightweight Render Pipeline为lighting和shadows使用了一系列关键字。LWRP可以根据你在LWRP Asset中激的features,排除一些Shader variants。

当你在LWRP Asset中禁用某些featurers时,pipeline会从构建中(from the build)剥离相关的Shader variants。剥离Shaders使你的build sizes更小,需要更短的build times。如果你的项目不会用到某些features或keywords,Shader Stripping就很有用。

例如,你的某个项目中directional lights可能用不到shadows。没有Shader stripping的话,带有directional shadow支持的Shader variants仍然存在于build中。如果你知道你根本用不到shadows,你可以在LWRP Asset中uncheck Cast Shadows。这样LWRP会把这些Shader Variants从build中剥离。


Built-in/LWRP comparison

这里有一张Feature comparison table,显示了LWRP和Unity Built-in render pipeline支持的features的对比。


Shading models in Lightweight Render Pipeline

一个shading model定义了材质的颜色是怎么随着影响因素(如:surface orientation, viewer direction 和 lighting)变化的。你选择哪个shading model决定于艺术倾向(artistic direction)和程序的性能预算。LWRP提供的Shaders具有以下shading models:



  • Physically Based Shading

  • Simple Shading

  • Baked Lit Shading

  • No lighting


Physically Based Shading

Physically Based Shading (PBS) 基于于物理定律通过计算表面(surface)的反射光问题来模拟物体在真实世界中的样子。利用它可以生成逼真的物体(objects),即真实感渲染。

PBS模型遵守以下两条规则:

Energy conservation - 能量守恒,表面反射的光的总量决不会大于总的入射光量。除非物体本身也是发光体,如霓虹光。Surfaces在微观层次具有微几何形态(Microgeometry )。一些物体具有光滑的微身体形态(smooth Microgeometry),这使物体看起来像“镜子”。别的物体具有粗糙的微身体形态。使用LWRP,你可以模拟被渲染物体的表面的光滑度。

当光到达被渲染物体表面时,部分光被反射,部分光被折射。反射的光叫镜面反射,specular reflection。它会随着Camera的方向和表面上的到达点而变化。在这个shading model中,高光区域(specular highlight)的形状是用GGX function来近似的。

对于金属物体,其表面会吸收和改变光。对于非金属物体(non-metallic objects),其表面会反射部分光。

光的衰减只受光的强度(light intensity)影响。这意味着你不必为了控制衰减而增加光的范围(range),因为没用的。

下面这两个LWRP Shaders使用Physically Based Shading:



  • Lit

  • Particles Lit

注意:PBS模型不适用于低端手机硬件。如果你的目标平台是这种低端手机硬件,请使用下面要讲的Simple Shading模型。


Simple shading

这个shading模型适用于风格化的视觉效果(stylized visuals)或者运行于非高端硬件平台(less powerful platforms)上的游戏。使用这个shading model的材质并不具有真正的(truly)photorealistic。这个shading model不遵守能量守恒定律,是基于Blinn-Phong模型的。

在Simple Shading model中,材质反射漫反射光和镜面高光,两者之间没有关联。材质反射的漫反射光和高光的问题取决于你设置的材质属性,并且反射光的总量可以超过超过入射光的问题。镜面反射仅随camera direction变化。

光的衰减(light attenuation)仅受光强影响。

下面这些LWRP Shaders使用了Simple Shading:



  • Simple Lit

  • Particles Simple Lit


Baked Lit shading

Baked Lit shading没有实时光照(real-time lighting)。材质可以接受来自lightmaps或Light Probes的baked lighting。这以较小的性能代价为场景增加了一些深度。使用这个shading model的游戏可以运行于less powerful platforms。

LWRP Baked Lit shader是唯一使用Baked Lit shading的shader。


Shaders with no lighting

LWRP提供了一些不使用光照的Shaders。这意味着它们没有directional lights,也没有baked lighting。因为没有光照计算,这些shaders的编译速度会比有光照的Shaders快。

下面这些LWRP Shaders没有光照:



  • Unlit

  • Particles Unlit

参考:



  1. Lightweight Render Pipeline

首次发表于我的知乎专栏:https://zhuanlan.zhihu.com/p/69766402



推荐阅读
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • Windows 10中没有Documents and Settings文件夹怎么办?
    在Windows 10系统中找不到Documents and Settings文件夹,本文介绍了几种操作方法,包括查找临时文件夹、显示隐藏文件、复制文件夹地址等。同时解释了Windows 10中停用Documents and Settings文件夹的原因,并指出了替代的文件夹路径。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了如何在使用emacs时去掉ubuntu的alt键默认功能,并提供了相应的操作步骤和注意事项。 ... [详细]
author-avatar
Devil灬旋律
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有