Rendering artifacts on Intel HD Graphics 4600
Moderator: Queue Moderators
Rendering artifacts on Intel HD Graphics 4600
Several of our users are reporting rendering artifacts on computers with Intel HD Graphics 4600 display adapters. Here is an example SurfaceGridSeries3D where all of the values are zero. In the first screenshot (a system with an AMD display adapter), the surface looks correct, but in the second, something odd is happening with the shading.
Is this a known issue with Intel display adapters? Is there any way to programmatically detect a GPU requirement is not met before rendering to notify the user of a possible issue?- ArctionPasi
- Posts: 1367
- Joined: Tue Mar 26, 2013 10:57 pm
- Location: Finland
- Contact:
Re: Rendering artifacts on Intel HD Graphics 4600
Is your WallOnBottom.Visible = false, or is it just a white wall? If WallOnBottom is visible, and grid values are 0, it will cause Z fighting because the bottom wall and series are rendered in the same position. But if that happens, it should also happen with NVidia.
I tested with Intel HD Graphics 4000 (not 4600) and surface renders correctly when bottom wall is hidden, even when using zero values.
This is the code I used
We unfortunately don't have 4600 model here.
Can you post your code here?
I tested with Intel HD Graphics 4000 (not 4600) and surface renders correctly when bottom wall is hidden, even when using zero values.
This is the code I used
Code: Select all
LightningChartUltimate m_chart;
public MainWindow()
{
InitializeComponent();
m_chart = new LightningChartUltimate();
m_chart.BeginUpdate();
m_chart.ActiveView = ActiveView.View3D;
SurfaceGridSeries3D surface = new SurfaceGridSeries3D(m_chart.View3D, Axis3DBinding.Primary, Axis3DBinding.Primary, Axis3DBinding.Primary);
surface.SetRangesXZ(20,80,20,80);
surface.Fill = SurfaceFillStyle.Toned;
surface.ToneColor = Colors.Magenta;
surface.WireframeType = SurfaceWireframeType.None;
surface.SetSize(100,100);
m_chart.View3D.SurfaceGridSeries3D.Add(surface);
m_chart.View3D.WallOnBottom .Visible = false;
gridMain.Children.Add(m_chart);
m_chart.EndUpdate();
}
Can you post your code here?
LightningChart Support Team, PT
Re: Rendering artifacts on Intel HD Graphics 4600
Here is some additional information that might help find a possible bugfix/workaround:
- The surface data is a square grid that is zero within the circular region and values set to Double.MinValue (-1.7976931348623157E+308) in the area meant to be clipped.
- View3D.ClipContents is set to true
- WallOnBottom.Visible = false
- On the graphics cards that exhibit this rendering problem, the under-surface is actually rendered fine, just the top surface has the odd triangulated pattern.
Re: Rendering artifacts on Intel HD Graphics 4600
Also, some of our users who are seeing this rendering artifact have the HD Graphics 4000 cards. So, we are seeing it with the 4000 and 4600 models.
- ArctionPasi
- Posts: 1367
- Joined: Tue Mar 26, 2013 10:57 pm
- Location: Finland
- Contact:
Re: Rendering artifacts on Intel HD Graphics 4600
Thanks for this info.
Does the artifact disappear if setting ClipContents = false?
If it disappears, set back to True and adjust YAxisPrimary.MinValue to slightly negative value. When data exists in the axis end value, it clips.
Does the artifact disappear if setting ClipContents = false?
If it disappears, set back to True and adjust YAxisPrimary.MinValue to slightly negative value. When data exists in the axis end value, it clips.
LightningChart Support Team, PT
Re: Rendering artifacts on Intel HD Graphics 4600
We just tried and, interesting enough, changing ClipContents to false doesn't make a difference. We also get rendering artifacts for cases where the surface isn't flat. I'll also re-iterate that the under-side of the surface renders just fine.
Here are a few more screenshots. First is the top-side rendered on the Intel card. Next, you can see the bottom of the surface rendered on the same card which looks OK. Finally is a screenshot showing the top surface rendered correctly on an AMD card.
Here are a few more screenshots. First is the top-side rendered on the Intel card. Next, you can see the bottom of the surface rendered on the same card which looks OK. Finally is a screenshot showing the top surface rendered correctly on an AMD card.
- ArctionPasi
- Posts: 1367
- Joined: Tue Mar 26, 2013 10:57 pm
- Location: Finland
- Contact:
Re: Rendering artifacts on Intel HD Graphics 4600
Please post the source code of that. You can export surface series data with surface.SaveToCSV().
Or small solution preferred...
Or small solution preferred...
LightningChart Support Team, PT
Re: Rendering artifacts on Intel HD Graphics 4600
Here is a simple example project to reproduce the rendering problem.
This is a screenshot of the rendering on an Intel HD Graphics 4600 display adapter.
This is a screenshot as it looks on my AMD FirePro.
- ArctionPasi
- Posts: 1367
- Joined: Tue Mar 26, 2013 10:57 pm
- Location: Finland
- Contact:
Re: Rendering artifacts on Intel HD Graphics 4600
Thanks for the code. Use Double.NaN instead of Double.MinValue. It seems to work with Intel as well as AMD and NVidia.
Also set WireFrameType = None, otherwise you'll get strange wireframe lines around the chart.
You may want to also set ColorSaturation near 100, the prevent light computation with Double.NaNs from disturbing in the edges.
Also set WireFrameType = None, otherwise you'll get strange wireframe lines around the chart.
You may want to also set ColorSaturation near 100, the prevent light computation with Double.NaNs from disturbing in the edges.
LightningChart Support Team, PT
Re: Rendering artifacts on Intel HD Graphics 4600
The recommendation to use Double.NaN instead of Double.MinValue works for us except for the strange wireframe lines as you mentioned. On most display adapters those lines do not show up, but on the Intel HD Graphics 4000/4600 they do. Please let us know if/when you find a work-around or bug fix for the wireframe artifacts.