1/*
2 * Copyright 2011-2019 Branimir Karadzic. All rights reserved.
3 * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
4 */
5
6#include "../common/common.sh"
7
8uniform vec4 u_offset[16];
9uniform vec4 u_tonemap;
10#define u_time u_tonemap.w
11
12float reinhard(float _x)
13{
14	return _x / (_x + 1.0);
15}
16
17vec3 reinhard(vec3 _x)
18{
19	return _x / (_x + 1.0);
20}
21
22float reinhard2(float _x, float _whiteSqr)
23{
24	return (_x * (1.0 + _x/_whiteSqr) ) / (1.0 + _x);
25}
26
27vec3 reinhard2(vec3 _x, float _whiteSqr)
28{
29	return (_x * (1.0 + _x/_whiteSqr) ) / (1.0 + _x);
30}
31
32vec4 blur9(sampler2D _sampler, vec2 _uv0, vec4 _uv1, vec4 _uv2, vec4 _uv3, vec4 _uv4)
33{
34#define _BLUR9_WEIGHT_0 1.0
35#define _BLUR9_WEIGHT_1 0.9
36#define _BLUR9_WEIGHT_2 0.55
37#define _BLUR9_WEIGHT_3 0.18
38#define _BLUR9_WEIGHT_4 0.1
39#define _BLUR9_NORMALIZE (_BLUR9_WEIGHT_0+2.0*(_BLUR9_WEIGHT_1+_BLUR9_WEIGHT_2+_BLUR9_WEIGHT_3+_BLUR9_WEIGHT_4) )
40#define BLUR9_WEIGHT(_x) (_BLUR9_WEIGHT_##_x/_BLUR9_NORMALIZE)
41
42	vec4 blur;
43	blur  = texture2D(_sampler, _uv0)*BLUR9_WEIGHT(0);
44	blur += texture2D(_sampler, _uv1.xy)*BLUR9_WEIGHT(1);
45	blur += texture2D(_sampler, _uv1.zw)*BLUR9_WEIGHT(1);
46	blur += texture2D(_sampler, _uv2.xy)*BLUR9_WEIGHT(2);
47	blur += texture2D(_sampler, _uv2.zw)*BLUR9_WEIGHT(2);
48	blur += texture2D(_sampler, _uv3.xy)*BLUR9_WEIGHT(3);
49	blur += texture2D(_sampler, _uv3.zw)*BLUR9_WEIGHT(3);
50	blur += texture2D(_sampler, _uv4.xy)*BLUR9_WEIGHT(4);
51	blur += texture2D(_sampler, _uv4.zw)*BLUR9_WEIGHT(4);
52	return blur;
53}
54