[官方培训]10-UE实时渲染后期 李文磊 Epic 笔记

发布时间 2023-10-02 15:58:10作者: Tcohneyn

实时渲染后期

什么是后期

需求:快速地基于镜头最终画面内容及形式(节奏,色调,气氛)的控制

传统后期:像素

UE后期:像素对象

UE后期

  • UE后期对象:对象像素(Buffer)
    • 对象调节:光影,材质,特效,雾效,Sequencer
    • 像素Buffer处理:AA,相机及镜头效果,ColorGrading,Tonemapping,PPM,Decal,Translucency,Composure等
  • Sequencer组织管理
  • 输出序列:图像的产生到输出流水

UE各种后期原理,作用及应用演示

通过profile gpu命令可以查看当前pp的一个渲染顺序(从上而下)

景深

景深是光线经过镜头以后没有成像在焦平面上,在之前或之后而产生的一种失焦的模糊或虚化的效果。艺术家往往通过这种效果来突出主体或引导视线。

UE当中可以添加CineCamera并调整它的光圈大小(Current Aperture)以及感应器(Sensor)的尺寸或大小来控制景深的深浅。跟物理世界的相机工作原理一致。

如果物理世界的相机需要同样的取景范围,画幅(传感器的尺寸)越大,就会使用更长焦距的镜头,所以可以产生更短的或更浅的景深。UE里面也是类似的。

光圈16 传感器23×13 焦距35

在这里插入图片描述

光圈16 传感器230×130 焦距350
在这里插入图片描述

光圈对景深的影响,UE中有个最小光圈级数默认1.2,符合真实世界镜头的最大光圈值。在UE里面可以吧最小光圈级数调到接近0,这样就可以使用非物理的极大光圈,产生一些特殊的效果。比如模拟真实世界极浅景深的移轴镜头的效果。
在这里插入图片描述

镜头光斑和光圈的也片数是相关的。与物理世界一致。叶片越多越接近于圆形。

问题

火焰的景深效果是不对的,由于是半透明材质,火的默认渲染顺序是景深后,我们需要把它调到景深前,这样才能产生正确的景深效果。

在这里插入图片描述
在这里插入图片描述

暗角

在UE中PPvolume 和 camera里面可以通过晕映强度(Vignette Intensity)调整暗角的强度。UE中只有一个参数来调整暗角,可以自己做后期材质来更加自由的控制暗角的效果。

暗角产生的机制

真实世界的暗角产生主要有两个原因

  • 镜头边缘成像比中心要暗,尤其是大光圈用到更多边缘的镜片,产生的暗角明显强于小光圈的暗角。
  • 光线成像入射到传感器或底片上的入射角中心和边缘是有差别的,边缘比较斜中心比较直,特别是数字的传感器,每一个像素的元件就像井一样的形态,因此倾斜角越斜入射到井里的光线就会越少,也就会越暗。这种情况在广角镜头的时候,边缘的倾斜度会更大,因此这种原因产生的暗角会越明显。长焦镜头相应的会减弱。

广角镜头 广角暗角是由于入射角产生的。其表现为锐利,对比比较强,但是比较靠近边缘和角落。
在这里插入图片描述

长焦镜头 主要另一种原因产生,表现比较柔和对比比较低范围比较大。
在这里插入图片描述

时序超级分辨率

时间超级分辨率 (简称TSR)是与平台无关的时间上采样器,使用的算法主要专注于为每个帧投入更多GPU周期,提高时间上采样质量,节省总GPU帧成本。其做法是渲染比虚幻引擎4中的时间抗锯齿上采样显著更低的内部分辨率。

TSR提供了原生高质量上采样技术,通过Nanite微多边形几何体所能实现的细节和保真度,满足次世代游戏的需求。

下图TSR的渲染流水线:

主屏幕百分比小于100%的时间抗锯齿上采样。

曝光

曝光非常重要,很多参数的值是根据曝光以后的亮度来做后期的。

影视动画一般使用手动曝光,一共有两种方式。

  1. 将计量模式改成手动,取消勾选应用物理摄像机曝光,这样就可以用曝光补偿来给当前场景曝光。
  2. 使用物理的相机打钩,这样就可以用相机的光圈快门ISO来模拟物理的相机来进行曝光。

如何确定一个准确和合适的曝光

调出显示>可视化>HDR(眼部适应),打开后中间有个点这个点可以测量当前点下像素的一个EV值,这个可以作为一个测光点,来类似真实世界的一个测光表达反射来测光。一般对一个中灰的物体渐变灰的中间部分测光,这样能得到相对准确的曝光。
在这里插入图片描述

也可以使用视口模式的仅光照,让整个场景变成灰色,在测量不同明度的基础颜色时就不会产生非常大的EV值的变化。

直方图

直方图提供当前视图中测得的一系列曝光值。图表中的彩色线表示目标曝光值、实际曝光值和最终曝光值,始终适应当前摄像机视图的测量曝光。

HistogramChart.png

  • 线表示当前视图的 目标 EV100曝光。
    • 这是直方图中平均场景曝光的所在位置。
  • 线表示当前视图的 实际 EV100曝光。
    • 这是此视图中存在的当前曝光。实际曝光值随着视图变化,将始终朝着目标曝光值移动。
  • 线是后期处理设置中调整曝光补偿后的 最终 EV100曝光值。
    • 这是曝光补偿后当前视图中的实际曝光值。白线和紫线将保持曝光补偿设定的距离。上例中,曝光补偿为2,其中白线和紫线之间保持该距离。

自发光

有时候不希望它因为EV的调整改变。所以在特效的自发光材质中拿到EV值让它关联,这样无论啥EV的情况下自发光呈现一种恒定的状态。以达到最好的表现力。

校色

UE在ppvolume和camera里面有一些color grading(颜色分级)的功能。UE的校色所有都是发生在HDR线性空间下的。

UE中伽马值pow的概念,伽马2就是pow0.5,0.5就是pow2。按住shift键可以做精细的调整。

增益是乘法的概念,偏差则是加减法。暗部,中灰以及亮部同理。

但暗部和亮部有个阈值定义了哪些属于暗部,哪些属于亮部。

scene color*预曝光的结果来作为HighlighsMax的参考。

区域color grading

加入Color Correction Regions(CCR)插件。后可以实现。

运动模糊

[中文直播]第38期 | 摄像机之运动模糊效果的探讨和使用 Epic 李文磊(官方字幕)

泛光(Bloom)

Bloom产生的原因

  • 很细小的颗粒,雾霾引起的微弱散射
  • 光线的衍射现象
    • 场景中阻挡光线的物体,光线阻挡边缘的地方,光线的效果会被渗透进来在这里插入图片描述

    • 光线经过光圈的时候,在光圈叶片的边缘也会产生衍射现象,不同光圈叶片的数量和形状会产生不同的衍射结果,从而产生不同的光斑的效果。
      在这里插入图片描述

Bloom的使用和参数

Bloom的方法有两种标准方法和卷积方法。

  • 标准方法游戏中用的多,它通过多次降采样然后模糊叠加产生的一种近似效果。有点是速度比较快。
  • 做动画一般用卷积方法

高光的形状可以通过卷积核的贴图里进行调整,以此来模拟变形镜头的拉丝效果的耀斑形状。贴图必须是EXR的高动态图,在外部处理好,并且需要有足够大的覆盖范围。在这里插入图片描述

卷积散射分散参数用来模拟柔光镜头或者空气中尘埃比较多散射比较强的效果。

常用的卷积参数

下面三个都是用来增强耀斑强度的,前两个定义了哪些亮度的耀斑需要增强,第三个是增强多少倍。(这些也是基于曝光之后的值)

  1. 卷积最小提升
  2. 卷积最大提升
  3. 卷积倍增提升

星芒的表现是与光圈强相关的,当光圈减小时衍射现象会变的非常明显,星芒会变的更亮或更明显,当光圈增大时星芒会变的相对减弱,变的更加柔和。

镜头外的Bloom

镜头外的Bloom指的是光斑或光源在镜头外但它所产生的bloom效果会影响整个画面。在这里插入图片描述

实现思路

模拟真实世界的相机的工作原理,UE中叫Overscan。先拍摄一个更广角的一个范围,然后把图像扩大截取中间的其中一部分来实现这样的效果。

胶片颗粒(Flim Grain)

胶片颗粒的模拟和数码的噪声或噪波的变现完全不同,通常它可以用来blend CG元素的细节,从而减少CG感。也可以用作画面的表现形式或元素用来帮助表现气氛或内容。在这里插入图片描述

微观下的形态 随机的,无序的。它的颗粒大小与胶片速度相关,速度越快颗粒大小越大。

胶片颗粒在画面不同灰阶上的表现也不同。通常情况下中灰或稍偏亮部的地方会明显些,暗部不明显。这和数码的噪声在暗部特别明显是有区别的。
在这里插入图片描述

色散

色散表现为一些彩色的像素的溢出效果,在边缘或者高对比度处尤其明显,会导致图像的模糊和失真。
在这里插入图片描述

色散的原理

它是一种镜头的瑕疵或者不完美的表现,它是由于不同波长的光线没有同时聚焦在焦平面上同一点而产生的现象。
在这里插入图片描述

  1. 三种不同波长的光线聚焦在同一点因此没有色散。
  2. 红绿蓝三种不同波长的光线,聚焦在了焦平面前后不同的位置,而产生的一种比较模糊的色散效果,这尤其发生在大光圈或光圈全开的时候。
  3. 红绿蓝三种光线虽然都聚焦在焦平面上,但在不同的位置而产生的一种比较锐利的色彩分离的色散现象。一般发生在图像的边缘尤其是广角镜头。

UE中的色散参数只有两个强度和开始偏移(从中心到边缘的一个屏蔽的渐变,即屏蔽中心保留边缘的色散,符合物理规则)。

色调曲线(Tone curve)

色调曲线(Tone curve)把场景从HDR映射到LDR的曲线。

HistogramChart.png

色调曲线(Tone curve)之间的信息大概是8个stop 256阶,之外的信息要不被压缩要不就直接被clamp掉了。

在不是OCIO的色彩管理时而是用引擎的Tone curve,在后期盒子里有些色调曲线(Tone curve)参数是可以调整的。在这里插入图片描述

另外在流程上色调曲线(Tone curve)作为全局的调整,也就整个项目,片子。逐镜头的还是用ColorGrading来做。

局部曝光(Local Exposure)

通过调整画面局部明暗的方式,来保持亮暗部的层次和细节。这尤其适合画面动态范围特别高全局的Tonemapping已经无法很好的同时兼顾保留亮暗部细节的时候。这和LocalTonemapping的作用是类似的,区别是UE里通过一个额外的过程与Tonemapping分开,也就是关闭了引擎的Tonecurve或Tonemapping,输出HDR序列图的时候,它会包含Local Exposure也就是区域曝光的结果。
在这里插入图片描述

区域曝光的参数和机制

通过定义整个画面中最亮和最暗两个锚点,然后比较画面像素的明度和这两个锚点之间的差距,然后以此为基础来做区域明度的调整或者对比的调整。在这里插入图片描述

我们可以通过显示>可视化>局部曝光看到一张红绿图,这张红绿图展示了屏幕当中像素的明度跟亮暗两个锚点之间差别的大小,越红代表对暗部的锚点差距越小,越绿代表对亮部的锚点差距越小。中灰是接近黑色。
在这里插入图片描述

调整一些参数后发现有一点光晕和柔和的边缘这就涉及到局部曝光的另外一个机制。它会把图像分为基础层和细节层来调整,基础层应用一定的模糊算法(也就这种柔和的边缘)最后和细节层叠加组合的方式来实现调整明暗的同时可以保留高对比的细节,尤其是高光的一些细节。
在这里插入图片描述

参数的作用
在这里插入图片描述

前两个参数主要是高光和阴影对比度的调整。

中间灰偏差主要调节整个明度的偏差,一般在对比调整之后。

中间三个就是用来调整基础层和细节层之间的关系

细节强度来控制多少细节层多少基础层。

模糊亮度混合来控制基础层的模糊效果要有多大。

模糊亮度和大小百分比来控制基础层的模糊效果需要多少倍混合到细节层中。

总结

由于局部曝光的工作机制,基础层有一定的模糊产生的效果不是我们希望看到的。因此局部曝光更适合在自动曝光实时渲染下,对局部的对比和明暗的调整。而对于手动曝光做动画我们可以用更加精细的color grading,甚至输出到外部进行校色这样的流程,来达到更加好的效果。

后期材质

后期材质能做的一些效果

  • 可以将校色通过后期材质自己写,然后暴露参数来达到自由的调整
  • 可以用后期材质做short和short之间转场的过渡
  • 可以自己定义一些暗角的效果,色调分离,色散,色温的效果
  • 做镜头的畸变,来模拟变形镜头
  • 还可以做些特效,镜头上的水渍,血渍,污渍

后期材质的渲染顺序

  • 色调映射后 默认选项,渲染效率最高,一般对于场景颜色精度要求不高的一些后期操作可以色调映射后 比如场景的扭曲,镜头畸变的纠正,加个暗角。
  • 色调映射前 一般对于场景颜色精度要求比较高的一些后期操作可以色调映射后前 比如color grading写在材质里面做颜色的纠正,对比,调整。
  • 半透明前 排除半透物体,后期材质效果对半透物体无效。

半透的混合模式

这些混合模式能够采到Scene color还有Scene depth等信息我们可以把他放到场景里或放到摄像机前面作为一个滤色片的工具,对场景的颜色明度等等进行局部或者整体的调整。

使用这些混合模式的优势是可以附在各种形状的对象上,随意放在场景的各个位置或者镜头前使用起来比较便利。

这里有个球型在上面做了个调制的材质,可以在世界空间任意区域放置,或调整材质的明度亮度。
在这里插入图片描述

也可以放在镜头前面,这里有个渐变灰的材质,在后期也会经常用到这种方式,对屏幕的某个区域进行压暗处理来突出重点。
在这里插入图片描述

镜头前的放置我们还可以用Image Plate
在这里插入图片描述
在这里插入图片描述

半透材质注意事项

它所采的Scene color渲染的品质会比直接渲染的时候低一点,这种情况只有采Scene color的时候会有,而使用调制或additive是不会有质量的差别的。

使用采样Scene color的半透材质Bloom会和场景不一样,它之后的半透材质是不会被渲染的。在这里插入图片描述

这些混合模式也可以附给一些面片放在两个空间的衔接处,这里采样了scene depth场景的深度并使用调制的方式,使得懂外往洞内看产生一种雾效。
在这里插入图片描述

在这里插入图片描述

Sequencer对后期的组织管理

快速,逐镜头,最终效果,协同工作

具体操作看视频[官方培训]10-UE实时渲染后期 | 李文磊 Epic
在这里插入图片描述
在这里插入图片描述

  • 色域指的是色彩的范围,sRGB色域,Rec.709色域等等。

  • Gamma就是灰阶的分布。

    • Gamma的作用一个是在素材层面比如贴图,为了保留更多的暗部细节,因为人眼对暗部非常敏感,但计算机对暗部的阶数或比特数是和亮部一致的,所以我们可以用Gamma把更多的比特数分给暗部,这样可以保留更多的细节和层次。
    • 从输出设备层面老的CRT显示器他有这个特性经过这个Gamma,但LED的显示器并不需要这个,另外在渲染过程中我们一般用线性的Gamma,而不用sRGB或其它的Gamma空间
  • 色深代表色彩的数量或灰阶的阶数,越多就是越光滑。这是一个数据精度的参数,与数据的大小是强相关的。

  • 动态也就是动态范围,代表的是最亮或最暗之间的一个亮度差别。

这四个概念之间是没有必然的联系的。

下面这张图描述了实拍和UE渲染两种方式从图像的产生一直到最终设备输出的一个图
在这里插入图片描述
在这里插入图片描述

总结

  • 什么是后期
  • UE后期对象:对象和像素(Buffer)
  • Squencer 组织管理
  • 输出序列:图像的产生到输出流水

结合:UE后期师对光影,材质,特效,后期,Squencer,输出非常熟悉,能快速调整对象实现更加精准调整。减少传统后期,输出尽量少的通道,利用传统后期优势。

学习地址

地址