-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
Investigate image quality degradation #3279
Comments
Just a hunch: see if disabling anisotropic filtering helps this view. I doubt it. @kring any chance you want to look at this? |
Setting allowTextureFilterAnisotropic to false had no discernible effect. |
I have looked at this, because it's very obvious in an app like ours where you can toggle between Cesium and Leaflet. Here's what I know:
|
For (1), this was because the imagery was so dark. Is this no longer a problem? Or the lesser of two evils? |
Fxaa hits tiled layers pretty hard as well, especially labels rendered onto tiles and road/stylized tiles. Mildly related to #2752. |
Also mentioned here: https://groups.google.com/d/msg/cesium-dev/6iH8YLXLEgQ/XvWuxTdFCQAJ |
Also reported here: https://groups.google.com/forum/?hl=en#!topic/cesium-dev/QTSlECbZmG8 |
I encountered this in #4304 and I later realized it's a general problem and not only GoogleEarthImageryProvider's issue (It looks much worse with Geographic Projection-'flat' in Google terminology- than with Mercator projection). When I compare the same DB in Cesium and in Google Earth- the GE version looks much better. In Cesium (with In GE (latest version): At least in my case, the main reasons for this behavior are points 3 and 4 in @kring comment:
When I change the pixel ratio to, say, 0.5 (one level above), the image looks pretty much like in Google earth, and this is preserved while zooming. I believe that this is exactly what Google Earth does, too. I found this when I implemented KML Region for cesium, by sniffing the network output and checking the tile's rectangle dimensions when the appropriate request is sent. (you can read about GE tiling scheme and how to compute tile's rectangle here). This has some impact on performances, impact that directly related to the ratio value, because more textures are rendered. But for my case this is the best solution and the impact is reasonable. Of course, this is good only for Imagery, not for rasterized vector, because labels and other vector data would look much smaller than they have to. So we have to let the user choose if to apply such effect. I think the best way to achieve this is to implement the
From reading I think that for most of the users, |
@duvifn your analysis all sounds correct for me. One thing I'd suggest is that you use a I'd definitely support adding a separate max SSE value for imagery. You're right that Cesium can now support any number of imagery tiles attached to a terrain tile, so the major roadblock in that comment no longer applies. I think a property called Ideally selection of imagery level would be decoupled from selection of terrain level. Currently we compute the appropriate imagery level for a given terrain tile and use that level for all imagery in that tile from then on. But that ignores the fact that some imagery tiles are closer to the viewer than others. It would be nice to render a high imagery level for the part of a terrain tile close to the viewer, and a lower imagery level for the parts farther away. This is a pretty big change, though. |
Thanks @kring!
Great suggestion.
OK.
You're right but as you wrote this is a big change and I prefer not to get into it currently. |
After reading the above description, this problem seems to have not been resolved yet? |
Any ETA on the |
@laurensdijkstra I don't know that this will be a priority for us in the near future, but if you have time to submit a pull request we would be happy to review it! Thanks =) |
I'm not sure this issue is worth keeping around. The original issue is not what most of the conversation in this thread is about and FXAA support has been rewritten since the initial issue. There are two different things that were discussed. First, if you are concerned that you are not getting enough detail in the tiles be loaded (i.e. you expect a higher LOD and Cesium is loading another one, this is do to the maximum screen space error setting, which defaults to 2.0. You can instruct Cesium to load more detailed LODs sooner by lowering this value, the recommended level would be 1.5. I'm going to open a separate issue to discuss making this a new default since Cesium's terrain and imagery rendering has improved greatly since this issue was written. viewer.scene.globe.maximumScreenSpaceError = 1.5; The second issue is fxaa being applied to imagery layers which causes "fuzziness" in imagery, especially imagery with crisp labels. This can be fixed by disabling FXAA: viewer.scene.postProcessStages.fxaa.enabled = false; In the long term, we want to make sure FXAA does not get applied to imagery and some other object types (labels) so I'll find or write up a specific issue for that. If anyone still has questions or a different problem, please let us know; but I think keeping this issue open as-is a point of confusion. |
Congratulations on closing the issue! I found these Cesium forum links in the comments above: https://groups.google.com/forum/#!topic/cesium-dev/xWcXPYkh3c8 If this issue affects any of these threads, please post a comment like the following:
|
|
Does all of this apply only in 3D mode? We are having similar problems with the latest release in 2D mode |
by making Cesium fetch higher resolution tiles more aggressively as suggested in CesiumGS/cesium#3279 (comment)
by making Cesium fetch higher resolution tiles more aggressively as suggested in CesiumGS/cesium#3279 (comment)
by making Cesium fetch higher resolution tiles more aggressively as suggested in CesiumGS/cesium#3279 (comment)
Reported on the forum
Check out the below image. You'll notice the Cesium version is washed out and slightly blurry compared to the same image in Bing Maps (click it for full resolution). At some point in the rendering pipeline (texture filtering, AA, lighting, etc..) Cesium processing is reducing imagery quality.
I looked at the source files in the network debugger and confirmed that both engines are using the same exact imagery and the rendered Bing map version is identical to the source (since it's just doing img elements like traditional webmaps). This means that Cesium is definitely the culprit here.
The text was updated successfully, but these errors were encountered: