|
@@ -115,7 +115,7 @@ void RenderingServerViewport::_draw_viewport(Viewport *p_viewport, XRInterface::
|
|
|
if ((scenario_draw_canvas_bg || can_draw_3d) && !p_viewport->render_buffers.is_valid()) {
|
|
|
//wants to draw 3D but there is no render buffer, create
|
|
|
p_viewport->render_buffers = RSG::scene_render->render_buffers_create();
|
|
|
- RSG::scene_render->render_buffers_configure(p_viewport->render_buffers, p_viewport->render_target, p_viewport->size.width, p_viewport->size.height, p_viewport->msaa, p_viewport->screen_space_aa);
|
|
|
+ RSG::scene_render->render_buffers_configure(p_viewport->render_buffers, p_viewport->render_target, p_viewport->size.width, p_viewport->size.height, p_viewport->msaa, p_viewport->screen_space_aa, p_viewport->use_debanding);
|
|
|
}
|
|
|
|
|
|
RSG::storage->render_target_request_clear(p_viewport->render_target, bgcolor);
|
|
@@ -491,7 +491,7 @@ void RenderingServerViewport::viewport_set_size(RID p_viewport, int p_width, int
|
|
|
RSG::scene_render->free(viewport->render_buffers);
|
|
|
viewport->render_buffers = RID();
|
|
|
} else {
|
|
|
- RSG::scene_render->render_buffers_configure(viewport->render_buffers, viewport->render_target, viewport->size.width, viewport->size.height, viewport->msaa, viewport->screen_space_aa);
|
|
|
+ RSG::scene_render->render_buffers_configure(viewport->render_buffers, viewport->render_target, viewport->size.width, viewport->size.height, viewport->msaa, viewport->screen_space_aa, viewport->use_debanding);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -704,7 +704,7 @@ void RenderingServerViewport::viewport_set_msaa(RID p_viewport, RS::ViewportMSAA
|
|
|
}
|
|
|
viewport->msaa = p_msaa;
|
|
|
if (viewport->render_buffers.is_valid()) {
|
|
|
- RSG::scene_render->render_buffers_configure(viewport->render_buffers, viewport->render_target, viewport->size.width, viewport->size.height, p_msaa, viewport->screen_space_aa);
|
|
|
+ RSG::scene_render->render_buffers_configure(viewport->render_buffers, viewport->render_target, viewport->size.width, viewport->size.height, p_msaa, viewport->screen_space_aa, viewport->use_debanding);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -717,7 +717,20 @@ void RenderingServerViewport::viewport_set_screen_space_aa(RID p_viewport, RS::V
|
|
|
}
|
|
|
viewport->screen_space_aa = p_mode;
|
|
|
if (viewport->render_buffers.is_valid()) {
|
|
|
- RSG::scene_render->render_buffers_configure(viewport->render_buffers, viewport->render_target, viewport->size.width, viewport->size.height, viewport->msaa, p_mode);
|
|
|
+ RSG::scene_render->render_buffers_configure(viewport->render_buffers, viewport->render_target, viewport->size.width, viewport->size.height, viewport->msaa, p_mode, viewport->use_debanding);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void RenderingServerViewport::viewport_set_use_debanding(RID p_viewport, bool p_use_debanding) {
|
|
|
+ Viewport *viewport = viewport_owner.getornull(p_viewport);
|
|
|
+ ERR_FAIL_COND(!viewport);
|
|
|
+
|
|
|
+ if (viewport->use_debanding == p_use_debanding) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ viewport->use_debanding = p_use_debanding;
|
|
|
+ if (viewport->render_buffers.is_valid()) {
|
|
|
+ RSG::scene_render->render_buffers_configure(viewport->render_buffers, viewport->render_target, viewport->size.width, viewport->size.height, viewport->msaa, viewport->screen_space_aa, p_use_debanding);
|
|
|
}
|
|
|
}
|
|
|
|