Skip to content

Commit f9b2d67

Browse files
mapbox-github-ci-writer-3[bot]astojiljgithub-actions[bot]
committed
[Backport release/v0.26] [DRIVE3D-3311] Lift route cutout 0.5 m on ground and elevated roads to keep guardrails solid (internal-15573)
Backport of internal-14887 to `release/v0.26`. Cherry-picked commits: 17b5aa892e71889c5503d65bb6f41be488d1e158 > [!WARNING] > This backport has merge conflicts that need manual resolution. Co-authored-by: Aleksandar Stojiljković <aleksandar.stojiljkovic@mapbox.com> Co-authored-by: Changelog autocreator bot <github-actions[bot]@users.noreply.github.com> GitOrigin-RevId: 2f5056bf4c6030d5fc5312e25d41e2dfca2c2744
1 parent 87b738a commit f9b2d67

13 files changed

Lines changed: 43 additions & 11 deletions

3d-style/shaders/building.fragment.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ void main() {
261261
#endif
262262

263263
#ifdef FEATURE_CUTOUT
264-
color = apply_feature_cutout(color, gl_FragCoord, get_cutout_factors(gl_FragCoord).x);
264+
color = apply_feature_cutout(color, gl_FragCoord, get_cutout_factors(gl_FragCoord).x, 0.0);
265265
#endif
266266

267267
glFragColor = color;

3d-style/shaders/elevated_structures_depth_reconstruct.fragment.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ void main() {
88
discard;
99
#else
1010
#ifdef FEATURE_CUTOUT
11-
apply_feature_cutout(vec4(0.0, 0.0, 0.0, 1.0), gl_FragCoord, get_cutout_factors(gl_FragCoord).x);
11+
apply_feature_cutout(vec4(0.0, 0.0, 0.0, 1.0), gl_FragCoord, get_cutout_factors(gl_FragCoord).x, 0.0);
1212
#endif
1313
#endif
1414
glFragColor = vec4(1.0, 0.0, 0.0, 1.0);

3d-style/shaders/elevated_structures_model.fragment.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void main() {
7676
#endif
7777

7878
#ifdef FEATURE_CUTOUT
79-
out_color = apply_feature_cutout(out_color, gl_FragCoord, cutout_factors.x);
79+
out_color = apply_feature_cutout(out_color, gl_FragCoord, cutout_factors.x, v_height);
8080
#endif
8181

8282
// Premultiplied alpha output for (One, OneMinusSrcAlpha) translucent blend.

3d-style/shaders/model.fragment.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ vec4 finalColor;
594594
apply_feature_cutout_dither(gl_FragCoord, v_cutout_factor);
595595
#else
596596
#ifdef FEATURE_CUTOUT
597-
finalColor = apply_feature_cutout(finalColor, gl_FragCoord, get_cutout_factors(gl_FragCoord).x);
597+
finalColor = apply_feature_cutout(finalColor, gl_FragCoord, get_cutout_factors(gl_FragCoord).x, 0.0);
598598
#endif
599599
#endif
600600

src/shaders/fill.fragment.glsl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,11 @@ void main() {
5858
#endif
5959

6060
#ifdef FEATURE_CUTOUT
61-
out_color = apply_feature_cutout(out_color, gl_FragCoord, cutout_factors.x);
61+
float z = 0.0;
62+
#ifdef ELEVATED_ROADS
63+
z = v_road_z_offset;
64+
#endif
65+
out_color = apply_feature_cutout(out_color, gl_FragCoord, cutout_factors.x, z);
6266
#endif
6367

6468
glFragColor = out_color;

src/shaders/fill_extrusion.fragment.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ float flood_radiance = 0.0;
166166
#endif
167167

168168
#ifdef FEATURE_CUTOUT
169-
color = apply_feature_cutout(color, gl_FragCoord, get_cutout_factors(gl_FragCoord).x);
169+
color = apply_feature_cutout(color, gl_FragCoord, get_cutout_factors(gl_FragCoord).x, 0.0);
170170
#endif
171171

172172
glFragColor = color;

src/shaders/fill_outline.fragment.glsl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ in highp vec2 v_pos;
77
uniform float u_emissive_strength;
88
uniform lowp float u_opacity_multiplier;
99

10+
#ifdef ELEVATED_ROADS
11+
in highp float v_road_z_offset;
12+
#endif
13+
1014
#ifdef RENDER_SHADOWS
1115
uniform vec3 u_ground_shadow_factor;
1216

@@ -45,7 +49,11 @@ void main() {
4549
#endif
4650

4751
#ifdef FEATURE_CUTOUT
48-
out_color = apply_feature_cutout(out_color, gl_FragCoord, cutout_factors.x);
52+
float z = 0.0;
53+
#ifdef ELEVATED_ROADS
54+
z = v_road_z_offset;
55+
#endif
56+
out_color = apply_feature_cutout(out_color, gl_FragCoord, cutout_factors.x, z);
4957
#endif
5058

5159
glFragColor = out_color * (alpha * opacity * u_opacity_multiplier);

src/shaders/fill_outline.vertex.glsl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
in ivec2 a_pos;
55
#ifdef ELEVATED_ROADS
66
in float a_road_z_offset;
7+
out highp float v_road_z_offset;
78
#endif
89

910
#ifdef RENDER_SHADOWS
@@ -32,6 +33,7 @@ void main() {
3233

3334
#ifdef ELEVATED_ROADS
3435
z_offset += a_road_z_offset;
36+
v_road_z_offset = z_offset;
3537
#endif
3638
float hidden = float(opacity == 0.0);
3739
gl_Position = mix(u_matrix * vec4(a_pos, z_offset, 1), AWAY, hidden);

src/shaders/fill_outline_pattern.fragment.glsl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ in highp vec4 v_pos_light_view_1;
2424
in highp float v_depth;
2525
#endif
2626

27+
#ifdef ELEVATED_ROADS
28+
in highp float v_road_z_offset;
29+
#endif
30+
2731
in highp vec2 v_pos;
2832
in highp vec2 v_pos_world;
2933

@@ -81,7 +85,11 @@ void main() {
8185
#endif // LIGHTING_3D_MODE
8286

8387
#ifdef FEATURE_CUTOUT
84-
out_color = apply_feature_cutout(out_color, gl_FragCoord, cutout_factors.x);
88+
float z = 0.0;
89+
#ifdef ELEVATED_ROADS
90+
z = v_road_z_offset;
91+
#endif
92+
out_color = apply_feature_cutout(out_color, gl_FragCoord, cutout_factors.x, z);
8593
#endif
8694

8795
#ifdef FOG

src/shaders/fill_outline_pattern.vertex.glsl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ uniform float u_tile_units_to_pixels;
1111
in ivec2 a_pos;
1212
#ifdef ELEVATED_ROADS
1313
in float a_road_z_offset;
14+
out highp float v_road_z_offset;
1415
#endif
1516

1617
#ifdef RENDER_SHADOWS
@@ -47,6 +48,7 @@ void main() {
4748

4849
#ifdef ELEVATED_ROADS
4950
z_offset += a_road_z_offset;
51+
v_road_z_offset = z_offset;
5052
#endif
5153
float hidden = float(opacity == 0.0);
5254
vec2 pos = vec2(a_pos);

0 commit comments

Comments
 (0)