下面这个图片应该是比较好的反应了hdr的处理过程的
流程大约如下:
1.首先获得high range的一个floating-point hdr texture
这个过程就是应用普通的光照模型,对于输出的为一个支持浮点数的纹理,不会对RGBA值截断,逼近现实世界的颜色
2.对1得到的texture缩小到1/4 (这个大约是为了节约处理时间,是否可以变得更小呢)的scaled copy,然后根据这个图像计算得到一个average lum texture
3.兼顾The human visual system,计算得到
float fNewAdaptation = fAdaptedLum + (fCurrentLum - fAdaptedLum) * ( 1 - pow( 0.98f, 30 * g_fElapsedTime ) );
4.对scaled copy和average lum合成过滤得到需要高亮的区域 bright pass filter,利用tone mapping
vSample.rgb *= g_fMiddleGray/(fAdaptedLum + 0.001f);
// Subtract out dark pixels
vSample.rgb -= BRIGHT_PASS_THRESHOLD;
// Clamp to 0
vSample = max(vSample, 0.0f);
// Map the resulting value into the 0 to 1 range. Higher values for
// BRIGHT_PASS_OFFSET will isolate lights from illuminated scene
// objects.
vSample.rgb /= (BRIGHT_PASS_OFFSET+vSa

本文介绍了HDR处理的关键步骤,包括生成浮动点HDR纹理、计算平均亮度纹理、进行色调映射以及实现bloom和star效果。通过这些步骤,HDR技术能够更真实地再现光照,并模拟人眼视觉系统。
最低0.47元/天 解锁文章
317

被折叠的 条评论
为什么被折叠?



