此系列上一篇文章建立了一个添加噪点的基础技术,本文将着眼于利用上一篇文章中的相同3位/通道量化案例来通过非常细微的改动来提高质量。第一个改动是在添加噪点之前应用一个受限的锐化量。噪点容易破坏和掩盖细节。锐化的目的是增加边缘上的最小对比度,使其能够承受噪点的添加。第二个改动是调整噪点的概率密度函数。
左侧的图像是上一篇文章的裁剪图:无锐化和矩形概率密度函数(RPDF)。右侧:有锐化和类似于高斯概率密度函数(GPDF)的函数。两者之间的差异可能很难发现,请看绿色叶子下方的右上角。对于藤蔓,细节得到了更好的保留。

锐化
锐化是一个简单的3×3滤波器核,应用于线性颜色。锐化受到限制,以便最大变化与添加到图像的噪点量成比例。
float3 sharpen; // added to color to sharpen the imagefloat1 limiter; // constant factor proportional to the amount of grain addedfloat3 maxSharpen = max3(abs(sharpen.r), abs(sharpen.g), abs(sharpen.b));sharpen *= min(limiter, maxSharpen) / maxSharpen;概率密度函数
上一篇文章建立了一个排序技术,将纹理强制转换为均匀或矩形概率密度函数。构建 RPDF 纹理后,可以通过对范围为 {-1.0 到 1.0} 的噪点值应用一个函数来改变 PDF。下面我使用了 f(x) = x*abs(x) 来塑形为三角概率密度函数(TPDF)。然后使用 f(x) = (3.0xx - 2.0xx*abs(x)) * sign(x)(在 HLSL 和 GLSL 中也称为 smoothstep())来塑形为类似于高斯概率密度函数(GPDF)的东西。
首先是 TPDF 的结果,

TPDF 通过降低接近 -1 或 1 的噪点值出现的概率,从而减少了可见噪点的量。这有一个积极的视觉副作用,即提高了细节的清晰度。然而,这也似乎带来了一个能量不守恒的副作用:量化值更有可能保持在一个区域内。在上图的深色区域,颜色向黑色靠拢(在一个没有任何纯黑值的区域)。
下面的四个裁剪图更容易看到这一点。从左到右:{RPDF、GPDF 代理、TPDF 和原始图像}。

下面通过 smoothstep() 函数实现的 GPDF 代理提供了一个折衷方案,该方案没有表现出明显 такое 的色调分离,

实际应用
无论是在线性空间(本系列)还是在转换为非线性输出空间(替代方法)后应用噪点/抖动,这些技术的目的都是消除色带,无论位深度如何,并最大化像素的视觉质量。这些技术在时间上应用看起来效果要好得多。
Mikkel Gjoel 在 GDC 2016 上关于 Playdead 的《低复杂度,高保真度 – INSIDE 渲染》演讲的抖动部分,展示了一个很好的例子,即使用噪点与时间 AA 结合来消除色带,同时保持缓存友好且带宽较低的 32 位/像素颜色格式。请参阅Youtube 视频的前几秒。