deck.gl-raster v0.8
deck.gl-raster enables GPU-accelerated Cloud-Optimized GeoTIFF (COG) and Zarr visualization in deck.gl.
This release includes initial support for globe rendering, performance improvements, fixed reprojection and precision bugs, and a new Icechunk example.
Preliminary GlobeView support
We've landed preliminary support for deck.gl's GlobeView.
Some projections may render with some distortion. This initial implementation takes a simpler rendering approach, using a fixed number of resampling points, instead of the more accurate dynamic resampling approach used in the standard Web Mercator MapView. Create an issue if you have data that is rendering incorrectly.

See #563 for the existing implementation and follow #578 for the improved reprojection work.
Improved request latency for MosaicLayer
Previously, scrolling around a map with a MosaicLayer would generate many, many requests of images that were only briefly in view and that aren't cancelled when panning around the map.
After, the request cancellation is working much better. As we scroll around the map, off-screen tiles are immediately cancelled, so the latency of loading new tiles is vastly reduced.

Before: we fetch almost 300MB of data before loading the data in the end viewport location. It takes so long to load the data because it keeps loading off-screen tiles.
Note: the gif is 30 seconds long. It may look stuck, but pay attention to the download gauge in the bottom right counting upwards, representing off-screen requests.

See #557 for more info.
Fixed reprojection for images extending beyond ±85° latitude
The Web Mercator projection is only defined below 85.05°N and above 85.05°S. Previously, for datasets that extended beyond that region, the reprojection process would position images incorrectly.
Now, reprojection should be both faster and accurate.
Before, the rendered image is further north than the basemap's (correct) rendering of Scandinavia underneath:

After, the rendered image is correctly on top of the basemap:

See #574 for more info.
Icechunk example
We created a new Icechunk-based example with the ZarrLayer. It reads NLDAS-3 temperature data directly from a public Icechunk repository.
This dataset is virtualized! All tile data requests are being made into NetCDF data files.
See #577 for more info.
Fix image jitter at high zooms
Previously, viewing a high-resolution raster dataset — like in the NAIP example, which has 30-centimeter resolution — the image would noticeably jitter around the screen when zoomed in at high resolution.
This was because the GPU used float32 positions to locate the image on the map, and float32 wasn't enough precision to precisely position the image. The jitter came from switching between float32 units of least precision on either side of the actual float64 value.
Though GPUs only natively support 32-bit floats, we fixed this by using emulated float64 values. Because of how the rendering works, this only causes a tiny amount of overhead.
Before:

After, we now smoothly zoom in and out at high zooms:

See #559 for more info.
Fix rendering across multiple "world copies"
When you're viewing a map over the antimeridian, deck.gl is actually rendering two copies of the map: one for the world on the left side of the antimeridian and another for the world on the right side.
Before, we didn't render image data into both maps:

After, we now seamlessly render on both sides of the antimeridian.

This is separate from being able to render images that themselves cross the antimeridian. In the above screencasts, the example COG has bounds from [-180, 180], so it's on either side of the antimeridian but doesn't cross it.
See #518 for more info.
Fixed GPU memory leak for COGLayer and ZarrLayer
We fixed a GPU memory leak in tiled layers with default rendering.
If you're defining your own getTileData that manually creates luma.gl Texture objects, make sure you also define onTileUnload which calls Texture.destroy().
See #591 for more info.

