emilk / egui_plot

2D plotting library in Rust for egui
Apache License 2.0
90 stars 31 forks source link

Artefacts appear when filled polygons are added to a plot #36

Open berke opened 3 months ago

berke commented 3 months ago

Filled polygons added to a plot show line-shaped artefacts under certain zooming conditions.

I have an eframe::App containing a canvas containing a Plot, where I draw filled triangles using ui.polygon.

For certain triangles and at certain zoom levels, this produces fill-colored linear artefacts.

No artefacts appear if the triangles are not filled.

To Reproduce

  1. Checkout https://github.com/berke/egui_triangle_bug
  2. Compile and run
  3. This shows a triangle having a yellow outline and a red fill. Observe red artefacts that go beyond the bounds of the triangle. If needed, adjust the zoom level.

Expected behavior There should be no artefacts.

Screenshots

Real-world case:

egui_plot_issue_1

Screenshot from simplified PoC: screenshot

Additional context

Latest egui and egui_plot

...
[dependencies.egui_plot]
version = "0.28.1"

[patch.crates-io]
egui_plot = { git = "https://github.com/emilk/egui_plot", branch = "main" }
...

x86 machine under Debian and X11 with NVIDIA driver 535.183.01, xfce4 with xfwm 4.18.0-1, no compositing

CramBL commented 2 weeks ago

I am also struggling with this issue.

I am downsampling line plots with many plot points to two plots that display the minimum values and maximum values respectively, think a signal envelope.

Then I try to fill the area between the minimum and maximum plots with polygons, to create a shaded area that signifies that it is a span, but I get these artifacts that @berke mentions too. Which makes it unusable.

berke commented 2 weeks ago

@CramBL maybe this is related to the graphics stack. What platform are you on?

CramBL commented 2 weeks ago

@CramBL maybe this is related to the graphics stack. What platform are you on?

x86 Ubuntu 22.04

6.8.0-47-generic #47~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC x86_64 GNU/Linux

Driver: Intel Nouveau

configuration: depth=32 driver=nouveau latency=0 mode=2560x1440 visual=truecolor xres=2560 yres=1440

lshw -c video:

*-display
       description: 3D controller
       product: NVIDIA Corporation
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: /dev/fb0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress cap_list rom fb
       configuration: depth=32 driver=nouveau latency=0 mode=2560x1440 visual=truecolor xres=2560 yres=1440
       resources: iomemory:600-5ff iomemory:620-61f irq:237 memory:bd000000-bdffffff memory:6000000000-61ffffffff memory:6200000000-6201ffffff ioport:3000(size=128)
  *-display
       description: VGA compatible controller
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       logical name: /dev/fb0
       version: 04
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm vga_controller bus_master cap_list rom fb
       configuration: depth=32 driver=i915 latency=0 resolution=2560,1440
       resources: iomemory:620-61f iomemory:400-3ff irq:238 memory:624c000000-624cffffff memory:4000000000-400fffffff ioport:4000(size=64) memory:c0000-dffff memory:4010000000-4016ffffff memory:4020000000-40ffffffff

This laptop: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadp/thinkpad-p16v-16-inch-intel-mobile-workstation/len101t0071

CramBL commented 2 weeks ago

Same issue (using your example repo) on x86 PopOS 22.04 with nvidia-driver-470 and on the same machine running Windows 11