From 00317776300ba5ca661d8fb27c5f2ac41bd723ec Mon Sep 17 00:00:00 2001 From: Andrew Harvey Date: Tue, 19 Jun 2018 14:52:40 +1000 Subject: [PATCH] add raster-resampling raster paint property (#6411) --- src/render/draw_raster.js | 8 +-- src/style-spec/reference/v8.json | 26 ++++++++++ .../raster_style_layer_properties.js | 1 + test/README.md | 2 +- .../image/raster-resampling/expected.png | Bin 0 -> 3518 bytes .../image/raster-resampling/style.json | 49 ++++++++++++++++++ .../raster-resampling/default/expected.png | Bin 0 -> 72086 bytes .../raster-resampling/default/style.json | 33 ++++++++++++ .../raster-resampling/function/expected.png | Bin 0 -> 2780 bytes .../raster-resampling/function/style.json | 45 ++++++++++++++++ .../raster-resampling/literal/expected.png | Bin 0 -> 2780 bytes .../raster-resampling/literal/style.json | 34 ++++++++++++ 12 files changed, 194 insertions(+), 4 deletions(-) create mode 100644 test/integration/render-tests/image/raster-resampling/expected.png create mode 100644 test/integration/render-tests/image/raster-resampling/style.json create mode 100644 test/integration/render-tests/raster-resampling/default/expected.png create mode 100644 test/integration/render-tests/raster-resampling/default/style.json create mode 100644 test/integration/render-tests/raster-resampling/function/expected.png create mode 100644 test/integration/render-tests/raster-resampling/function/style.json create mode 100644 test/integration/render-tests/raster-resampling/literal/expected.png create mode 100644 test/integration/render-tests/raster-resampling/literal/style.json diff --git a/src/render/draw_raster.js b/src/render/draw_raster.js index 137e202a358..605df8f6673 100644 --- a/src/render/draw_raster.js +++ b/src/render/draw_raster.js @@ -52,18 +52,20 @@ function drawRaster(painter, sourceCache, layer, coords) { let parentScaleBy, parentTL; + const textureFilter = layer.paint.get('raster-resampling') === 'nearest' ? gl.NEAREST : gl.LINEAR; + context.activeTexture.set(gl.TEXTURE0); - tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST); + tile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST); context.activeTexture.set(gl.TEXTURE1); if (parentTile) { - parentTile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST); + parentTile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST); parentScaleBy = Math.pow(2, parentTile.tileID.overscaledZ - tile.tileID.overscaledZ); parentTL = [tile.tileID.canonical.x * parentScaleBy % 1, tile.tileID.canonical.y * parentScaleBy % 1]; } else { - tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST); + tile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST); } // cross-fade parameters diff --git a/src/style-spec/reference/v8.json b/src/style-spec/reference/v8.json index ce51ed31b3e..3b48f7e5af4 100644 --- a/src/style-spec/reference/v8.json +++ b/src/style-spec/reference/v8.json @@ -5006,6 +5006,32 @@ }, "property-type": "data-constant" }, + "raster-resampling": { + "type": "enum", + "doc": "The resampling/interpolation method to use for overscaling, also known as texture magnification filter", + "values": { + "linear": { + "doc": "(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled" + }, + "nearest": { + "doc": "Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled" + } + }, + "default": "linear", + "sdk-support": { + "basic functionality": { + "js": "0.47.0" + }, + "data-driven styling": {} + }, + "expression": { + "interpolated": false, + "parameters": [ + "zoom" + ] + }, + "property-type": "data-constant" + }, "raster-fade-duration": { "type": "number", "default": 300, diff --git a/src/style/style_layer/raster_style_layer_properties.js b/src/style/style_layer/raster_style_layer_properties.js index 271f8bb1581..767f8c648a8 100644 --- a/src/style/style_layer/raster_style_layer_properties.js +++ b/src/style/style_layer/raster_style_layer_properties.js @@ -16,6 +16,7 @@ const paint = new Properties({ "raster-brightness-max": new DataConstantProperty(styleSpec["paint_raster"]["raster-brightness-max"]), "raster-saturation": new DataConstantProperty(styleSpec["paint_raster"]["raster-saturation"]), "raster-contrast": new DataConstantProperty(styleSpec["paint_raster"]["raster-contrast"]), + "raster-resampling": new DataConstantProperty(styleSpec["paint_raster"]["raster-resampling"]), "raster-fade-duration": new DataConstantProperty(styleSpec["paint_raster"]["raster-fade-duration"]), }); diff --git a/test/README.md b/test/README.md index f76c4692731..ed53f9218df 100644 --- a/test/README.md +++ b/test/README.md @@ -13,7 +13,7 @@ There are two test suites associated with Mapbox GL JS To run individual tests: - Unit tests: `yarn test-unit path/to/file.test.js` where the path begins within the `/test/unit/` directory - - Render tests: `yarn test-render render-test-name` + - Render tests: `yarn test-render render-test-name` (e.g. `yarn test-render background-color/default`) ## Writing Unit Tests diff --git a/test/integration/render-tests/image/raster-resampling/expected.png b/test/integration/render-tests/image/raster-resampling/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..759c8e5c07eae30a32780e56aa8033f2eb2e5dae GIT binary patch literal 3518 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 literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/image/raster-resampling/style.json b/test/integration/render-tests/image/raster-resampling/style.json new file mode 100644 index 00000000000..4bad88bbe2e --- /dev/null +++ b/test/integration/render-tests/image/raster-resampling/style.json @@ -0,0 +1,49 @@ +{ + "version": 8, + "metadata": { + "test": { + "width": 64, + "height": 64 + } + }, + "center": [ + -122.514526, + 37.562984 + ], + "zoom": 20, + "sources": { + "image": { + "type": "image", + "coordinates": [ + [ + -122.51596391201019, + 37.56238816766053 + ], + [ + -122.51467645168304, + 37.56410183312965 + ], + [ + -122.51309394836426, + 37.563391708549425 + ], + [ + -122.51423120498657, + 37.56161849366671 + ] + ], + "url": "local://image/0.png" + } + }, + "layers": [ + { + "id": "image", + "type": "raster", + "source": "image", + "paint": { + "raster-fade-duration": 0, + "raster-resampling": "nearest" + } + } + ] +} diff --git a/test/integration/render-tests/raster-resampling/default/expected.png b/test/integration/render-tests/raster-resampling/default/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..4db0b165ef2b4a2500a4bdf4a5dfd701a3e506c3 GIT binary patch literal 72086 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 Ce)NX` literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/raster-resampling/default/style.json b/test/integration/render-tests/raster-resampling/default/style.json new file mode 100644 index 00000000000..ec0fa9ef2af --- /dev/null +++ b/test/integration/render-tests/raster-resampling/default/style.json @@ -0,0 +1,33 @@ +{ + "version": 8, + "metadata": { + "test": { + "height": 256 + } + }, + "center": [ + 13.418056, + 52.499167 + ], + "zoom": 20, + "sources": { + "satellite": { + "type": "raster", + "tiles": [ + "local://tiles/{z}-{x}-{y}.satellite.png" + ], + "maxzoom": 17, + "tileSize": 256 + } + }, + "layers": [ + { + "id": "raster", + "type": "raster", + "source": "satellite", + "paint": { + "raster-fade-duration": 0 + } + } + ] +} diff --git a/test/integration/render-tests/raster-resampling/function/expected.png b/test/integration/render-tests/raster-resampling/function/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f7bce7123fdd70a084b1abe48fc9ed59dcb173 GIT binary patch literal 2780 zcmbuBdrVu`9mm~F8!K(&YEng0aY5~pR8T?-&3N1xP?tmj0`@jS0t}pF7DXT)F}`5T zBaW6uXrj6#JWL3;_N3r@(?IP44v_F_i;~mE0k6I?1Pr+B#%31-#+Wxa-tqR|)M*m@ z@zuHK>Yj7Y`TaiM-#LH%9skT5zVG;QIGi^U;!pj7!#MySU*Y`n7qEGJb2JAw2NF(w za<1%^g?FwRIUL_cZ*TD%gLbMS%jd`Oe#2_z5Ur>n?@b9s-*QENivR50y!fQmB8mF7 z^MzS&|JrlyRo_#WXP;bq?bQ>9|573T}a0Dp3#Klj!ljH|YkuTpMXp4urKs$#6J%^Dd zzb3XfU1jVD0ocMuAC{R_Ks%d#xU@J;f$^#y2>@J9SP@CkpDHDM0sLY?xkQWCF7bhL z`7q-8G!a~$p+p~NsYNBfQ8R2|lXPM|uLV~vsa_-pbH2W^SB*(S$^Mb;m2gD9WsN%v z9G+P}+Bu^2NYIzAp+OaX!XAVSt(nbOrX`aS^_bP7J2s5aaM?{22()H(Kb#_&&f@b1 zVE`?@e-c#;hdDZBAFG+K7U+(Vqe!ii#|J)+I2aglJ#HtAVFC$i%dN-zT&Xjy2RN@& zdsL2_lCPYRwG7)^uw7@pPXRZdEc4nhERf7@pH*vQ< z^~riLLYeAt=G~lM+9dx{u4zu>PrPI zT6A$n@}Y?ld&*3!5);fIcaRV+>(%uT?^+C;CHI_sZxVx|kZ-XBHP&k+b@=6jR zjILEQZ!^%GfVDdbj+_!*G}%Q0HPjlphG%a2{Hdj zGp@xCO<1j`y}v4kr}U0)s+ks7@nFzQVF*MD4K2Qf`+azk6jjNZ@s@E4=8dx2O#Aep zPwXt*`*5#!_L}fyEqSN4nPNq(Ln$mQ=J@&h6Do-f{M? z-=Bip9L;_3=yiuiCR8(PBSCYk+qMP>L@?sDnRCKYaU0h|i_Ah^1fGqAt0}4bDTqH) zT^S#bWP9%=8o~&JcZW4=!H8BENQ-k~)XWUbC%M*uo6uthCA_CB)*L~`fe3}%?vnTa e&$+x6XZbv$3%fD+D|lVyB%J1-(){+)pZ^7%Iuz~z literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/raster-resampling/function/style.json b/test/integration/render-tests/raster-resampling/function/style.json new file mode 100644 index 00000000000..2ac91b44c55 --- /dev/null +++ b/test/integration/render-tests/raster-resampling/function/style.json @@ -0,0 +1,45 @@ +{ + "version": 8, + "metadata": { + "test": { + "height": 256 + } + }, + "center": [ + 13.418056, + 52.499167 + ], + "zoom": 20, + "sources": { + "satellite": { + "type": "raster", + "tiles": [ + "local://tiles/{z}-{x}-{y}.satellite.png" + ], + "maxzoom": 17, + "tileSize": 256 + } + }, + "layers": [ + { + "id": "raster", + "type": "raster", + "source": "satellite", + "paint": { + "raster-fade-duration": 0, + "raster-resampling": { + "stops": [ + [ + 19, + "linear" + ], + [ + 20, + "nearest" + ] + ] + } + } + } + ] +} diff --git a/test/integration/render-tests/raster-resampling/literal/expected.png b/test/integration/render-tests/raster-resampling/literal/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f7bce7123fdd70a084b1abe48fc9ed59dcb173 GIT binary patch literal 2780 zcmbuBdrVu`9mm~F8!K(&YEng0aY5~pR8T?-&3N1xP?tmj0`@jS0t}pF7DXT)F}`5T zBaW6uXrj6#JWL3;_N3r@(?IP44v_F_i;~mE0k6I?1Pr+B#%31-#+Wxa-tqR|)M*m@ z@zuHK>Yj7Y`TaiM-#LH%9skT5zVG;QIGi^U;!pj7!#MySU*Y`n7qEGJb2JAw2NF(w za<1%^g?FwRIUL_cZ*TD%gLbMS%jd`Oe#2_z5Ur>n?@b9s-*QENivR50y!fQmB8mF7 z^MzS&|JrlyRo_#WXP;bq?bQ>9|573T}a0Dp3#Klj!ljH|YkuTpMXp4urKs$#6J%^Dd zzb3XfU1jVD0ocMuAC{R_Ks%d#xU@J;f$^#y2>@J9SP@CkpDHDM0sLY?xkQWCF7bhL z`7q-8G!a~$p+p~NsYNBfQ8R2|lXPM|uLV~vsa_-pbH2W^SB*(S$^Mb;m2gD9WsN%v z9G+P}+Bu^2NYIzAp+OaX!XAVSt(nbOrX`aS^_bP7J2s5aaM?{22()H(Kb#_&&f@b1 zVE`?@e-c#;hdDZBAFG+K7U+(Vqe!ii#|J)+I2aglJ#HtAVFC$i%dN-zT&Xjy2RN@& zdsL2_lCPYRwG7)^uw7@pPXRZdEc4nhERf7@pH*vQ< z^~riLLYeAt=G~lM+9dx{u4zu>PrPI zT6A$n@}Y?ld&*3!5);fIcaRV+>(%uT?^+C;CHI_sZxVx|kZ-XBHP&k+b@=6jR zjILEQZ!^%GfVDdbj+_!*G}%Q0HPjlphG%a2{Hdj zGp@xCO<1j`y}v4kr}U0)s+ks7@nFzQVF*MD4K2Qf`+azk6jjNZ@s@E4=8dx2O#Aep zPwXt*`*5#!_L}fyEqSN4nPNq(Ln$mQ=J@&h6Do-f{M? z-=Bip9L;_3=yiuiCR8(PBSCYk+qMP>L@?sDnRCKYaU0h|i_Ah^1fGqAt0}4bDTqH) zT^S#bWP9%=8o~&JcZW4=!H8BENQ-k~)XWUbC%M*uo6uthCA_CB)*L~`fe3}%?vnTa e&$+x6XZbv$3%fD+D|lVyB%J1-(){+)pZ^7%Iuz~z literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/raster-resampling/literal/style.json b/test/integration/render-tests/raster-resampling/literal/style.json new file mode 100644 index 00000000000..daf15580f02 --- /dev/null +++ b/test/integration/render-tests/raster-resampling/literal/style.json @@ -0,0 +1,34 @@ +{ + "version": 8, + "metadata": { + "test": { + "height": 256 + } + }, + "center": [ + 13.418056, + 52.499167 + ], + "zoom": 20, + "sources": { + "satellite": { + "type": "raster", + "tiles": [ + "local://tiles/{z}-{x}-{y}.satellite.png" + ], + "maxzoom": 17, + "tileSize": 256 + } + }, + "layers": [ + { + "id": "raster", + "type": "raster", + "source": "satellite", + "paint": { + "raster-fade-duration": 0, + "raster-resampling": "nearest" + } + } + ] +}