Skip to content

Vector tile geometry is always drawn in the translucent pass, so opaque features do not occlude each other #13722

Description

@danielzhong

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

  1. Load two vector tilesets covering the same area, one polygons and one polylines.
  2. Style both with a fully opaque color, e.g. color('red', 1.0).
  3. Orbit the camera. The polylines remain visible through the polygons.
    ...

Sandcastle example

No response

Environment

Browser:
CesiumJS Version:
Operating System:

AI acknowledgment

  • I used AI to generate this issue report.
  • (If the above is checked) I have reviewed the AI-generated content before submitting.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions