Skip to content

Commit bb67675

Browse files
stephanheiglgithub-actions[bot]
authored andcommitted
[MAPSPERF-250] Raster layer: add property raster-allow-draping (#16270)
This PR addresses MAPSPERF-250. **Context** During draping of raster layers, emissive color cannot be fully recovered. TWC wants consistent shading between draped/non-draped render modes therefore we suggested to use raster-elevation and raster-elevation-reference to take the layers out of draping and render individually. More information as well as cost of fully preserving emissive color can be found here: https://mapbox.atlassian.net/browse/MAPSPERF-250 **Changes** To improve ergonomics (not requiring two properties to be set by hand) this PR introduces paint property `raster-allow-draping=false`. It prevents a raster layer from being draped in case of globe/terrain. This is done by implicitly applying a small`raster-elevation` value as well as setting `raster-elevation-reference=ground` in case terrain is enabled. https://github.com/user-attachments/assets/0e0325b4-9f8a-4178-9eb2-b41326d0757f - Add property `raster-allow-draping` (default: true) which can be used to take raster layer out of draping by setting to false - Disable depth writes for layers following terrain to avoid z fighting. - Render test `globe-allow-draping-false` ~~~ Public: Add experimental raster-allow-draping property ~~~ cc @mapbox/maps-ios cc @mapbox/gl-js cc @mapbox/gl-native cc @mapbox/maps-android GitOrigin-RevId: 80d32dbc6615ef718770796a204ff7aabbed974f
1 parent 16d2286 commit bb67675

8 files changed

Lines changed: 282 additions & 0 deletions

File tree

extension-compose/api/Release/metalava.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3504,6 +3504,7 @@ package com.mapbox.maps.extension.compose.style.layers.generated {
35043504
method public com.mapbox.maps.extension.compose.style.layers.LayerInteractionsState getInteractionsState();
35053505
method public com.mapbox.maps.extension.compose.style.LongValue getMaxZoom();
35063506
method public com.mapbox.maps.extension.compose.style.LongValue getMinZoom();
3507+
method public com.mapbox.maps.extension.compose.style.BooleanValue getRasterAllowDraping();
35073508
method public com.mapbox.maps.extension.compose.style.StringValue getRasterArrayBand();
35083509
method public com.mapbox.maps.extension.compose.style.DoubleValue getRasterBrightnessMax();
35093510
method public com.mapbox.maps.extension.compose.style.Transition getRasterBrightnessMaxTransition();
@@ -3535,6 +3536,7 @@ package com.mapbox.maps.extension.compose.style.layers.generated {
35353536
method public void setInteractionsState(com.mapbox.maps.extension.compose.style.layers.LayerInteractionsState);
35363537
method public void setMaxZoom(com.mapbox.maps.extension.compose.style.LongValue);
35373538
method public void setMinZoom(com.mapbox.maps.extension.compose.style.LongValue);
3539+
method public void setRasterAllowDraping(com.mapbox.maps.extension.compose.style.BooleanValue);
35383540
method public void setRasterArrayBand(com.mapbox.maps.extension.compose.style.StringValue);
35393541
method public void setRasterBrightnessMax(com.mapbox.maps.extension.compose.style.DoubleValue);
35403542
method public void setRasterBrightnessMaxTransition(com.mapbox.maps.extension.compose.style.Transition);
@@ -3566,6 +3568,7 @@ package com.mapbox.maps.extension.compose.style.layers.generated {
35663568
property public final com.mapbox.maps.extension.compose.style.layers.LayerInteractionsState interactionsState;
35673569
property public final com.mapbox.maps.extension.compose.style.LongValue maxZoom;
35683570
property public final com.mapbox.maps.extension.compose.style.LongValue minZoom;
3571+
property public final com.mapbox.maps.extension.compose.style.BooleanValue rasterAllowDraping;
35693572
property public final com.mapbox.maps.extension.compose.style.StringValue rasterArrayBand;
35703573
property public final com.mapbox.maps.extension.compose.style.DoubleValue rasterBrightnessMax;
35713574
property public final com.mapbox.maps.extension.compose.style.Transition rasterBrightnessMaxTransition;

extension-compose/api/extension-compose.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2934,6 +2934,7 @@ public final class com/mapbox/maps/extension/compose/style/layers/generated/Rast
29342934
public final fun getInteractionsState ()Lcom/mapbox/maps/extension/compose/style/layers/LayerInteractionsState;
29352935
public final fun getMaxZoom ()Lcom/mapbox/maps/extension/compose/style/LongValue;
29362936
public final fun getMinZoom ()Lcom/mapbox/maps/extension/compose/style/LongValue;
2937+
public final fun getRasterAllowDraping ()Lcom/mapbox/maps/extension/compose/style/BooleanValue;
29372938
public final fun getRasterArrayBand ()Lcom/mapbox/maps/extension/compose/style/StringValue;
29382939
public final fun getRasterBrightnessMax ()Lcom/mapbox/maps/extension/compose/style/DoubleValue;
29392940
public final fun getRasterBrightnessMaxTransition ()Lcom/mapbox/maps/extension/compose/style/Transition;
@@ -2965,6 +2966,7 @@ public final class com/mapbox/maps/extension/compose/style/layers/generated/Rast
29652966
public final fun setInteractionsState (Lcom/mapbox/maps/extension/compose/style/layers/LayerInteractionsState;)V
29662967
public final fun setMaxZoom (Lcom/mapbox/maps/extension/compose/style/LongValue;)V
29672968
public final fun setMinZoom (Lcom/mapbox/maps/extension/compose/style/LongValue;)V
2969+
public final fun setRasterAllowDraping (Lcom/mapbox/maps/extension/compose/style/BooleanValue;)V
29682970
public final fun setRasterArrayBand (Lcom/mapbox/maps/extension/compose/style/StringValue;)V
29692971
public final fun setRasterBrightnessMax (Lcom/mapbox/maps/extension/compose/style/DoubleValue;)V
29702972
public final fun setRasterBrightnessMaxTransition (Lcom/mapbox/maps/extension/compose/style/Transition;)V

extension-compose/src/main/java/com/mapbox/maps/extension/compose/style/layers/generated/RasterLayerState.kt

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extension-style-app/src/androidTest/java/com/mapbox/maps/testapp/style/layers/generated/RasterLayerTest.kt

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extension-style/api/Release/metalava.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4476,6 +4476,8 @@ package com.mapbox.maps.extension.style.layers.generated {
44764476
method public String getLayerId();
44774477
method public Double? getMaxZoom();
44784478
method public Double? getMinZoom();
4479+
method public Boolean? getRasterAllowDraping();
4480+
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getRasterAllowDrapingAsExpression();
44794481
method public String? getRasterArrayBand();
44804482
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getRasterArrayBandAsExpression();
44814483
method public Double? getRasterBrightnessMax();
@@ -4522,6 +4524,8 @@ package com.mapbox.maps.extension.style.layers.generated {
45224524
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getVisibilityAsExpression();
45234525
method public com.mapbox.maps.extension.style.layers.generated.RasterLayer maxZoom(double maxZoom);
45244526
method public com.mapbox.maps.extension.style.layers.generated.RasterLayer minZoom(double minZoom);
4527+
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterAllowDraping(boolean rasterAllowDraping);
4528+
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterAllowDraping(com.mapbox.maps.extension.style.expressions.generated.Expression rasterAllowDraping);
45254529
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterArrayBand(String rasterArrayBand);
45264530
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterArrayBand(com.mapbox.maps.extension.style.expressions.generated.Expression rasterArrayBand);
45274531
method public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterBrightnessMax(double rasterBrightnessMax);
@@ -4578,6 +4582,8 @@ package com.mapbox.maps.extension.style.layers.generated {
45784582
property public String layerId;
45794583
property public Double? maxZoom;
45804584
property public Double? minZoom;
4585+
property public final Boolean? rasterAllowDraping;
4586+
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? rasterAllowDrapingAsExpression;
45814587
property public final String? rasterArrayBand;
45824588
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? rasterArrayBandAsExpression;
45834589
property public final Double? rasterBrightnessMax;
@@ -4628,6 +4634,8 @@ package com.mapbox.maps.extension.style.layers.generated {
46284634
public static final class RasterLayer.Companion {
46294635
method public Double? getDefaultMaxZoom();
46304636
method public Double? getDefaultMinZoom();
4637+
method public Boolean? getDefaultRasterAllowDraping();
4638+
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getDefaultRasterAllowDrapingAsExpression();
46314639
method public String? getDefaultRasterArrayBand();
46324640
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getDefaultRasterArrayBandAsExpression();
46334641
method public Double? getDefaultRasterBrightnessMax();
@@ -4669,6 +4677,8 @@ package com.mapbox.maps.extension.style.layers.generated {
46694677
method public com.mapbox.maps.extension.style.layers.properties.generated.Visibility? getDefaultVisibility();
46704678
property public final Double? defaultMaxZoom;
46714679
property public final Double? defaultMinZoom;
4680+
property public final Boolean? defaultRasterAllowDraping;
4681+
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? defaultRasterAllowDrapingAsExpression;
46724682
property public final String? defaultRasterArrayBand;
46734683
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? defaultRasterArrayBandAsExpression;
46744684
property public final Double? defaultRasterBrightnessMax;
@@ -4713,6 +4723,8 @@ package com.mapbox.maps.extension.style.layers.generated {
47134723
@com.mapbox.maps.extension.style.types.LayersDsl public interface RasterLayerDsl {
47144724
method public com.mapbox.maps.extension.style.layers.generated.RasterLayer maxZoom(double maxZoom);
47154725
method public com.mapbox.maps.extension.style.layers.generated.RasterLayer minZoom(double minZoom);
4726+
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterAllowDraping(boolean rasterAllowDraping = true);
4727+
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterAllowDraping(com.mapbox.maps.extension.style.expressions.generated.Expression rasterAllowDraping);
47164728
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterArrayBand(String rasterArrayBand);
47174729
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterArrayBand(com.mapbox.maps.extension.style.expressions.generated.Expression rasterArrayBand);
47184730
method public com.mapbox.maps.extension.style.layers.generated.RasterLayer rasterBrightnessMax(double rasterBrightnessMax = 1.0);

extension-style/api/extension-style.api

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3658,6 +3658,8 @@ public final class com/mapbox/maps/extension/style/layers/generated/RasterLayer
36583658
public fun getLayerId ()Ljava/lang/String;
36593659
public fun getMaxZoom ()Ljava/lang/Double;
36603660
public fun getMinZoom ()Ljava/lang/Double;
3661+
public final fun getRasterAllowDraping ()Ljava/lang/Boolean;
3662+
public final fun getRasterAllowDrapingAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
36613663
public final fun getRasterArrayBand ()Ljava/lang/String;
36623664
public final fun getRasterArrayBandAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
36633665
public final fun getRasterBrightnessMax ()Ljava/lang/Double;
@@ -3706,6 +3708,8 @@ public final class com/mapbox/maps/extension/style/layers/generated/RasterLayer
37063708
public fun maxZoom (D)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
37073709
public synthetic fun minZoom (D)Lcom/mapbox/maps/extension/style/layers/Layer;
37083710
public fun minZoom (D)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
3711+
public fun rasterAllowDraping (Lcom/mapbox/maps/extension/style/expressions/generated/Expression;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
3712+
public fun rasterAllowDraping (Z)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
37093713
public fun rasterArrayBand (Lcom/mapbox/maps/extension/style/expressions/generated/Expression;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
37103714
public fun rasterArrayBand (Ljava/lang/String;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
37113715
public fun rasterBrightnessMax (D)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
@@ -3767,6 +3771,8 @@ public final class com/mapbox/maps/extension/style/layers/generated/RasterLayer
37673771
public final class com/mapbox/maps/extension/style/layers/generated/RasterLayer$Companion {
37683772
public final fun getDefaultMaxZoom ()Ljava/lang/Double;
37693773
public final fun getDefaultMinZoom ()Ljava/lang/Double;
3774+
public final fun getDefaultRasterAllowDraping ()Ljava/lang/Boolean;
3775+
public final fun getDefaultRasterAllowDrapingAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
37703776
public final fun getDefaultRasterArrayBand ()Ljava/lang/String;
37713777
public final fun getDefaultRasterArrayBandAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
37723778
public final fun getDefaultRasterBrightnessMax ()Ljava/lang/Double;
@@ -3811,6 +3817,8 @@ public final class com/mapbox/maps/extension/style/layers/generated/RasterLayer$
38113817
public abstract interface class com/mapbox/maps/extension/style/layers/generated/RasterLayerDsl {
38123818
public abstract fun maxZoom (D)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
38133819
public abstract fun minZoom (D)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
3820+
public abstract fun rasterAllowDraping (Lcom/mapbox/maps/extension/style/expressions/generated/Expression;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
3821+
public abstract fun rasterAllowDraping (Z)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
38143822
public abstract fun rasterArrayBand (Lcom/mapbox/maps/extension/style/expressions/generated/Expression;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
38153823
public abstract fun rasterArrayBand (Ljava/lang/String;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
38163824
public abstract fun rasterBrightnessMax (D)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
@@ -3867,6 +3875,7 @@ public abstract interface class com/mapbox/maps/extension/style/layers/generated
38673875
}
38683876

38693877
public final class com/mapbox/maps/extension/style/layers/generated/RasterLayerDsl$DefaultImpls {
3878+
public static synthetic fun rasterAllowDraping$default (Lcom/mapbox/maps/extension/style/layers/generated/RasterLayerDsl;ZILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
38703879
public static synthetic fun rasterBrightnessMax$default (Lcom/mapbox/maps/extension/style/layers/generated/RasterLayerDsl;DILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
38713880
public static synthetic fun rasterBrightnessMin$default (Lcom/mapbox/maps/extension/style/layers/generated/RasterLayerDsl;DILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;
38723881
public static synthetic fun rasterColorMix$default (Lcom/mapbox/maps/extension/style/layers/generated/RasterLayerDsl;Ljava/util/List;ILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/RasterLayer;

0 commit comments

Comments
 (0)