hdr_downscale3x3brightpass.glsl
上传用户:xhbjoy
上传日期:2014-10-07
资源大小:38068k
文件大小:1k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. uniform sampler2D inRTT;
  2. uniform sampler2D inLum;
  3. varying vec2 uv;
  4. const vec4 BRIGHT_LIMITER = vec4(0.6, 0.6, 0.6, 0.0);
  5. // declare external function
  6. vec4 toneMap(in vec4 inColour, in float lum);
  7. void main(void)
  8. {
  9.     vec4 accum = vec4(0.0, 0.0, 0.0, 0.0);
  10. // Approximate ratio from viewport to texture
  11. vec2 texelSize = vec2(0.005, 0.005);
  12.     accum += texture2D(inRTT, uv + texelSize * vec2(-1.0, -1.0));
  13.     accum += texture2D(inRTT, uv + texelSize * vec2( 0.0, -1.0));
  14.     accum += texture2D(inRTT, uv + texelSize * vec2( 1.0, -1.0));
  15.     accum += texture2D(inRTT, uv + texelSize * vec2(-1.0,  0.0));
  16.     accum += texture2D(inRTT, uv + texelSize * vec2( 0.0,  0.0));
  17.     accum += texture2D(inRTT, uv + texelSize * vec2( 1.0,  0.0));
  18.     accum += texture2D(inRTT, uv + texelSize * vec2(-1.0,  1.0));
  19.     accum += texture2D(inRTT, uv + texelSize * vec2( 0.0,  1.0));
  20.     accum += texture2D(inRTT, uv + texelSize * vec2( 1.0,  1.0));
  21.     
  22. // take average of 9 samples
  23. accum *= 0.1111111111111111;
  24.     // Reduce bright and clamp
  25.     accum = max(vec4(0.0, 0.0, 0.0, 1.0), accum - BRIGHT_LIMITER);
  26. // Sample the luminence texture
  27. vec4 lum = texture2D(inLum, vec2(0.5, 0.5));
  28. // Tone map result
  29. gl_FragColor = toneMap(accum, lum.r);
  30. }