这篇文章探讨了几种所谓“跳过后期”的实现思路。
需要明确的是,“后期”并不是大家想象中在某个渲染阶段“突然完成”的操作,它实际上贯穿了整个渲染管线的多个步骤。因此,严格来说,并不存在真正意义上的“跳过后期”。
不过我理解你们的意思,接下来将提供几种相关的实现思路供参考作为头脑风暴素材
MediaPlayer
自定义蒙版 + PostPeocessVoulme
有些小伙伴觉得抗锯齿对视频画面产生了鬼影模糊,想完全跳过抗锯齿
这个办法可以跳过
- 后期效果
- 抗锯齿
- 颜色映射
屏幕材质和模型
首先,我们需要创建一个屏幕材质。这个材质将用作屏幕的基础显示内容。需要注意的是,如果你的素材是线性颜色,你可能需要在材质中将其转为 sRGB 颜色。以下是屏幕材质的设置示意图,请注意基础颜色
必须连接,之后会用到:
接下来,将材质应用到场景中,记住这个过曝的画面效果,随后我们会做对比:
为模型启用 自定义深度通道(需要在项目设置中开启)。
设置 自定义深度模板值 ,这里我们使用了一个示例值 200
。
后期材质
接下来,创建一个后期材质,并用于 PostProcessVolume
在PostPeocessVoulme中使用
制作材质,将自定义蒙蔽的R通道与自定义模板值(本例中为200
)进行比较
通过 自定义深度 - 场景深度 的差值计算平面深度蒙版:
将两个结果相乘,得到最终的屏幕蒙版
接下来,将白色区域替换为材质的漫反射贴图颜色,最终跳过后期处理,得到以下效果:
由于跳过了后期处理,抗锯齿效果会失效,导致画面出现轻微的抖动(抗锯齿效果贯穿整个渲染管线)。为了解决或缓解抖动问题,可以反转抗锯齿的抖动效果:
可以看到,最终屏幕画面是和原画面一致的
优点是再猛烈的后期效果都别想惹我们的小屏幕
这种方法的缺点是我们跳的太多了,却又绕不过抖动
另外,这种交接边缘也是同样的原因产生的,可以用偏移蒙版的方法对mask做向内模糊来解决(类似于对后期描边进行模糊处理的做法),做起来+±-很繁琐,我就不演示了。更可以直接在后期给这个mask单独写个后期抗锯齿,FXAA之类的。
透明后期剔除
那么可不可以不跳过抗锯齿呢,有些小伙伴在意的其实只是是色彩映射
这次不对其进行转换了
也不用PostPeocessVoulme
做后期材质
了,复制一个面片
新建一个透明材质,总所周知,透明材质就是一种"后期材质"
某些不适用漫反射传参的情况你可以使用底色
很快啊,我们直接就能看到结果,面片里的就是漫反射颜色
对曝光进行反转
一个滤光图层就做好了