cesium-native 0.44.2
|
GltfUtilities::parseGltfCopyright
that could cause a crash when the copyright ends with a semicolon.CesiumIonClient::Connection
that caused the authorize
method to use an incorrect URL.Math::rotation
. Use glm::rotation
from <glm/gtx/quaternion.hpp>
instead.Math::perpVector
. Use glm::perp
from <glm/gtx/perpendicular.hpp>
instead.GLM_ENABLE_EXPERIMENTAL
.GLM_FORCE_SIZE_T_LENGTH
option with the glm
libraryCullingVolume
has been moved from the Cesium3DTilesSelection
namespace to the CesiumGeometry
namespace.forEachTile
, forEachContent
, addExtensionUsed
, addExtensionRequired
, removeExtensionUsed
, removeExtensionRequired
, isExtensionUsed
, and isExtensionRequired
to Cesium3DTiles::Tileset
.EXT_structural_metadata
and EXT_instance_features
extensions.CesiumIonClient::Connection::geocode
method for making geocoding queries against the Cesium ion geocoder API.UrlTemplateRasterOverlay
for requesting raster tiles from services using a templated URL.upsampleGltfForRasterOverlays
is now compatible with meshes using TRIANGLE_STRIP, TRIANGLE_FAN, or non-indexed TRIANGLES primitives.requestHeaders
field to TilesetOptions
to allow per-tileset request headers to be specified.GltfWriter
that would happen when the EXT_structural_metadata
schema
property was null.SharedAssetDepot
that could cause assertion failures in debug builds, and could rarely cause premature deletion of shared assets even in release builds.Tileset::sampleHeightMostDetailed
to return a height that is not the highest one when the sampled tileset contained multiple heights at the given location.LayerJsonTerrainLoader
will now log errors and warnings when failing to load a .terrain
file referenced in the layer.json, instead of silently ignoring them.CullingVolume
when the camera was very far away from the globe.culture
parameter of the BingMapsRasterOverlay
from having an effect.JsonValueMissingKey
and JsonValueNotRealValue
from CesiumUtility
.offset
getter to AccessorView
.stride
, offset
, and data
getters to AccessorWriter
.value_type
typedef to AccessorWriter
.InstanceAttributeSemantics
to CesiumGltf
.VertexAttributeSemantics::FEATURE_ID_n
.const
version of Tileset::forEachLoadedTile
.DebugTileStateDatabase
, which provides tools for debugging the tile selection algorithm using SQLite.CesiumAsync::SqliteHelper
, containing functions for working with SQLite.EXT_structural_metadata
. See https://github.com/CesiumGS/glTF/pull/71.thenPassThrough
that caused a compiler error when given a value by r-value refrence.SubtreeFileReader::loadBinary
that prevented valid subtrees from loading if they did not contain binary data.Tileset
selection algorithm that could cause detail to disappear during load in some cases.Tileset
, when they do occur, to be filled with loaded tiles more incrementally.SharedAssetDepot
that could lead to crashes and other undefined behavior when an asset in the depot outlived the depot itself.2024.11.16
.gsl::span
to std::span
throughout the library and API. The GSL library has been removed.BingMapsRasterOverlay
constructor no longer takes an ellipsoid
parameter. Instead, it uses the ellipsoid specified in RasterOverlayOptions
.ellipsoid
field in RasterOverlayOptions
is no longer a std::optional
. Instead, it defaults to WGS84 directly.ellipsoid
field from TileMapServiceRasterOverlayOptions
, WebMapServiceRasterOverlayOptions
, and WebMapTileServiceRasterOverlayOptions
. These overlays now use the ellipsoid in RasterOverlayOptions
instead.schema
property of ExtensionModelExtStructuralMetadata
is now an IntrusivePointer
instead of a std::optional
.EXT_accessor_additional_types
in AccessorView
.EllipsoidTilesetLoader
that will generate a tileset by tessellating the surface of an ellipsoid, producing a simple globe tileset without any terrain features.schemaUri
property in the EXT_structural_metadata
glTF extension are now loaded automatically. Two models that reference the same external schema will share a single copy of it.getHeightSampler
method to TilesetContentLoader
, allowing loaders to optionally provide a custom, more efficient means of querying heights using the ITilesetHeightSampler
interface.JsonValue
.TileLoadResult
now includes a pAssetAccessor
that was used to retrieve the tile content and that should be used to retrieve any additional resources associated with the tile, such as external images.CreditSystem
.extensions
object would get written if an ExtensibleObject
only had unregistered extensions.IntersectionTests::rayTriangleParametric
, allowing it to find intersections with smaller triangles.GltfUtilities::intersectRayGltfModel
to crash when the model contains a primitive whose position accessor does not have min/max values.IonRasterOverlay
now passes its RasterOverlayOptions
to the BingMapsRasterOverlay
or TileMapServiceRasterOverlay
that it creates internally.CachingAssetAccessor
that caused it to return cached request headers on a cache hit, rather than the headers included in the new request.SharedAssetDepot
that could lead to a crash with assets that fail to load.AccessorView
that could cause it to report the view as valid even when its BufferView
had a negative byteStride
.CesiumUtility/Gunzip.h
to CesiumUtility/Gzip.h
.ImageCesium
to ImageAsset
.cesium
field in CesiumGltf::Image
is now named pAsset
and is an IntrusivePointer
to an ImageAsset
.image
field in LoadedRasterOverlayImage
is now named pImage
and is an IntrusivePointer
to an ImageAsset
.readImage
and generateMipMaps
methods on GltfReader
. These methods are now found on ImageDecoder
.CesiumUtility::gzip
.CesiumGeometry::Transforms::getUpAxisTransform
to get the transform that converts from one up axis to another.TilesetSharedAssetSystem
to Cesium3DTilesSelection
and GltfSharedAssetSystem
to CesiumGltfReader
.SharedAsset
to CesiumUtility
to serve as the base class for assets such as ImageAsset
.SharedAssetDepot
to CesiumAsync
for managing assets, such as images, that can be shared among multiple models or other objects.NetworkAssetDescriptor
and NetworkImageAssetDescriptor
.ImageAsset
(formerly ImageCesium
) is now an ExtensibleObject
.VertexAttributeSemantics
to CesiumGltf
.ImageDecoder
to CesiumGltfReader
.DoublyLinkedListAdvanced
to CesiumUtility
. It is equivalent to DoublyLinkedList
except it allows the next and previous pointers to be in a base class of the node class.contains
method to DoublyLinkedList
(and DoublyLinkedListAdvanced
).error
and warning
methods to ErrorList
, making it easy to create an instance with a single error or warning.ExtensibleObject::addExtension
now takes arguments that are passed through to the extension's constructor.Hash
to CesiumUtility
.emplace
and reset
methods to IntrusivePointer
.Result<T>
and ResultPointer<T>
classes to represent the result of an operation that might complete with warnings and errors.AsyncSystem::all
where the resolved values of individual futures were copied instead of moved into the output array.QuadtreeTileID
.shouldContentContinueUpdating
to getMightHaveLatentChildren
and setContentShouldContinueUpdating
to setMightHaveLatentChildren
on the Tile
class.LoadedRasterOverlayImage
now has a single errorList
property instead of separate errors
and warnings
properties.sampleHeightMostDetailed
method to Tileset
.AxisAlignedBox
now has constexpr
constructors.Tileset
with a nullptr IPrepareRendererResources
.IntersectionTests::rayOBBParametric
that could cause incorrect results for some oriented bounding boxes.GltfUtilities::intersectRayGltfModel
now reports a warning when given a model it can't compute the intersection with because it uses required extensions that are not supported.catchImmediately
and catchInMainThread
functions in CesiumAsync
that prevented use of a mutable lambda.PRIVATE_CESIUM_SQLITE
will no longer automatically rename all of the SQLite symbols. It must also be paired with a vcpkg overlay port that renames the symbols in SQLite itself.PropertyArrayView
is now exclusively a view, with no ability to own the data it is viewing. The new PropertyArrayCopy
can be used when an owning view is required.CesiumGltfWriter::SchemaWriter
for serializing schemas in EXT_structural_metadata.resolveExternalImages
flag to GltfReaderOptions
, which is true by default.removeExtensionUsed
and removeExtensionRequired
methods to CesiumGltf::Model
.getFeatureIdAccessorView
overload for retrieving feature IDs from EXT_instance_features
.CesiumGeospatial::EarthGravitationalModel1996Grid
class to allow transforming heights on a WGS84 ellipsoid into heights above mean sea level using the EGM96 model.WebMapTileServiceRasterOverlay
that caused it to compute the TileRow
incorrectly when used with a tiling scheme with multiple tiles in the Y direction at the root.KHR_texture_transform
is now removed from extensionsUsed
and extensionsRequired
after it is applied by GltfReader
.AccessorWriter
constructor now takes std::byte*
instead of uint8_t*
.rayTriangle
intersection function that returns the intersection point between a ray and a triangle.intersectRayGltfModel
intersection function that returns the first intersection point between a ray and a glTF model.convertAccessorComponentTypeToPropertyComponentType
, which converts integer glTF accessor component types to their best-fitting PropertyComponentType
.TilesetOptions::ellipsoid
when creating a tileset.CESIUM_DISABLE_DEFAULT_ELLIPSOID
can be defined to disable the WGS84 default parameter, exposing through errors the places in your code that are still assuming a WGS84 ellipsoid.removeUnusedMeshes
and removeUnusedMaterials
to GltfUtilities
.rayEllipsoid
static method to CesiumGeometry::IntersectionTests
.Cartographic
.CESIUM_MSVC_STATIC_RUNTIME_ENABLED
option to the CMake scripts. It is OFF by default, and when enabled, configures any MS visual studio projects for the "Multi-threaded" (/MT) runtime library rather than "Multi-threaded DLL" (/MD)gltfUpAxis
property is now accounted for, if present.IntersectionTests::pointInTriangle
that could discard intersections in small - but valid - triangles.FeatureId::propertyTable
is now int32_t
instead of std::optional<int64_t>
ExtensionMeshPrimitiveExtStructuralMetadata::propertyTextures
and ExtensionMeshPrimitiveExtStructuralMetadata::propertyAttributes
are now vectors of int32_t
instead of int64_t
.forEachNodeInScene
to CesiumGltf::Model
.removeUnusedBuffers
to GltfUtilities
.Uri
class: unescape
, unixPathToUriPath
, windowsPathToUriPath
, nativePathToUriPath
, uriPathToUnixPath
, uriPathToWindowsPath
, and uriPathToNativePath
.LayerWriter
to the CesiumQuantizedMeshTerrain
library and namespace.GltfUtilities::collapseToSingleBuffer
for glTFs with many buffers and bufferViews.Model::merge
. Previously these extensions could end up broken after merging.KHR_texture_basisu
EXT_texture_webp
EXT_mesh_gpu_instancing
EXT_meshopt_compression
CESIUM_primitive_outline
CESIUM_tile_edges
GltfUtilities::compactBuffer
where it would not preserve the alignment of the bufferViews.collapseToSingleBuffer
and moveBufferContent
functions in GltfUtilities
now align to an 8-byte boundary rather than a 4-byte boundary, because bufferViews associated with some glTF extensions require this larger alignment.GltfUtilities::collapseToSingleBuffer
now works correctly even if some of the buffers in the model have a uri
property and the data at that URI has not yet been loaded. Such buffers are left unmodified.GltfUtilities::collapseToSingleBuffer
now works correctly with bufferViews that have the EXT_meshopt_compression
extension.GltfUtilities::compactBuffer
now accounts for bufferViews with the EXT_meshopt_compression
when determining unused buffer ranges.GltfReader
decodes buffers with data URLs, and the size of the data in the URL does not match the buffer's byteLength
, the byteLength
is now updated and a warning is raised. Previously, the mismatch was ignored and would cause problems later when trying to use these buffers.EXT_meshopt_compression
and KHR_mesh_quantization
are now removed from extensionsUsed
and extensionsRequired
after they are decoded by GltfReader
.RasterOverlayUtilities::createRasterOverlayTextureCoordinates
now has min/max values that accurately reflect the range of values. Previously, the minimum was always set to 0.0 and the maximum to 1.0.waitInMainThread
method on Future
and SharedFuture
that could cause it to never return if the waited-for future rejected.absl
namespace to the cesium_s2geometry_absl
namespace, in order to avoid linker errors when linking against both cesium-native and the full Abseil library.ExtensionWriterContext
when attempting to write statically-typed extensions that aren't registered. Now a warning is reported.upsampleGltfForRasterOverlays
into RasterOverlayUtilities
. Previously it was a global function. Also added two new parameters to it, prior to the existing textureCoordinateIndex
parameter.QuantizedMeshLoader
from Cesium3DTilesContent
to CesiumQuantizedMeshTerrain
. If experiencing related linker errors, add CesiumQuantizedMeshTerrain
to the libraries you link against.Connection::authorize
now requires an ApplicationData
parameter, which represents the appData
retrieved from a Cesium ion server.CesiumQuantizedMeshTerrain
library and namespace, containing classes for working with terrain in the quantized-mesh-1.0
format and its layer.json
file.getComponentCountFromPropertyType
to PropertyType
.removeExtension
to ExtensibleObject
.IndexFromAccessor
to retrieve the index supplied by IndexAccessorType
.NormalAccessorType
, which is a type definition for a normal accessor. It can be constructed using getNormalAccessorView
.Uri::getPath
and Uri::setPath
.TileTransform::setTransform
.GlobeRectangle::splitAtAntiMeridian
.BoundingRegionBuilder::toGlobeRectangle
.GlobeRectangle::equals
and GlobeRectangle::equalsEpsilon
.upsampleGltfForRasterOverlays
now accepts two new parameters, hasInvertedVCoordinate
and textureCoordinateAttributeBaseName
.upsampleGltfForRasterOverlays
now copies images from the parent glTF into the output model.waitInMainThread
method to Future
and SharedFuture
.forEachRootNodeInScene
, addExtensionUsed
, addExtensionRequired
, isExtensionUsed
, and isExtensionRequired
methods to CesiumGltf::Model
.getNodeTransform
, setNodeTransform
, removeUnusedTextures
, removeUnusedSamplers
, removeUnusedImages
, removeUnusedAccessors
, removeUnusedBufferViews
, and compactBuffers
methods to GltfUtilities
.postprocessGltf
method to GltfReader
.Model::merge
now merges the EXT_structural_metadata
and EXT_mesh_features
extensions. It also now returns an ErrorList
, used to report warnings and errors about the merge process.joinToString
when given a collection containing empty strings.QuantizedMeshLoader
now creates spec-compliant glTFs from a quantized-mesh terrain tile. Previously, the generated glTF had small problems that could confuse some clients.TileMapServiceRasterOverlay
that caused it to build URLs incorrectly when given a URL with query parameters.EXT_structural_metadata
now:EXT_structural_metadata
and EXT_mesh_features
extensions to the glTF's extensionsUsed
list.values
field referring to an invalid bufferView, which is contrary to the extension's specification._BATCHID
attribute to _FEATURE_ID_0
inside the KHR_draco_mesh_compression
extension (if present), in addition to the primitive's attributes
. Previously, meshes still Draco-compressed after the upgrade, by setting options.decodeDraco=false
, did not have the proper attribute name.RTC_CENTER
property will now have CESIUM_RTC
added to their extensionsRequired
and extensionsUsed
lists.asset.version
field correctly set to "2.0"
. Previously the version was not set, which is invalid.KHR_materials_unlit
extension added to the glTF's extensionsUsed
list when the point cloud does not have normals.scene
.CESIUM_RTC
extension added to the glTF's extensionsRequired
and extensionsUsed
lists when the PNTS uses the RTC_CENTER
property.applyTextureTransform
set to true, the accessors and bufferViews created for the newly-generated texture coordinates now have their byteOffset
set to zero. Previously, they inherited the value from the original KHR_texture_transform
-dependent objects, which was incorrect.bufferViews
created for indices during Draco decoding no longer have their byteStride
property set, as this is unnecessary and disallowed by the specification.bufferViews
created for vertex attributes during Draco decoding now have their target
property correctly set to BufferView::Target::ARRAY_BUFFER
.KHR_draco_mesh_compression
extension is now removed from the primitives, as well as from extensionsUsed
and extensionsRequired
.upsampleGltfForRasterOverlays
.RasterOverlayUtilities::createRasterOverlayTextureCoordinates
no longer fails when the model spans the anti-meridian. However, only the larger part of the model on one side of the anti-meridian will have useful texture coordinates.GltfWriter
to create an invalid GLB if its total size would be greater than or equal to 4 GiB. Because it is not possible to produce a valid GLB of this size, GltfWriter now reports an error instead.CesiumUtility::Uri::resolve
can now properly parse protocol-relative URIs (such as //example.com
).GltfReader
was not able to read a model when the BIN chunk of the GLB data was more than 3 bytes larger than the size of the JSON-defined buffer
.IntersectionTests::pointInTriangle2D
to IntersectionTests::pointInTriangle
.AccessorWriter
constructor that takes an AccessorView
.PositionAccessorType
, which is a type definition for a position accessor. It can be constructed using getPositionAccessorView
.IntersectionTests::pointInTriangle
that handle 3D points. One overload includes a barycentricCoordinates
parameter that outputs the barycentric coordinates at that point.ImplicitTilingUtilities::computeBoundingVolume
that take a Cesium3DTiles::BoundingVolume
.ImplicitTilingUtilities::computeBoundingVolume
that take an S2CellBoundingVolume
and an OctreeTileID
. Previously only QuadtreeTileID
was supported.setOrientedBoundingBox
, setBoundingRegion
, setBoundingSphere
, and setS2CellBoundingVolume
functions to TileBoundingVolumes
.SimplePlanarEllipsoidCurve
were inverted if one of the input points had a negative height.Tileset::ComputeLoadProgress
could incorrectly report 100% before all tiles finished their main thread loading.EXT_feature_metadata
in CesiumGltf
, CesiumGltfReader
, and CesiumGltfWriter
. This extension was replaced by EXT_mesh_features
, EXT_instance_features
, and EXT_structural_metadata
.ReferenceCountedNonThreadSafe<T>
to ReferenceCounted.h
. It is also now a type alias for ReferenceCounted<T, false>
rather than an actual class.applyKHRTextureTransform
to applyKhrTextureTransform
. The corresponding header file was similarly renamed to CesiumGltf/applyKhrTextureTransform.h
.TextureViewOptions
, which includes the following flags:applyKhrTextureTransformExtension
: When true, the view will automatically transform texture coordinates before sampling the texture.makeImageCopy
: When true, the view will make its own CPU copy of the image data.TextureView
. It views an arbitrary glTF texture and can be affected by TextureViewOptions
. FeatureIdTextureView
and PropertyTexturePropertyView
now inherit from this class.options
parameter to PropertyTextureView::getPropertyView
and PropertyTextureView::forEachProperty
, allowing views to be constructed with property-specific options.KhrTextureTransform
, a utility class that parses the KHR_texture_transform
glTF extension and reports whether it is valid. UVs may be transformed on the CPU using applyTransform
.contains
method to BoundingSphere
.GlobeRectangle::MAXIMUM
static field.ReferenceCountedThreadSafe
type alias.SimplePlanarEllipsoidCurve
class to help with calculating fly-to paths.sizeBytes
field to ImageCesium
, allowing its size to be tracked for caching purposes even after its pixelData
has been cleared.scaleToGeocentricSurface
method to Ellipsoid
.BoundingVolume::estimateGlobeRectangle
where it returned an incorrect rectangle for boxes and spheres that encompass the entire globe.applySamplerWrapS
and applySamplerWrapT
.IndicesForFaceFromAccessor
now properly supports TRIANGLE_STRIP
and TRIANGLE_FAN
modes. This requires the struct to be initialized with the correct primitive mode.WebMapTileServiceRasterOverlay
.std::string
to other metadata types in MetadataConversions
. This enables the same conversions as std::string_view
, while allowing runtime engines to use std::string
for convenience.applyTextureTransform
property to TilesetOptions
, which indicates whether to preemptively apply transforms to texture coordinates for textures with the KHR_texture_transform
extension.loadGltf
method to GltfReader
, making it easier to do a full, asynchronous load of a glTF.FeatureIdTextureView
where it ignored the wrap values specified on the texture's sampler.PropertyTablePropertyView
where arrayOffsets
were treated as byte offsets, instead of as array indices.defaults
method to CesiumIonClient::Connection
.SubtreeAvailability::loadSubtree
.getApiUrl
method of CesiumIonClient::Connection
would not return the default API URL if the attempt to access config.json
failed in a more serious way, such as because of an invalid hostname.ErrorList
, CreditSystem
, and Credit
from Cesium3DTilesSelection
to CesiumUtility
.GltfUtilities
from Cesium3DTilesSelection
to Cesium3DTilesContent
.RasterOverlay
, RasterOverlayTileProvider
, RasterOverlayTile
, QuadtreeRasterOverlayTileProvider
, RasterOverlayLoadFailure
, RasterOverlayDetails
, and all of the RasterOverlay
-derived types to a new CesiumRasterOverlays
library and namespace.createRasterOverlayTextureCoordinates
method from GltfUtilities
to a new RasterOverlayUtilities
class in the CesiumRasterOverlays
library.GltfUtilities::parseGltfCopyright
now returns the credits as a vector of std::string_view
instances. Previously it took a CreditSystem
and created credits directly.SubtreeAvailability
constructor and loadSubtree
static method now take an ImplicitTileSubdivisionScheme
enumeration parameter instead of a powerOf2
parameter. They also now require a levelsInSubtree
parameter, which is needed when switching from constant to bitstream availability. Lastly, the constructor now takes a Subtree
parameter instead of a std::vector<std::vector<std::byte>>
representing the buffers.SubtreeConstantAvailability
, SubtreeBufferViewAvailability
, and AvailabilityView
are now members of SubtreeAvailability
.ImageManipulation
from CesiumGltfReader
to CesiumGltfContent
.RasterOverlayUtilities::createRasterOverlayTextureCoordinates
and changed the order of some existing parameters.Cesium3DTilesContent
library and namespace. It has classes for loading, converting, and manipulating 3D Tiles tile content.CesiumGltfContent
library and namespace. It has classes for manipulating in-memory glTF files.CesiumRasterOverlays
library and namespace. It has classes for working with massive textures draped over glTFs and 3D Tiles.MetadataConversions
, which enables metadata values to be converted to different types for better usability in runtime engines.typedef
s to catch all possible types of AccessorView
s for an attribute, including FeatureIdAccessorType
for feature ID attribute accessors, IndexAccessorType
for index accessors, and TexCoordAccessorType
for texture coordinate attribute accessors.getFeatureIdAccessorView
, getIndexAccessorView
, and getTexCoordAccessorView
to retrieve the AccessorView
as a FeatureIdAccessorType
, IndexAccessorType
, or TexCoordAccessorType
respectively.StatusFromAccessor
and CountFromAccessor
visitors to retrieve the accessor status and size respectively. This can be used with FeatureIdAccessorType
, IndexAccessorType
, or TexCoordAccessorType
.FeatureIdFromAccessor
to retrieve feature IDs from a FeatureIdAccessorType
.IndicesForFaceFromAccessor
to retrieve the indices of the vertices that make up a face, as supplied by IndexAccessorType
.TexCoordFromAccessor
to retrieve the texture coordinates from a TexCoordAccessorType
.TileBoundingVolumes
class to Cesium3DTilesContent
, making it easier to create the rich bounding volume types in CesiumGeometry
and CesiumGeospatial
from the simple vector representations in Cesium3DTiles
.transform
method to CesiumGeometry::BoundingSphere
.toSphere
, fromSphere
, and fromAxisAligned
methods to CesiumGeometry::OrientedBoundingBox
.TileTransform
class to Cesium3DTilesContent
, making it easier to create a glm::dmat4
from the transform
property of a Cesium3DTiles::Tile
.ImplicitTilingUtilities
class to Cesium3DTilesContent
.isTileAvailable
, isContentAvailable
, and isSubtreeAvailable
on the SubtreeAvailability
class that take the subtree root tile ID and the tile ID of interest, instead of a relative level and Morton index.fromSubtree
and createEmpty
static methods to SubtreeAvailability
.set
methods to SubtreeAvailability
, allowing the availability information to be modified.SubtreeFileReader
class, used to read Cesium3DTiles::Subtree
from a binary or JSON subtree file.pointInTriangle2D
static method to CesiumGeometry::IntersectionTests
.rectangleIsWithinPolygons
and rectangleIsOutsidePolygons
static methods to CartographicPolygon
.IPrepareRasterOverlayRendererResources
, which contains only overlay-related methods, instead of IPrepareRendererResources
, which contains tileset-related methods as well. IPrepareRendererResources
derives from IPrepareRasterOverlayRendererResources
so existing code should continue to work without modification.collapseToSingleBuffer
and moveBufferContent
methods to GltfUtilities
.savePng
method to ImageManipulation
.RasterOverlayTileProvider::loadTile
now returns a future that resolves when the tile is done loading.computeDesiredScreenPixels
and computeTranslationAndScale
methods to RasterOverlayUtilities
.Future<T>::thenPassThrough
, used to easily pass additional values through to the next continuation.OrientedBoundingBox::contains
where it didn't account for the bounding box's center.PropertyAttributeView::forEachProperty
.PropertyTablePropertyViewType
and NormalizedPropertyTablePropertyViewType
, as well as their counterparts for property textures and property attributes. When compiled with Clang, the large std::variant
definitions would significantly stall compilation.https://cesium.com/ion/oauth
to https://ion.cesium.com/oauth
, avoiding a redirect.getClass
to PropertyTableView
, PropertyTextureView
, and PropertyAttributeView
. This can be used to retrieve the metadata Class
associated with the view.PropertyViewStatus::EmptyPropertyWithDefault
to indicate when a property contains no data, but has a valid default value.bufferView
with a byteStride
of zero is now treated as if the byteStride
is not defined at all. Such a glTF technically violates the spec (the minimum value is 4), but the new behavior is sensible enough and consistent with CesiumJS.PropertyTableView
, PropertyTextureView
, and PropertyAttributeView
instances. Previously, if a property was not required
and omitted, it would be initialized as invalid with the ErrorNonexistentProperty
status. Now, it will be treated as valid as long as the property defines a valid defaultProperty
. A special instance of PropertyTablePropertyView
, PropertyTexturePropertyView
, or PropertyAttributePropertyView
will be constructed to allow the property's default value to be retrieved, either via defaultValue
or get
. getRaw
may not be called on this special instance.EXT_feature_metadata
will no longer supported by Cesium Native. The extension will still be parsed, but it will log a warning.EXT_structural_metadata
instead of EXT_feature_metadata
.CesiumGltf
, all generated classes related to EXT_feature_metadata
are now prefixed with ExtensionExtFeatureMetadata
. For example, ClassProperty
has become ExtensionExtFeatureMetadataClassProperty
. This also extends to the glTF reader and writer.CesiumGltf
, all generated classes related to EXT_structural_metadata
have had their ExtensionExtStructuralMetadata
prefix removed. For example, ExtensionExtStructuralMetadataClassProperty
has become ClassProperty
. This also extends to the glTF reader and writer.CesiumGltf
, ExtensionExtMeshFeaturesFeatureId
and ExtensionExtMeshFeaturesFeatureIdTexture
have been renamed to FeatureId
and FeatureIdTexture
respectively.FeatureIDTextureView
with FeatureIdTextureView
, which views a FeatureIdTexture
in EXT_mesh_features
. Feature ID textures from EXT_feature_metadata
are no longer supported.MetadataFeatureTableView
with PropertyTableView
, which views a PropertyTable
in EXT_structural_metadata
.MetadataPropertyView
with PropertyTablePropertyView
, which is a view of a PropertyTableProperty
in EXT_structural_metadata
. This takes two template parameters: a typename T
, and a bool
indicating whether or not the values are normalized.MetadataPropertyViewStatus
with PropertyTablePropertyViewStatus
. PropertyTablePropertyViewStatus
is a class that inherits from PropertyViewStatus
, defining additional error codes in the form of static const
values.FeatureTextureView
with PropertyTextureView
, which views a PropertyTexture
in EXT_structural_metadata
.FeatureTexturePropertyView
with PropertyTexturePropertyView
, which is a view of a PropertyTextureProperty
in EXT_structural_metadata
. This takes two template parameters: a typename T
, and a bool
indicating whether or not the values are normalized.FeatureTexturePropertyComponentType
, FeatureTexturePropertyChannelOffsets
, and FeatureTexturePropertyValue
. PropertyTextureProperty
retrieves the values with the type indicated by its class property.FeatureTexturePropertyViewStatus
with PropertyTexturePropertyViewStatus
. PropertyTexturePropertyViewStatus
is a class that inherits from PropertyViewStatus
, defining additional error codes in the form of static const
values.FeatureIDTextureViewStatus
to FeatureIdTextureViewStatus
for consistency.MetadataArrayView
to PropertyArrayView
.FeatureTextureViewStatus
to PropertyTextureViewStatus
.PropertyType
to reflect the values of type
in a ClassProperty
from EXT_structural_metadata
.PropertyView
, which acts as a base class for all metadata property views. This takes two template parameters: a type T
, and a bool
indicating whether or not the values are normalized.PropertyViewStatus
, which defines public static const
values for various property errors.PropertyTableViewStatus
to indicate whether a PropertyTableView
is valid.PropertyComponentType
to reflect the values of componentType
in a ClassProperty
from EXT_structural_metadata
.PropertyAttributeView
, which views a PropertyAttribute
in EXT_structural_metadata
.PropertyAttributePropertyView
, which views a PropertyAttributeProperty
in EXT_structural_metadata
.PropertyAttributePropertyViewStatus
, which reflects the status of a PropertyAttributePropertyView
."externalType"
assets.Tileset::ComputeLoadProgress
can incorrectly report done (100%) before all tiles are actually loaded for the current view.CESIUM_GLM_STRICT_ENABLED
option to the CMake scripts. It is ON by default, but when set to OFF it disables the GLM_FORCE_XYZW_ONLY
, GLM_FORCE_EXPLICIT_CTOR
, and GLM_FORCE_SIZE_T_LENGTH
options in the GLM library.FeatureTexturePropertyView.h
.Catch2
subdirectory when the tests are disabled.ExtensionReaderContext
to JsonReaderOptions
, and the getExtensions
method on various JSON reader classes to getOptions
.IExtensionJsonHandler
no longer derives from IJsonHandler
. Instead, it has a new pure virtual method, getHandler
, that must be implemented to allow clients to obtain the IJsonHandler
. In almost all implementations, this should simply return *this
.SubtreeReader
, SchemaReader
, and TilesetReader
, the readSubtree
, readSchema
, and readTileset
methods (respectively) have been renamed to readFromJson
and return a templated ReadJsonResult
instead of a bespoke result class.TileExternalContent
is now heap allocated and stored in TileContent
with a std::unique_ptr
.Tile
of a Cesium3DTilesSelection::Tileset
now represents the tileset.json itself, and the root
tile specified in the tileset.json is its only child. This makes the shape of the tile tree consistent between a standard top-level tileset and an external tileset embedded elsewhere in the tree. In both cases, the "tile" that represents the tileset.json itself has content of type TileExternalContent
.LocalHorizontalCoordinateSystem
taking ECEF<->Local transformation matrices directly.JsonReader
are now stored in the unknownProperties
property on ExtensibleObject
by default. To ignore them, as was done in previous versions, call setCaptureUnknownProperties
on JsonReaderOptions
.ValueType
type alias to ArrayJsonHandler
, for consistency with other JSON handlers.JsonReader::readJson
that takes a rapidjson::Value
instead of a byte buffer. This allows a subtree of a rapidjson::Document
to be easily and efficiently converted into statically-typed classes via IJsonHandler
.*Reader
classes to CesiumGltfReader
and Cesium3DTilesReader
to allow each of the classes to be individually read from JSON.getExternalContent
method to the TileContent
class.TileExternalContent
now holds the metadata (schema
, schemaUri
, metadata
, and groups
) stored in the tileset.json.loadMetadata
and getMetadata
methods to Cesium3DTilesSelection::Tileset
. They provide access to TilesetMetadata
instance representing the metadata associated with a tileset.json.MetadataQuery
class to make it easier to find properties with specific semantics in TilesetMetadata
.loadErrorCallback
.max-age-0
, stale-while-revalidate
, and Expires
).EXT_meshopt_compression
extension, which allows decompressing mesh data using the meshoptimizer library. Also added support for the KHR_mesh_quantization
and KHR_texture_transform
extensions, which are often used together with the EXT_meshopt_compression
extension to optimize the size and performance of glTF files.GltfReader::readImage
would always populate mipPositions
when reading KTX2 images, even when the KTX2 file indicated that it had no mip levels and that they should be created, if necessary, from the base image. As a result, generateMipMaps
wouldn't generate any mipmaps for the image.main
branch instead of the draft-1.1
branch.computeTransformationToAnotherLocal
method to LocalHorizontalCoordinateSystem
.KHR_materials_variants
extension to the glTF reader and writer.GunzipAssetAccessor
. It can decorate another asset accessor in order to automatically gunzip responses (if they're gzipped) even if they're missing the proper Content-Encoding
header.UNSIGNED_BYTE
indices.WebMapServiceRasterOverlay
now allows query parameters in the base URL when building GetCapabilities and GetMap requests.libjpeg-turbo
build errors, including ones that occurred when building for iOS.tilesLoadingLowPriority
, tilesLoadingMediumPriority
, and tilesLoadingHighPriority
from ViewUpdateResult
. Use workerThreadTileLoadQueueLength
and mainThreadTileLoadQueueLength
instead.getOrientedBoundingBoxFromBoundingVolume
to the Cesium3DTilesSelection
namespace.transform
and toAxisAligned
methods to OrientedBoundingBox
.libjpeg-turbo
instead of stb
for faster jpeg decoding.getNumberOfTilesLoaded
method to Tileset
.TilesetOptions::forbidHoles
works so that it loads much more quickly, while still guaranteeing there are no holes in the tileset.frameNumber
property to ViewUpdateResult
.stride
and data
fields of AccessorView
.startNewFrame
method to ITileExcluder
.CreditSystem.setShowOnScreen
and Tileset.setShowCreditsOnScreen
to allow on-screen credit rendering to be toggled at runtime.center
field of AxisAlignedBox
to be incorrect.source
property, not the glTF's main Texture
definition.CesiumGeometry::AxisTransforms
to simply Transforms
.CesiumGeospatial::Transforms
to GlobeTransforms
.GlobeAnchor
, making it easy to define a coordinate system that anchors an object to the globe and maintains it as the object moves or as the local coordinate system it is defined in changes.pnts
content. Point clouds are converted to glTF
s with a single POINTS
primitive, while batch tables are converted to EXT_feature_metadata
.createTranslationRotationScaleMatrix
and computeTranslationRotationScaleFromMatrix
methods to CesiumGeometry::Transforms
.CesiumUtility::AttributeCompression
for encoding and decoding vertex attributes in different formats.#include <string>
in generated glTF and 3D Tiles header files.std::sprintf
with std::snprintf
, fixing a warning-as-error in newer versions of Xcode.IonRasterOverlay
.gltfUpAxis
property in a 3D Tiles tileset.json. While not technically spec-compliant, this property is quite common and we are not going to remove support for it anytime soon.TileMapServiceRasterOverlay
or a WebMapServiceRasterOverlay
.IPrepareRendererResources
, the image
parameter passed to prepareRasterInLoadThread
and the rasterTile
parameter passed to prepareRasterInMainThread
are no longer const. These methods are now allowed to modify the parameters during load.IPrepareRendererResources::prepareInLoadThread
now takes a TileLoadResult
and returns a Future<TileLoadResultAndRenderResources>
, allowing it to work asynchronously rather than just blocking a worker thread until it is finished.RasterOverlay::createTileProvider
now takes the owner pointer as an IntrusivePointer
instead of a raw pointer, and returns a future that resolves to a RasterOverlay::CreateTileProviderResult
.mainThreadLoadingTimeLimit
and tileCacheUnloadTimeLimit
properties to TilesetOptions
, allowing a limit to be placed on how much time is spent loading and unloading tiles per frame.GltfReader::generateMipMaps
method.getImage
method to RasterOverlayTile
.LocalHorizontalCoordinateSystem
, which is used to create convenient right- or left-handeded coordinate systems with an origin at a point on the globe.TileRenderContent::lodTransitionPercentage
now always goes from 0.0 --> 1.0 regardless of if the tile is fading in or out.IPrepareRendererResources::prepareInLoadThread
, rendererOptions
, to allow passing arbitrary data from the renderer.CesiumGltfWriter
, accessor.byteOffset
and bufferView.byteOffset
are 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.RasterOverlayCollection
no longer accepts a Tileset
in its constructor. Instead, it now accepts a Tile::LoadedLinkList
and a TilesetExternals
.TileContext
. It has been replaced by the TilesetContentLoader
interface.TileContentFactory
. Instead, conversions of various types to glTF can be registered with GltfConverters
.TileContentLoadInput
. It has been replaced by TileLoadInput
and TilesetContentLoader
.TileContentLoadResult
. It has been replaced by TileContent
.TileContentLoader
. It has been replaced by TilesetContentLoader
and GltfConverters
.ImplicitTraversal
. It has been replaced by TilesetContentLoader
and GltfConverters
.Cesium3DTilesSelection::Tileset
class: getUrl()
, getIonAssetID()
, getIonAssetToken()
, notifyTileStartLoading
, notifyTileDoneLoading()
, notifyTileUnloading()
, loadTilesFromJson()
, requestTileContent()
, requestAvailabilitySubtree()
, addContext()
, and getGltfUpAxis()
. Most of these were already not recommended for use outside of cesium-native.Cesium3DTilesSelection::Tile
class: getTileset()
, getContext()
, setContext()
, getContent()
, setEmptyContent()
, getRendererResources()
, setState()
, loadContent()
, processLoadedContent()
, unloadContent()
, update()
, and markPermanentlyFailed()
. Most of these were already not recommended for use outside of cesium-native.TilesetOptions
supporting smooth transitions between tiles at different levels-of-detail. A tile's transition percentage can be retrieved from TileRenderContent::lodTransitionPercentage
.EXT_texture_webp
extension.KHR_texture_transform
to CesiumGltf
, CesiumGltfReader
, and CesiumGltfWriter
Tileset
can be constructed with a TilesetContentLoader
and a root Tile
for loading and rendering different 3D Tile-like formats or creating a procedural tileset.loadErrorCallback
would not be the one that the user created, but instead an aggregated overlay that was created internally.SqliteCache
where 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.TilesetWriter
and TilesetReader
that have been promoted to core in 3D Tiles 1.1
getSupportsRasterOverlays
from Tileset
because the property is no longer relevant now that all tilesets support raster overlays.TilesetWriter
and TilesetReader
.TileOcclusionRendererProxyPool
to TilesetExternals
. 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.Tileset
can now estimate the percentage of the tiles for the current view that have been loaded by calling the computeLoadProgress
method.RasterizedPolygonsOverlay
to invert the selection, so everything outside the polygons gets rasterized instead of inside.RasterizedPolygonsTileExcluder
excludes tiles outside the selection instead of inside when given an inverted RasterizedPolygonsOverlay
.bounds
property of the layer.json
file of a quantized-mesh terrain tileset is now ignored, and the terrain is assumed to cover the entire globe.In addition to the above, this release updates the following third-party libraries used by cesium-native:
cpp-httplib
to v0.10.3 (changes)draco
to v1.5.2 (changes)earcut
to v2.2.3 (changes)PicoSHA2
to commit 1677374f23352716fc52183255a40c1b8e1d53eb
(changes)rapidjson
to commit fcb23c2dbf561ec0798529be4f66394d3e4996d8
(changes)spdlog
to v1.10.0 (changes)stb
to commit af1a5bc352164740c1cc1354942b1c6b72eacb8a
(changes)uriparser
to v0.9.6 (changes)TilesetOptions::forbidHoles
is enabled by only loading child tiles when their parent does not meet the necessary screen-space error requirement.3DTILES_batch_table_hierarchy
extension.TilesetOptions::forbidHoles
was enabled.TilesetOptions::forbidHoles
enabled, particularly when using external tilesets.IPrepareRendererResources::prepareInMainThread
was called on a Tile
before that Tile
was updated with loaded content.IonRasterOverlay
after it is freed.rendererOptions
, to IPrepareRendererResources::prepareRasterInLoadThread
.uint32_t
to int64_t
.Cesium3DTiles
, Cesium3DTilesReader
, and Cesium3DTilesWriter
namespaces to match the evolving 3D Tiles Next specifications.getTextureCoordinateIndex
from FeatureIDTextureView
and FeatureTexturePropertyView
. Use getTextureCoordinateAttributeId
instead.WebMapServiceRasterOverlay
to pull raster overlays from a WMS server.CesiumGltf
, CesiumGltfReader
, and CesiumGltfWriter
:EXT_instance_features
EXT_structural_metadata
MAXAR_mesh_variants
ScopeGuard
class to automatically a execute function when exiting a scope.copyright
property, if present, is now included in the credits that Tileset
adds to the CreditSystem
. If the copyright
has multiple parts separate by semicolons, these are treated as separate credits.CreditSystem::getCreditsToShowThisFrame
are now sorted based on the number of occurrences, with the most common credits first.Tileset
and RasterOverlay
credits can now be shown on the screen, rather than in a separate credit popup.FeatureTexturePropertyView::getSwizzle
method.IsMetadataArray
template to check if a type is a MetadataArrayView
.rendererOptions
property to RasterOverlayOptions
to pass arbitrary data to prepareRasterInLoadThread
.Uri::escape
.Promise::resolve()
.EXT_feature_metadata
feature tables.CesiumUtility::Math
to use PascalCase instead of SCREAMING_SNAKE_CASE.CESIUM_RTC
and KHR_texture_basisu
glTF extensions.TilesetOptions
and RasterOverlayOptions
each 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.ImageCesium
class nows convey which GPU pixel compression format (if any) is used. This informs what to expect in the image's pixel buffer.ImageCesium
class 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 in ImageCesium::mipPositions
.file:
URLs.IAssetAccessor::requestAsset
to get
.IAssetAccessor::post
to request
and added a new parameter in the second position to specify the HTTP verb to use.Token
in CesiumIonClient
has been updated to match Cesium ion's v2 REST API endpoint, so several fields have been renamed. The tokens
method also now returns future that resolves to a TokenList
instead of a plain vector of Token
instances.GltfReader::readModel
, ModelReaderResult
, and ReadModelOptions
to GltfReader::readGltf
, GltfReaderResult
, and GltfReaderOptions
respectively.writeModelAsEmbeddedBytes
, writeModelAndExternalFiles
, WriteModelResult
, WriteModelOptions
, and WriteGLTFCallback
. Use GltfWriter::writeGltf
, GltfWriter::writeGlb
, GltfWriterResult
, and GltfWriterOptions
instead.TilesetWriterOptions
for serializing tileset JSON.GltfWriter
and GltfReader
:
TilesetWriter
and TilesetReader
:
SubtreeWriter
and SubtreeReader
for serializing and deserializing the subtree format in 3DTILES_implicit_tiling.SchemaWriter
and SchemaReader
for serializing and deserializing schemas in EXT_mesh_features and 3DTILES_metadata.hasExtension
to ExtensibleObject
.CESIUM_TESTS_ENABLED
option to the build system.Connection
in CesiumIonClient
:tokens
method now uses the v2 service endpoint and allows a number of options to be specified.token
method to allow details of a single token to be retrieved.nextPage
and previousPage
methods to allow paging through tokens.modifyToken
method.getIdFromToken
method to obtain a token ID from a given token value.loadErrorCallback
to TilesetOptions
and RasterOverlayOptions
. This callback is invoked when the Tileset
or RasterOverlay
encounter a load error, allowing the error to be handled by application code.IntrusivePointer<T>
to be converted to IntrusivePointer<U>
if U is a base class of T.notifyTileDoneLoading
was not called when encountering Ion responses that can't be parsed.SharedFuture
from returning a Future
itself.computeDistanceSquaredToPosition
in BoundingSphere
.CesiumGltfReader
project now uses the CesiumGltfReader
namespace instead of the CesiumGltf
namespace.CesiumGltfWriter
project now uses the CesiumGltfWriter
namespace instead of the CesiumGltf
namespace.Cesium3DTilesReader
project now uses the Cesium3DTilesReader
namespace instead of the Cesium3DTiles
namespace.Cesium3DTilesWriter
library.QuadtreeRasterOverlayTileProvider
that 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.QuadtreeRasterOverlayTileProvider::computeLevelFromGeometricError
has been removed. computeLevelFromTargetScreenPixels
may be useful as a replacement.RasterOverlayTileProvider
now requires a coverage rectangle.RasterOverlayTileProvider::getTile
now takes a targetScreenPixels
instead of a targetGeometricError
.RasterMappedTo3DTile
now requires a texture coordinate index.RasterOverlayTile
now takes a targetScreenPixels
instead of a targetGeometricError
. And the corresponding getTargetGeometricError
has been removed.TileContentLoadResult::rasterOverlayProjections
. This field is now found in the overlayDetails
.obtainGlobeRectangle
from TileUtilities.h
. Use estimateGlobeRectangle
in BoundingVolume.h
instead.glm
library:GLM_FORCE_XYZW_ONLY
GLM_FORCE_EXPLICIT_CTOR
GLM_FORCE_SIZE_T_LENGTH
RasterOverlay
can now be configured with a maximumScreenSpaceError
independent of the screen-space error used for the geometry.RasterOverlay::loadTileProvider
now returns a SharedFuture
, making it easy to attach a continuation to run when the load completes.GltfContent::applyRtcCenter
and applyGltfUpAxisTransform
.DebugColorizeTilesRasterOverlay
.BoundingRegionBuilder
to CesiumGeospatial
.GlobeRectangle::EMPTY
static field and GlobeRectangle::isEmpty
method.GlobeRectangle
after construction.GlobeRectangle::computeCenter
and GlobeRectangle::contains
.BufferView::target
now defaults to std::nullopt
instead of Target::ARRAY_BUFFER
.ClassProperty::type
now defaults to Type::INT8
instead of empty string.ClassProperty::componentType
is now an optional string instead of a JsonValue
.FeatureTexture::classProperty
is no longer optional, consistent with changes to the extension spec.Image::mimeType
now defaults to empty string instead of MimeType::image_jpeg
.Sampler::magFilter
and Sampler::minFilter
now default to std::nullopt
instead of MagFilter::NEAREST
.ExtensibleObject
in the CesiumGltf
library and namespace has been removed. Use the one in the CesiumUtility
library and namespace instead.KHR_draco_mesh_compression
-> ExtensionKhrDracoMeshCompression
.MeshPrimitiveEXT_feature_metadata
-> ExtensionMeshPrimitiveExtFeatureMetadata
ModelEXT_feature_metadata
-> ExtensionModelExtFeatureMetadata
CesiumGltf::ReaderContext
has been removed. It has been replaced with either CesiumJsonReader::ExtensionReaderContext
or GltfReader
.Cesium3DTiles
and Cesium3DTilesReader
libraries. They are useful for reading and working with 3D Tiles tilesets.file://
URLs, so the bug prevented loading from such URLs in some environments.generate-classes
deals 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.Future
, which allows them to be asynchronous and make further network requests.RTC_CENTER
semantic 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.QuadtreeRasterOverlayTileProvider
were not collected and reported.Cesium3DTiles
namespace and library to Cesium3DTilesSelection
.Cesium3DTilesSelection::Gltf
and moved functionality into CesiumGltf::Model
.Rectangle::intersect
and GlobeRectangle::intersect
to computeIntersection
.RasterOverlay
and derived classes now require a name
parameter to their constructors.uint32_t
to int32_t
.RasterOverlayTileProvider
is 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 from RasterOverlayTileProvider
should now derive from QuadtreeRasterOverlayTileProvider
and implement loadQuadtreeTileImage
instead of loadTileImage
.TilesetOptions::enableWaterMask
, which didn't have any effect anyway. TilesetContentOptions::enableWaterMask
still exists and works.Future<T>::isReady
.Future<T>::share
, which returns a SharedFuture<T>
and allows multiple continuations to be attached.TilesetOptions::ContentOptions
to generate smooth normals when the original glTFs were missing normals.ImageManipulation
class to CesiumGltfReader
.Math::roundUp
and Math::roundDown
.Rectangle::computeUnion
.normalTextureInfo
rather than normalTexture
.TileMapServiceRasterOverlay
that caused it to show only the lowest resolution tiles if missing a tilemapresource.xml
file.Future<T>::wait
now returns the resolved value and throws if the Future rejected, rather than returning a std::variant
and slicing the exception to std::exception
.Tileset::updateView
and Tileset::updateViewOffline
now take std::vector<ViewState>
instead of a single ViewState
.EXT_feature_metadata
glTF extension.EXT_feature_metadata
extension.CESIUM_COVERAGE_ENABLED
option to the build system.AsyncSystem::dispatchOneMainThreadTask
to dispatch a single task, rather than all the tasks that are waiting.AsyncSystem::createPromise
to create a Promise directly, rather than via a callback as in AsyncSystem::createFuture
.AsyncSystem::catchImmediately
to catch a Future rejection immediately in any thread.AsyncSystem::all
to create a Future that resolves when a list of Futures resolve.Tileset
selection algorithm..then
functions from being used on a Future<void>
when CESIUM_TRACING_ENABLED was ON.TilesetExternals
now has an AsyncSystem
instead of a shared pointer to an ITaskProcessor
.CESIUM_TRACE_*
macros.Future<T>::thenImmediately
.AsyncSystem::createThreadPool
and Future<T>::thenInThreadPool
.Future<T>::thenInWorkerThread
and Future<T>::thenInMainThread
now arrange for their continuations to be executed immediately when the Future is resolved, if the Future is resolved in the correct thread.Cesium3DTiles::TileIdUtilities
with a createTileIdString
function to create logging/debugging strings for TileID
objects.PRIVATE_CESIUM_SQLITE
, to rename all sqlite3*
symbols to cesium_sqlite3*
.createAccessorView
now creates an (invalid) AccessorView
with a standard numeric type on error, rather than creating AccessorView<nullptr_t>
. This makes it easier to use a simple lambda as the callback.HTTPLIB_USE_ZLIB_IF_AVAILABLE
and HTTPLIB_USE_OPENSSL_IF_AVAILABLE
because these libraries are not required for our use for cpp-httplib and they cause problems on some systems.RasterOverlay
.magic_enum
/ CodeCoverage.cmake
dependencies to external submodules.CesiumGltf::WriteFlags
bitmask with CesiumGltf::WriteModelOptions
struct. CesiumGltf::writeModelAsEmbeddedBytes
and CesiumGltf::writeModelAndExternalfiles
now use this struct for configuration.WriterException.h
, warnings / errors are now reported in WriteModelResult
, which is returned from CesiumGltf::writeModelAsEmbeddedBytes
and CesiumGltf::writeModelAndExternalFiles
instead.JsonValue
from the CesiumGltf
library to the CesiumUtility
library and changes some of its methods.CesiumGltf::Reader
to CesiumGltf::GltfReader
.readModel
and readImage
methods on GltfReader
instance methods instead of static methods.CesiumGltfWriter
library.CesiumJsonReader
library.CesiumIonClient::Connection
.Axis
enum and AxisTransforms
class for coordinate system transformsgltfUpVector
string property in the asset
part of tilesets. The up vector is read and passed as an Axis
in the extras["gltfUpVector"]
property, so that receivers may rotate the glTF model's up-vector to match the Z-up convention of 3D Tiles.JsonValue
. Previously, they were ignored.GltReader::registerExtension
.GltfReader::setExtensionState
, which can be used to request that an extension not be deserialized or that it be deserialized as a JsonValue
even though a statically-typed class is available for the extension.metallicFactor
of 0.0 and a roughnessFactor
of 1.0. Previously the default glTF material was used, which has a metallicFactor
of 1.0, leading to an undesirable appearance.BingMapsRasterOverlay
purposely requests that the Bing servers return a zero-length image for non-existent tiles.