__shdBulbTonemapACES.fsh 721 B

12345678910111213141516171819202122232425262728
  1. varying vec2 v_vTexcoord;
  2. varying vec4 v_vColour;
  3. uniform float u_fExposure;
  4. uniform sampler2D u_sLightMap;
  5. const float gamma = 2.2;
  6. vec3 ACES(vec3 color)
  7. {
  8. // Narkowicz 2015, "ACES Filmic Tone Mapping Curve"
  9. const float a = 2.51;
  10. const float b = 0.03;
  11. const float c = 2.43;
  12. const float d = 0.59;
  13. const float e = 0.14;
  14. return (color * (a * color + b)) / (color * (c * color + d) + e);
  15. }
  16. void main()
  17. {
  18. gl_FragColor = v_vColour*texture2D(gm_BaseTexture, v_vTexcoord);
  19. gl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(gamma));
  20. vec4 light = texture2D(u_sLightMap, v_vTexcoord);
  21. gl_FragColor.rgb = pow(ACES(u_fExposure*gl_FragColor.rgb*light.rgb), vec3(1.0/gamma));
  22. }