Methods
(static) compressVertices(geometry) → {Geometry}
Compresses and packs geometry normal attribute values to save memory.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
Geometry | The geometry to modify. |
- Source:
Returns:
The modified
geometry
argument, with its normals compressed and packed.
- Type
- Geometry
Example
geometry = Cesium.GeometryPipeline.compressVertices(geometry);
(static) computeBinormalAndTangent(geometry) → {Geometry}
Computes per-vertex binormals and tangents for a geometry containing
TRIANGLES
.
The result is new binormal
and tangent
attributes added to the geometry.
This assumes a counter-clockwise winding order.
Based on Computing Tangent Space Basis Vectors for an Arbitrary Mesh by Eric Lengyel.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
Geometry | The geometry to modify. |
- Source:
Throws:
-
-
geometry.indices length must be greater than 0 and be a multiple of 3.
- Type
- DeveloperError
-
-
-
geometry.primitiveType must be
PrimitiveType.TRIANGLES
. - Type
- DeveloperError
-
Returns:
The modified
geometry
argument with the computed binormal
and tangent
attributes.
- Type
- Geometry
Example
Cesium.GeometryPipeline.computeBinormalAndTangent(geometry);
(static) computeNormal(geometry) → {Geometry}
Computes per-vertex normals for a geometry containing
TRIANGLES
by averaging the normals of
all triangles incident to the vertex. The result is a new normal
attribute added to the geometry.
This assumes a counter-clockwise winding order.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
Geometry | The geometry to modify. |
- Source:
Throws:
-
-
geometry.indices length must be greater than 0 and be a multiple of 3.
- Type
- DeveloperError
-
-
-
geometry.primitiveType must be
PrimitiveType.TRIANGLES
. - Type
- DeveloperError
-
Returns:
The modified
geometry
argument with the computed normal
attribute.
- Type
- Geometry
Example
Cesium.GeometryPipeline.computeNormal(geometry);
(static) createAttributeLocations(geometry) → {Object}
Creates an object that maps attribute names to unique locations (indices)
for matching vertex attributes and shader programs.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
Geometry | The geometry, which is not modified, to create the object for. |
- Source:
Returns:
An object with attribute name / index pairs.
- Type
- Object
Example
var attributeLocations = Cesium.GeometryPipeline.createAttributeLocations(geometry);
// Example output
// {
// 'position' : 0,
// 'normal' : 1
// }
(static) createLineSegmentsForVectors(geometry, attributeNameopt, lengthopt) → {Geometry}
Creates a new
Geometry
with LINES
representing the provided
attribute (attributeName
) for the provided geometry. This is used to
visualize vector attributes like normals, binormals, and tangents.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
geometry |
Geometry | The Geometry instance with the attribute. |
||
attributeName |
String |
<optional> |
'normal' | The name of the attribute. |
length |
Number |
<optional> |
10000.0 | The length of each line segment in meters. This can be negative to point the vector in the opposite direction. |
- Source:
Throws:
-
geometry.attributes must have an attribute with the same name as the attributeName parameter.
- Type
- DeveloperError
Returns:
A new
Geometry
instance with line segments for the vector.
- Type
- Geometry
Example
var geometry = Cesium.GeometryPipeline.createLineSegmentsForVectors(instance.geometry, 'binormal', 100000.0);
(static) encodeAttribute(geometry, attributeName, attributeHighName, attributeLowName) → {Geometry}
Encodes floating-point geometry attribute values as two separate attributes to improve
rendering precision.
This is commonly used to create high-precision position vertex attributes.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
Geometry | The geometry to modify. |
attributeName |
String | The name of the attribute. |
attributeHighName |
String | The name of the attribute for the encoded high bits. |
attributeLowName |
String | The name of the attribute for the encoded low bits. |
- Source:
Throws:
-
-
geometry must have attribute matching the attributeName argument.
- Type
- DeveloperError
-
-
-
The attribute componentDatatype must be ComponentDatatype.DOUBLE.
- Type
- DeveloperError
-
Returns:
The modified
geometry
argument, with its encoded attribute.
- Type
- Geometry
Example
geometry = Cesium.GeometryPipeline.encodeAttribute(geometry, 'position3D', 'position3DHigh', 'position3DLow');
(static) fitToUnsignedShortIndices(geometry) → {Array.<Geometry>}
Splits a geometry into multiple geometries, if necessary, to ensure that indices in the
indices
fit into unsigned shorts. This is used to meet the WebGL requirements
when unsigned int indices are not supported.
If the geometry does not have any indices
, this function has no effect.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
Geometry | The geometry to be split into multiple geometries. |
- Source:
Throws:
-
-
geometry.primitiveType must equal to PrimitiveType.TRIANGLES, PrimitiveType.LINES, or PrimitiveType.POINTS
- Type
- DeveloperError
-
-
-
All geometry attribute lists must have the same number of attributes.
- Type
- DeveloperError
-
Returns:
An array of geometries, each with indices that fit into unsigned shorts.
- Type
- Array.<Geometry>
Example
var geometries = Cesium.GeometryPipeline.fitToUnsignedShortIndices(geometry);
(static) projectTo2D(geometry, attributeName, attributeName3D, attributeName2D, projectionopt) → {Geometry}
Projects a geometry's 3D
position
attribute to 2D, replacing the position
attribute with separate position3D
and position2D
attributes.
If the geometry does not have a position
, this function has no effect.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
geometry |
Geometry | The geometry to modify. | ||
attributeName |
String | The name of the attribute. | ||
attributeName3D |
String | The name of the attribute in 3D. | ||
attributeName2D |
String | The name of the attribute in 2D. | ||
projection |
Object |
<optional> |
new GeographicProjection() | The projection to use. |
- Source:
Throws:
-
-
geometry must have attribute matching the attributeName argument.
- Type
- DeveloperError
-
-
-
The attribute componentDatatype must be ComponentDatatype.DOUBLE.
- Type
- DeveloperError
-
-
-
Could not project a point to 2D.
- Type
- DeveloperError
-
Returns:
The modified
geometry
argument with position3D
and position2D
attributes.
- Type
- Geometry
Example
geometry = Cesium.GeometryPipeline.projectTo2D(geometry, 'position', 'position3D', 'position2D');
(static) reorderForPostVertexCache(geometry, cacheCapacityopt) → {Geometry}
Reorders a geometry's
indices
to achieve better performance from the GPU's
post vertex-shader cache by using the Tipsify algorithm. If the geometry primitiveType
is not TRIANGLES
or the geometry does not have an indices
, this function has no effect.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
geometry |
Geometry | The geometry to modify. | ||
cacheCapacity |
Number |
<optional> |
24 | The number of vertices that can be held in the GPU's vertex cache. |
- Source:
- See:
-
- GeometryPipeline.reorderForPreVertexCache
- Fast Triangle Reordering for Vertex Locality and Reduced Overdraw by Sander, Nehab, and Barczak
Throws:
-
cacheCapacity must be greater than two.
- Type
- DeveloperError
Returns:
The modified
geometry
argument, with its indices reordered for the post-vertex-shader cache.
- Type
- Geometry
Example
geometry = Cesium.GeometryPipeline.reorderForPostVertexCache(geometry);
(static) reorderForPreVertexCache(geometry) → {Geometry}
Reorders a geometry's attributes and
indices
to achieve better performance from the GPU's pre-vertex-shader cache.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
Geometry | The geometry to modify. |
- Source:
- See:
-
- GeometryPipeline.reorderForPostVertexCache
Throws:
-
Each attribute array in geometry.attributes must have the same number of attributes.
- Type
- DeveloperError
Returns:
The modified
geometry
argument, with its attributes and indices reordered for the GPU's pre-vertex-shader cache.
- Type
- Geometry
Example
geometry = Cesium.GeometryPipeline.reorderForPreVertexCache(geometry);
(static) toWireframe(geometry) → {Geometry}
Converts a geometry's triangle indices to line indices. If the geometry has an
indices
and its primitiveType
is TRIANGLES
, TRIANGLE_STRIP
,
TRIANGLE_FAN
, it is converted to LINES
; otherwise, the geometry is not changed.
This is commonly used to create a wireframe geometry for visual debugging.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
Geometry | The geometry to modify. |
- Source:
Throws:
-
geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.
- Type
- DeveloperError
Returns:
The modified
geometry
argument, with its triangle indices converted to lines.
- Type
- Geometry
Example
geometry = Cesium.GeometryPipeline.toWireframe(geometry);
(static) transformToWorldCoordinates(instance) → {GeometryInstance}
Transforms a geometry instance to world coordinates. This changes
the instance's
modelMatrix
to Matrix4.IDENTITY
and transforms the
following attributes if they are present: position
, normal
,
binormal
, and tangent
.
Parameters:
Name | Type | Description |
---|---|---|
instance |
GeometryInstance | The geometry instance to modify. |
- Source:
Returns:
The modified
instance
argument, with its attributes transforms to world coordinates.
- Type
- GeometryInstance
Example
Cesium.GeometryPipeline.transformToWorldCoordinates(instance);