微信号:Unity-GreaterChina

介绍:Unity官方开发者平台,分享最前沿的技术文章和开发经验,精彩的Unity活动和社区相关信息.

高清晰渲染管线:专注视觉质量

2018-04-03 12:08 Unity

《可编程脚本渲染管线SRP》中,我们介绍了可编程脚本渲染管线SRP(Scriptable Render Pipeline)。在Unity 2018.1中,我们已为用户提供了二个渲染管线:轻量级管线Light Weight Pipeline和高清晰渲染管线High Definition Pipeline。在本文中,我们将聚焦高清晰渲染管线或HD RP


可编程脚本渲染管线SRP项目,Github地址:

https://github.com/Unity-Technologies/ScriptableRenderPipeline


 

HD RP介绍

HD RP旨在为开发人员提供实现高清晰视觉效果渲染的工具。它的设计遵循以下三个原则:

  • 基于物理的渲染

  • 统一且一致连贯的光照

  • 独立于渲染路径的特征

 

基于物理的渲染依赖三大要素:光照、材质和摄像机。光照和材质的效果依赖于物理的相互作用,它们之间应有明确的解耦,能在各种光照条件下获得一致的效果。摄像机决定光照会怎样在屏幕上显示出来。渲染的目标是让艺术家更轻松地实现近乎真实的效果。

 

统一光照意味着场景中所有对象和参与介质都会得到相同的光照。对象的不透明度、透明度或体积材质不应有任何区别。一个材质必须与任意光照产生正常交互,不管该光照的光源是什么,例如反射探头、区域光等。甚至当被贴花修改时,交互也要正常发生。这样才能得到更为一致的外观效果。

 

在实时渲染中,有很多渲染通道:延迟/正向、单程/多程、平铺/集群等。在游戏开发中,所选取的渲染路径经常会限制可使用的图形功能。对于HD RP,我们尝试在不同渲染路径下增加相同的一组图形功能。这样的结果是,在选择渲染路径时只需要考虑性能,而不必考虑游戏需要哪些功能。

 

在HD RP的开发过程中,我们尽可能紧密地遵循这一原则。

 

HD RP的用途

HD RP针对高端PC和主机开发,可以提供惊艳的高清晰视觉效果。我们希望让小型团队也能使用AAA级图形功能。HD RP运行环境至少需要DX11级别的功能集,并大量使用计算着色器(Compute Shader)。但这样一来,HD RP就不会在功能较弱的平台上运行。HD RP支持的目标API是D3D11、D3D12、GNM(PlayStation 4)、Metal和Vulkan。我们也计划增加对VR支持,但还没在当前可用的预览版中实现。

 

HD RP具有一套全新的功能和行为,需要再学习和二次开发。我们提供了一个转换工具来将项目从Unity内置模式转为HD RP,但这只会帮助你快速重新设置材质和纹理。所有的光照、后期处理效果、场景设置、图形设置和自定义着色器都需要重做。


Viking Village项目升级示例

 

最后,HD RP目前仍在预览阶段,这意味它还不适合用于正式创作流程。

 

光照改进

HD RP拥有一个全新的光照架构:它使用混合延迟/正向-平铺/集群渲染器。这意味着,在场景中有大量光照时,它比Unity内置渲染效果更好。这种新型光照架构更为注重性能。


在调试模式下可视化平铺光照列表

 

此外,HD RP还有大量额外的光照属性以及一个全新的光照编辑器。它可以淡化光照,仅影响漫反射光或镜面反射光,或是使用色温来设置光的颜色。聚光灯现在可以控制内部角度,而且可以拥有不同的形状,例如:椎体、立方体或金字塔体。HD RP还支持Colored cookies。

 

 

HD RP允许使用实时区域光,当前无阴影或烘焙。例如:柱形光。

 

 

最后,光线遵循物理学平方反比衰减,使用的是物理光的单位。光照的控制完全是线性的,去除了Unity内置“Gamma mode”。太阳光强度使用的单位是勒克斯(lux),而点光源和聚光灯所用的单位是流明(Lumen)。

 

 

在处理基于图像的光照方面,反射探头在HD RP中得到了更大提升。现在可以使用定向边界方框或球体形状,代理形状(近似场景几何的区域)和影响形状(像素受影响的区域)是分离的,而且加入了很多影响衰减选项(基于法线方向分平面等)。

 

材质渲染

HD RP有自带的标准着色器,名为受光着色器(Lit Shader)。Lit Shader有不少不错的功能,可以使用比Unity内置渲染中更为丰富的材质。双面选项也可以使用,会自动连接全局照明,加入了很多映射选项,例如单平面和三平面映射。诸如视差遮罩映射或曲面细分等高级功能也已经支持,只需一键便可使用!

 


不过,加到材质渲染的功能中,最强大的则是其光照模型。

 

HD RP使用以下BRDF(双向反射分布函数):对镜面反射层使用各向同性多重散射GGX,对漫反射层使用Disney漫反射功能。HD RP与内置Unity在这方面的区别则在于多重散射部分。

 

金色金属球从平滑(左)到粗糙(右):


各向同性单散射GGX(类似Unity内置功能)


HDRP的各向同性多重散射GGX意味着更为粗糙的材质颜色不会更暗,而会更饱和。

 

默认参数为金属/光滑(Metallic/Smoothness),但也可以在同一着色器中切换为镜面色/光滑(SpecularColor/Smoothness)。

 

HD RP能增强或替换这个初始模型。它有大量选项可以使用:

  • 用各向异性GGX替换各向同性GGX

  • 增加次表面散射到Disney漫反射中

  • 加入透射效果

  • 加入彩虹效果

  • 加入清漆层GGX

 


通过调整光照模型能让我们实现多种复杂的外观。


通过透射和次表面散射实现的蘑菇画面

 

HD RP也能对透明材质使用一组全新选项。例如:通过先背面再前面渲染来帮助排序,用深度后期通道来对景深效果实现透明或其它功能。

 

使用双面透明渲染先背面再前面,渲染实现的彩虹效果示例

 

基于受光着色器(Lit Shader),HD RP提供了一个分层受光着色器(Layered Lit shader),能够混合多个受光着色器。



HD RP还加入了对贴花的支持。贴花在不透明和透明材质都可以使用,可以正确影响全局光照光照贴图或光照探头的采样。


使用贴花在地板上绘制的粉笔画示例

 

调试

HD RP中加入的最重要功能是调试工具。调试功能对理解数据创作和性能问题极其重要。

 

HD RP带有一个全新的自定义调试窗口,能控制调试视图模式和渲染管线设置。这个调试窗口既可以在Unity编辑器中使用,也可以在任意播放器中使用。它现在可以在PlayStation 4等任意目标设备上拥有所有调试功能。

 

 在Unity编辑器中的调试窗口示例,展示了通用属性

 

调试窗口允许显示透明材质和不透明材质的任意材质属性,无论它们使用的是延迟渲染路径还是正向渲染路径。

 

它允许光照调试视图:仅适用漫反射光或仅适用镜面反射光模式。它还能为整个场景修改属性,例如:法线、反射率、光滑度。它也能显示例如动态向量和深度缓冲区的中间渲染目标。它可以根据属性突出对象,例如:突出显示使用光照贴图或曲面细分的对象,还带有NaN检查器等。


 播放器中的调试窗口示例,带有漫反射光模式,并改写了反射率

 

它还有一个有意思的模式-颜色选择器模式,用于在应用后期处理功能前读取当前屏幕上的数值或HDR值。调试窗口可以被轻松扩展以支持游戏所需要的任意调试工具,例如:AI或动画调试工具。

 

新的行为

HD RP具有与 Unity内置的渲染管线完全不同的新行为。

 

延迟和渲染路径支持的功能是一样的。次表面散射、屏幕空间环境遮罩和贴花的处理功能在二种渲染路径中是一样的。没有必要为使用特定功能选择特定渲染路径。

 

HD RP使用摄像机相关渲染。这意味着即使远离世界的原点,也可以有不错的渲染精度。这对所有使用HD RP的着色器都有影响。摄像机可以控制所使用的光照架构,可以在同一场景混合使用延迟渲染路径和正向渲染路径,也可以控制为这次渲染使用哪些功能。它还可以禁用烟雾、阴影和后期处理等效果。


 

为了调整场景设置,还加入了一个基于体积设置的全新系统,它类似当前后期处理效果中的设置。现在可以对每个体积设定场景设置,例如:天空、阳光级联阴影、屏幕空间阴影接触等。还可以通过插入参数在体积间获得平滑的过渡效果。


 

对于天空和烟雾还增加了新选项,例如:基于高度的烟雾效果或是用天空颜色着色的雾。烟雾会影响透明材质和不透明材质。

 

最后,HD RP使用一个专用渲染目标分配系统。它能避免在调整屏幕大小时反复重新分配目标。从而避免了在处理动态分辨率时,产生额外的渲染目标分配。

 

局限

我们仍在开发HD RP,所以它的一些功能还在制作中。HD RP将在 Unity 2018.1作为预览版发布,目前还不适合用来进行正式的创作。


其中一个重要局限是,HD RP还不支持使用Unity粒子系统制作的Lit Particle,只支持Unlit Particle。此外,内置地形系统还存在一些瑕疵。对于所有SRP,之前在Overlay图层渲染的任何对象,例如:镜头光斑特效,都不支持。Grabpass功能也已经不存在了。

  

未来的开发计划

我们目前专注于增强稳定性和平台支持。但仍会推出一些炫丽的功能,例如:体积光照。



区域光将基于Unity Labs团队的研究进行改进。为了得到更为一致的光照和后期处理效果,基于物理的摄像机是下一步要开发的内容。我们还有多个正在制作的角色渲染工具原型。


Windup》项目中的小女孩角色渲染

 

结语

HD RP为Unity带来了全新的渲染管线,能够将当下游戏的视效水准提到尽可能的高。但它也有缺点,那就是其学习曲线,因为HD RP和当前内置的渲染管线有显著的区别。


使用HD RP和复杂材质制作的风格化游戏环境示例

 

所有这些功能都有一定的复杂性。统一光照和一致光照本身就很难实现,所以拥有强大的调试工具非常重要。对于摄像机相关渲染的使用则需要更多考量。你也可以为HD RP编写自定义着色器,但这需要更多的额外知识。

 

你也可以在GitHub上跟踪HD RP的开发进展。如果你有任何问题,欢迎访问SRP在 Github上的频道或者在Unity 官方中文论坛(Unitychina.cn)反馈给我们。


推荐阅读


官方活动

赢取15万美元奖金|环球影业经典IP游戏开发大奖赛

活动信息:截至至4月20日 16:00

活动网址:https://connect.unity.com/challenges/universal


Unite Beijing 2018 及 Training Day

活动信息:5月11-13日 北京国家会议中心

售票官网: http://unite2018.csdn.net/  或者直接扫描下图二维码进行购票!



点击“阅读原文”访问 Unity中文官方论坛 !

 
Unity官方平台 更多文章 缓存服务器Cache Server 6.0发布 Unity for Magic Leap技术预览版推出 Asset Store|高端视觉效果资源推荐 直播预告 | 使用Shader Graph着色器视图快速创建炫酷特效 使用Unity 2D实现经典的扫雷游戏(上)
猜您喜欢 对话交互时代的各种Bot:可控性与智能性的权衡 BlockCanary—轻松找出Android App界面卡顿元凶 Folly源码分析系列(一) — ThreadLocalPtr 仿百度文库:利用flexpaper在线阅读 礼品只要1块钱!11.11错过就是损失!