-
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 visual quality defaults and new API for settings #12126
Comments
Looking forward to it, Cesium needs to improve the model effect and appropriate performance balance. |
Glad to hear that @yoyomule! We're definitely looking for input from the community through this process. If you have any defaults you use in your applications feel free to share them and your use case so we can keep it in mind. |
I have created an initial sandcastle that consolidates many of the visual quality settings into one location to help with trying many different arrangements to experiment with what makes sense for defaults. I'll be updating this and using it to test various scenarios as we try to narrow in on what settings we want. |
I've been working to condense the various default settings of other 3d rendering engines for the list of settings we're looking at in CesiumJS. It's not 100% complete yet but wanted to start sharing here, may edit more in as needed. At the very least this his a helpful consolidation of links to various docs UnrealSettings
The Exponential Height Fog from the atmosphere looks like it could be really nice to increase the visuals of mountainous areas and valleys UnitySettings
"graphics tiers" in the default pipeline
BabylonJSSettings
ThreeJSSettings
ArcGIS |
Given that CesiumJS is a bit more targeted at an "end user" developer than a lower level "game engine" developer I spent a bit of time exploring the examples provided from ThreeJS and Babylon to see what actual applications generally have on for inspiration around ours. I found some settings that were pretty universally turned on. First is antialiasing. Basically every example that's not just a wireframe or a model in the void has this turned on. Even though it's off by default in most of the engines listed above I think having it on is a good thing we should change. We can shift between FXAA and various levels of MSAA but I think our default should include it. Second, many examples also turned on shadows in some capacity in both engines. I think this would definitely be good to have on for better visuals out of the box however our current shadows can look questionable. I think this is something we probably want to include only in the higher level of settings or for more static oriented use cases like AEC models for taking pictures. This is also the sort of thing that I think works better in applications that are a bit more focused on smaller areas or models specifically. I think it's not as useful/impactful on large area use cases Other settings like HDR, tone mapping and more niche effects like depth of field only seemed to be turned on occasionally when it benefited the specific example or the example was meant to specifically highlight how to use those parts of the API. I think we could consider these in a "higher than default" level preset. One thing I already discussed with Gabby is the fog/atmosphere settings. many of the three and babylon examples are very small scale and didn't need it but the default atmosphere in Unreal looks way better than ours. I think we could (and should) definitely tweak the settings and parameters of ours to have more impact for uses that view the whole, or large portions of, the globe. |
Thanks @jjspace! As we talked about offline: MSAAThis sounds like a gimme. Let's go ahead and enable 4x by default. When we have a "high end" or "low end" preset, we might modify the number of samples or even disable for the low end.
HDRLet's see about exposing tonemapping. This seems like it could be a great visual benefit, but it's not easily configurable right now. The
We should also The curve fitting for the existing tonemapper also seems off. Color tend to desaturate and light colors are dimmed. This is actually the opposite of what many tonemappers do, especially filmic ones: They target higher contrast and a wider color gamut. Once that's done, we can probably turn on HDR by default, if not on the high end.
Atmosphere & fogComparing our atmosphere with both Unreal and Google Earth, we can probably go more aggressive on the visual density of fog. Since we don't want to affect the screen space error more than it is affected now and cull tiles more aggressively, we'll want to add an additional uniform which modifies the fog density (visuals-only) further. Then, we'll want to set that to the best default. Looking into those examples, we may also want to tweak the value of the Rayleigh Scale Height default to be a bit more aggressive as well. Exponential height fog looks great, but we'll probably not want to implement it right now. Let's open a new issue.
ShadowsWhile we want to have shadows turned on by default, our currently implementation isn't up to par. Let's mention this in an existing issue, probably #9924, to emphasize it's importance. |
I don't think it's worth enabling scene-wide HDR unless we did PBR everywhere (globe, primitives, etc). Right now it's just models that do PBR and they already do HDR + tonemapping internally. I like the idea of checking out other tonemappers though. PBR Neutral Tonemapper seems really promising. We should consider switching to this by default for models and scene-wide HDR. |
I looked into this a bit and with some help from @ggetz sanity checking my findings there's no clear reasoning for this. I've opened #12240 to follow up on this in the future. |
Recently we've been making improvements to visual quality within CesiumJS. As part of this process we want to re-evaluate the default settings across the board to hopefully provide a better experience out of the box. We also want to explore a new API that makes it easier for developers to modify the various visual quality settings in one place. We're also looking into the potential to have various of presets with a simple "High, medium, low" type setting like many games have.
Settings to look at
Example use cases to test/target and try and optimize for
The text was updated successfully, but these errors were encountered: