Blender  V3.3
select_debug_engine.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2019 Blender Foundation. */
3 
10 #include "DNA_ID.h"
11 #include "DNA_vec_types.h"
12 
13 #include "DRW_engine.h"
14 #include "DRW_select_buffer.h"
15 
16 #include "draw_cache.h"
17 #include "draw_manager.h"
18 
19 #include "select_engine.h"
20 
21 #define SELECT_DEBUG_ENGINE "SELECT_DEBUG_ENGINE"
22 
23 /* -------------------------------------------------------------------- */
27 typedef struct SELECTIDDEBUG_PassList {
30 
31 typedef struct SELECTIDDEBUG_Data {
32  void *engine_type;
38 
39 static struct {
41 } e_data = {{NULL}}; /* Engine data */
42 
45 /* -------------------------------------------------------------------- */
49 static void select_debug_engine_init(void *vedata)
50 {
51  SELECTIDDEBUG_PassList *psl = ((SELECTIDDEBUG_Data *)vedata)->psl;
52 
53  if (!e_data.select_debug_sh) {
54  e_data.select_debug_sh = DRW_shader_create_fullscreen(
55  "uniform usampler2D image;"
56  "in vec4 uvcoordsvar;"
57  "out vec4 fragColor;"
58  "void main() {"
59  " uint px = texture(image, uvcoordsvar.xy).r;"
60  " fragColor = vec4(1.0, 1.0, 1.0, 0.0);"
61  " if (px != 0u) {"
62  " fragColor.a = 1.0;"
63  " px &= 0x3Fu;"
64  " fragColor.r = ((px >> 0) & 0x3u) / float(0x3u);"
65  " fragColor.g = ((px >> 2) & 0x3u) / float(0x3u);"
66  " fragColor.b = ((px >> 4) & 0x3u) / float(0x3u);"
67  " }"
68  "}\n",
69  NULL);
70  }
71 
74  if (texture_u32) {
75  DRWShadingGroup *shgrp = DRW_shgroup_create(e_data.select_debug_sh, psl->debug_pass);
78  }
79 }
80 
81 static void select_debug_draw_scene(void *vedata)
82 {
83  SELECTIDDEBUG_PassList *psl = ((SELECTIDDEBUG_Data *)vedata)->psl;
85 }
86 
87 static void select_debug_engine_free(void)
88 {
89  DRW_SHADER_FREE_SAFE(e_data.select_debug_sh);
90 }
91 
94 /* -------------------------------------------------------------------- */
100 
102  NULL,
103  NULL,
104  N_("Select ID Debug"),
108  NULL, /* instance_free */
109  NULL,
110  NULL,
111  NULL,
113  NULL,
114  NULL,
115  NULL,
116  NULL,
117 };
118 
121 #undef SELECT_DEBUG_ENGINE
ID and Library types, which are fundamental for sdna.
char DRWViewportEmptyList
Definition: DRW_render.h:90
#define DRW_shader_create_fullscreen(frag, defines)
Definition: DRW_render.h:234
@ DRW_STATE_BLEND_ALPHA
Definition: DRW_render.h:328
@ DRW_STATE_WRITE_COLOR
Definition: DRW_render.h:303
#define DRW_SHADER_FREE_SAFE(shader)
Definition: DRW_render.h:254
#define DRW_VIEWPORT_DATA_SIZE(ty)
Definition: DRW_render.h:96
struct GPUShader GPUShader
Definition: GPU_shader.h:20
struct GPUTexture GPUTexture
Definition: GPU_texture.h:17
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *shgroup, Object *ob, uint tri_count)
DRWShadingGroup * DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass)
DRWPass * DRW_pass_create(const char *name, DRWState state)
void DRW_draw_pass(DRWPass *pass)
static struct @267 e_data
static void select_debug_draw_scene(void *vedata)
struct GPUShader * select_debug_sh
DrawEngineType draw_engine_debug_select_type
struct SELECTIDDEBUG_Data SELECTIDDEBUG_Data
static const DrawEngineDataSize select_debug_data_size
static void select_debug_engine_init(void *vedata)
static void select_debug_engine_free(void)
struct SELECTIDDEBUG_PassList SELECTIDDEBUG_PassList
struct GPUTexture * texture_u32
Definition: select_engine.c:29
GPUTexture * DRW_engine_select_texture_get(void)
DRWViewportEmptyList * txl
DRWViewportEmptyList * fbl
SELECTIDDEBUG_PassList * psl
DRWViewportEmptyList * stl
struct DRWPass * debug_pass
#define N_(msgid)