Skip to content

Commit 8c25c54

Browse files
dakerfloryst
authored andcommitted
fix(WebGPU): Handle edge visibility for both triangles and triangle strips
fixes #3125
1 parent 345f25c commit 8c25c54

File tree

1 file changed

+42
-19
lines changed
  • Sources/Rendering/WebGPU/PolyDataMapper

1 file changed

+42
-19
lines changed

Sources/Rendering/WebGPU/PolyDataMapper/index.js

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ function vtkWebGPUPolyDataMapper(publicAPI, model) {
5252
// and they handle the rendering of that cell array
5353
const cellMappers = [];
5454
let cellOffset = 0;
55-
for (let i = PrimitiveTypes.Points; i <= PrimitiveTypes.Triangles; i++) {
55+
// Handle all primitive types including strips
56+
for (
57+
let i = PrimitiveTypes.Points;
58+
i <= PrimitiveTypes.TriangleStrips;
59+
i++
60+
) {
5661
if (prims[i].getNumberOfValues() > 0) {
5762
if (!model.primitives[i]) {
5863
model.primitives[i] = publicAPI.createCellArrayMapper();
@@ -70,26 +75,44 @@ function vtkWebGPUPolyDataMapper(publicAPI, model) {
7075
}
7176
}
7277

78+
// Handle edge visibility for both triangles and triangle strips
7379
if (model.WebGPUActor.getRenderable().getProperty().getEdgeVisibility()) {
74-
for (
75-
let i = PrimitiveTypes.TriangleEdges;
76-
i <= PrimitiveTypes.TriangleStripEdges;
77-
i++
78-
) {
79-
if (prims[i - 2].getNumberOfValues() > 0) {
80-
if (!model.primitives[i]) {
81-
model.primitives[i] = publicAPI.createCellArrayMapper();
82-
}
83-
const cellMapper = model.primitives[i];
84-
cellMapper.setCellArray(prims[i - 2]);
85-
cellMapper.setCurrentInput(poly);
86-
cellMapper.setCellOffset(model.primitives[i - 2].getCellOffset());
87-
cellMapper.setPrimitiveType(i);
88-
cellMapper.setRenderable(model.renderable);
89-
cellMappers.push(cellMapper);
90-
} else {
91-
model.primitives[i] = null;
80+
// Handle triangle edges
81+
if (prims[PrimitiveTypes.Triangles].getNumberOfValues() > 0) {
82+
const i = PrimitiveTypes.TriangleEdges;
83+
if (!model.primitives[i]) {
84+
model.primitives[i] = publicAPI.createCellArrayMapper();
9285
}
86+
const cellMapper = model.primitives[i];
87+
cellMapper.setCellArray(prims[PrimitiveTypes.Triangles]);
88+
cellMapper.setCurrentInput(poly);
89+
cellMapper.setCellOffset(
90+
model.primitives[PrimitiveTypes.Triangles].getCellOffset()
91+
);
92+
cellMapper.setPrimitiveType(i);
93+
cellMapper.setRenderable(model.renderable);
94+
cellMappers.push(cellMapper);
95+
} else {
96+
model.primitives[PrimitiveTypes.TriangleEdges] = null;
97+
}
98+
99+
// Handle triangle strip edges
100+
if (prims[PrimitiveTypes.TriangleStrips].getNumberOfValues() > 0) {
101+
const i = PrimitiveTypes.TriangleStripEdges;
102+
if (!model.primitives[i]) {
103+
model.primitives[i] = publicAPI.createCellArrayMapper();
104+
}
105+
const cellMapper = model.primitives[i];
106+
cellMapper.setCellArray(prims[PrimitiveTypes.TriangleStrips]);
107+
cellMapper.setCurrentInput(poly);
108+
cellMapper.setCellOffset(
109+
model.primitives[PrimitiveTypes.TriangleStrips].getCellOffset()
110+
);
111+
cellMapper.setPrimitiveType(i);
112+
cellMapper.setRenderable(model.renderable);
113+
cellMappers.push(cellMapper);
114+
} else {
115+
model.primitives[PrimitiveTypes.TriangleStripEdges] = null;
93116
}
94117
}
95118

0 commit comments

Comments
 (0)