1#import "Common/ShaderLib/Hdr.glsllib"
2
3uniform sampler2D m_Texture;
4varying vec2 texCoord;
5
6#ifdef BLOCKS
7 uniform vec2 m_PixelSize;
8 uniform vec2 m_BlockSize;
9 uniform float m_NumPixels;
10#endif
11
12vec4 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
46vec4 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
57void 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