5-6HDR

68 阅读1分钟

片段中超过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);