Thorsten wrote > -----Original Message----- > From: Renk Thorsten [mailto:thorsten.i.r...@jyu.fi] > Sent: 20 February 2013 08:44 > To: FlightGear developers discussions > Subject: [Flightgear-devel] Low visibility issues > > Vivian wrote a while ago: > > > I've only tested Atmospheric Light Scattering for about 10 mins - and > > so far I've discovered that the Cat III scenario looks decidedly odd > > with a clear circle around my aircraft on the ground and black skies. > > I've taken a few hours to look into low visibility scenarios, and it's... > complicated. It's not complicated to make a low visibility scenario, but it's > complicated to make one which blends smoothly into the rest. So I would like > to put this up for discussion as a list of options and get some feedback, with > hopefully a decent picture of what we should do for 3.0. > > Status: Atmospheric Light Scattering is in my tests good to a visibility of ~1000 > m - below one starts running into a number of increasingly severe isses - > Vivian has encountered a few of them, but there are more. > > One option is - we can leave things as they are, with no additional > complication and framerate cost. That's not unprecedented, the default > rendering scheme doesn't deliver good results at high altitude, so if you fly > Concorde, SR-71 Blackbird, X-15 or Vostok-1 you don't get to see correct > earth curvature or the atmosphere below. We accept that the scheme simply > can't handle this and trust that users which want to see plausible visuals at > high altitude switch rendering scheme. Similarly, we could accept that > anyone who wants to deal with visibility much below 1000 m would have to > switch rendering scheme (and even make the Cat II and Cat III shown only > optional dependent on what rendering scheme is selected for instance).
At the minimum we need to avoid FG just looking broken, so making the Cat II & III dependent on rendering scheme would work. Better to fix it properly though > Failing that, here's a list of issues which need to be addressed, options to fix > them and projected costs: > > 1) Black skies: This may either be skydome unloading which I can't reproduce > (but we should have a property preventing that, I don't know if it's set only > by Advanced Weather, if not then this is a Basic Weather problem, not a > shader issue) or actually the correct behaviour - if you have 50 m visibility in a > 300 m thick fog layer, you're 6 attenuation length down, so the amount of > light reaching the ground is just exp(-6) ~ 2 permille of that reaches the top > of the layer. Which gives you a pretty dark sky. If dense fog is to appear > white, it can't be a very thick layer. > > Options: a) If the skydome really unloads in Basic Weather, set the property > correctly to prevent that. > -> no bad side effects > > 2) Clear circle around the plane: A while ago, I presented the problem that > fog computations are done for the cockpit as well since they run over the > same model shader as anything else, so we waste a lot of GPU time on > something that is physically wrong (the cabin interior is not fogged) and > results in a close-to-zero result in most cases. The advice I got was to use a > distance cut to prevent these computations, so I used 40 m which is > supposed to prevent the cabin interior in passenger planes from being > affected. Of course, once the visibility gets just low enough, you see this > distance cut as the circle Vivian describes. > > Options: > > a) We change this against a sliding distance cut not fogging for the closest 5% > of the distance with some smoothing. This doesn't fix the issue but makes it a > bit more subtle. > -> there may appear fogging computations on the cockpit, costing extra > -> framerate, the cabin interior can still be fogged This would be acceptable - I think it's the hard demarcation which catches the eye and looks unrealistic. > b) We fix it properly by using a different effect for all aircraft interior surfaces > which never does fog computations (easy to do shader-side by passing a flag) > -> every aircraft needs to be modified and declare surfaces as interior > -> or exterior for this to work This would be nice - I went go to great lengths to hide exterior surfaces in interior views to improve frame rates when these were a big issue. I think they might be culled anyway nowadays. However, there might be other advantages in doing this. I'd be happy to modify my handful of ac to accommodate this, others with a shed load might not be so happy. > > 3) Terrain unloads: Currently the terrain manager unloads all terrain not in > the visible range. This means that for 100 m visibility, hardly any terrain is > loaded. This is bad in a number of ways: > * terrain radar code (which'd be especially useful in low visibility conditions) > breaks as it can't probe terrain elevations ahead > * Advanced Weather can't get terrain elevation info and is unable to > assemble a reasonable picture of the surrounding terrain > * the light scattering shader does not longer know what color the fog should > be when looking down, as the skydome representing the terrain does not > have an altitude - so there appear mismatches between skydome standing > for terrain and residual actual terrain (yes, terrain altitude and slope matters > even if you can't see it - a completely fogged mountain can still block light!) > * when passing a low visibility region (say a cloud with 100 m, as defined to > make the cloudbase of thermals more realistic), there is no terrain left when > coming out, and you see it re-loading which looks a bit silly > > Options: > > a) From a performance point of view, it makes no sense to massively unload > terrain when the visibility drops over a short time - re-loading is far too > expensive than just keeping it. So one could simply change the terrain > manager to never unload terrain if it's closer than 20 km - this would basically > fix all problems > -> someone needs to do it There seem to be significant issues with the loading of terrain. If we load too much, the frame rate drops, if we load too little it looks poor, and AG radar doesn't work. Actually. We don't load enough for AG radar to work realistically in any case. We probably need something between 50 and 100 k for this , and we're unlikely to accommodate the memory requirements of this, at least for 32 bit systems. As an aside, with custom detailed scenery, memory is already marginal for 32 bit systems, reading comments of the forum. Adrian Musceac has developed a patch which employs an inner and out cache for the terrain - I wonder if this might help? What happened to that one? > b) It would barely seem possible to adapt the terrain sampling routines to the > visibility and to spend some extra performance to try to fix the color > mismatches between skydome and real terrain - I don't know if it could be > done, it's difficult to guess what altitude the terrain should have where it isn't > -> not a proper solution, just a bad fix > > 4) Clouds are not fogged consistently. I am not sure how one would define > consistent fogging of clouds, as in a low visibility scene the clouds basically > *are* identical with the fog, but in practice we probably don't want to show > any glimpse of the cloud layer above but rather have a completely grey > screen at very low visibility (?). > > a) Fix it properly, i.e. fog clouds in the same scheme that treats skydome and > terrain > -> This costs 50% of the framerate you get with a nice Cu cloud sky and > -> probably ~75% with an overcast sky, *regardless* what the visibility > -> actually is > > b) One can use the fact that the weather system knows the relative position > of viewpos and cloud layer, so the weather system can pass a decent > approximation to the real computation to the cloud shader which uses this > information > -> This would break Basic Weather in Atmospheric Light Scattering, > -> there's no way a reasonable default value can be set for this > -> parameter, and someone has to fix up Basic Weather then > > c) Improve the light computations so that clouds blend better against the > pretty dark fog - this woudn't make them invisible, but would de-emphasize > them > -> costs some extra framerate in the cloud shader, which is a bottleneck > -> to begin with > > 5) There's a couple of Advanced Weather issues (interpolated visibility vs. > effect volume visibility vs. ground visibility validity selection, modelling or the > vertical visibility gradient,...) which are not working fully consistent (for > instance, currently setting an effect volume with 1000 m visibility sets the > visibility to that value even if the visibility outside interpolates to 200 m - > while this is correct as far as the code goes, this is not necessarily the > intended behaviour and it would seem nice to enter a minimum statement > somewhere). > -> I simply need to fix those > > So, to summarize, there are a number of fixes I could do, ranging from > proper solutions to de-emphasizing a problem, many of them would cost > performance no matter what the visibility range actually is. Opinions please if > fixes are desirable and if so, which ones. > Proper solutions would be nice, but where these cost too much or are impractical, I would go along with hiding the problem. Just so the view out of the window looks plausible. Vivian ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel