|
@@ -230,7 +230,6 @@ void Light::_bind_methods() {
|
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "shadow_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_shadow_color", "get_shadow_color");
|
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "shadow_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_shadow_color", "get_shadow_color");
|
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "shadow_bias", PROPERTY_HINT_RANGE, "-16,16,0.01"), "set_param", "get_param", PARAM_SHADOW_BIAS);
|
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "shadow_bias", PROPERTY_HINT_RANGE, "-16,16,0.01"), "set_param", "get_param", PARAM_SHADOW_BIAS);
|
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "shadow_contact", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_CONTACT_SHADOW_SIZE);
|
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "shadow_contact", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_CONTACT_SHADOW_SIZE);
|
|
- ADD_PROPERTYI(PropertyInfo(Variant::REAL, "shadow_max_distance", PROPERTY_HINT_RANGE, "0,65536,0.1"), "set_param", "get_param", PARAM_SHADOW_MAX_DISTANCE);
|
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shadow_reverse_cull_face"), "set_shadow_reverse_cull_face", "get_shadow_reverse_cull_face");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shadow_reverse_cull_face"), "set_shadow_reverse_cull_face", "get_shadow_reverse_cull_face");
|
|
ADD_GROUP("Editor", "");
|
|
ADD_GROUP("Editor", "");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_only"), "set_editor_only", "is_editor_only");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_only"), "set_editor_only", "is_editor_only");
|
|
@@ -308,6 +307,18 @@ DirectionalLight::ShadowMode DirectionalLight::get_shadow_mode() const {
|
|
return shadow_mode;
|
|
return shadow_mode;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DirectionalLight::set_shadow_depth_range(ShadowDepthRange p_range) {
|
|
|
|
+ shadow_depth_range=p_range;
|
|
|
|
+ VS::get_singleton()->light_directional_set_shadow_depth_range_mode(light, VS::LightDirectionalShadowDepthRangeMode(p_range));
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+DirectionalLight::ShadowDepthRange DirectionalLight::get_shadow_depth_range() const {
|
|
|
|
+
|
|
|
|
+ return shadow_depth_range;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
void DirectionalLight::set_blend_splits(bool p_enable) {
|
|
void DirectionalLight::set_blend_splits(bool p_enable) {
|
|
|
|
|
|
blend_splits = p_enable;
|
|
blend_splits = p_enable;
|
|
@@ -324,6 +335,9 @@ void DirectionalLight::_bind_methods() {
|
|
ClassDB::bind_method(D_METHOD("set_shadow_mode", "mode"), &DirectionalLight::set_shadow_mode);
|
|
ClassDB::bind_method(D_METHOD("set_shadow_mode", "mode"), &DirectionalLight::set_shadow_mode);
|
|
ClassDB::bind_method(D_METHOD("get_shadow_mode"), &DirectionalLight::get_shadow_mode);
|
|
ClassDB::bind_method(D_METHOD("get_shadow_mode"), &DirectionalLight::get_shadow_mode);
|
|
|
|
|
|
|
|
+ ClassDB::bind_method(D_METHOD("set_shadow_depth_range", "mode"), &DirectionalLight::set_shadow_depth_range);
|
|
|
|
+ ClassDB::bind_method(D_METHOD("get_shadow_depth_range"), &DirectionalLight::get_shadow_depth_range);
|
|
|
|
+
|
|
ClassDB::bind_method(D_METHOD("set_blend_splits", "enabled"), &DirectionalLight::set_blend_splits);
|
|
ClassDB::bind_method(D_METHOD("set_blend_splits", "enabled"), &DirectionalLight::set_blend_splits);
|
|
ClassDB::bind_method(D_METHOD("is_blend_splits_enabled"), &DirectionalLight::is_blend_splits_enabled);
|
|
ClassDB::bind_method(D_METHOD("is_blend_splits_enabled"), &DirectionalLight::is_blend_splits_enabled);
|
|
|
|
|
|
@@ -335,10 +349,15 @@ void DirectionalLight::_bind_methods() {
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "directional_shadow_blend_splits"), "set_blend_splits", "is_blend_splits_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "directional_shadow_blend_splits"), "set_blend_splits", "is_blend_splits_enabled");
|
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_normal_bias", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_SHADOW_NORMAL_BIAS);
|
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_normal_bias", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_SHADOW_NORMAL_BIAS);
|
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_bias_split_scale", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param", "get_param", PARAM_SHADOW_BIAS_SPLIT_SCALE);
|
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_bias_split_scale", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param", "get_param", PARAM_SHADOW_BIAS_SPLIT_SCALE);
|
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "directional_shadow_depth_range", PROPERTY_HINT_ENUM, "Stable,Optimized"), "set_shadow_depth_range", "get_shadow_depth_range");
|
|
|
|
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_max_distance", PROPERTY_HINT_RANGE, "0,65536,0.1"), "set_param", "get_param", PARAM_SHADOW_MAX_DISTANCE);
|
|
|
|
|
|
BIND_ENUM_CONSTANT(SHADOW_ORTHOGONAL);
|
|
BIND_ENUM_CONSTANT(SHADOW_ORTHOGONAL);
|
|
BIND_ENUM_CONSTANT(SHADOW_PARALLEL_2_SPLITS);
|
|
BIND_ENUM_CONSTANT(SHADOW_PARALLEL_2_SPLITS);
|
|
BIND_ENUM_CONSTANT(SHADOW_PARALLEL_4_SPLITS);
|
|
BIND_ENUM_CONSTANT(SHADOW_PARALLEL_4_SPLITS);
|
|
|
|
+
|
|
|
|
+ BIND_ENUM_CONSTANT( SHADOW_DEPTH_RANGE_STABLE );
|
|
|
|
+ BIND_ENUM_CONSTANT( SHADOW_DEPTH_RANGE_OPTIMIZED );
|
|
}
|
|
}
|
|
|
|
|
|
DirectionalLight::DirectionalLight()
|
|
DirectionalLight::DirectionalLight()
|
|
@@ -349,6 +368,8 @@ DirectionalLight::DirectionalLight()
|
|
set_param(PARAM_SHADOW_MAX_DISTANCE, 200);
|
|
set_param(PARAM_SHADOW_MAX_DISTANCE, 200);
|
|
set_param(PARAM_SHADOW_BIAS_SPLIT_SCALE, 0.25);
|
|
set_param(PARAM_SHADOW_BIAS_SPLIT_SCALE, 0.25);
|
|
set_shadow_mode(SHADOW_PARALLEL_4_SPLITS);
|
|
set_shadow_mode(SHADOW_PARALLEL_4_SPLITS);
|
|
|
|
+ set_shadow_depth_range(SHADOW_DEPTH_RANGE_STABLE);
|
|
|
|
+
|
|
|
|
|
|
blend_splits = false;
|
|
blend_splits = false;
|
|
}
|
|
}
|