tonemap.fragment.js 1.4 KB

1234567891011121314151617181920212223242526272829
  1. // Do not edit.
  2. import { ShaderStore } from "../Engines/shaderStore.js";
  3. const name = "tonemapPixelShader";
  4. const shader = `varying vec2 vUV;uniform sampler2D textureSampler;uniform float _ExposureAdjustment;
  5. #if defined(HABLE_TONEMAPPING)
  6. const float A=0.15;const float B=0.50;const float C=0.10;const float D=0.20;const float E=0.02;const float F=0.30;const float W=11.2;
  7. #endif
  8. float Luminance(vec3 c)
  9. {return dot(c,vec3(0.22,0.707,0.071));}
  10. #define CUSTOM_FRAGMENT_DEFINITIONS
  11. void main(void)
  12. {vec3 colour=texture2D(textureSampler,vUV).rgb;
  13. #if defined(REINHARD_TONEMAPPING)
  14. float lum=Luminance(colour.rgb);
  15. float lumTm=lum*_ExposureAdjustment;float scale=lumTm/(1.0+lumTm);
  16. colour*=scale/lum;
  17. #elif defined(HABLE_TONEMAPPING)
  18. colour*=_ExposureAdjustment;const float ExposureBias=2.0;vec3 x=ExposureBias*colour;vec3 curr=((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;x=vec3(W,W,W);vec3 whiteScale=1.0/(((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F);colour=curr*whiteScale;
  19. #elif defined(OPTIMIZED_HEJIDAWSON_TONEMAPPING)
  20. colour*=_ExposureAdjustment;vec3 X=max(vec3(0.0,0.0,0.0),colour-0.004);vec3 retColor=(X*(6.2*X+0.5))/(X*(6.2*X+1.7)+0.06);colour=retColor*retColor;
  21. #elif defined(PHOTOGRAPHIC_TONEMAPPING)
  22. colour= vec3(1.0,1.0,1.0)-exp2(-_ExposureAdjustment*colour);
  23. #endif
  24. gl_FragColor=vec4(colour.rgb,1.0);}`;
  25. // Sideeffect
  26. ShaderStore.ShadersStore[name] = shader;
  27. /** @internal */
  28. export const tonemapPixelShader = { name, shader };
  29. //# sourceMappingURL=tonemap.fragment.js.map