@@ -9,12 +9,13 @@ uniform sampler2D u_texture;
99#ifdef RENDER_TEXT_AND_SYMBOL
1010uniform sampler2D u_texture_icon;
1111#endif
12- #ifdef RENDER_SDF
12+
1313uniform highp float u_gamma_scale;
1414uniform lowp float u_device_pixel_ratio;
1515uniform bool u_is_text;
16+ uniform bool u_is_sdf;
1617uniform lowp float u_scale_factor;
17- #endif
18+
1819// Boolean-config transition fragment alpha multiplier (dual-pass: originals + deltas).
1920uniform lowp float u_opacity_multiplier;
2021#ifdef ICON_TRANSITION
@@ -38,9 +39,7 @@ in vec2 v_tex_a;
3839in vec2 v_tex_b;
3940#endif
4041
41- #ifdef RENDER_SDF
4242in float v_draw_halo;
43- #endif
4443in vec3 v_gamma_scale_size_fade_opacity;
4544#ifdef RENDER_TEXT_AND_SYMBOL
4645in float is_sdf;
@@ -61,13 +60,10 @@ uniform highp sampler3D u_lutTexture;
6160
6261// / Symbol paint properties.
6362in lowp float v_opacity;
64- #ifdef RENDER_SDF
6563in lowp vec4 v_fill_np_color;
6664in lowp vec4 v_halo_np_color;
6765in lowp float v_halo_width;
6866in lowp float v_halo_blur;
69- #endif
70-
7167#ifdef LIGHTING_3D_MODE
7268in lowp float v_emissive_strength;
7369#endif
@@ -78,14 +74,13 @@ void main() {
7874 lowp vec4 halo_color = vec4 (0.0 );
7975 lowp float halo_width = 0.0 ;
8076 lowp float halo_blur = 0.0 ;
81- #ifdef RENDER_SDF
82- // Pre-multiply colors by alpha.
83- fill_color = vec4 (v_fill_np_color.rgb * v_fill_np_color.a, v_fill_np_color.a);
84- halo_color = vec4 (v_halo_np_color.rgb * v_halo_np_color.a, v_halo_np_color.a);
85- halo_width = v_halo_width;
86- halo_blur = v_halo_blur;
87- #endif
88-
77+ if (u_is_sdf) {
78+ // Pre-multiply colors by alpha.
79+ fill_color = vec4 (v_fill_np_color.rgb * v_fill_np_color.a, v_fill_np_color.a);
80+ halo_color = vec4 (v_halo_np_color.rgb * v_halo_np_color.a, v_halo_np_color.a);
81+ halo_width = v_halo_width;
82+ halo_blur = v_halo_blur;
83+ }
8984 lowp float emissive_strength = 0.0 ;
9085#ifdef LIGHTING_3D_MODE
9186 emissive_strength = v_emissive_strength;
@@ -112,47 +107,47 @@ void main() {
112107 cutout_factors = get_cutout_factors(gl_FragCoord );
113108#endif
114109
115- #ifdef RENDER_SDF
116- float EDGE_GAMMA = 0.105 / u_device_pixel_ratio;
110+ if (u_is_sdf) {
111+ float EDGE_GAMMA = 0.105 / u_device_pixel_ratio;
117112
118- float gamma_scale = v_gamma_scale_size_fade_opacity.x;
119- float size = v_gamma_scale_size_fade_opacity.y;
113+ float gamma_scale = v_gamma_scale_size_fade_opacity.x;
114+ float size = v_gamma_scale_size_fade_opacity.y;
120115
121- float fontScale = u_is_text ? size / 24.0 : size;
116+ float fontScale = u_is_text ? size / 24.0 : size;
122117
123- out_color = fill_color;
124- highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);
125- lowp float buff = (256.0 - 64.0 ) / 256.0 ;
118+ out_color = fill_color;
119+ highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);
120+ lowp float buff = (256.0 - 64.0 ) / 256.0 ;
126121
127- bool draw_halo = v_draw_halo > 0.0 ;
128- if (draw_halo) {
129- out_color = halo_color;
130- gamma = (halo_blur * u_scale_factor * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);
131- buff = (6.0 - halo_width * u_scale_factor / fontScale) / SDF_PX;
132- }
122+ bool draw_halo = v_draw_halo > 0.0 ;
123+ if (draw_halo) {
124+ out_color = halo_color;
125+ gamma = (halo_blur * u_scale_factor * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);
126+ buff = (6.0 - halo_width * u_scale_factor / fontScale) / SDF_PX;
127+ }
133128
134- lowp float dist = texture(u_texture, v_tex_a).r;
135- highp float gamma_scaled = gamma * gamma_scale;
136- highp float alpha = smoothstep (buff - gamma_scaled, buff + gamma_scaled, dist);
129+ lowp float dist = texture(u_texture, v_tex_a).r;
130+ highp float gamma_scaled = gamma * gamma_scale;
131+ highp float alpha = smoothstep (buff - gamma_scaled, buff + gamma_scaled, dist);
137132
138- out_color *= alpha;
139- #else // RENDER_SDF
140- #ifdef ICON_TRANSITION
133+ out_color *= alpha;
134+ } else {
135+ #ifdef ICON_TRANSITION
141136 vec4 a = texture(u_texture, v_tex_a) * (1.0 - u_icon_transition);
142137 vec4 b = texture(u_texture, v_tex_b) * u_icon_transition;
143138 out_color = (a + b);
144- #else
139+ #else
145140 out_color = texture(u_texture, v_tex_a);
146- #endif
141+ #endif
147142
148- #ifdef APPLY_LUT_ON_GPU
143+ #ifdef APPLY_LUT_ON_GPU
149144 out_color = applyLUT(u_lutTexture, out_color);
150- #endif
145+ #endif
151146
152- #ifdef COLOR_ADJUSTMENT
147+ #ifdef COLOR_ADJUSTMENT
153148 out_color = u_color_adj_mat * out_color;
154- #endif
155149#endif
150+ }
156151
157152 out_color *= opacity * fade_opacity * u_opacity_multiplier;
158153
0 commit comments