CesiumGS / cesium-unreal

Bringing the 3D geospatial ecosystem to Unreal Engine
https://cesium.com/platform/cesium-for-unreal/
Apache License 2.0
921 stars 296 forks source link

Investigate options for High DPI support #103

Open kring opened 3 years ago

kring commented 3 years ago

We need to figure out what this means. Possibly:

kring commented 2 years ago

@joseph-kaile this is the issue we talked about on the call today. There is likely an API somewhere in UE to get the DPI scaling factor, the equivalent of devicePixelRatio on the web. (This site will display your current device pixel ratio). Then, when we construct the ViewState for tile selection, we should divide the viewport width and height by the ratio. This will result in fewer tiles being selected on small-screen, high-DPI devices like iPhones, drastically improving performance.

It looks like UE's DPI scaling support might be more sophisticated than a single number, but that should be fine: https://forums.unrealengine.com/t/current-dpi-scaling/296699/2 (above is the first thing I found, I don't know if it's the best way)

This should be configurable, though. I'd suggest a project-wide setting on CesiumRuntimeSettings, and also an option on each Tileset to override it. Maybe in the project settings it's just a checkbox: "Scale Level-of-Detail by Display DPI". On the tileset, it should have three states: Yes, No, and Use Project Default.