Skip to content

fix(ColumnLayer): closed shapes with binary data and transition props#10094

Open
charlieforward9 wants to merge 3 commits intovisgl:masterfrom
NEW-HEAT:fix/column-geometry
Open

fix(ColumnLayer): closed shapes with binary data and transition props#10094
charlieforward9 wants to merge 3 commits intovisgl:masterfrom
NEW-HEAT:fix/column-geometry

Conversation

@charlieforward9
Copy link
Copy Markdown
Collaborator

@charlieforward9 charlieforward9 commented Mar 12, 2026

Closes #9463 , #10021

Background

When using ColumnLayer with binary data attributes, column shapes render with missing faces — one or more sides of each column appear open/incomplete.

The root cause is an index buffer leak between the wireframe and fill models. ColumnLayer uses geometry indices for wireframe rendering (line-list). When model state is rebuilt (e.g. due to data changes or HMR), the wireframe index buffer can get reattached to the fill model's vertex array. Since the fill geometry uses triangle-strip topology without indices, this causes incorrect rendering and broken shapes.

The fix calls _disableFillIndexBuffer() at the top of draw() every frame to ensure the fill model never uses wireframe indices. The method is extracted as a protected helper so HexagonCellLayer (which had an inline copy of the same workaround) can share it.

A regression test is included in test/modules/layers/column-layer.spec.ts that simulates the leak and asserts draw() clears it.

Change List

  • modules/layers/src/column-layer/column-layer.ts — call _disableFillIndexBuffer() in draw() before rendering fill geometry; extract as protected method
  • modules/aggregation-layers/src/hexagon-layer/hexagon-cell-layer.ts — use the shared _disableFillIndexBuffer() method
  • test/modules/layers/column-layer.spec.ts — regression test for the index buffer leak

Render Test Golden Image

A render test case for this fix (column-lnglat-binary-extruded) should be added once the vitest render test migration lands. @chrisgervang — can you help wire up the golden image capture when that's ready?

@charlieforward9 charlieforward9 linked an issue Mar 12, 2026 that may be closed by this pull request
7 tasks
@coveralls
Copy link
Copy Markdown

coveralls commented Mar 12, 2026

Coverage Status

coverage: 91.009% (+0.001%) from 91.008%
when pulling 0a6258c on NEW-HEAT:fix/column-geometry
into e6c96ca on visgl:master.

@charlieforward9 charlieforward9 changed the title fix(ColumnLayer): closed shapes with binary data fix(ColumnLayer): closed shapes with binary data and transition props Mar 13, 2026
@charlieforward9 charlieforward9 linked an issue Mar 13, 2026 that may be closed by this pull request
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] ColumnLayer with binary data: shapes are not closed [Bug] ColumnLayer.transition.getFillColor

3 participants