低复杂,高保真:INSIDE 中的渲染

原标题

Low Complexity, High Fidelity: The Rendering of INSIDE
项目中的各种 Trick 与性能优化,其中颜色抖动在渲染中的应用比较有意思。

Dithering

Color Banding
这个问题源于:8 bit 的颜色无法完美还原高精度的渲染结果。

  • 橙线:理想中的原始信号
  • 蓝线:默认的采样方式(floor),可以看到丢失了精度
  • 噪点:人为在原始信号上叠加的 [0, 1] 随机值

加上噪声之后,信号从原本的“不得不被 floor 至蓝线丢失精度”变成“有 a 概率被 clamp 至蓝线,有 b 概率被 clamp 至红线,a + b == 1”,这样在人眼的感知上也更贴合原始信号。

Noise Modulation

噪声的选择也值得关注,这里提到了一个 Noise Modulation 的概念,大致意思好像是噪声不应当与原始信号无关,详细可以看 Optimal Dither and Noise Shaping in lmage Processing, 2008, Cameron Nicklaus Christou
他们最终选择了预计算 blue noise,并且 remap 至三角概率密度函数(右下角),在实际的应用中只进行一个简单的采样。
Final Noise Type for Dithering