zesterer / openmw-volumetric-clouds

A volumetric clouds mod for OpenMW
86 stars 12 forks source link

In case of low view distance the mist can make the cut off line less visible #1

Open petrmikheev opened 2 years ago

petrmikheev commented 2 years ago

A couple of ideas that can potentially improve experience for players with low end hardware:

  1. Due to the view distance cut off line some objects are rendered only partially. These objects are hidden in mist, but are still visible against the sky. It looks ugly:

partially_visible_object2

Probably a postprocessing shader can make it look better.

  1. When looking down from something high the horizon looks much closer than it really is (in case of low view distance of course).

horizon

Probably it can look better if the sky above the real horizon line is blue (because we are staying high enough to see it), but everything below the horizon is hidden in opaque mist.

zesterer commented 2 years ago

Both of these are issues with OpenMW's built-in fog which happens during forward rendering. There's not too much I can do about this other than recommend that you play with the highest view distance your setup can manage. That said, if you know of a way to turn off in-game fog entirely, that would be appreciated.

Probably it can look better if the sky above the real horizon line is blue (because we are staying high enough to see it), but everything below the horizon is hidden in opaque mist.

This is not how real mist works. When it gets very misty, the true horizon is no longer visible.

petrmikheev commented 2 years ago

That said, if you know of a way to turn off in-game fog entirely, that would be appreciated.

These lines in settings.cfg disable it:

[Fog]
use distant fog = True
distant land fog start = 10000000
distant land fog end = 10000000

See here: https://openmw.readthedocs.io/en/latest/reference/modding/settings/fog.html

There's not too much I can do about this other than recommend that you play with the highest view distance your setup can manage.

There is always a compromise between FPS, view distance, quality of water shader, and the number of mods that adds small details. So even with a modern setup there are reasons to have view distance less than entire Tamriel. And if view distance is finite, then always there is something half rendered. And even if it takes only several pixels on the screen, it is annoying if you rotate camera a bit and a building far away has appeared from nowhere.

I think that the objects that are close to the cut off line should have the color of the sky rather than the color of the fog. And if a postprocessing shader can draw a new sky, then it definitely can also assign this color to the objects on the border.

zesterer commented 2 years ago

And if a postprocessing shader can draw a new sky, then it definitely can also assign this color to the objects on the border.

Unfortunately, this is not actually the case. The post-processing shader doesn't have knowledge of the 'original' colour of objects to do blending with. As far as it is concerned, the fog is part of the object's colour.

GrantMoyer commented 2 years ago

The post-processing shader doesn't have knowledge of the 'original' colour of objects to do blending with.

The post processing shader could perform the inverse operation of fog blending to get approximately the original color, or am I missing something? Of course, there may be some quantization error, but maybe that wouldn't matter after fog is blended back in. For instance, if

$color{final} = color{original} \cdot (1 - \beta) + color_{fog} \cdot \beta$

where $\beta$ is some function of depth, then

$color{original} = \frac{color{final} - color_{fog} \cdot \beta}{1 - \beta}$

zesterer commented 2 years ago

It could, but then we'd need access to information about fog distance in the shader, which unfortunately I don't think is available. Additionally, I believe the colour channels are 16 bits or even 8 bits by default, so it's likely that any attempt to reverse the effect would just result in artifacts. It's just easier and better to disable the built-in fog.