mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
Improved default directional shadow params, added bias split scale, closes #9828
This commit is contained in:
parent
fdc1a907b8
commit
a1d7c496b9
@ -4445,9 +4445,10 @@ void RasterizerSceneGLES3::render_shadow(RID p_light, RID p_shadow_atlas, int p_
|
||||
}
|
||||
}
|
||||
|
||||
float bias_mult = Math::lerp(1.0f, light_instance->shadow_transform[p_pass].bias_scale, light->param[VS::LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE]);
|
||||
zfar = light->param[VS::LIGHT_PARAM_RANGE];
|
||||
bias = light->param[VS::LIGHT_PARAM_SHADOW_BIAS] * light_instance->shadow_transform[p_pass].bias_scale;
|
||||
normal_bias = light->param[VS::LIGHT_PARAM_SHADOW_NORMAL_BIAS] * light_instance->shadow_transform[p_pass].bias_scale;
|
||||
bias = light->param[VS::LIGHT_PARAM_SHADOW_BIAS] * bias_mult;
|
||||
normal_bias = light->param[VS::LIGHT_PARAM_SHADOW_NORMAL_BIAS] * bias_mult;
|
||||
fbo = directional_shadow.fbo;
|
||||
vp_height = directional_shadow.size;
|
||||
|
||||
|
@ -4448,6 +4448,7 @@ RID RasterizerStorageGLES3::light_create(VS::LightType p_type) {
|
||||
light->param[VS::LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET] = 0.3;
|
||||
light->param[VS::LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET] = 0.6;
|
||||
light->param[VS::LIGHT_PARAM_SHADOW_NORMAL_BIAS] = 0.1;
|
||||
light->param[VS::LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE] = 0.1;
|
||||
|
||||
light->color = Color(1, 1, 1, 1);
|
||||
light->shadow = false;
|
||||
|
@ -334,6 +334,7 @@ void DirectionalLight::_bind_methods() {
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_split_3", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_param", "get_param", PARAM_SHADOW_SPLIT_3_OFFSET);
|
||||
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_bias_split_scale", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param", "get_param", PARAM_SHADOW_BIAS_SPLIT_SCALE);
|
||||
|
||||
BIND_ENUM_CONSTANT(SHADOW_ORTHOGONAL);
|
||||
BIND_ENUM_CONSTANT(SHADOW_PARALLEL_2_SPLITS);
|
||||
@ -343,9 +344,10 @@ void DirectionalLight::_bind_methods() {
|
||||
DirectionalLight::DirectionalLight()
|
||||
: Light(VisualServer::LIGHT_DIRECTIONAL) {
|
||||
|
||||
set_param(PARAM_SHADOW_NORMAL_BIAS, 0.2);
|
||||
set_param(PARAM_SHADOW_BIAS, 1.0);
|
||||
set_param(PARAM_SHADOW_NORMAL_BIAS, 0.8);
|
||||
set_param(PARAM_SHADOW_BIAS, 0.1);
|
||||
set_param(PARAM_SHADOW_MAX_DISTANCE, 200);
|
||||
set_param(PARAM_SHADOW_BIAS_SPLIT_SCALE, 0.25);
|
||||
set_shadow_mode(SHADOW_PARALLEL_4_SPLITS);
|
||||
|
||||
blend_splits = false;
|
||||
|
@ -58,6 +58,7 @@ public:
|
||||
PARAM_SHADOW_SPLIT_3_OFFSET = VS::LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET,
|
||||
PARAM_SHADOW_NORMAL_BIAS = VS::LIGHT_PARAM_SHADOW_NORMAL_BIAS,
|
||||
PARAM_SHADOW_BIAS = VS::LIGHT_PARAM_SHADOW_BIAS,
|
||||
PARAM_SHADOW_BIAS_SPLIT_SCALE = VS::LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE,
|
||||
PARAM_MAX = VS::LIGHT_PARAM_MAX
|
||||
};
|
||||
|
||||
|
@ -358,6 +358,7 @@ public:
|
||||
LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET,
|
||||
LIGHT_PARAM_SHADOW_NORMAL_BIAS,
|
||||
LIGHT_PARAM_SHADOW_BIAS,
|
||||
LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE,
|
||||
LIGHT_PARAM_MAX
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user