123456789101112131415161718192021222324252627282930 |
- uniform sampler2D colorTexture;
- uniform float avgLuminance;
- uniform float threshold;
- uniform float offset;
- varying vec2 v_textureCoordinates;
- float key(float avg)
- {
- float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0));
- return max(0.0, guess) + 0.1;
- }
- // See section 9. "The bright-pass filter" of Realtime HDR Rendering
- // http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf
- void main()
- {
- vec4 color = texture2D(colorTexture, v_textureCoordinates);
- vec3 xyz = czm_RGBToXYZ(color.rgb);
- float luminance = xyz.r;
- float scaledLum = key(avgLuminance) * luminance / avgLuminance;
- float brightLum = max(scaledLum - threshold, 0.0);
- float brightness = brightLum / (offset + brightLum);
- xyz.r = brightness;
- gl_FragColor = vec4(czm_XYZToRGB(xyz), 1.0);
- }
|