Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/draw/engines/image/image_drawing_mode.hh8
-rw-r--r--source/blender/draw/engines/image/image_instance_data.hh2
-rw-r--r--source/blender/draw/engines/image/image_usage.hh6
3 files changed, 11 insertions, 5 deletions
diff --git a/source/blender/draw/engines/image/image_drawing_mode.hh b/source/blender/draw/engines/image/image_drawing_mode.hh
index 267b0477a29..12d8607a8bd 100644
--- a/source/blender/draw/engines/image/image_drawing_mode.hh
+++ b/source/blender/draw/engines/image/image_drawing_mode.hh
@@ -507,7 +507,9 @@ template<typename TextureMethod> class ScreenSpaceDrawingMode : public AbstractD
/* Step: Add the GPU textures to the shgroup. */
instance_data->update_batches();
- add_depth_shgroups(*instance_data, image, iuser);
+ if (!instance_data->flags.do_tile_drawing) {
+ add_depth_shgroups(*instance_data, image, iuser);
+ }
add_shgroups(instance_data);
}
@@ -523,8 +525,10 @@ template<typename TextureMethod> class ScreenSpaceDrawingMode : public AbstractD
DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
GPU_framebuffer_bind(dfbl->default_fb);
+
static float clear_col[4] = {0.0f, 0.0f, 0.0f, 0.0f};
- GPU_framebuffer_clear_color_depth(dfbl->default_fb, clear_col, 1.0);
+ float clear_depth = instance_data->flags.do_tile_drawing ? 0.75 : 1.0f;
+ GPU_framebuffer_clear_color_depth(dfbl->default_fb, clear_col, clear_depth);
DRW_view_set_active(instance_data->view);
DRW_draw_pass(instance_data->passes.depth_pass);
diff --git a/source/blender/draw/engines/image/image_instance_data.hh b/source/blender/draw/engines/image/image_instance_data.hh
index f8f20fbe178..7aeb423071e 100644
--- a/source/blender/draw/engines/image/image_instance_data.hh
+++ b/source/blender/draw/engines/image/image_instance_data.hh
@@ -121,7 +121,7 @@ struct IMAGE_InstanceData {
void update_image_usage(const ImageUser *image_user)
{
- ImageUsage usage(image, image_user);
+ ImageUsage usage(image, image_user, flags.do_tile_drawing);
if (last_usage != usage) {
last_usage = usage;
reset_dirty_flag(true);
diff --git a/source/blender/draw/engines/image/image_usage.hh b/source/blender/draw/engines/image/image_usage.hh
index bbd56e3db7a..a581731036e 100644
--- a/source/blender/draw/engines/image/image_usage.hh
+++ b/source/blender/draw/engines/image/image_usage.hh
@@ -24,7 +24,7 @@
/**
* ImageUsage contains data of the image and image user to identify changes that require a rebuild
- * of the texture slots.
+ * the texture slots.
*/
struct ImageUsage {
/** Render pass of the image that is used. */
@@ -37,11 +37,12 @@ struct ImageUsage {
ColorManagedColorspaceSettings colorspace_settings;
/** IMA_ALPHA_* */
char alpha_mode;
+ bool last_tile_drawing;
const void *last_image = nullptr;
ImageUsage() = default;
- ImageUsage(const struct Image *image, const struct ImageUser *image_user)
+ ImageUsage(const struct Image *image, const struct ImageUser *image_user, bool do_tile_drawing)
{
pass = image_user ? image_user->pass : 0;
layer = image_user ? image_user->layer : 0;
@@ -49,6 +50,7 @@ struct ImageUsage {
colorspace_settings = image->colorspace_settings;
alpha_mode = image->alpha_mode;
last_image = static_cast<const void *>(image);
+ last_tile_drawing = do_tile_drawing;
}
bool operator==(const ImageUsage &other) const