Tonemap.glsl 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "Uniforms.glsl"
  2. #include "Samplers.glsl"
  3. #include "Transform.glsl"
  4. #include "ScreenPos.glsl"
  5. #include "PostProcess.glsl"
  6. varying vec2 vScreenPos;
  7. #ifdef COMPILEPS
  8. uniform float cTonemapExposureBias;
  9. uniform float cTonemapMaxWhite;
  10. #endif
  11. void VS()
  12. {
  13. mat4 modelMatrix = iModelMatrix;
  14. vec3 worldPos = GetWorldPos(modelMatrix);
  15. gl_Position = GetClipPos(worldPos);
  16. vScreenPos = GetScreenPosPreDiv(gl_Position);
  17. }
  18. void PS()
  19. {
  20. #ifdef REINHARDEQ3
  21. vec3 color = ReinhardEq3Tonemap(max(texture2D(sDiffMap, vScreenPos).rgb * cTonemapExposureBias, 0.0));
  22. gl_FragColor = vec4(color, 1.0);
  23. #endif
  24. #ifdef REINHARDEQ4
  25. vec3 color = ReinhardEq4Tonemap(max(texture2D(sDiffMap, vScreenPos).rgb * cTonemapExposureBias, 0.0), cTonemapMaxWhite);
  26. gl_FragColor = vec4(color, 1.0);
  27. #endif
  28. #ifdef UNCHARTED2
  29. vec3 color = Uncharted2Tonemap(max(texture2D(sDiffMap, vScreenPos).rgb * cTonemapExposureBias, 0.0)) /
  30. Uncharted2Tonemap(vec3(cTonemapMaxWhite, cTonemapMaxWhite, cTonemapMaxWhite));
  31. gl_FragColor = vec4(color, 1.0);
  32. #endif
  33. }