ModifiedReinhardTonemapping.glsl 608 B

123456789101112131415161718192021222324
  1. uniform sampler2D colorTexture;
  2. uniform vec3 white;
  3. varying vec2 v_textureCoordinates;
  4. #ifdef AUTO_EXPOSURE
  5. uniform sampler2D autoExposure;
  6. #endif
  7. // See equation 4:
  8. // http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf
  9. void main()
  10. {
  11. vec4 fragmentColor = texture2D(colorTexture, v_textureCoordinates);
  12. vec3 color = fragmentColor.rgb;
  13. #ifdef AUTO_EXPOSURE
  14. float exposure = texture2D(autoExposure, vec2(0.5)).r;
  15. color /= exposure;
  16. #endif
  17. color = (color * (1.0 + color / white)) / (1.0 + color);
  18. color = czm_inverseGamma(color);
  19. gl_FragColor = vec4(color, fragmentColor.a);
  20. }