片段中超过1.0的亮度值和颜色值会被约束在1.0,导致细节损失,所以解决方式是让颜色暂时超过1.0,然后将其转换在区间内
使用浮点帧缓冲时,需要将颜色缓冲内部设为GL_RGB格式
色调映射算法是将转换的浮点颜色值转换到LDR中
vec3 mapped = hdrColor / (hdrColor + vec3(1.0));
mapped = pow(mapped, vec3(1.0 / gamma));
color = vec4(mapped, 1.0);
一般在白天使用低曝光,夜间使用高曝光,需要调节曝光参数
vec3 mapped = vec3(1.0) - exp(-hdrColor * exposure);