Skip to content

Commit a427b2a

Browse files
authored
Use RawShaderMaterial for transparent objects to improve culling (#532)
1 parent feb5954 commit a427b2a

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

packages/front/src/fragments/IfcStreamer/src/geometry-culler-renderer.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@ export class GeometryCullerRenderer extends OBC.CullerRenderer {
3434
private readonly _geometry: THREE.BufferGeometry;
3535

3636
private _material = new THREE.MeshBasicMaterial({
37-
transparent: true,
37+
transparent: false,
3838
side: 2,
3939
opacity: 1,
4040
});
4141

42+
private _materialT = new THREE.RawShaderMaterial();
43+
4244
readonly onViewUpdated = new OBC.AsyncEvent<{
4345
toLoad: { [modelID: string]: Map<number, Set<number>> };
4446
toRemove: { [modelID: string]: Set<number> };
@@ -290,9 +292,10 @@ export class GeometryCullerRenderer extends OBC.CullerRenderer {
290292
// Substitute it by fragment with same color
291293

292294
if (!geometry.fragment) {
295+
const material = frag.mesh.instanceColor?.array?.[4] !== undefined && frag.mesh.instanceColor.array[4] < 0.9 ? this._materialT : this._material;
293296
geometry.fragment = new FRAGS.Fragment(
294297
frag.mesh.geometry,
295-
this._material,
298+
material,
296299
frag.capacity,
297300
);
298301

0 commit comments

Comments
 (0)