@@ -22,6 +22,38 @@ bool texSeamless = false;
22
22
const float e = 2.718281828459 ;
23
23
const float BS = 10.0 ;
24
24
25
+ #ifdef ENABLE_TONE_MAPPING
26
+
27
+ /* Hable's UC2 Tone mapping parameters
28
+ A = 0.22;
29
+ B = 0.30;
30
+ C = 0.10;
31
+ D = 0.20;
32
+ E = 0.01;
33
+ F = 0.30;
34
+ W = 11.2;
35
+ equation used: ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F
36
+ */
37
+
38
+ vec3 uncharted2Tonemap(vec3 x)
39
+ {
40
+ return ((x * (0.22 * x + 0.03 ) + 0.002 ) / (x * (0.22 * x + 0.3 ) + 0.06 )) - 0.03334 ;
41
+ }
42
+
43
+ vec4 applyToneMapping(vec4 color)
44
+ {
45
+ color = vec4 (pow (color.rgb, vec3 (2.2 )), color.a);
46
+ const float gamma = 1.6 ;
47
+ const float exposureBias = 5.5 ;
48
+ color.rgb = uncharted2Tonemap(exposureBias * color.rgb);
49
+ // Precalculated white_scale from
50
+ // vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W));
51
+ vec3 whiteScale = vec3 (1.036015346 );
52
+ color.rgb *= whiteScale;
53
+ return vec4 (pow (color.rgb, vec3 (1.0 / gamma)), color.a);
54
+ }
55
+ #endif
56
+
25
57
void get_texture_flags()
26
58
{
27
59
vec4 flags = texture2D (textureFlags, vec2 (0.0 , 0.0 ));
@@ -116,22 +148,26 @@ vec4 base = texture2D(baseTexture, uv).rgba;
116
148
color = base.rgb;
117
149
#endif
118
150
151
+ vec4 col = vec4 (color.rgb * gl_Color .rgb, 1.0 );
152
+
119
153
#if MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE
120
154
float alpha = gl_Color .a;
121
- vec4 col = vec4 (color.rgb, alpha);
122
- col *= gl_Color ;
123
- if (fogDistance != 0.0 ){
155
+ if (fogDistance != 0.0 ) {
124
156
float d = max (0.0 , min (vPosition.z / fogDistance * 1.5 - 0.6 , 1.0 ));
125
157
alpha = mix (alpha, 0.0 , d);
126
158
}
127
- gl_FragColor = vec4 (col.rgb, alpha);
159
+ col = vec4 (col.rgb, alpha);
128
160
#else
129
- vec4 col = vec4 (color.rgb, base.a);
130
- col *= gl_Color ;
131
- if (fogDistance != 0.0 ){
161
+ if (fogDistance != 0.0 ) {
132
162
float d = max (0.0 , min (vPosition.z / fogDistance * 1.5 - 0.6 , 1.0 ));
133
163
col = mix (col, skyBgColor, d);
134
164
}
135
- gl_FragColor = vec4 (col.rgb, base.a);
165
+ col = vec4 (col.rgb, base.a);
166
+ #endif
167
+
168
+ #ifdef ENABLE_TONE_MAPPING
169
+ gl_FragColor = applyToneMapping(col);
170
+ #else
171
+ gl_FragColor = col;
136
172
#endif
137
173
}
0 commit comments