33 KiB
33 KiB
Change Log
v0.21.1 - 2022-12-02
Fixes 🔧
- Fixed a bug that could cause an assertion failure - and on rare occasions a more serious problem - when creating a tile provider for a
TileMapServiceRasterOverlayor aWebMapServiceRasterOverlay.
v0.21.0 - 2022-11-01
Breaking Changes 📣
- On
IPrepareRendererResources, theimageparameter passed toprepareRasterInLoadThreadand therasterTileparameter passed toprepareRasterInMainThreadare no longer const. These methods are now allowed to modify the parameters during load. IPrepareRendererResources::prepareInLoadThreadnow takes aTileLoadResultand returns aFuture<TileLoadResultAndRenderResources>, allowing it to work asynchronously rather than just blocking a worker thread until it is finished.RasterOverlay::createTileProvidernow takes the owner pointer as anIntrusivePointerinstead of a raw pointer, and returns a future that resolves to aRasterOverlay::CreateTileProviderResult.
Additions 🎉
- Added
mainThreadLoadingTimeLimitandtileCacheUnloadTimeLimitproperties toTilesetOptions, allowing a limit to be placed on how much time is spent loading and unloading tiles per frame. - Added
GltfReader::generateMipMapsmethod. - Added the
getImagemethod toRasterOverlayTile. - Added
LocalHorizontalCoordinateSystem, which is used to create convenient right- or left-handeded coordinate systems with an origin at a point on the globe.
Fixes 🔧
- Fixed a bug that could cause a crash when adding raster overlays to sparse tilesets and zooming close enough to cause them to be upsampled.
v0.20.0 - 2022-10-03
Breaking Changes 📣
TileRenderContent::lodTransitionPercentagenow always goes from 0.0 --> 1.0 regardless of if the tile is fading in or out.- Added a new parameter to
IPrepareRendererResources::prepareInLoadThread,rendererOptions, to allow passing arbitrary data from the renderer.
Fixes 🔧
- In
CesiumGltfWriter,accessor.byteOffsetandbufferView.byteOffsetare no longer written if the value is 0. This fixes validation errors for accessors that don't have buffer views, e.g. attributes that are Draco compressed. - Fixed a bug where failed tiles don't clean up any raster overlay tiles that are mapped to them, and therefore cannot be rendered as empty tiles.
- Fixed a bug that prevented access to Cesium Ion assets by using expired Access Tokens.
v0.19.0 - 2022-09-01
Breaking Changes 📣
RasterOverlayCollectionno longer accepts aTilesetin its constructor. Instead, it now accepts aTile::LoadedLinkListand aTilesetExternals.- Removed
TileContext. It has been replaced by theTilesetContentLoaderinterface. - Removed
TileContentFactory. Instead, conversions of various types to glTF can be registered withGltfConverters. - Removed
TileContentLoadInput. It has been replaced byTileLoadInputandTilesetContentLoader. - Removed
TileContentLoadResult. It has been replaced byTileContent. - Removed
TileContentLoader. It has been replaced byTilesetContentLoaderandGltfConverters. - Removed
ImplicitTraversal. It has been replaced byTilesetContentLoaderandGltfConverters. - Removed many methods from the
Cesium3DTilesSelection::Tilesetclass:getUrl(),getIonAssetID(),getIonAssetToken(),notifyTileStartLoading,notifyTileDoneLoading(),notifyTileUnloading(),loadTilesFromJson(),requestTileContent(),requestAvailabilitySubtree(),addContext(), andgetGltfUpAxis(). Most of these were already not recommended for use outside of cesium-native. - Removed many methods from the
Cesium3DTilesSelection::Tileclass:getTileset(),getContext(),setContext(),getContent(),setEmptyContent(),getRendererResources(),setState(),loadContent(),processLoadedContent(),unloadContent(),update(), andmarkPermanentlyFailed(). Most of these were already not recommended for use outside of cesium-native.
Additions 🎉
- Quantized-mesh terrain and implicit octree and quadtree tilesets can now skip levels-of-detail when traversing, so the correct detail is loaded more quickly.
- Added new options to
TilesetOptionssupporting smooth transitions between tiles at different levels-of-detail. A tile's transition percentage can be retrieved fromTileRenderContent::lodTransitionPercentage. - Added support for loading WebP images inside glTFs and raster overlays. WebP textures can be provided directly in a glTF texture or in the
EXT_texture_webpextension. - Added support for
KHR_texture_transformtoCesiumGltf,CesiumGltfReader, andCesiumGltfWriter Tilesetcan be constructed with aTilesetContentLoaderand a rootTilefor loading and rendering different 3D Tile-like formats or creating a procedural tileset.
Fixes 🔧
- Fixed a bug where the Raster Overlay passed to the
loadErrorCallbackwould not be the one that the user created, but instead an aggregated overlay that was created internally.
v0.18.1 - 2022-08-04
Fixes 🔧
- Fixed a bug in
SqliteCachewhere the last access time of resources was not updated correctly, sometimes causing more recently used resources to be evicted from the cache before less recently used ones.
v0.18.0 - 2022-08-01
Breaking Changes 📣
- Removed support for 3D Tiles Next extensions in
TilesetWriterandTilesetReaderthat have been promoted to core in 3D Tiles 1.1 - Removed the
getSupportsRasterOverlaysfromTilesetbecause the property is no longer relevant now that all tilesets support raster overlays.
Additions 🎉
- Added support for 3D Tiles 1.1 in
TilesetWriterandTilesetReader. - Added a
TileOcclusionRendererProxyPooltoTilesetExternals. If a renderer implements and provides this interface, the tile occlusion information is used to avoid refining parent tiles that are completely occluded, reducing the number of tiles loaded. Tilesetcan now estimate the percentage of the tiles for the current view that have been loaded by calling thecomputeLoadProgressmethod.- Enabled loading Tile Map Service (TMS) URLs that do not have a file named "tilemapresource.xml", such as from GeoServer.
- Added support for Tile Map Service documents that use the "local" profile when the SRS is mercator or geodetic.
v0.17.0 - 2022-07-01
Fixes 🔧
- Fixed crash when parsing an empty copyright string in the glTF model.
v0.16.0 - 2022-06-01
Additions 🎉
- Added option to the
RasterizedPolygonsOverlayto invert the selection, so everything outside the polygons gets rasterized instead of inside. - The
RasterizedPolygonsTileExcluderexcludes tiles outside the selection instead of inside when given an invertedRasterizedPolygonsOverlay. - Tiles are now upsampled using the projection of the first raster overlay in the list with more detail.
Fixes 🔧
- For consistency with CesiumJS and compatibility with third-party terrain tilers widely used in the community, the
boundsproperty of thelayer.jsonfile of a quantized-mesh terrain tileset is now ignored, and the terrain is assumed to cover the entire globe.
v0.15.2 - 2022-05-13
Fixes 🔧
- Fixed a bug where upsampled quadtree tiles could have siblings with mismatching projections.
In addition to the above, this release updates the following third-party libraries used by cesium-native:
cpp-httplibto v0.10.3 (changes)dracoto v1.5.2 (changes)earcutto v2.2.3 (changes)PicoSHA2to commit1677374f23352716fc52183255a40c1b8e1d53eb(changes)rapidjsonto commitfcb23c2dbf561ec0798529be4f66394d3e4996d8(changes)spdlogto v1.10.0 (changes)stbto commitaf1a5bc352164740c1cc1354942b1c6b72eacb8a(changes)uriparserto v0.9.6 (changes)
v0.15.1 - 2022-05-05
Fixes 🔧
- Fixed a bug that could cause tiles in external tilesets to fail to load.
v0.15.0 - 2022-05-02
Additions 🎉
- Improved the load performance when
TilesetOptions::forbidHolesis enabled by only loading child tiles when their parent does not meet the necessary screen-space error requirement. - Added support for loading availability metadata from quantized-mesh layer.json. Previously, only availability embedded in terrain tiles was used.
- Added support for quantized-mesh terrain tilesets that specify a parent layer.
- Added support for metadata from the
3DTILES_batch_table_hierarchyextension.
Fixes 🔧
- Fixed a bug that could cause the same tiles to be continually loaded and unloaded when
TilesetOptions::forbidHoleswas enabled. - Fixed a bug that could sometimes cause tilesets to fail to show their full detail when making changes to raster overlays.
- Fixed a bug that could cause holes even with
TilesetOptions::forbidHolesenabled, particularly when using external tilesets. - Tiles will no longer be selected to render when they have no content and they have a higher "geometric error" than their parent. In previous versions, this situation could briefly lead to holes while the children of such tiles loaded.
- Fixed a bug where
IPrepareRendererResources::prepareInMainThreadwas called on aTilebefore thatTilewas updated with loaded content. - Fixed a bug where getting bad data from the SQLite request cache could cause a crash. If the SQLite database is corrupt, it will now be deleted and recreated.
v0.14.1 - 2022-04-14
Fixes 🔧
- Fixed a crash caused by using an aggregated overlay of
IonRasterOverlayafter it is freed. - Fix a bug introduced in v0.14.0 that caused Tile Map Service (TMS) overlays from Cesium ion to fail to load.
v0.14.0 - 2022-04-01
Breaking Changes 📣
- Added a new parameter,
rendererOptions, toIPrepareRendererResources::prepareRasterInLoadThread. - Changed the type of Cesium ion asset IDs from
uint32_ttoint64_t. - Various changes in the
Cesium3DTiles,Cesium3DTilesReader, andCesium3DTilesWriternamespaces to match the evolving 3D Tiles Next specifications. - Removed
getTextureCoordinateIndexfromFeatureIDTextureViewandFeatureTexturePropertyView. UsegetTextureCoordinateAttributeIdinstead.
Additions 🎉
- Added
WebMapServiceRasterOverlayto pull raster overlays from a WMS server. - Added support for the following glTF extensions to
CesiumGltf,CesiumGltfReader, andCesiumGltfWriter:EXT_instance_featuresEXT_structural_metadataMAXAR_mesh_variants
- Added an in-memory cache for Cesium ion asset endpoint responses in order to avoid repeated requests.
- Added
ScopeGuardclass to automatically a execute function when exiting a scope. - The glTF
copyrightproperty, if present, is now included in the credits thatTilesetadds to theCreditSystem. If thecopyrighthas multiple parts separate by semicolons, these are treated as separate credits. - Credits reported by
CreditSystem::getCreditsToShowThisFrameare now sorted based on the number of occurrences, with the most common credits first. TilesetandRasterOverlaycredits can now be shown on the screen, rather than in a separate credit popup.- Added
FeatureTexturePropertyView::getSwizzlemethod. - Added
IsMetadataArraytemplate to check if a type is aMetadataArrayView. - Added a
rendererOptionsproperty toRasterOverlayOptionsto pass arbitrary data toprepareRasterInLoadThread. - Added
Uri::escape.
Fixes 🔧
- Fixed an issue that could lead to compilation failures when passing an lvalue reference to
Promise::resolve(). - Fixed upsampling for
EXT_feature_metadatafeature tables. - Fixed a bug that could cause the size of external images to be accounted for incorrectly when tracking the number of bytes loaded for caching purposes.
- Fixed a bug that prevented tiles from loading when "Forbid Holes" option was enabled.
v0.13.0 - 2022-03-01
Breaking Changes 📣
- Renamed constants in
CesiumUtility::Mathto use PascalCase instead of SCREAMING_SNAKE_CASE.
Additions 🎉
- Added support for the
CESIUM_RTCandKHR_texture_basisuglTF extensions. - Added support for 3D Tiles that do not have a geometric error, improving compatibility with tilesets that don't quite match the 3D Tiles spec.
- Exposed the Cesium ion endpoint URL as a parameter on tilesets and raster overlays.
TilesetOptionsandRasterOverlayOptionseach have a new option to report which compressed textured formats are supported on the client platform. Ideal formats amongst the available ones are picked for each KTX2 texture that is later encountered.- The
ImageCesiumclass nows convey which GPU pixel compression format (if any) is used. This informs what to expect in the image's pixel buffer. - The
ImageCesiumclass can now contain pre-computed mipmaps, if they exist. In that case, all the mips will be in the pixel buffer and the delineation between each mip will be described inImageCesium::mipPositions. - Tileset content with the known file extensions ".gltf", ".glb", and ".terrain" can now be loaded even if the Content-Type is incorrect. This is especially helpful for loading tilesets from
file:URLs. - Created tighter fitting bounding volumes for terrain tiles by excluding skirt vertices.
Fixes 🔧
- Fixed bug that could cause properties types in a B3DM Batch Table to be deduced incorrectly, leading to a crash when accessing property values.
- Fixed a bug where implicit tiles were not receiving the root transform and so could sometimes end up in the wrong place.
v0.12.0 - 2022-02-01
Breaking Changes 📣
- Renamed
IAssetAccessor::requestAssettoget. - Renamed
IAssetAccessor::posttorequestand added a new parameter in the second position to specify the HTTP verb to use. TokeninCesiumIonClienthas been updated to match Cesium ion's v2 REST API endpoint, so several fields have been renamed. Thetokensmethod also now returns future that resolves to aTokenListinstead of a plain vector ofTokeninstances.- Renamed
GltfReader::readModel,ModelReaderResult, andReadModelOptionstoGltfReader::readGltf,GltfReaderResult, andGltfReaderOptionsrespectively. - Removed
writeModelAsEmbeddedBytes,writeModelAndExternalFiles,WriteModelResult,WriteModelOptions, andWriteGLTFCallback. UseGltfWriter::writeGltf,GltfWriter::writeGlb,GltfWriterResult, andGltfWriterOptionsinstead.
Additions 🎉
- Added
TilesetWriterOptionsfor serializing tileset JSON. - Added support for the following extensions in
GltfWriterandGltfReader: - Added support for the following extensions in
TilesetWriterandTilesetReader: - Added
SubtreeWriterandSubtreeReaderfor serializing and deserializing the subtree format in 3DTILES_implicit_tiling. - Added
SchemaWriterandSchemaReaderfor serializing and deserializing schemas in EXT_mesh_features and 3DTILES_metadata. - Added
hasExtensiontoExtensibleObject. - Added
CESIUM_TESTS_ENABLEDoption to the build system. - Added support in the JSON reader for reading doubles with no fractional value as integers.
- Added case-insensitive comparison for Cesium 3D Tiles "refine" property values.
- Added new capabilities to
ConnectioninCesiumIonClient:- The
tokensmethod now uses the v2 service endpoint and allows a number of options to be specified. - Added a
tokenmethod to allow details of a single token to be retrieved. - Added
nextPageandpreviousPagemethods to allow paging through tokens. - Added
modifyTokenmethod. - Added static
getIdFromTokenmethod to obtain a token ID from a given token value.
- The
- Added
loadErrorCallbacktoTilesetOptionsandRasterOverlayOptions. This callback is invoked when theTilesetorRasterOverlayencounter a load error, allowing the error to be handled by application code. - Enable
IntrusivePointer<T>to be converted toIntrusivePointer<U>if U is a base class of T.
Fixes 🔧
- Fixes a bug where
notifyTileDoneLoadingwas not called when encountering Ion responses that can't be parsed. - Fixed a bug that prevented a continuation attached to a
SharedFuturefrom returning aFutureitself. - Fixed incorrect child subtree index calculation in implicit tiles.
- Fixed
computeDistanceSquaredToPositioninBoundingSphere.
v0.11.0 - 2022-01-03
Breaking Changes 📣
- The
CesiumGltfReaderproject now uses theCesiumGltfReadernamespace instead of theCesiumGltfnamespace. - The
CesiumGltfWriterproject now uses theCesiumGltfWriternamespace instead of theCesiumGltfnamespace. - The
Cesium3DTilesReaderproject now uses theCesium3DTilesReadernamespace instead of theCesium3DTilesnamespace.
Additions 🎉
- Added
Cesium3DTilesWriterlibrary.
Fixes 🔧
- Fixed a bug in
QuadtreeRasterOverlayTileProviderthat caused incorrect level-of-detail selection for overlays that use a global (or otherwise large) tiling scheme but have non-global (or otherwise smaller) coverage.
v0.10.0 - 2021-12-01
Breaking Changes 📣
QuadtreeRasterOverlayTileProvider::computeLevelFromGeometricErrorhas been removed.computeLevelFromTargetScreenPixelsmay be useful as a replacement.- The constructor of
RasterOverlayTileProvidernow requires a coverage rectangle. RasterOverlayTileProvider::getTilenow takes atargetScreenPixelsinstead of atargetGeometricError.- The constructor of
RasterMappedTo3DTilenow requires a texture coordinate index. - The constructor of
RasterOverlayTilenow takes atargetScreenPixelsinstead of atargetGeometricError. And the correspondinggetTargetGeometricErrorhas been removed. - Removed
TileContentLoadResult::rasterOverlayProjections. This field is now found in theoverlayDetails. - Removed
obtainGlobeRectanglefromTileUtilities.h. UseestimateGlobeRectangleinBoundingVolume.hinstead. - cesium-native now uses the following options with the
glmlibrary:GLM_FORCE_XYZW_ONLYGLM_FORCE_EXPLICIT_CTORGLM_FORCE_SIZE_T_LENGTH
Additions 🎉
- Added support for the 3DTILES_implicit_tiling extension.
- Added support for the 3DTILES_bounding_volume_S2 extension.
- Added support for raster overlays, including clipping polygons, on any 3D Tiles tileset.
- Added support for external glTF buffers and images.
- Raster overlay level-of detail is now selected using "target screen pixels" rather than the hard-to-interpret geometric error value.
- A
RasterOverlaycan now be configured with amaximumScreenSpaceErrorindependent of the screen-space error used for the geometry. RasterOverlay::loadTileProvidernow returns aSharedFuture, making it easy to attach a continuation to run when the load completes.- Added
GltfContent::applyRtcCenterandapplyGltfUpAxisTransform. - Clipping polygon edges now remain sharp even when zooming in past the available geometry detail.
- Added
DebugColorizeTilesRasterOverlay. - Added
BoundingRegionBuildertoCesiumGeospatial. - Added
GlobeRectangle::EMPTYstatic field andGlobeRectangle::isEmptymethod. - Added the ability to set the coordinates of a
GlobeRectangleafter construction.
Fixes 🔧
- Improved the computation of bounding regions and overlay texture coordinates from geometry, particularly for geometry that crosses the anti-meridian or touches the poles.
- Fixed a bug that would result in incorrect geometry when upsampling a glTF with a position accessor pointing to a bufferView that did not start at the beginning of its buffer.
- Fixed a problem that could cause incorrect distance computation for a degenerate bounding region that is a single point with a min/max height.
- Improved the numerical stability of
GlobeRectangle::computeCenterandGlobeRectangle::contains. - Error messages are no longer printed to the Output Log when an upsampled tile happens to have a primitive with no vertices.
- Fixed a bug that could cause memory corruption when a decoded Draco mesh was larger than indicated by the corresponding glTF accessor.
- Fixed a bug that could cause the wrong triangle indices to be used for a Draco-encoded glTF.
v0.9.0 - 2021-11-01
Breaking Changes 📣
- Changed the following properties in CesiumGltf:
BufferView::targetnow defaults tostd::nulloptinstead ofTarget::ARRAY_BUFFER.ClassProperty::typenow defaults toType::INT8instead of empty string.ClassProperty::componentTypeis now an optional string instead of aJsonValue.FeatureTexture::classPropertyis no longer optional, consistent with changes to the extension spec.Image::mimeTypenow defaults to empty string instead ofMimeType::image_jpeg.Sampler::magFilterandSampler::minFilternow default tostd::nulloptinstead ofMagFilter::NEAREST.
- The version of
ExtensibleObjectin theCesiumGltflibrary and namespace has been removed. Use the one in theCesiumUtilitylibrary and namespace instead. - Renamed the following glTF extension classes:
KHR_draco_mesh_compression->ExtensionKhrDracoMeshCompression.MeshPrimitiveEXT_feature_metadata->ExtensionMeshPrimitiveExtFeatureMetadataModelEXT_feature_metadata->ExtensionModelExtFeatureMetadata
CesiumGltf::ReaderContexthas been removed. It has been replaced with eitherCesiumJsonReader::ExtensionReaderContextorGltfReader.
Additions 🎉
- Added new
Cesium3DTilesandCesium3DTilesReaderlibraries. They are useful for reading and working with 3D Tiles tilesets.
Fixes 🔧
- Fixed a bug that could cause crashes or incorrect behavior when using raster overlays.
- Fixed a bug that caused 3D Tiles content to fail to load when the status code was zero. This code is used by libcurl for successful read of
file://URLs, so the bug prevented loading from such URLs in some environments. - Errors and warnings that occur while loading glTF textures are now include in the model load errors and warnings.
- Fixes how
generate-classesdeals with reserved C++ keywords. Property names that are C++ keywords should be appended with "Property" as was already done, but when parsing JSONs the original property name string should be used.
v0.8.0 - 2021-10-01
Breaking Changes 📣
- glTF enums are now represented in CesiumGltf as their underlying type (int32 or string) rather than as an enum class.
- Tile content loaders now return a
Future, which allows them to be asynchronous and make further network requests.
Fixes 🔧
- Fixed a bug that caused the
RTC_CENTERsemantic in a B3DM feature table to be ignored if any of the values happened to be integers rather than floating-point numbers. This caused these tiles to render in the wrong location.
v0.7.2 - 2021-09-14
Fixes 🔧
- Fixed a bug where the "forbidHoles" option was not working with raster overlays and external tilesets.
v0.7.1 - 2021-09-14
Fixes 🔧
- Fixed a bug introduced in v0.7.0 where credits from a
QuadtreeRasterOverlayTileProviderwere not collected and reported. - Fixed a bug where disabling frustum culling caused external tilesets to not load.
v0.7.0 - 2021-09-01
Breaking Changes 📣
- Renamed the
Cesium3DTilesnamespace and library toCesium3DTilesSelection. - Deleted
Cesium3DTilesSelection::Gltfand moved functionality intoCesiumGltf::Model. - Renamed
Rectangle::intersectandGlobeRectangle::intersecttocomputeIntersection. RasterOverlayand derived classes now require anameparameter to their constructors.- Changed the type of texture coordinate IDs used in the raster overlay system from
uint32_ttoint32_t. RasterOverlayTileProvideris no longer quadtree-oriented. Instead, it requires derived classes to provide an image for a particular requested rectangle and geometric error. Classes that previously derived fromRasterOverlayTileProvidershould now derive fromQuadtreeRasterOverlayTileProviderand implementloadQuadtreeTileImageinstead ofloadTileImage.- Removed
TilesetOptions::enableWaterMask, which didn't have any effect anyway.TilesetContentOptions::enableWaterMaskstill exists and works.
Additions 🎉
- Added
Future<T>::isReady. - Added
Future<T>::share, which returns aSharedFuture<T>and allows multiple continuations to be attached. - Added an option in
TilesetOptions::ContentOptionsto generate smooth normals when the original glTFs were missing normals. - Added
ImageManipulationclass toCesiumGltfReader. - Added
Math::roundUpandMath::roundDown. - Added
Rectangle::computeUnion.
Fixes 🔧
- Fixed a bug that caused CesiumGltfWriter to write a material's normal texture info into a property named
normalTextureInforather thannormalTexture. - Fixed a bug in
TileMapServiceRasterOverlaythat caused it to show only the lowest resolution tiles if missing atilemapresource.xmlfile.
v0.6.0 - 2021-08-02
Breaking Changes 📣
Future<T>::waitnow returns the resolved value and throws if the Future rejected, rather than returning astd::variantand slicing the exception tostd::exception.Tileset::updateViewandTileset::updateViewOfflinenow takestd::vector<ViewState>instead of a singleViewState.
Additions 🎉
- Added support for the
EXT_feature_metadataglTF extension. - Added automatic conversion of the B3DM batch table to the
EXT_feature_metadataextension. - Added
CESIUM_COVERAGE_ENABLEDoption to the build system. - Added
AsyncSystem::dispatchOneMainThreadTaskto dispatch a single task, rather than all the tasks that are waiting. - Added
AsyncSystem::createPromiseto create a Promise directly, rather than via a callback as inAsyncSystem::createFuture. - Added
AsyncSystem::catchImmediatelyto catch a Future rejection immediately in any thread. - Added
AsyncSystem::allto create a Future that resolves when a list of Futures resolve. - Added support for multiple frustums in the
Tilesetselection algorithm.
Fixes 🔧
- Fixed a bug that prevented
.thenfunctions from being used on aFuture<void>when CESIUM_TRACING_ENABLED was ON.
v0.5.0 - 2021-07-01
Breaking Changes 📣
TilesetExternalsnow has anAsyncSysteminstead of a shared pointer to anITaskProcessor.
Additions 🎉
- Added a performance tracing framework via
CESIUM_TRACE_*macros. - Added
Future<T>::thenImmediately. - Added
AsyncSystem::createThreadPoolandFuture<T>::thenInThreadPool. Future<T>::thenInWorkerThreadandFuture<T>::thenInMainThreadnow arrange for their continuations to be executed immediately when the Future is resolved, if the Future is resolved in the correct thread.- Moved all request cache database access to a dedicated thread, in order to free up worker threads for parallelizable work.
v0.4.0 - 2021-06-01
Additions 🎉
- Added
Cesium3DTiles::TileIdUtilitieswith acreateTileIdStringfunction to create logging/debugging strings forTileIDobjects. - Accessing the same Bing Maps layer multiple times in a single application run now reuses the same Bing Maps session instead of starting a new one each time.
- Added a configure-time build option,
PRIVATE_CESIUM_SQLITE, to rename allsqlite3*symbols tocesium_sqlite3*.
Fixes 🔧
- Matched draco's decoded indices to gltf primitive if indices attribute does not match with the decompressed indices.
createAccessorViewnow creates an (invalid)AccessorViewwith a standard numeric type on error, rather than creatingAccessorView<nullptr_t>. This makes it easier to use a simple lambda as the callback.- Disabled
HTTPLIB_USE_ZLIB_IF_AVAILABLEandHTTPLIB_USE_OPENSSL_IF_AVAILABLEbecause these libraries are not required for our use for cpp-httplib and they cause problems on some systems.
v0.3.1 - 2021-05-13
Fixes 🔧
- Fixed a memory leak when loading textures from a glTF model.
- Fixed a use-after-free bug that could cause a crash when destroying a
RasterOverlay.
v0.3.0 - 2021-05-03
Breaking Changes 📣
- Converted
magic_enum/CodeCoverage.cmakedependencies to external submodules. - Replaced
CesiumGltf::WriteFlagsbitmask withCesiumGltf::WriteModelOptionsstruct.CesiumGltf::writeModelAsEmbeddedBytesandCesiumGltf::writeModelAndExternalfilesnow use this struct for configuration. - Removed all exceptions in
WriterException.h, warnings / errors are now reported inWriteModelResult, which is returned fromCesiumGltf::writeModelAsEmbeddedBytesandCesiumGltf::writeModelAndExternalFilesinstead.
Additions 🎉
- Added support for loading the water mask from quantized-mesh terrain tiles.
Fixes 🔧
- Let a tile be renderable if all its raster overlays are ready, even if some are still loading.
v0.2.0 - 2021-04-19
Breaking Changes 📣
- Moved
JsonValuefrom theCesiumGltflibrary to theCesiumUtilitylibrary and changes some of its methods. - Renamed
CesiumGltf::ReadertoCesiumGltf::GltfReader. - Made the
readModelandreadImagemethods onGltfReaderinstance methods instead of static methods.
Additions 🎉
- Added
CesiumGltfWriterlibrary. - Added
CesiumJsonReaderlibrary. - Added diagnostic details to error messages for invalid glTF inputs.
- Added diagnostic details to error messages for failed OAuth2 authorization with
CesiumIonClient::Connection. - Added an
Axisenum andAxisTransformsclass for coordinate system transforms - Added support for the legacy
gltfUpVectorstring property in theassetpart of tilesets. The up vector is read and passed as anAxisin theextras["gltfUpVector"]property, so that receivers may rotate the glTF model's up-vector to match the Z-up convention of 3D Tiles. - Unknown glTF extensions are now deserialized as a
JsonValue. Previously, they were ignored. - Added the ability to register glTF extensions for deserialization using
GltReader::registerExtension. - Added
GltfReader::setExtensionState, which can be used to request that an extension not be deserialized or that it be deserialized as aJsonValueeven though a statically-typed class is available for the extension.
Fixes 🔧
- Gave glTFs created from quantized-mesh terrain tiles a more sensible material with a
metallicFactorof 0.0 and aroughnessFactorof 1.0. Previously the default glTF material was used, which has ametallicFactorof 1.0, leading to an undesirable appearance. - Reported zero-length images as non-errors as
BingMapsRasterOverlaypurposely requests that the Bing servers return a zero-length image for non-existent tiles. - 3D Tiles geometric error is now scaled by the tile's transform.
- Fixed a bug that that caused a 3D Tiles tile to fail to refine when any of its children had an unsupported type of content.
v0.1.0 - 2021-03-30
- Initial release.