目录 |
1 渲染比例 1.1 向下缩放 1.2 渲染到缩放后的纹理 1.3 向上缩放 2 MSAA 2.1 配置 2.2 多采样渲染纹理 2.3 解析纹理贴图 2.4 无深度解析 2.5 Depth-Only 通道 3 HDR 3.1 配置 3.2 纹理格式 3.3 色调映射 3.4 莱因哈德(Reinhard) 3.5 修改Reinhard |
本文重点:
1、调整渲染比例
2、支持MSAA
3、启用HDR,带有可选的色调映射
这是涵盖Unity的可脚本化渲染管道的教程系列的第12部分。它涉及通过调整渲染比例,应用MSAA以及与色调映射结合使用HDR缓冲区进行渲染来提高图像质量。
本教程是CatLikeCoding系列的一部分,原文地址见文章底部。“原创”标识意为原创翻译而非原创教程。
本教程使用Unity 2018.4.6f1制作。
(HDR,MSAA和渲染比例一起使用)
1 渲染比例
要渲染的图像的宽度和高度由相机确定,这不受管道的控制。但是我们可以在渲染到摄像机目标之前做任何我们想做的事情。如果渲染为中间的纹理,可以提供我们想要的任何大小。例如,我们可以将所有内容渲染为较小的纹理,然后对相机目标进行最后的blit处理以将其缩放到所需大小。这会降低图像质量,但由于要处理的片段较少,因此加快了渲染速度。Lightweight/Universal管道具有“Render Scale”选项来支持此功能,因此我们也将其添加到我们自己的管道中。
1.1 向下缩放
将渲染比例的滑块添加到MyPipelineAsset,初始范围为?~1。将分辨率降低到四分之一会使质量下降很多(像素数除以16),并且除非原始分辨率很高,否则很可能无法接受。
(Render scale 滑块设置为最小值)
将渲染比例传递给管道实例。
并让MyPipeline跟踪它。
在“渲染”(Render)中渲染摄影机时,请确定在创建渲染纹理之前是否使用缩放渲染,以防出现活动堆栈。缩小渲染比例后,我们将使用缩放渲染,但是仅对游戏窗口摄影机使用,因此场景,预览和其他摄影机不会受到影响。使用布尔变量跟踪此决策,让我们可以参照。
还要跟踪变量中的渲染宽度和高度。它们默认情况下由相机确定,但是在使用缩放渲染时必须进行调整。
1.2 渲染到缩放后的纹理
现在,当使用缩放渲染或后处理时,我们必须渲染为中间纹理。还要使用布尔值对此进行跟踪,并在获取纹理时使用调整后的宽度和高度。
从现在开始,当调用RenderAfterOpaque时,必须将调整后的宽度和高度传递到活动堆栈。
RenderAfterTransparent也是如此。现在,我们必须始终在渲染纹理时释放纹理,而仅在使用堆栈时才调用RenderAfterTransparent。如果不是,我们可以使用常规blit将缩放后的纹理复制到相机的目标。
(渲染比例1、0.75、0.5和0.25;放大且无后处理)
调整渲染比例会影响管道渲染的所有内容,但阴影除外,因为阴影具有自己的大小。有时候偶然地,稍微减小渲染比例似乎会带来一些抗锯齿效果。但是进一步减少可以清楚地看出,这只是细节损失导致的,当blit到最终渲染目标时,会由于双线性插值而模糊不清。
渲染比例如何与双线性插值交互的?
0.5的渲染比例是最简单的:最终,每块2×2目标像素只有一个像素。每个最终像素使用相同的四个权重进行插值,但是有四个可能的方向。
(Render scale 0.5 filtering)
其他渲染比例尺会生成具有不同权重配置的像素,因为从源像素到目标像素的距离会根据比例尺以规则模式变化。
(Render scale 0.75 filtering)
1.3 向上缩放
<