Home | History | Annotate | Download | only in Hdr
      1 #import "Common/ShaderLib/Hdr.glsllib"
      2 
      3 uniform sampler2D m_Texture;
      4 varying vec2 texCoord;
      5 
      6 #ifdef BLOCKS
      7  uniform vec2 m_PixelSize;
      8  uniform vec2 m_BlockSize;
      9  uniform float m_NumPixels;
     10 #endif
     11 
     12 vec4 blocks(vec2 halfBlockSize, vec2 pixelSize, float numPixels){
     13     vec2 startUV = texCoord - halfBlockSize;
     14     vec2 endUV = texCoord + halfBlockSize;
     15 
     16     vec4 sum = vec4(0.0);
     17     float numPix = 0.0;
     18     //float maxLum = 0.0;
     19 
     20     for (float x = startUV.x; x < endUV.x; x += pixelSize.x){
     21         for (float y = startUV.y; y < endUV.y; y += pixelSize.y){
     22             numPix += 1.0;
     23             vec4 color = texture2D(m_Texture, vec2(x,y));
     24 
     25             #ifdef ENCODE_LUM
     26             color = HDR_EncodeLum(HDR_GetLum(color.rgb));
     27             #endif
     28             //#ifdef COMPUTE_MAX
     29             //maxLum = max(color.r, maxLum);
     30             //#endif
     31             sum += color;
     32         }
     33     }
     34     sum /= numPix;
     35 
     36     #ifdef DECODE_LUM
     37     sum = vec4(HDR_DecodeLum(sum));
     38        //#ifdef COMPUTE_MAX
     39        //maxLum = HDR_GetExpLum(maxLum);
     40        //#endif
     41     #endif
     42 
     43     return sum;
     44 }
     45 
     46 vec4 fetch(){
     47     vec4 color = texture2D(m_Texture, texCoord);
     48     #ifdef ENCODE_LUM
     49        return HDR_EncodeLum(HDR_GetLum(color.rgb));
     50     #elif defined DECODE_LUM
     51        return vec4(HDR_DecodeLum(color));
     52     #else
     53        return color;
     54     #endif
     55 }
     56 
     57 void main() {
     58     #ifdef BLOCKS
     59     gl_FragColor = blocks(m_BlockSize * vec2(0.5), m_PixelSize, m_NumPixels);
     60     #else
     61     gl_FragColor = vec4(fetch());
     62     #endif
     63 }
     64 
     65 
     66