色调映射和眼睛适应-浅色和深色


9

我正在尝试实现色调映射以及眼睛适应和HDR。其实我已经实现了,但是对结果不满意,我认为我做错了。

我的最终图像(在后处理之前)以半浮点纹理存储。我也有2个辅助纹理。第一个将对数亮度及其平均,最小和最大颜色存储在最后一个mip映射中。第二个存储适应值,其计算公式为:

prevLum + (avgLum - prevLum) * (1.0 - exp2(-adaptionRate))

其中prevLum是先前的适应值(此纹理的大小为1x1)。对数亮度纹理是R8B8G8格式,第二个是R8。在教程中,我看到使用了一半的浮动纹理,但就我而言,我的图像太亮(几乎是白色)。

在最终的后期处理着色器中,我使用所有这些值来使用以下代码获得眼睛适应和色调映射:

float autokey(in float lum) {
    return 1.03 - 2.0 / (2.0 + log10(lum + 1.0));
}

float hejl(in float color) {
    float x = max(0.0, color - 0.004);
    return (x * (A * x + B)) / (x * (A * x + C) + D);
}

float adaptedLum = texture(adaptedLuminance, vec2(0.5)).r;
float exp = exposure * autokey(adaptedLum) / adaptedLum;
result *= exp;

result.xyz=RGB2xyY(result.xyz); // conversion to CIE xyY

result.z = hejl(result.z);

result.xyz=xyY2RGB(result.xyz);

这是我的结果:

  • 眼睛适应和色调映射已打开 眼睛适应和色调映射
  • 仅眼睛适应 眼睛适应
  • 仅色调映射 色调映射
  • 一切都关闭了 关

如您所见,打开色调映射时,兔子的颜色较浅。当眼睛适应功能打开时,最终图像会暗得多。有人可以向我解释可能导致这种情况的原因,因为我认为这里有问题。也许是我不太了解色彩空间的东西?还是在色调映射和眼睛适应之前应用了绽放?

我还有另一种奇怪的行为,那就是眼睛适应。当我在黑暗区域看时,背景(天空)变亮。可以,但是总是在相机中心位于黑色区域时发生(无论相机距该区域有多远)。

我基于此页面上的项目中包含的实施: John ChapmanNutty Software


首先,您应该尝试禁用绽放,并且仅在绝对必要的条件下使用。同样,如果色调映射使您的白色变暗,则可能意味着它不在0-1范围内映射,您应该更改此设置或相应地调整照明。
akaltar

做得好,您是否有指向项目的链接?
danijar

谢谢。目前我没有任何链接。但是,当我完成硕士论文时,我将在YouTube或.exe文件上发布一些视频。
哈里

Answers:


1

您只是不使用音调图来绽放,模糊或景深。

这些影响是所有其他因素之上的。也尝试使用这些值。


谢谢,我会在有空的时候再仔细看看。
哈利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.