200+篇教程总入口,欢迎收藏:
放牛的星星:[教程汇总+持续更新]Unity从入门到入坟——收藏这一篇就够了zhuanlan.zhihu.com本文重点内容:
1、通过滑动条调整渲染缩放
2、支持逐相机的不同程度缩放
3、在所有后处理之后重新缩放最终目标
这是关于创建自定义脚本渲染管道系列教程的第16部分。它是关于将渲染分辨率与目标缓冲区大小解耦的。
本教程是CatLikeCoding系列的一部分,原文地址见文章底部。
本教程使用Unity 2019.4.16f1制作。
修改
我在上一教程的末尾添加了一个新部分:4.5固定非标准相机。当渲染目标纹理使用中间缓冲区时并且没有post FX时,删除了CopyTexture的使用。
1 可变分辨率
应用程序一般以固定的分辨率运行。一些应用程序允许通过设置菜单更改分辨率,但这需要完全重新初始化图形。一个更灵活的方法是保持应用程序的分辨率不变,但改变相机用于渲染的缓冲区的大小。这将影响整个渲染过程,除了最终绘制到帧缓冲区。此时的结果将被重新缩放以匹配应用程序的分辨率。
通过减少缓冲区的大小,可以减少片段的数量,从而提高性能。例如,可以对所有3D渲染执行此操作,同时使UI保持全分辨率。还可以动态调整比例,以保持可接受的帧频。最后,我们还可以将缓冲区的大小增加到超采样,从而减少由有限分辨率引起的混叠失真。最后一种方法也称为SSAA,代表超采样抗锯齿。
1.1 缓冲设置
调整渲染比例会影响缓冲区大小,因此我们将为CameraScaleSettings添加渲染比例的可配置滑块。应该有一个最小比例尺,我们使用0.1。将2用作最大值,因为如果使用单个双线性插值步骤重新缩放比例,高于2不会提高图像质量。相反,高于2会使质量变差,因为当最终采样到最终目标分辨率时,我们最终会完全跳过许多像素。
默认渲染比例应在CustomRenderPipelineAsset中设置为1。
1.2 缩放渲染
从现在开始,我们还将追踪是否在CameraRenderer中使用缩放渲染。
我们不希望配置的渲染比例影响场景窗口,因为它们是用于编辑的。通过在适当时在PrepareForSceneWindow中关闭缩放渲染来实现此目的。
我们确定在Render中调用PrepareForSceneWindow之前是否应该使用缩放渲染。跟踪变量中的当前渲染比例并检查其是否不为1。
但是,我们应该把边界设置的更模糊一些,因为与1的非常微小的差异将不会在视觉上和性能上产生任何差异。因此,仅在差异至少1%时才使用缩放渲染。
从现在开始,在使用缩放渲染时,我们还需要使用中间缓冲区。因此,请在Setup中进行检查。
1.3 缓冲大小
因为我们的相机的缓冲区大小现在可以不同于Camera组件指示的缓冲区大小,所以我们需要跟踪最终使用的缓冲区大小。我们可以为此使用一个Vector2Int字段。
剔除成功后,在Render中设置适当的缓冲区大小。