What happened?
Overlapping vector tile features blend through each other instead of occluding, even when the style is fully opaque. This is visible both within a layer and between layers. For example a polygon layer and a polyline layer covering the same area, where the polylines stay visible through the polygons.
createVectorTileBuffersFromModelComponents constructs BufferPointCollection, BufferPolylineCollection, and BufferPolygonCollection without passing blendOption, so they fall back to the BlendOption.TRANSLUCENT default. The renderers map that to Pass.TRANSLUCENT, and OIT.getTranslucentRenderState forces depthMask = false, so no depth is written.
Cesium3DTileStyle alpha never reaches blendOption, so color('red', 1.0) and color('red', 0.3) take the same path.
Reproduction steps
- Load two vector tilesets covering the same area, one polygons and one polylines.
- Style both with a fully opaque color, e.g. color('red', 1.0).
- Orbit the camera. The polylines remain visible through the polygons.
...
Sandcastle example
No response
Environment
Browser:
CesiumJS Version:
Operating System:
AI acknowledgment
What happened?
Overlapping vector tile features blend through each other instead of occluding, even when the style is fully opaque. This is visible both within a layer and between layers. For example a polygon layer and a polyline layer covering the same area, where the polylines stay visible through the polygons.
createVectorTileBuffersFromModelComponentsconstructsBufferPointCollection,BufferPolylineCollection, andBufferPolygonCollectionwithout passingblendOption, so they fall back to theBlendOption.TRANSLUCENTdefault. The renderers map that toPass.TRANSLUCENT, andOIT.getTranslucentRenderStateforcesdepthMask = false, so no depth is written.Cesium3DTileStyle alpha never reaches
blendOption, so color('red', 1.0) and color('red', 0.3) take the same path.Reproduction steps
...
Sandcastle example
No response
Environment
Browser:
CesiumJS Version:
Operating System:
AI acknowledgment