-
Notifications
You must be signed in to change notification settings - Fork 296
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
Add dynamic screen space error #798
base: ue4-main
Are you sure you want to change the base?
Conversation
Thanks for the pull request @baothientran!
Reviewers, don't forget to make sure that:
|
@baothientran this is really interesting! The reduction in tiles for horizon views near the ground is quite impressive. And in some cases it actually does a better job of preserving detail. For example, here's a horizon view with dynamic SSE enabled and default settings. Notice the small peak at the horizon near the middle-right of the screen. Now here's the same scene with dynamic SSE disabled: Huh.. where'd the peak go? Apparently, it got fog culled. Not great. But even less great is that second screenshot with the missing peak rendered 145 tiles, while your improved algorithm only rendered 81. That's very impressive. Here's a zoomed out view showing which tiles were selected, with dynamic SSE (81 tiles rendered): And with the original, non-dynamic algorithm (145 tiles rendered): The new algorithm is switching to bigger, less detailed tiles much more aggressively, but it also is pushing the horizon out much further. Of course, if you look closely, you can see the loss of detail at medium zoom distances. It's more obvious in the above gif because Bing has an imagery discontinuity here. Also, because the dynamic SSE is only activated when the camera descends below a certain height, it's possible to observe weird discontinuities where moving the camera downward (and thus closer to the globe) causes the globe to become less detailed: So I think this is super promising, but we need to be a bit more rigorous about it. Especially considering that there are so many user-tweakable settings here. It's going to be very hard to explain to users how to set them, and settings that work great in one part of the globe may work very poorly in others. Perhaps we need some basic knowledge of terrain heights over the globe so that we can use that as an input to the algorithm? CesiumJS does similar things elsewhere (but not for tile selection, AFAIK). |
yeah I agree we should have a better way to estimate those settings automatically, so that it works reliably for the whole earth and make it easier for user. I will check on CesiumJS to see if we can calculate the estimation |
The number of settings/parameters depends on the exact approach that is implemented. The computation right now is implemented as
where indeed quite a few paramters come into play. Regardless of the implementation, it all boils down to a single bit being
Usually (but not necessarily!) this is based on comparing the SSE with the "maximum SSE". So the default implementation of the
with Back when I opened CesiumGS/cesium-native#342 , I actually played around with one implementation like that, using Some screenshots are attached. The fist one (scene This this had really just been very basic experiments, because there was no explicit "goal" here. The question about the "goal" could be:
|
This accommodates CesiumGS/cesium-native#466