Added luminance capping to avoid glitches on small dots. closes #17996
This commit is contained in:
parent
b243c26697
commit
af8d941c55
12 changed files with 45 additions and 19 deletions
|
@ -63,7 +63,8 @@ public:
|
||||||
|
|
||||||
void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) {}
|
void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) {}
|
||||||
void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) {}
|
void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) {}
|
||||||
void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) {}
|
void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) {}
|
||||||
|
|
||||||
void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {}
|
void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {}
|
||||||
|
|
||||||
void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) {}
|
void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) {}
|
||||||
|
|
|
@ -708,7 +708,7 @@ void RasterizerSceneGLES2::environment_set_dof_blur_near(RID p_env, bool p_enabl
|
||||||
ERR_FAIL_COND(!env);
|
ERR_FAIL_COND(!env);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerSceneGLES2::environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) {
|
void RasterizerSceneGLES2::environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) {
|
||||||
Environment *env = environment_owner.getornull(p_env);
|
Environment *env = environment_owner.getornull(p_env);
|
||||||
ERR_FAIL_COND(!env);
|
ERR_FAIL_COND(!env);
|
||||||
}
|
}
|
||||||
|
|
|
@ -413,7 +413,7 @@ public:
|
||||||
|
|
||||||
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
|
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
|
||||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
|
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
|
||||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale);
|
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale);
|
||||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
||||||
|
|
||||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
||||||
|
|
|
@ -846,7 +846,7 @@ void RasterizerSceneGLES3::environment_set_dof_blur_near(RID p_env, bool p_enabl
|
||||||
env->dof_blur_near_amount = p_amount;
|
env->dof_blur_near_amount = p_amount;
|
||||||
env->dof_blur_near_quality = p_quality;
|
env->dof_blur_near_quality = p_quality;
|
||||||
}
|
}
|
||||||
void RasterizerSceneGLES3::environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) {
|
void RasterizerSceneGLES3::environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) {
|
||||||
|
|
||||||
Environment *env = environment_owner.getornull(p_env);
|
Environment *env = environment_owner.getornull(p_env);
|
||||||
ERR_FAIL_COND(!env);
|
ERR_FAIL_COND(!env);
|
||||||
|
@ -859,6 +859,7 @@ void RasterizerSceneGLES3::environment_set_glow(RID p_env, bool p_enable, int p_
|
||||||
env->glow_blend_mode = p_blend_mode;
|
env->glow_blend_mode = p_blend_mode;
|
||||||
env->glow_hdr_bleed_threshold = p_hdr_bleed_threshold;
|
env->glow_hdr_bleed_threshold = p_hdr_bleed_threshold;
|
||||||
env->glow_hdr_bleed_scale = p_hdr_bleed_scale;
|
env->glow_hdr_bleed_scale = p_hdr_bleed_scale;
|
||||||
|
env->glow_hdr_luminance_cap = p_hdr_luminance_cap;
|
||||||
env->glow_bicubic_upscale = p_bicubic_upscale;
|
env->glow_bicubic_upscale = p_bicubic_upscale;
|
||||||
}
|
}
|
||||||
void RasterizerSceneGLES3::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
|
void RasterizerSceneGLES3::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
|
||||||
|
@ -3898,6 +3899,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
||||||
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::PIXEL_SIZE, Vector2(1.0 / vp_w, 1.0 / vp_h));
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::PIXEL_SIZE, Vector2(1.0 / vp_w, 1.0 / vp_h));
|
||||||
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LOD, float(i));
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LOD, float(i));
|
||||||
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::GLOW_STRENGTH, env->glow_strength);
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::GLOW_STRENGTH, env->glow_strength);
|
||||||
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LUMINANCE_CAP, env->glow_hdr_luminance_cap);
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
|
|
|
@ -404,6 +404,7 @@ public:
|
||||||
VS::EnvironmentGlowBlendMode glow_blend_mode;
|
VS::EnvironmentGlowBlendMode glow_blend_mode;
|
||||||
float glow_hdr_bleed_threshold;
|
float glow_hdr_bleed_threshold;
|
||||||
float glow_hdr_bleed_scale;
|
float glow_hdr_bleed_scale;
|
||||||
|
float glow_hdr_luminance_cap;
|
||||||
bool glow_bicubic_upscale;
|
bool glow_bicubic_upscale;
|
||||||
|
|
||||||
VS::EnvironmentToneMapper tone_mapper;
|
VS::EnvironmentToneMapper tone_mapper;
|
||||||
|
@ -494,6 +495,7 @@ public:
|
||||||
glow_blend_mode = VS::GLOW_BLEND_MODE_SOFTLIGHT;
|
glow_blend_mode = VS::GLOW_BLEND_MODE_SOFTLIGHT;
|
||||||
glow_hdr_bleed_threshold = 1.0;
|
glow_hdr_bleed_threshold = 1.0;
|
||||||
glow_hdr_bleed_scale = 2.0;
|
glow_hdr_bleed_scale = 2.0;
|
||||||
|
glow_hdr_luminance_cap = 12.0;
|
||||||
glow_bicubic_upscale = false;
|
glow_bicubic_upscale = false;
|
||||||
|
|
||||||
dof_blur_far_enabled = false;
|
dof_blur_far_enabled = false;
|
||||||
|
@ -548,7 +550,7 @@ public:
|
||||||
|
|
||||||
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
|
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
|
||||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
|
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
|
||||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale);
|
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale);
|
||||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
||||||
|
|
||||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
||||||
|
|
|
@ -94,6 +94,7 @@ uniform sampler2D source_dof_original; //texunit:2
|
||||||
|
|
||||||
uniform float exposure;
|
uniform float exposure;
|
||||||
uniform float white;
|
uniform float white;
|
||||||
|
uniform highp float luminance_cap;
|
||||||
|
|
||||||
#ifdef GLOW_USE_AUTO_EXPOSURE
|
#ifdef GLOW_USE_AUTO_EXPOSURE
|
||||||
|
|
||||||
|
@ -271,7 +272,7 @@ void main() {
|
||||||
float luminance = max(frag_color.r, max(frag_color.g, frag_color.b));
|
float luminance = max(frag_color.r, max(frag_color.g, frag_color.b));
|
||||||
float feedback = max(smoothstep(glow_hdr_threshold, glow_hdr_threshold + glow_hdr_scale, luminance), glow_bloom);
|
float feedback = max(smoothstep(glow_hdr_threshold, glow_hdr_threshold + glow_hdr_scale, luminance), glow_bloom);
|
||||||
|
|
||||||
frag_color *= feedback;
|
frag_color = min( frag_color * feedback, vec4(luminance_cap) );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -504,7 +504,7 @@ float Environment::get_ssao_edge_sharpness() const {
|
||||||
void Environment::set_glow_enabled(bool p_enabled) {
|
void Environment::set_glow_enabled(bool p_enabled) {
|
||||||
|
|
||||||
glow_enabled = p_enabled;
|
glow_enabled = p_enabled;
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
_change_notify();
|
_change_notify();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,7 +522,7 @@ void Environment::set_glow_level(int p_level, bool p_enabled) {
|
||||||
else
|
else
|
||||||
glow_levels &= ~(1 << p_level);
|
glow_levels &= ~(1 << p_level);
|
||||||
|
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
}
|
}
|
||||||
bool Environment::is_glow_level_enabled(int p_level) const {
|
bool Environment::is_glow_level_enabled(int p_level) const {
|
||||||
|
|
||||||
|
@ -535,7 +535,7 @@ void Environment::set_glow_intensity(float p_intensity) {
|
||||||
|
|
||||||
glow_intensity = p_intensity;
|
glow_intensity = p_intensity;
|
||||||
|
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
}
|
}
|
||||||
float Environment::get_glow_intensity() const {
|
float Environment::get_glow_intensity() const {
|
||||||
|
|
||||||
|
@ -545,7 +545,7 @@ float Environment::get_glow_intensity() const {
|
||||||
void Environment::set_glow_strength(float p_strength) {
|
void Environment::set_glow_strength(float p_strength) {
|
||||||
|
|
||||||
glow_strength = p_strength;
|
glow_strength = p_strength;
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
}
|
}
|
||||||
float Environment::get_glow_strength() const {
|
float Environment::get_glow_strength() const {
|
||||||
|
|
||||||
|
@ -556,7 +556,7 @@ void Environment::set_glow_bloom(float p_threshold) {
|
||||||
|
|
||||||
glow_bloom = p_threshold;
|
glow_bloom = p_threshold;
|
||||||
|
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
}
|
}
|
||||||
float Environment::get_glow_bloom() const {
|
float Environment::get_glow_bloom() const {
|
||||||
|
|
||||||
|
@ -567,7 +567,7 @@ void Environment::set_glow_blend_mode(GlowBlendMode p_mode) {
|
||||||
|
|
||||||
glow_blend_mode = p_mode;
|
glow_blend_mode = p_mode;
|
||||||
|
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
}
|
}
|
||||||
Environment::GlowBlendMode Environment::get_glow_blend_mode() const {
|
Environment::GlowBlendMode Environment::get_glow_blend_mode() const {
|
||||||
|
|
||||||
|
@ -578,18 +578,29 @@ void Environment::set_glow_hdr_bleed_threshold(float p_threshold) {
|
||||||
|
|
||||||
glow_hdr_bleed_threshold = p_threshold;
|
glow_hdr_bleed_threshold = p_threshold;
|
||||||
|
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
}
|
}
|
||||||
float Environment::get_glow_hdr_bleed_threshold() const {
|
float Environment::get_glow_hdr_bleed_threshold() const {
|
||||||
|
|
||||||
return glow_hdr_bleed_threshold;
|
return glow_hdr_bleed_threshold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Environment::set_glow_hdr_luminance_cap(float p_threshold) {
|
||||||
|
|
||||||
|
glow_hdr_luminance_cap = p_threshold;
|
||||||
|
|
||||||
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
|
}
|
||||||
|
float Environment::get_glow_hdr_luminance_cap() const {
|
||||||
|
|
||||||
|
return glow_hdr_luminance_cap;
|
||||||
|
}
|
||||||
|
|
||||||
void Environment::set_glow_hdr_bleed_scale(float p_scale) {
|
void Environment::set_glow_hdr_bleed_scale(float p_scale) {
|
||||||
|
|
||||||
glow_hdr_bleed_scale = p_scale;
|
glow_hdr_bleed_scale = p_scale;
|
||||||
|
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
}
|
}
|
||||||
float Environment::get_glow_hdr_bleed_scale() const {
|
float Environment::get_glow_hdr_bleed_scale() const {
|
||||||
|
|
||||||
|
@ -599,7 +610,7 @@ float Environment::get_glow_hdr_bleed_scale() const {
|
||||||
void Environment::set_glow_bicubic_upscale(bool p_enable) {
|
void Environment::set_glow_bicubic_upscale(bool p_enable) {
|
||||||
|
|
||||||
glow_bicubic_upscale = p_enable;
|
glow_bicubic_upscale = p_enable;
|
||||||
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
|
VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Environment::is_glow_bicubic_upscale_enabled() const {
|
bool Environment::is_glow_bicubic_upscale_enabled() const {
|
||||||
|
@ -1127,6 +1138,9 @@ void Environment::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("set_glow_hdr_bleed_threshold", "threshold"), &Environment::set_glow_hdr_bleed_threshold);
|
ClassDB::bind_method(D_METHOD("set_glow_hdr_bleed_threshold", "threshold"), &Environment::set_glow_hdr_bleed_threshold);
|
||||||
ClassDB::bind_method(D_METHOD("get_glow_hdr_bleed_threshold"), &Environment::get_glow_hdr_bleed_threshold);
|
ClassDB::bind_method(D_METHOD("get_glow_hdr_bleed_threshold"), &Environment::get_glow_hdr_bleed_threshold);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_glow_hdr_luminance_cap", "amount"), &Environment::set_glow_hdr_luminance_cap);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_glow_hdr_luminance_cap"), &Environment::get_glow_hdr_luminance_cap);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_glow_hdr_bleed_scale", "scale"), &Environment::set_glow_hdr_bleed_scale);
|
ClassDB::bind_method(D_METHOD("set_glow_hdr_bleed_scale", "scale"), &Environment::set_glow_hdr_bleed_scale);
|
||||||
ClassDB::bind_method(D_METHOD("get_glow_hdr_bleed_scale"), &Environment::get_glow_hdr_bleed_scale);
|
ClassDB::bind_method(D_METHOD("get_glow_hdr_bleed_scale"), &Environment::get_glow_hdr_bleed_scale);
|
||||||
|
|
||||||
|
@ -1148,6 +1162,7 @@ void Environment::_bind_methods() {
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_bloom", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_glow_bloom", "get_glow_bloom");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_bloom", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_glow_bloom", "get_glow_bloom");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "glow_blend_mode", PROPERTY_HINT_ENUM, "Additive,Screen,Softlight,Replace"), "set_glow_blend_mode", "get_glow_blend_mode");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "glow_blend_mode", PROPERTY_HINT_ENUM, "Additive,Screen,Softlight,Replace"), "set_glow_blend_mode", "get_glow_blend_mode");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_threshold", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_threshold", "get_glow_hdr_bleed_threshold");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_threshold", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_threshold", "get_glow_hdr_bleed_threshold");
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_luminance_cap", PROPERTY_HINT_RANGE, "0.0,256.0,0.01"), "set_glow_hdr_luminance_cap", "get_glow_hdr_luminance_cap");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_scale", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_scale", "get_glow_hdr_bleed_scale");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_scale", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_scale", "get_glow_hdr_bleed_scale");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_bicubic_upscale"), "set_glow_bicubic_upscale", "is_glow_bicubic_upscale_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_bicubic_upscale"), "set_glow_bicubic_upscale", "is_glow_bicubic_upscale_enabled");
|
||||||
|
|
||||||
|
@ -1261,6 +1276,7 @@ Environment::Environment() {
|
||||||
glow_bloom = 0.0;
|
glow_bloom = 0.0;
|
||||||
glow_blend_mode = GLOW_BLEND_MODE_SOFTLIGHT;
|
glow_blend_mode = GLOW_BLEND_MODE_SOFTLIGHT;
|
||||||
glow_hdr_bleed_threshold = 1.0;
|
glow_hdr_bleed_threshold = 1.0;
|
||||||
|
glow_hdr_luminance_cap = 12.0;
|
||||||
glow_hdr_bleed_scale = 2.0;
|
glow_hdr_bleed_scale = 2.0;
|
||||||
glow_bicubic_upscale = false;
|
glow_bicubic_upscale = false;
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,7 @@ private:
|
||||||
GlowBlendMode glow_blend_mode;
|
GlowBlendMode glow_blend_mode;
|
||||||
float glow_hdr_bleed_threshold;
|
float glow_hdr_bleed_threshold;
|
||||||
float glow_hdr_bleed_scale;
|
float glow_hdr_bleed_scale;
|
||||||
|
float glow_hdr_luminance_cap;
|
||||||
bool glow_bicubic_upscale;
|
bool glow_bicubic_upscale;
|
||||||
|
|
||||||
bool dof_blur_far_enabled;
|
bool dof_blur_far_enabled;
|
||||||
|
@ -312,6 +313,9 @@ public:
|
||||||
void set_glow_hdr_bleed_threshold(float p_threshold);
|
void set_glow_hdr_bleed_threshold(float p_threshold);
|
||||||
float get_glow_hdr_bleed_threshold() const;
|
float get_glow_hdr_bleed_threshold() const;
|
||||||
|
|
||||||
|
void set_glow_hdr_luminance_cap(float p_amount);
|
||||||
|
float get_glow_hdr_luminance_cap() const;
|
||||||
|
|
||||||
void set_glow_hdr_bleed_scale(float p_scale);
|
void set_glow_hdr_bleed_scale(float p_scale);
|
||||||
float get_glow_hdr_bleed_scale() const;
|
float get_glow_hdr_bleed_scale() const;
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ public:
|
||||||
|
|
||||||
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) = 0;
|
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) = 0;
|
||||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) = 0;
|
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) = 0;
|
||||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) = 0;
|
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) = 0;
|
||||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) = 0;
|
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) = 0;
|
||||||
|
|
||||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) = 0;
|
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) = 0;
|
||||||
|
|
|
@ -504,7 +504,7 @@ public:
|
||||||
|
|
||||||
BIND6(environment_set_dof_blur_near, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
|
BIND6(environment_set_dof_blur_near, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
|
||||||
BIND6(environment_set_dof_blur_far, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
|
BIND6(environment_set_dof_blur_far, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
|
||||||
BIND10(environment_set_glow, RID, bool, int, float, float, float, EnvironmentGlowBlendMode, float, float, bool)
|
BIND11(environment_set_glow, RID, bool, int, float, float, float, EnvironmentGlowBlendMode, float, float, float, bool)
|
||||||
|
|
||||||
BIND9(environment_set_tonemap, RID, EnvironmentToneMapper, float, float, bool, float, float, float, float)
|
BIND9(environment_set_tonemap, RID, EnvironmentToneMapper, float, float, bool, float, float, float, float)
|
||||||
|
|
||||||
|
|
|
@ -430,7 +430,7 @@ public:
|
||||||
|
|
||||||
FUNC6(environment_set_dof_blur_near, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
|
FUNC6(environment_set_dof_blur_near, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
|
||||||
FUNC6(environment_set_dof_blur_far, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
|
FUNC6(environment_set_dof_blur_far, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
|
||||||
FUNC10(environment_set_glow, RID, bool, int, float, float, float, EnvironmentGlowBlendMode, float, float, bool)
|
FUNC11(environment_set_glow, RID, bool, int, float, float, float, EnvironmentGlowBlendMode, float, float, float, bool)
|
||||||
|
|
||||||
FUNC9(environment_set_tonemap, RID, EnvironmentToneMapper, float, float, bool, float, float, float, float)
|
FUNC9(environment_set_tonemap, RID, EnvironmentToneMapper, float, float, bool, float, float, float, float)
|
||||||
|
|
||||||
|
|
|
@ -733,7 +733,7 @@ public:
|
||||||
GLOW_BLEND_MODE_SOFTLIGHT,
|
GLOW_BLEND_MODE_SOFTLIGHT,
|
||||||
GLOW_BLEND_MODE_REPLACE,
|
GLOW_BLEND_MODE_REPLACE,
|
||||||
};
|
};
|
||||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) = 0;
|
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) = 0;
|
||||||
|
|
||||||
enum EnvironmentToneMapper {
|
enum EnvironmentToneMapper {
|
||||||
ENV_TONE_MAPPER_LINEAR,
|
ENV_TONE_MAPPER_LINEAR,
|
||||||
|
|
Loading…
Reference in a new issue