edl后变暗后的解决方法

由于edl类似于ssao,会变暗,这时候调整亮度时,可以类似于hdr,高动态范围转LDR,只是不色调映射就可以了,rgb各分量同时提高同一个比例即可。这样既可以变亮且不溢出,也可以不改变颜色。(当然,可能会出现类似于深绿变浅绿的现象,但是视觉效果还可以。)

learn opengl中是这样子的,
vec3 mapped = hdrColor / (hdrColor + vec3(1.0));

从此可以借鉴,可以把rgb三个分量各自计算

比如
vec3 hdrColor=vec3( r* 10,g10,b10),
float scaleA = hdrColor.r / (hdrColor.r+1);
float scaleB = hdrColor.g / (hdrColor.g+1);
float scaleC = hdrColor.b / (hdrColor.b+1);

很明显,scaleA,scaleB,scaleC往往不相等。取一个相同值即可,比如最小的
float scale = min(min(scaleA,scaleB),scaleC);

vec3 finalColor = (scaler,scaleg,scale*b);

另外,可以在edl的alpha处传递阴影因子,在一定阈值内不乘以系数,(比如,<0.25)这样可以在最后保持清晰的边缘。

猜你喜欢

转载自blog.csdn.net/directx3d_beginner/article/details/132095715