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:
Hugo Locurcio 2021-03-27 18:58:12 +01:00
parent 296608460b
commit a9c0c5484f
No known key found for this signature in database
GPG key ID: 39E8F8BE30B0A49C
23 changed files with 159 additions and 6 deletions

View file

@ -630,6 +630,13 @@ void VisualServerViewport::viewport_set_use_debanding(RID p_viewport, bool p_deb
VSG::storage->render_target_set_use_debanding(viewport->render_target, p_debanding);
}
void VisualServerViewport::viewport_set_sharpen_intensity(RID p_viewport, float p_intensity) {
Viewport *viewport = viewport_owner.getornull(p_viewport);
ERR_FAIL_COND(!viewport);
VSG::storage->render_target_set_sharpen_intensity(viewport->render_target, p_intensity);
}
void VisualServerViewport::viewport_set_hdr(RID p_viewport, bool p_enabled) {
Viewport *viewport = viewport_owner.getornull(p_viewport);
ERR_FAIL_COND(!viewport);