The answer lies in your reply itself. Visibility can be implemented based on altitude. Humidity, aerosol etc. can be considered as a factor in the sim.
The situation you mentioned is one which happens to be correct accidently, as the issue behaves in a similar way.