Cleanup: Use enum class for image drawing flags.
This commit is contained in:
parent
83b78b1976
commit
255c7f26af
|
@ -166,7 +166,7 @@ template<typename TextureMethod> class ScreenSpaceDrawingMode : public AbstractD
|
|||
DRWShadingGroup *shgrp = DRW_shgroup_create(shader, instance_data->passes.image_pass);
|
||||
DRW_shgroup_uniform_vec2_copy(shgrp, "farNearDistances", sh_params.far_near);
|
||||
DRW_shgroup_uniform_vec4_copy(shgrp, "shuffle", sh_params.shuffle);
|
||||
DRW_shgroup_uniform_int_copy(shgrp, "drawFlags", sh_params.flags);
|
||||
DRW_shgroup_uniform_int_copy(shgrp, "drawFlags", static_cast<int32_t>(sh_params.flags));
|
||||
DRW_shgroup_uniform_bool_copy(shgrp, "imgPremultiplied", sh_params.use_premul_alpha);
|
||||
DRW_shgroup_uniform_texture(shgrp, "depth_texture", dtxl->depth);
|
||||
float image_mat[4][4];
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
* Copyright 2021 Blender Foundation. */
|
||||
|
||||
/** \file
|
||||
* \ingroup draw_engine
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
namespace blender::draw::image_engine {
|
||||
|
||||
/* Shader parameters. */
|
||||
enum class ImageDrawFlags {
|
||||
Default = 0,
|
||||
ShowAlpha = (1 << 0),
|
||||
ApplyAlpha = (1 << 1),
|
||||
Shuffling = (1 << 2),
|
||||
Depth = (1 << 3)
|
||||
};
|
||||
ENUM_OPERATORS(ImageDrawFlags, ImageDrawFlags::Depth);
|
||||
|
||||
} // namespace blender::draw::image_engine
|
|
@ -34,11 +34,6 @@ struct IMAGE_Data {
|
|||
IMAGE_InstanceData *instance_data;
|
||||
};
|
||||
|
||||
/* Shader parameters. */
|
||||
#define IMAGE_DRAW_FLAG_SHOW_ALPHA (1 << 0)
|
||||
#define IMAGE_DRAW_FLAG_APPLY_ALPHA (1 << 1)
|
||||
#define IMAGE_DRAW_FLAG_SHUFFLING (1 << 2)
|
||||
#define IMAGE_DRAW_FLAG_DEPTH (1 << 3)
|
||||
|
||||
/**
|
||||
* Abstract class for a drawing mode of the image engine.
|
||||
|
|
|
@ -17,19 +17,20 @@
|
|||
|
||||
#include "BLI_math.h"
|
||||
|
||||
#include "image_enums.hh"
|
||||
#include "image_space.hh"
|
||||
|
||||
namespace blender::draw::image_engine {
|
||||
|
||||
struct ShaderParameters {
|
||||
int flags = 0;
|
||||
ImageDrawFlags flags = ImageDrawFlags::Default;
|
||||
float shuffle[4];
|
||||
float far_near[2];
|
||||
bool use_premul_alpha = false;
|
||||
|
||||
void update(AbstractSpaceAccessor *space, const Scene *scene, Image *image, ImBuf *image_buffer)
|
||||
{
|
||||
flags = 0;
|
||||
flags = ImageDrawFlags::Default;
|
||||
copy_v4_fl(shuffle, 1.0f);
|
||||
copy_v2_fl2(far_near, 100.0f, 0.0f);
|
||||
|
||||
|
|
|
@ -44,40 +44,40 @@ class SpaceImageAccessor : public AbstractSpaceAccessor {
|
|||
const int sima_flag = sima->flag & ED_space_image_get_display_channel_mask(image_buffer);
|
||||
if ((sima_flag & SI_USE_ALPHA) != 0) {
|
||||
/* Show RGBA */
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHOW_ALPHA | IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ShowAlpha | ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
else if ((sima_flag & SI_SHOW_ALPHA) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Shuffling;
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
else if ((sima_flag & SI_SHOW_ZBUF) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_DEPTH | IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Depth | ImageDrawFlags::Shuffling;
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 1.0f, 0.0f, 0.0f, 0.0f);
|
||||
}
|
||||
else if ((sima_flag & SI_SHOW_R) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Shuffling;
|
||||
if (IMB_alpha_affects_rgb(image_buffer)) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 1.0f, 0.0f, 0.0f, 0.0f);
|
||||
}
|
||||
else if ((sima_flag & SI_SHOW_G) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Shuffling;
|
||||
if (IMB_alpha_affects_rgb(image_buffer)) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 0.0f, 1.0f, 0.0f, 0.0f);
|
||||
}
|
||||
else if ((sima_flag & SI_SHOW_B) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Shuffling;
|
||||
if (IMB_alpha_affects_rgb(image_buffer)) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 0.0f, 0.0f, 1.0f, 0.0f);
|
||||
}
|
||||
else /* RGB */ {
|
||||
if (IMB_alpha_affects_rgb(image_buffer)) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,36 +43,36 @@ class SpaceNodeAccessor : public AbstractSpaceAccessor {
|
|||
{
|
||||
if ((snode->flag & SNODE_USE_ALPHA) != 0) {
|
||||
/* Show RGBA */
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHOW_ALPHA | IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ShowAlpha | ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
else if ((snode->flag & SNODE_SHOW_ALPHA) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Shuffling;
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
else if ((snode->flag & SNODE_SHOW_R) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Shuffling;
|
||||
if (IMB_alpha_affects_rgb(ibuf)) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 1.0f, 0.0f, 0.0f, 0.0f);
|
||||
}
|
||||
else if ((snode->flag & SNODE_SHOW_G) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Shuffling;
|
||||
if (IMB_alpha_affects_rgb(ibuf)) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 0.0f, 1.0f, 0.0f, 0.0f);
|
||||
}
|
||||
else if ((snode->flag & SNODE_SHOW_B) != 0) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHUFFLING;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::Shuffling;
|
||||
if (IMB_alpha_affects_rgb(ibuf)) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
copy_v4_fl4(r_shader_parameters.shuffle, 0.0f, 0.0f, 1.0f, 0.0f);
|
||||
}
|
||||
else /* RGB */ {
|
||||
if (IMB_alpha_affects_rgb(ibuf)) {
|
||||
r_shader_parameters.flags |= IMAGE_DRAW_FLAG_APPLY_ALPHA;
|
||||
r_shader_parameters.flags |= ImageDrawFlags::ApplyAlpha;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue