You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-22 15:06:45 +00:00
Add support for contrast-adaptive sharpening in 3D (GLES3 only)
This is an older, easier to implement variant of CAS as a pure fragment shader. It doesn't support upscaling, but we won't make use of it (at least for now). The sharpening intensity can be adjusted on a per-Viewport basis. For the root viewport, it can be adjusted in the Project Settings. Since `textureLodOffset()` isn't available in GLES2, there is no way to support contrast-adaptive sharpening in GLES2.
This commit is contained in:
@@ -2988,6 +2988,18 @@ bool Viewport::get_use_debanding() const {
|
||||
return use_debanding;
|
||||
}
|
||||
|
||||
void Viewport::set_sharpen_intensity(float p_intensity) {
|
||||
if (p_intensity == sharpen_intensity) {
|
||||
return;
|
||||
}
|
||||
sharpen_intensity = p_intensity;
|
||||
VS::get_singleton()->viewport_set_sharpen_intensity(viewport, sharpen_intensity);
|
||||
}
|
||||
|
||||
float Viewport::get_sharpen_intensity() const {
|
||||
return sharpen_intensity;
|
||||
}
|
||||
|
||||
void Viewport::set_hdr(bool p_hdr) {
|
||||
if (hdr == p_hdr) {
|
||||
return;
|
||||
@@ -3120,6 +3132,9 @@ void Viewport::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_use_debanding", "enable"), &Viewport::set_use_debanding);
|
||||
ClassDB::bind_method(D_METHOD("get_use_debanding"), &Viewport::get_use_debanding);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_sharpen_intensity", "intensity"), &Viewport::set_sharpen_intensity);
|
||||
ClassDB::bind_method(D_METHOD("get_sharpen_intensity"), &Viewport::get_sharpen_intensity);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_hdr", "enable"), &Viewport::set_hdr);
|
||||
ClassDB::bind_method(D_METHOD("get_hdr"), &Viewport::get_hdr);
|
||||
|
||||
@@ -3212,6 +3227,7 @@ void Viewport::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "msaa", PROPERTY_HINT_ENUM, "Disabled,2x,4x,8x,16x,AndroidVR 2x,AndroidVR 4x"), "set_msaa", "get_msaa");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "fxaa"), "set_use_fxaa", "get_use_fxaa");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "debanding"), "set_use_debanding", "get_use_debanding");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "sharpen_intensity"), "set_sharpen_intensity", "get_sharpen_intensity");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hdr"), "set_hdr", "get_hdr");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disable_3d"), "set_disable_3d", "is_3d_disabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "keep_3d_linear"), "set_keep_3d_linear", "get_keep_3d_linear");
|
||||
@@ -3371,6 +3387,7 @@ Viewport::Viewport() {
|
||||
msaa = MSAA_DISABLED;
|
||||
use_fxaa = false;
|
||||
use_debanding = false;
|
||||
sharpen_intensity = 0.0;
|
||||
hdr = true;
|
||||
|
||||
usage = USAGE_3D;
|
||||
|
||||
Reference in New Issue
Block a user