Page MenuHome

Enabling "Steroscopy" in the viewport camera causes graphical glitches with anti-aliasing enabled.
Confirmed, NormalPublicBUG

Description

System Information:
Operating system: Linux-5.4.0-7626-generic-x86_64-with-debian-bullseye-sid 64 Bits
Graphics card: GeForce GTX 1050 Ti 440.82

Blender Version:
Broken: 2.83 ff7a30d92884 (2020-05-18 23:31), 2.90 7bd07c9f5adf (2020-05-18 23:33)
Worked: 2.82a

Short description of error:
This isn't a new issue, it just seems it was missed during rB365e9cb6aa86. This task was created as an extension of T74243 because T74243 was closed. I will mark this report as Linux only unless people on Windows or Mac OS can replicate it.

Edit: This may also be related: rB5593efec01c2

Exact steps for others to reproduce the error:

  1. Open Blender with default settings and a default startup scene.
  2. Change to "Active Camera" view (Numberpad 0).
  3. In the properties editor select the "Output" tab and enable "Stereoscopy".
  4. Now the viewport should have the glitch shown in the above screenshot. If you then go to user preferences and in the "viewport" section change the anti-aliasing method to "none" or "single pass" the issue goes away. All other anti-aliasing settings have the issue.

Note 1: This issue only occurs in solid mode. The issue also seems to disappear if you change to "Material Preview" or "EEVEE rendered" mode at anytime while having that Blender instance open. E.G. Open Blender, switch to "Material Preview" mode, switch back to "Solid" mode then enable "Stereoscopy" and go the the active camera. Now the issue won't occur. Load factory defaults, enable "Stereoscopy", switch to active camera, the issue won't occur. I have to close Blender and re-open it to get the issue to occur again.

Note 2: I have tested to ensure the issue described in T74243 hasn't returned. So far I'm only seeing the issue with stereoscopy. The issues with weight paint and wireframes hasn't returned as far as I can tell.

Event Timeline

Alaska (Alaska) added a comment.EditedTue, May 19, 7:34 AM

@Clément Foucault (fclem) I have assigned you to this task as you worked on the fix for the other issue. Sorry if this task should be assigned to someone else.

Looks like it may end up like T74243. A Nvidia only, Linux only issue. Will need more investigation to confirm this.

Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Confirmed.Tue, May 19, 10:27 AM
Philipp Oeser (lichtwerk) changed the subtype of this task from "Report" to "Bug".

I can confirm actually

System Information
Operating system: Linux-5.5.13-200.fc31.x86_64-x86_64-with-fedora-31-Thirty_One 64 Bits
Graphics card: GeForce GTX 970M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 440.64
version: 2.90 (sub 2), branch: master, commit date: 2020-05-19 03:31, hash: rB1151bcd53d1d

@Clément Foucault (fclem) @Jeroen Bakker (jbakker) I can reproduce this on Linux btw using GeForce GTX 1080/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 440.44.

@Alaska (Alaska) for the record, refrain from tagging your own report as 2.83. The tag means the issue is planned to be tackled by 2.83, not that it happens in 2.83. But for now leave it as it is, since I hope this can be fixed for 2.83.

@Alaska (Alaska) for the record, refrain from tagging your own report as 2.83. The tag means the issue is planned to be tackled by 2.83, not that it happens in 2.83.

I will keep that in mind for future reports.

@Clément Foucault (fclem): Probably again something along the lines of the following?

1
2
3diff --git a/source/blender/draw/engines/overlay/overlay_extra.c b/source/blender/draw/engines/overlay/overlay_extra.c
4index af54e524445..0143c07e697 100644
5--- a/source/blender/draw/engines/overlay/overlay_extra.c
6+++ b/source/blender/draw/engines/overlay/overlay_extra.c
7@@ -1140,6 +1140,12 @@ void OVERLAY_camera_cache_populate(OVERLAY_Data *vedata, Object *ob)
8 const bool look_through = (is_active && (rv3d->persp == RV3D_CAMOB));
9
10 const bool is_multiview = (scene->r.scemode & R_MULTIVIEW) != 0;
11+
12+ /* this works, but of course this doesnt really detect the CHANGE / UPDATE! */
13+ if (is_multiview) {
14+ rv3d->rflag |= RV3D_GPULIGHT_UPDATE;
15+ }
16+
17 const bool is_stereo3d_view = (scene->r.views_format == SCE_VIEWS_FORMAT_STEREO_3D);
18 const bool is_stereo3d_display_extra = is_active && is_multiview && (!look_through) &&
19 ((v3d->stereo3d_flag) != 0);
20diff --git a/source/blender/draw/engines/workbench/workbench_data.c b/source/blender/draw/engines/workbench/workbench_data.c
21index 7b08e97ac31..891c6383ca6 100644
22--- a/source/blender/draw/engines/workbench/workbench_data.c
23+++ b/source/blender/draw/engines/workbench/workbench_data.c
24@@ -188,6 +188,14 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd)
25 draw_ctx->object_edit, draw_ctx->obact, draw_ctx->object_mode);
26
27 wpd->preferences = &U;
28+
29+ /* Tried this, but apparently wpd->scene is not ensure to be valid here? */
30+ const bool wpd_multiview = wpd->scene ? (wpd->scene->r.scemode & R_MULTIVIEW) != 0 : false;
31+ const bool scene_multiview = (scene->r.scemode & R_MULTIVIEW) != 0;
32+ if (wpd_multiview != scene_multiview) {
33+ wpd->view_updated = true;
34+ }
35+
36 wpd->scene = scene;
37 wpd->sh_cfg = draw_ctx->sh_cfg;
38

I can confirm this also happens on Windows. I get a red/cyan checkerboard pattern in the upper part of the screen. If there are more 3D views open, and one is in camera view, then the other viewports also get the glitch even if they are not in camera view. Switching to Material Preview and back to solid shading solves the problem.

Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: GeForce RTX 2080 with Max-Q Design/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 442.19
Broken: version: 2.90 (sub 2), branch: master, commit date: 2020-05-18 09:05, hash: rBf3edff2d7d60

Removing the Linux project as @Zsolt Stefan (zsoltst) can reproduce the issue on Windows.

I am also able to reproduce the issue where other viewports get corrupted when one is in the camera view.