在Unreal引擎的CG工作流程流程中,与灯光、合成艺术家的配合是工作流程中非常重要的一环,通常我们会将制作好的画面输出分层序列提供给合成艺术家进行视效的调整,而Unreal本身存在一个非常不友好的BUG,在缓冲层输出的结果会与主层图像在物体的边缘有1-2个像素的位置偏差,导致后期制作人员提取ID之后会造成最终产品的边缘闪烁,这次是尝试通过把主层边缘单独提取来解决TAA算法的边缘抗锯齿与Tonemap冲突造成的闪烁BUG。
这个是测试的镜头
思路来源于B站Up主@Opsader大致是利用场景深度中被边缘遮挡的后方物体数值偏差更大,从而进行上下左右四个方向上四次像素偏移相减后得到的数据相加,得到边缘部分差值与其他地方相差较大的mask
这里用到相加而不是相乘的原因在于,我们视觉上所看到的黑并不是绝对0值,详见之后得到的负值也会在图像上显示黑色