UE4风化和老化的影响

来源:互联网 发布:ubuntu官方下载地址 编辑:程序博客网 时间:2024/04/30 13:48

查看原文请点击: 原文链接

现在常见的游戏有动态的风化和老化的影响:雨,雪,灰尘,铁锈,污染……大部分时间这些影响驱动的程序员因为他们需要像访问自定义阴影图或全屏幕空间后处理执行特定的代码。离开dontnod我工作的一个特征允许艺术家自己办理这种效果之前。当时我们需要很多的影响和我想让艺术家原型一样多的理念为他们。这篇文章将提供此功能的解释,将实现细节的虚幻引擎4下。它的目标是与一个渲染引擎的工作。这些风化和老化效应的功能已被使用在dontnod但有一些陷阱,可防止在运输游戏有效地使用它。这一切都取决于游戏的规模和业绩预期。我希望通过这个想法,其他人可以提高系统:)

我感谢dontnod让我谈论它。

风化和老化的影响

我们知道,从图形大量的风化和老化的影响可以通过表面改性[ 1 ]。使用复杂的多层次的照明模型当然是处理它的正确方式是方式不够灵活,需要程序员代码的每一个的影响,将很难获得权利对于所有支持的灯光类型(如基于图像的照明或区域灯光)。

作为一个例子,湿表面出现下雨时能与材料改性的模拟:粗糙度,漫反射率,正常……我谈了很多关于这一主题的其他日志(见水珠系列)。然而,这些修改应只能被它的事。下雨的时候,你不想你的内表面是湿的。记得我,我们正在处理通过添加一些额外的代码在材质表面改性,然后艺术家顶点画的部分表面要求干燥。但这不足以处理所有湿表面情况。例如,一个球员走在潮湿的街道,有一次他进入干燥室内,让潮湿的地上的脚印。这可能是模拟贴花。

以另一个例子,在杀戮地带4:影子落[ 2 ]他们进行全屏幕空间通过修改材料属性正是指向添加污垢,物质(例如爆炸后)。

gbuffer改性

与递延渲染在思考,它可以识别一组艺术家可以修改材料性能所需的控制和模拟风化和老化的影响。这些控件执行gbuffer改性:
递延贴花
全屏幕空间四。我把它称为材料处理系统。
递延效果灯:这些都是一样的阴影图或没有灯,除非他们像递延贴花。光被用作混合操作不透明量。软阴影地图还允许平稳过渡之间的影响。
对象的阴影:属性将被直接修改在对象的着色器gbuffer生成时间。所以这需要特定的代码在每个着色器。用户可以使用顶点画一个效果带来的信息。

每一个工具将执行一些材料性能的模拟效果修改,如昏暗的弥漫性和提高湿表面光洁度。所有的gbuffer修改前必须通过的照明要考虑做。

应用材料改性的gbuffer修改控制可以通过两种方式。最常见的情况是用硬件混合,但它可以限制太多了。另一例是使用读/写能力为相同的纹理(又名prorgammable混合)。不幸的是这种能力是没有得到广泛的支持。PS4幔支持,例如,DX11不(我不谈英特尔的像素同步而简单的读/写相同的像素)。

延迟gbuffer改性

支持所有平台,能做任何定制的材料特性,我履行了额外的全屏幕通过材料性能的改性。有效延缓gbuffer改性。而不是修改gbuffer,不同的工具简单地输出影响体重在gbuffer。这种效应的重量是读传球后应用效果。有这样多的利益:
使用只有一个时间的影响可以保存性能重影响
积累的影响权重可以允许它夹在延迟通过以限制影响的强度
-集中的地方处理的效果。容易作者。
不幸的是这需要存储的影响权重的gbuffer。

输出只有一个重量将只允许在一个时间的支持作用。支持多种效果,这是需要存储更多的重量。我把这个过程称为输出的影响权重”标签系统”。传球是风化和老化,是艺术家通过可控。我只会把它称为“后处理”过的。这里有这样一个特点,通过一个艺术家不需要程序员的一个例子的结果(水坑是递延效果灯):

wetsurfaces

在实践中,艺术家不仅限于风化和老化的影响,他们可以做他们想做的事(但是我保留原来的名字我给这个功能)。这里是另一个例子,递延效果灯用于油漆的物体。

waa_sample

在虚幻4引擎的实现

我想在此功能如何工作的UE4为了使读者更好地了解艺术家控制提供细节。我鼓励人们在谈论新的系统/功能也谈论它是经常忘记的可用性。

标签系统

我已经添加了3的影响权重的支持通过一个额外的缓冲区(平均有6的gbuffer渲染目标UE4,默认为5)。一个渲染目标不能在屏幕空间的贴花混合alpha通道,材料postproces或效果灯。我用它来存储孔隙度。孔隙度是一个异常参数和反映表面粗糙度特征做的一样。它是用在一些风化和老化的影响。更多的细节可以发现在虚幻引擎4 dontnod基于物理渲染图在水滴3A–基于物理的湿表面。

标签系统的每一个工具的UE4功能定制。UE4已经支持的灯光,屏幕空间贴花和材料后处理和有一个基于节点的材质编辑器。

对象的阴影的标记是通过材质编辑器添加3的影响权重的输出节点:

waa_customparameter_wateramount

的影响权重的呼叫dneparameterx。通用名称是自愿作为艺术家决定的影响权重的链接。

屏幕空间使用一个新的贴花贴花混合模式只影响RT时的影响权重。任何混合模式(不透明,半透明,添加剂,调节)可以用来影响权重。只有连接属性的影响是很重要的。如果你把一属性,你必须小心不要覆盖其他属性的默认值。我们使用从连接的输出电流生成的列表来避免写屏蔽。

waa_decalsetup

效果灯从UE4的推导出一个新类型的灯。我们的方向,点与点。lighst有相同的属性,默认的一个带阴影的支持(我们仍然禁用一些东西像IES支持)。但是我们已经写了一个特定的渲染路径,这些灯更轻。一种光会影响3的影响权重的任何组合,光照强度代表值混合在gbuffer。效果灯使用添加剂的混合模式。一个失踪的选项,我没时间在这里是只提供静态几何阴影图。这是有益的效果如雨,移动对象不应该“禁用”湿表面。

waa_customlight2

我没有时间添加材料的后处理支持。这将需要在照明做后处理过。但普林西比为屏幕空间贴花一样。

在标签系统以物质与工具应用于下面的命令:
对象的阴影
灯的习俗
材料的后处理
屏幕空间贴花

这背后的秩序的唯一原因是希望能够消除影响权重(负极添加剂)与屏幕空间贴花。

后处理

后处理是所有正在发生的事情,那里的艺术家会表达他们最。我们使用它的材料后处理编辑器,创建一个新的材料域识别它是风化和老化后处理。的后处理编辑真的是类似于UE4任何材料的后处理。我们已经添加了一个新的dnescenetexture节点接入的影响权重(dneparameter0)和其他gbuffer参数。这是一个简单的湿表面后处理系统,dneparameter0蓄水量创造了一个例子:

waa_postprocesssetup2

请注意,这种效应不能用经典的混合。我们利用金属属性来避免变暗的弥漫在这个效果,这将不会是如果我们不使用延迟gbuffer(除非修改允许可编程混合支持)。然而这种后处理通过需要解决所有的gbuffer工作作为我们的读/写进gbuffer。我们需要初始化所有的gbuffer数据,覆盖这些值的基础上,材质然后写新的结果。知道什么时候我们需要改写的值或不,我们发现如果一个属性连接到输出。这里是导致模板的着色器使用后处理:

void Main(  float4 UVAndScreenPos : TEXCOORD0  ,out float4 OutGBufferA : SV_Target0   ,out float4 OutGBufferB : SV_Target1  ,out float4 OutGBufferC : SV_Target2  ,out float4 OutGBufferD : SV_Target3  ){  float2 UV = UVAndScreenPos.xy;        FMaterialPixelParameters MaterialParameters = MakeInitializedMaterialPixelParameters();  // Retrieve value of the GBuffer  FGBufferData Data = GetGBufferData(UV, false);#if DNE_WEATHERINGANDAGING  MaterialParameters.DNEGBufferData = Data;#endif    // The code below should follow what is done in BasePassPixelShader.usf#if DNE_WEATHERINGANDAGING_USE_NORMAL  Data.WorldNormal = normalize( GetMaterialNormal(MaterialParameters) );#endif  #if DNE_WEATHERINGANDAGING_USE_METTALIC  Data.Metallic = GetMaterialMetallic( MaterialParameters );#endif#if DNE_WEATHERINGANDAGING_USE_BASECOLOR  Data.BaseColor = GetMaterialBaseColor( MaterialParameters );#endif  (...)  float4 OutGBufferE = 0.0f;  float4 OutDNEGBuffer = 0.0f;  EncodeGBuffer(Data, OutGBufferA, OutGBufferB, OutGBufferC, OutGBufferD, OutGBufferE, OutDNEGBuffer);}

因此,后处理是艺术家控制但会变得非常复杂。只有一个后处理是允许的框架。意思是当你想支持多种效应的同时,如有污物量和水的量,这必须在同一个材质节点图管理。其实这是很好的,现在你可以混合不同的风化和老化的影响,如混合污垢和雪。艺术家将能够改善这种混合质量,独立的混合传球给坏的结果。

更多权力给艺术家和处理的一些影响权重的可用数量有限,我们允许这种后处理后处理量的变化:

waa_postprocesssetup4

这意味着一个水平部分可以有不同的dneparameterx用法。它甚至可以允许交换目前使用的着色图。例如,对于潮湿的表面水的用量可以突然用冷冻量和产生冰的感觉。这里是一个视频的劳伦特harduin做(铅打火机),显示出有趣的东西,可以通过该功能的实现。在这个视频效果进行而不需要程序员。

注意人物的阴影去除熔岩效果在年底的视频。这就是为什么我需要实施期权只能在阴影贴图渲染静态几何。

UE4的屏幕空间贴花的建议

UE4的屏幕空间贴花不工作与间接照明。这是一个遗憾,这是不可能的交易没有它的大多数游戏。麻烦的是,由于商店和indirectdiffuselighting UE4 emissivecolor X漫反射率在主缓冲区。的漫反射率是方程式的一部分,由贴花进一步修改不会被考虑,和贴花不会间接光可见。
最近的史诗有加dbuffer“解”,在贴花呈现特定缓冲区的gbuffer产生之前。和gbuffer代使用此dbuffer。不幸的是这需要全z-prepass,意味着一个大如何打,这是不好的。

对于这个问题,一个可能的解决方案是只存储indirectdiffuselighting +发射乘法器和使用basecolor作为发光颜色(所以发射将在颜色和强度的光一样,这是很好的发射是照明啦)。然后执行乘法的漫反射率后。在dontnod这是我们已经做了什么和我们执行乘法的反照率在后处理经过风化和老化的影响。做这些步骤的缺点是,现在你的漫反射率与发射颜色。所以如果一个贴花修改basecolor,它将影响发射颜色。在实践中,这不是一个大问题,这不仅影响不透明背景。透明的对象仍然可以使用经典的发射颜色。

结论

魔鬼在细节。有东西要在实践中处理大量。我试着总结的方法的优点和缺点。特征是不完美的,我没有时间去利用它一个完整的系统,但允许做有趣的东西。dontnod有了疯狂的事:)。不相信这是真的为AAA shipable东西但是如果你PS4只有工作。这一切都取决于你的环境和你的绩效预算。任何讨论都欢迎。

利:

对材料性能完全可定制的操作
可定制的艺术家
正确处理后的结果(雪+土为例)
在累积效应量(可以更好地控制钳)

缺点:

正如许多延迟技术,在透明不工作
作为gbuffer修改延迟要求的空间到gbuffer保存的影响权重。这将伤害性能。6 gbuffer可真糟糕xbone平台一样,但是是负担得起的PS4(臭名昭著的第二个儿子和杀戮地带6 gbuffer [ 4 ])
艺术家想影响权重的多!
-没有获得的几何信息(如高度图或顶点法线)在后处理
没有“紫外化后处理,。的意思是艺术家必须使用世界空间紫外的像素的位置推断世界。也可以是棘手的手柄的垂直表面纹理(正常不强调)。
额外的gbuffer解决
仍然可以要求程序员即使这个系统的影响。它不能处理例如变形的雪。

一些反对的东西或不适用的延迟gbuffer修饰过。与延迟通过我们失去的可能性做了修改与紫外/几何着色器的知识对象。然而,当系统应该与其他工具兼容,这不可能了。

最后请注意。这种系统是不够的,需要完成其他外汇。例如,雨仍然需要后处理或GPU粒子产生的雨滴。此外,处理动态对象特征,就可以在天气影响地区仍然需要游戏设计者脚本/游戏程序员。在这种情况下,取决于天气类型或事件,你有,你可能需要或没有字符的持久性的影响。例如一个角色的行走在雨中湿到干区应时。但这不是真实的如果一个角色来从撒地区回来。油漆炸弹爆炸,需要文字标明永久油漆。所有这些情况下,需要在对象的着色器处理,但这需要一个额外的工作来处理多个上下文。这里的一个问题是,对象的着色器不能访问递延效果灯的影子。记得在我我们哪里只是光线投射上人物的头知道如果我们被雨的影响。

参考

【1】顾,恩,ramamoorthi,贝尔胡米尔,Matusik,纳亚尔,“随时间变化的表面外观:获取,建模和渲染”,HTTP:/ / www.cs。伯克利。教育/ ~雷达视频记录器/论文/ tsvbrdf / 
[ 2 ]的英勇,“以杀戮地带的影子图像质量为下一代”,http://schedule.gdconf.com/session-id/827807 
[ 3 ] lobanchikov,格伦,“GSC游戏世界的十八、潜行者:晴朗的天空–一个Direct3D 10 / 1展示″,http://developer.amd.com/wordpress/media/2012/10/01gdc09ad3ddstalkerclearsky210309.ppt 
[ 4 ]宾利,“臭名昭著的发动机死后:第二个儿子”,http://schedule.gdconf.com/session-id/826056

0 0
原创粉丝点击