-
-
Notifications
You must be signed in to change notification settings - Fork 841
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New DSO marker colour problems #3302
Comments
I don't reproduce. The second screenshot looks as if the red markers are duplicated with white color. |
Yes, I also see that. But how can this happen? Any driver settings you can think of? |
I can't see the issue on macOS. Would you share DSO color settings? |
Did some more testing. |
Does "fresh install" mean that you wipe your settings on uninstalling, so the subsequent install is clean?
Could you uncheck all irrelevant items in the View/DSO dialog, and filter out by type irrelevant objects? I still suspect that somehow you have duplicated data somewhere, maybe turning off some of these items would make it clearer which ones look white. Also, please attach Stellarium log file. |
Yes, wiped all. I only made a backup (saved in different location) of my Observing List but did not import that yet.
I unchecked all and then only checked PGC. These are then in the washed out red and yellow colours. I also did a complete uninstall and then searched for any leftover data on my drives and also in the Registry but nothing showed up, there is no left over data. Attached the log file. |
Just in case, here also a log with OpenGL diagnostics. |
@10110111 any news? |
Until I can reproduce it, there won't be any news. Currently I can't. |
I can reproduce the issue partially in Windows |
What do you mean by partially? |
From your JPEG I can't tell the exact color due to color ringing artifacts. Screenshots should use lossless compression to be most useful, e.g. PNG. |
So, the object you chose is |
Is the slight color mismatch between color button and galaxy marker due to your translation of the latter to a linear color space? |
Nothing is being translated to linear color space, we haven't merged any related change. The buttons are just rendered as tinted gradients instead of the exact flat colors that they should have. It's a UX problem that should be fixed, but it's unrelated to the current marker issue. |
Hmm... in this case the issue in |
Why? What exactly is the issue? In the screenshot everything looks OK. |
Maybe there are tweaks to how the color button can be rendered. Something without pseudo-3D effect or gradient. But this is indeed a different (and purely cosmetic) issue from this one. |
HI I did test some more including zooming in on screenshots in Photoshop and like mentioned before, it looks like there is some kind of white "ghost" over or under the DSO marker, giving it a washed out look. |
Yes, the problem is that no one of the developers can reproduce it on their machines to be able to debug. |
If there is anything I can do other then the earlier provided log, just let me know? I'm no coder whatsoever but I can work with instructions. |
Thought I mentioned this but did see I didn't. Maybe it helps? When un-checking the Labels and Markers checkbox, there is an animated effect where all the markers slowly disappear. |
Hello @Menno5! Please check the fresh version (development snapshot) of Stellarium: |
Hi Alex Installed and all set to default settings. Did check again if any other colors are effected as well but that's still not the case: grid lines, celestial sphere, cardinal points, etc. are the colors they are suppose to be, not washed out. |
Please show screenshots |
OK I've been able to reproduce this, but apparently, it only happens on NVIDIA GPUs with multisampling disabled. Doesn't happen on Intel UHD Graphics 620 regardless of multisampling setting, and doesn't happen on NVIDIA with multisampling enabled. Also, if I enable Proportional hints option, I can see an interesting structure in the enlarged ellipses: looks like the line segments that it's made of have pale-colored ends, while the bulk is correctly colored. See the screenshot below. |
Also reproduces on Intel with Not sure how exactly we should fix this. On the one hand, it's the first time we stumbled upon this problem, so disabling line smoothing (in the legacy, non-multisampling way) for strips and loops doesn't seem like a good idea. But OTOH, it seems too ad hoc to localize this logic in Nebula's renderers (ellipse is not the only primitive with this problem). What do you think? |
Hello @Menno5! OK, developers can reproduce the issue. Thanks for the report! |
Smooth via shaders? |
No, it's not feasible in principle, the result would be similarly bad as |
Good to see there is an idea now :) Another thing I noticed just now: when the option Use outlines for big deep-sky objects is enabled, a bunch of galaxies are then suddenly the right red color. Looks to be random though: as soon as I move the FOV with my mouse, the red color jumps to another bunch of galaxies. When zooming in or out, also whole patches appear or disappear. See screenshots below. |
NVIDIA Control Panel is not something expected by Stellarium. Whether multisampling is enabled in Stellarium's settings influences the logic to enable or disable legacy line smoothing. The setting is in |
I see. Is it correct that multisampling isn't there by default? I had to add it manually and give it the 8 value. |
OK, my analysis appears to have been incomplete. The actual culprit is not the legacy rendering itself, since it would create only a minor ripple. The problem is that blending mode appears to be Now, can anyone explain why this blending mode is needed there? |
Yes, I wouldn't be surprised. |
Just in case, here my results. |
Apparently, the problematic part that sets blending mode is not in NebulaMgr. Still, I don't understand why that line there is needed. Anyway, below a patch that fixes this for me. If it doesn't break anything for you, I can push it. Needs to get into a new RC I think. diff --git a/src/core/modules/Nebula.cpp b/src/core/modules/Nebula.cpp
index 1611b15030..6397b5c138 100644
--- a/src/core/modules/Nebula.cpp
+++ b/src/core/modules/Nebula.cpp
@@ -750,6 +750,7 @@ void Nebula::renderDarkNebulaMarker(StelPainter& sPainter, const float x, const
const float gap = 0.15*size;
const float*const cossin = StelUtils::ComputeCosSinRhoZone((M_PIf/2)/(numPointsInArc-1),
numPointsInArc-1, 0);
+ sPainter.setBlending(false);
sPainter.setLineSmooth(true);
sPainter.setLineWidth(scale * std::clamp(2*size/35, 1.f, 2.5f));
sPainter.setColor(color, hintsBrightness);
@@ -861,6 +862,7 @@ void Nebula::renderMarkerRoundedRect(StelPainter& sPainter, const float x, const
vertexData.push_back(bottomInnerY - roundRadius*sina);
}
const auto vertCount = vertexData.size() / 2;
+ sPainter.setBlending(false);
sPainter.setLineSmooth(true);
sPainter.setLineWidth(scale * std::clamp(2*size/35, 1.f, 2.5f));
sPainter.setColor(color, hintsBrightness);
@@ -878,6 +880,7 @@ void Nebula::renderRoundMarker(StelPainter& sPainter, const float x, const float
const auto scale = pixelRatio * StelApp::getInstance().getGlobalScalingRatio();
size *= scale;
+ sPainter.setBlending(false);
sPainter.setLineSmooth(true);
sPainter.setLineWidth(scale * std::clamp(size/7, 1.f, 2.5f));
sPainter.setColor(color, hintsBrightness);
@@ -921,6 +924,7 @@ void Nebula::renderEllipticMarker(StelPainter& sPainter, const float x, const fl
vertexData.push_back(y + pointY*cosa + pointX*sina);
}
const auto vertCount = vertexData.size() / 2;
+ sPainter.setBlending(false);
sPainter.setLineSmooth(true);
sPainter.setLineWidth(scale * std::clamp(size/40, 1.f, 2.f));
sPainter.setColor(color, hintsBrightness);
@@ -940,7 +944,7 @@ void Nebula::renderMarkerPointedCircle(StelPainter& sPainter, const float x, con
texPointElement->bind();
sPainter.setColor(color, hintsBrightness);
- sPainter.setBlending(true, GL_ONE, GL_ONE);
+ sPainter.setBlending(false);
const auto numPoints = StelUtils::getSmallerPowerOfTwo(std::clamp(int(0.4f*size), 8, 4096));
const auto spriteSize = std::min(0.25f * 2*M_PIf*size / numPoints, 5.f);
if(insideRect) |
What happens during toggling nebulae now? Is the blending smooth? |
Yes, should work too. Didn't think of toggling animation. |
I'd also remove the call in NebulaMgr. So, the patch: diff --git a/src/core/modules/Nebula.cpp b/src/core/modules/Nebula.cpp
index 1611b15030..661f14b1ef 100644
--- a/src/core/modules/Nebula.cpp
+++ b/src/core/modules/Nebula.cpp
@@ -750,6 +750,7 @@ void Nebula::renderDarkNebulaMarker(StelPainter& sPainter, const float x, const
const float gap = 0.15*size;
const float*const cossin = StelUtils::ComputeCosSinRhoZone((M_PIf/2)/(numPointsInArc-1),
numPointsInArc-1, 0);
+ sPainter.setBlending(true);
sPainter.setLineSmooth(true);
sPainter.setLineWidth(scale * std::clamp(2*size/35, 1.f, 2.5f));
sPainter.setColor(color, hintsBrightness);
@@ -861,6 +862,7 @@ void Nebula::renderMarkerRoundedRect(StelPainter& sPainter, const float x, const
vertexData.push_back(bottomInnerY - roundRadius*sina);
}
const auto vertCount = vertexData.size() / 2;
+ sPainter.setBlending(true);
sPainter.setLineSmooth(true);
sPainter.setLineWidth(scale * std::clamp(2*size/35, 1.f, 2.5f));
sPainter.setColor(color, hintsBrightness);
@@ -878,6 +880,7 @@ void Nebula::renderRoundMarker(StelPainter& sPainter, const float x, const float
const auto scale = pixelRatio * StelApp::getInstance().getGlobalScalingRatio();
size *= scale;
+ sPainter.setBlending(true);
sPainter.setLineSmooth(true);
sPainter.setLineWidth(scale * std::clamp(size/7, 1.f, 2.5f));
sPainter.setColor(color, hintsBrightness);
@@ -921,6 +924,7 @@ void Nebula::renderEllipticMarker(StelPainter& sPainter, const float x, const fl
vertexData.push_back(y + pointY*cosa + pointX*sina);
}
const auto vertCount = vertexData.size() / 2;
+ sPainter.setBlending(true);
sPainter.setLineSmooth(true);
sPainter.setLineWidth(scale * std::clamp(size/40, 1.f, 2.f));
sPainter.setColor(color, hintsBrightness);
@@ -940,7 +944,7 @@ void Nebula::renderMarkerPointedCircle(StelPainter& sPainter, const float x, con
texPointElement->bind();
sPainter.setColor(color, hintsBrightness);
- sPainter.setBlending(true, GL_ONE, GL_ONE);
+ sPainter.setBlending(true);
const auto numPoints = StelUtils::getSmallerPowerOfTwo(std::clamp(int(0.4f*size), 8, 4096));
const auto spriteSize = std::min(0.25f * 2*M_PIf*size / numPoints, 5.f);
if(insideRect)
diff --git a/src/core/modules/NebulaMgr.cpp b/src/core/modules/NebulaMgr.cpp
index 508f7b1303..28eeab810c 100644
--- a/src/core/modules/NebulaMgr.cpp
+++ b/src/core/modules/NebulaMgr.cpp
@@ -698,8 +698,6 @@ void NebulaMgr::draw(StelCore* core)
Nebula::hintsBrightness = hintsFader.getInterstate()*flagShow.getInterstate();
- sPainter.setBlending(true, GL_ONE, GL_ONE);
-
// Use a 4 degree margin (esp. for wide outlines)
const float margin = 4.f*M_PI_180f*prj->getPixelPerRadAtCenter();
const SphericalRegionP& p = prj->getViewportConvexPolygon(margin, margin); |
I fear the current properties for blending are existing by historical reasons :-/ P.S. No problem for make the RC4 tonight or tomorrow, but need fix in master |
Hello @Menno5! Please check the fresh version (development snapshot) of Stellarium: |
You all are the best! Working great! |
Hello @Menno5! Please check the latest stable version of Stellarium: |
Expected Behaviour
Clear distinctive color differences in default DSO marker colours like in V 23.1.
Actual Behaviour
Washed out, harder to see difference in default DSO marker colours in V 23.2.
In the DSO colour settings of V 23.2, the colour of galaxies is set to the same Red as in V 23.1. But onscreen in V 23.2 this is now a kind of soft red with what looks like a white overlay or background line.
The same goes for example for the blue of interacting galaxies: in V 23.1 a distinctive blue, in V 23.2 a washed out blue that is very hard to see. Setting this to "hard blue" gives a kind of purple colour.
So it's very hard to set colours in V 23.2 because the colour settings do not result in the same colours onscreen for the DSO markers.
See screenshot.
On top are the default colours of DSO markers of a clean install of V 23.1.
Below that the default colours of DSO markers of a clean install of V 23.2.
System
The text was updated successfully, but these errors were encountered: