1
0

__shdBulbTonemapReinhard.fsh 822 B

12345678910111213141516171819202122232425262728293031323334
  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. float Luminance(vec3 color)
  7. {
  8. return dot(color, vec3(0.2126, 0.7152, 0.0722));
  9. }
  10. vec3 ChangeLuminance(vec3 color, float targetLuminance)
  11. {
  12. return color * (targetLuminance / Luminance(color));
  13. }
  14. vec3 Reinhard(vec3 color)
  15. {
  16. float luminance = Luminance(color);
  17. float luminanceNew = luminance / (1.0 + luminance);
  18. return ChangeLuminance(color, luminanceNew);
  19. }
  20. void main()
  21. {
  22. gl_FragColor = v_vColour*texture2D(gm_BaseTexture, v_vTexcoord);
  23. gl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(gamma));
  24. vec4 light = texture2D(u_sLightMap, v_vTexcoord);
  25. gl_FragColor.rgb = pow(Reinhard(u_fExposure*gl_FragColor.rgb*light.rgb), vec3(1.0/gamma));
  26. }