|
@@ -44,6 +44,9 @@ void Environment::set_background(BGMode p_bg) {
|
|
|
bg_mode = p_bg;
|
|
|
RS::get_singleton()->environment_set_background(environment, RS::EnvironmentBG(p_bg));
|
|
|
_change_notify();
|
|
|
+ if (bg_mode != BG_SKY) {
|
|
|
+ set_fog_aerial_perspective(0.0);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Environment::BGMode Environment::get_background() const {
|
|
@@ -739,6 +742,14 @@ float Environment::get_fog_height_density() const {
|
|
|
return fog_height_density;
|
|
|
}
|
|
|
|
|
|
+void Environment::set_fog_aerial_perspective(float p_aerial_perspective) {
|
|
|
+ fog_aerial_perspective = p_aerial_perspective;
|
|
|
+ _update_fog();
|
|
|
+}
|
|
|
+float Environment::get_fog_aerial_perspective() const {
|
|
|
+ return fog_aerial_perspective;
|
|
|
+}
|
|
|
+
|
|
|
void Environment::_update_fog() {
|
|
|
RS::get_singleton()->environment_set_fog(
|
|
|
environment,
|
|
@@ -748,7 +759,8 @@ void Environment::_update_fog() {
|
|
|
fog_sun_scatter,
|
|
|
fog_density,
|
|
|
fog_height,
|
|
|
- fog_height_density);
|
|
|
+ fog_height_density,
|
|
|
+ fog_aerial_perspective);
|
|
|
}
|
|
|
|
|
|
// Volumetric Fog
|
|
@@ -887,6 +899,12 @@ void Environment::_validate_property(PropertyInfo &property) const {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (property.name == "fog_aerial_perspective") {
|
|
|
+ if (bg_mode != BG_SKY) {
|
|
|
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (property.name == "glow_intensity" && glow_blend_mode == GLOW_BLEND_MODE_MIX) {
|
|
|
property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
|
|
|
}
|
|
@@ -1219,6 +1237,9 @@ void Environment::_bind_methods() {
|
|
|
ClassDB::bind_method(D_METHOD("set_fog_height_density", "height_density"), &Environment::set_fog_height_density);
|
|
|
ClassDB::bind_method(D_METHOD("get_fog_height_density"), &Environment::get_fog_height_density);
|
|
|
|
|
|
+ ClassDB::bind_method(D_METHOD("set_fog_aerial_perspective", "aerial_perspective"), &Environment::set_fog_aerial_perspective);
|
|
|
+ ClassDB::bind_method(D_METHOD("get_fog_aerial_perspective"), &Environment::get_fog_aerial_perspective);
|
|
|
+
|
|
|
ADD_GROUP("Fog", "fog_");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "fog_enabled"), "set_fog_enabled", "is_fog_enabled");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "fog_light_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_fog_light_color", "get_fog_light_color");
|
|
@@ -1226,6 +1247,7 @@ void Environment::_bind_methods() {
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_sun_scatter", PROPERTY_HINT_RANGE, "0,1,0.01,or_greater"), "set_fog_sun_scatter", "get_fog_sun_scatter");
|
|
|
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_density", PROPERTY_HINT_RANGE, "0,16,0.0001"), "set_fog_density", "get_fog_density");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_aerial_perspective", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_fog_aerial_perspective", "get_fog_aerial_perspective");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_height", PROPERTY_HINT_RANGE, "-1024,1024,0.01,or_lesser,or_greater"), "set_fog_height", "get_fog_height");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_height_density", PROPERTY_HINT_RANGE, "0,128,0.001,or_greater"), "set_fog_height_density", "get_fog_height_density");
|
|
|
|