目录
第二周练习
一、抗锯齿 L_TAA
1、在没有抗锯齿的情况下
假定有一个几个体占据了半边屏幕,另外半边是空的,然后在边缘处取两个像素点进行观察,并对像素的中心点进行采样。在第一个像素点中,几何体只覆盖了大概三分之一,未被采样点采中,输出像素为0%,而第二个像素中几何体覆盖了三分之二左右且被采样点采中,所以出书像素为100%
第一个像素占据了三分之一,但却输出为0%,而第二个像素只占据了三分之二却输出100%,这样的结果就是形成没有任何过渡的硬切边。也就是游戏中常说的狗牙,也就是锯齿效果
2、在有抗锯齿的情况下
同样是取两个像素点进行观察,每个像素点中有四个采样点,采中一个输出25%,所以像素1输出25%,像素2输出75%
这样就形成了一个良好的过渡,拥有抗锯齿的效果。这也是传统抗锯齿MSAA的工作原理
在离线渲染器中采用这种抗锯齿方式可能问题不大,影响最多也就是增加渲染时长。但在虚幻这类实时渲染软件中,工作量相当于翻了4倍,于是有了相对节省性能的抗锯齿方案同样是对一个一个像素点划分多个采样区域,但是每一帧中采样点都会发生变化,因为实时软件中刷新速度非常快,所以结合历史采样结果就能输出一个较为准确的像素填充百分比。这也是时间域抗锯齿Temporal Anti-Aliasing的工作原理(实际情况要复杂很多)
3、传统抗锯齿方案
4、虚幻抗锯齿方案TAA
5、TAA为什么会造成闪烁?
假如一个几何体在屏幕中非常小,小到一个子像素都填不满,然后采样结果就是一帧有一帧没有,然后引擎也不知道有没有,所以就造成了一个闪烁的结果,这也是TAA天生的通病
6、解决虚幻编辑器中的闪烁
方法一:使用人肉超级采样,将屏幕百分比设置为200%。
方法二:使用贴图,和MipMap有关
二、MipMap
1、MipMap的作用1:节约计算资源
当一个使用4k贴图的物体距离摄像机很近时,那它的4K贴图是有必要存在的,但当它距离距离摄像机很远时可以降为较低等级的MipMap贴图来节约计算性能。有点贴图层面LOD的感觉。
2、MipMap作用2:避免细节闪烁
可以简单理解为,由于MipMap的级别降低,使得距离摄像机较远物体贴图像素降低,也就是纹素减少。该物体的所在区域屏幕像素占据的纹素也随之减少,从而提高采样准确度。
无MipMap有MipMap
3、贴图制作规范
图像边长为2的n次方,也叫Mipmap Chain
边长不一定等比,等比最好
4、不同类型的Mipmap设置 
三、Levels of Detail即LOD多细节层次
LOD其实就是几何体层面的MipMap
LOD的大小是通过该物体所占的屏幕面积来计算的
通过修改LOD数量来所需的LOD数量,控制精度。下图左
打开网格体着色来显示物体当前在屏幕中使用的LOD级别,通过颜色来区别。下图右
通过命令控制LOD显示
0是最高级,加1显示下一级
-1恢复自动LOD
四、植被
记几个重要的参数
通过统一缩放来使刷出来的植物比例不一样
对齐到法线:让刷出来的植物和法线方向一致
随机Yaw:打开之后可以让刷出来的植物拥有不同的朝向
随机Pitch角度:建议谨慎使用,开个15度就差不多,让植物拥有一点点倾斜
地面倾斜角度:在角度范围内可以绘制植物,比如0~45度,超过了45度或者小于0度则不能绘制
按shift键加鼠标左键可以擦除
选择模式可以对植物进行单个操作,移动旋转缩放之类的
使用填充可以对选中的一整个面进行植物填充
单个的模式,可以对植物进行单个放置
Megasans植物自带风的效果
将非Megascans进行绘制
将需要绘制的资产添加进植物类型就好
五、烘焙性与移动性
烘焙(Baking)的概念
- 本质是预计算——为了减少运行时(Runtime)的计算量,而将部分内容提前计算出来
- 最常见的烘焙内容是光照,模块叫Lightmass
- 优点:节省性能,生成GI
- 两大缺点:所见非所得,静态效果
- 可烘焙内容:静态光影——漫反射,间接光,自发光,阴影
- 不可烘焙的内容:动态光和高光
- 烘焙后的光影信息叫Lightmap(光照贴图)。相当于在满反射上额外叠一层光影,高光没法叠所以烘焙不了
- lightmass重要体积(LightmassImportance Volume,LIV)用于标定烘焙范围。有点类似于Unity中的Light Probe Group光照探针组
- 烘焙时仅仅计算满反射,反射物体需要使用反射捕捉(ReflectionCapture)补充反射信息,有点类似于unity中的Reflection Probe反射探针。搜的时候搜ref就好
大场景不推荐烘焙,首先要烘很长时间,而且会产生内存非常大的光照贴图
自发光
打开使用静态光照的自发光,烘焙之后的自发光可以照亮周围的物体
ReflectionCapture反射捕捉
使用反射捕捉(左)和未使用反射捕捉对比(右)。其原理就是通过烘焙生成一张360度的鱼眼图,然后在贴回到静态物体上,所以也不适用于能够移动的物体。由于是静态烘焙,所以要把反射捕捉放置到一个合适的位置,范围大小(调整影响半径)也要确定好,才能使需要反射的物体拥有一个比较正确的反射。
lightmass重要体积
黄色的框为lightmass重要体积,球球为体积光照贴图(通过显示—可视化—体积光照贴图打开),可以用来观察光影信息是否正确,也能让可移动的物体拥有GI
打开强制无预计算光照,然后再构建一次光照,可以清除场景中的光照贴图
什么是移动性?(灯光可以移动性对烘焙的影响)
- 提供系统判断是否计算烘焙,分灯光和物体两个角度
- 对性能,美术效果有较大影响
- *骨骼网格体(Skeleton Mesh)默认不参与Lightmass计算。
静态和固定的区别就在于运行时是否可以移动以及参数是否可以调整。静态不可移动不可调整,固定不可移动但是参数可以调整。
静态、固定、可移动效果对比(材质球模型是可以移动的)
同一片区域范围内,固定光源不能超过四盏,因为固定光源的光照信息的写入RGBA四通道的,而没有第五个通道来写光照信息,所以区域内出现第五站灯光之后会出现红叉叉
可以打开固定光源重叠来检查
对照表
物体的可移动性对于烘焙对于GI的影响
红色墙面为静态物体,烘焙时能够产生GI,lightmass重要体积让可移动物体拥有GI(左边有重要体积,右边没有)
固定物体不产生完整的GI,但拥有实时的阴影。可移动物体不产生完整的GI,但拥有实时的阴影。静态物体产生完整的GI,但阴影却不是实时的。
六、屏幕空间效果
屏幕空间Screen Space,屏幕空间内发生的效果:
SSR:Screen Space Reflection ,屏幕空间反射
SSAO:Screen Space AO,屏幕空间环境光遮蔽
SSGI:Screen Space GI,屏幕空间GI(自带SSAO)
SSR和SSAO可以通过后期处理体积(Post Process Volume)调整参数;SSGI嘘使用控制台调整
屏幕空间效果的优缺点:优点简单好用动态效果 缺点效果一般缺少屏幕外信息
SSR
绿色发光体在屏幕上能看见,所以金属板通过SSR能够有绿色的反射内容。当镜头拉近,绿色消失在屏幕空间内,金属板将不再有绿色发光体的反光信息。SSR的最大粗糙度这一个参数能够设置一个限制,也就是说,当物体的最大粗糙度超过这个设定的值,SSR将不再起作用
SSR和反射捕获(reflectionCapture)往往混用,由于的静态烘焙,所以当部分物体离开屏幕空间之后,它们的反射信息也能够保留,缺点是不能够实时刷新。由于反射捕获的形状不同,随着反射角度得到改变,反射信息也有可能变得奇奇怪怪,左为球形反射捕获,右为盒体反射捕获 ,多多少少都出现了一些畸变。反射捕获清晰度可以在项目设置——渲染——反射中修改
SSAO
刚烘焙完的场景,椅子和地面几乎没有AO。而用SSAO就能够很好的修复这个问题。同样也是在后期PP中打开
SSGI
通过控制台打开,同样也是只有在屏幕内的物体才会产生GI,切SSGI自带AO,会把SSAO覆盖掉,但是SSAO的AO比SSGI的AO更加自然。
SSGI一共有四个参数
r.SSGI.Enable 0/1 打开关闭SSGI
r.SSGI.HalfRes 0/1 启用半尺寸渲染 在高分辨环境下降低一些质量就能够大幅提高帧率
r.SSGI.LeakFreeReprojection 0/1 使用防漏模式 建议一直开
r.SSGI.Quality 1-4 SSGI的质量, 1最低 ,4最高
SSGI更适合和Baking一起使用
七、点光源
看效果,具体参数看虚幻官方文档点光源 | 虚幻引擎文档 (unrealengine.com)
基础部分
让光通过透明物体并投射影子,灯光方面需要打开投射半透明阴影,物体方面需要打开体积半透明阴影。
灯光通道
有的时候想单独照亮某个物体,而不影响其他物体就需要用到灯光通道,如图所示,绿色的灯只影响右边的物体,白色的灯只影响左边的物体。物体的灯光的的通道一样才能被灯光影响,有三个通道。在细节面板中搜索通道就能看见
光源衰减部分、细节面板中搜衰减。配合衰减半径能够很快照亮场景,这个东西并不物理正确,谨慎使用。没用好可能会打出非常假的灯光