Blender V4.3
select_debug_engine.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2019 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
11#include "DNA_ID.h"
12#include "DNA_vec_types.h"
13
14#include "DRW_engine.hh"
15#include "DRW_select_buffer.hh"
16
17#include "draw_cache.hh"
18#include "draw_manager_c.hh"
19
20#include "select_engine.hh"
21
22#define SELECT_DEBUG_ENGINE "SELECT_DEBUG_ENGINE"
23
24/* -------------------------------------------------------------------- */
31
39
40static struct {
42} e_data = {{nullptr}}; /* Engine data */
43
46/* -------------------------------------------------------------------- */
50static void select_debug_engine_init(void *vedata)
51{
52 SELECTIDDEBUG_PassList *psl = ((SELECTIDDEBUG_Data *)vedata)->psl;
53
54 if (!e_data.select_debug_sh) {
55 e_data.select_debug_sh = GPU_shader_create_from_info_name("select_debug_fullscreen");
56 }
57
59 GPUTexture *texture_u32 = DRW_engine_select_texture_get();
60 if (texture_u32) {
61 DRWShadingGroup *shgrp = DRW_shgroup_create(e_data.select_debug_sh, psl->debug_pass);
62 DRW_shgroup_uniform_texture(shgrp, "image", texture_u32);
64 }
65}
66
67static void select_debug_draw_scene(void *vedata)
68{
69 SELECTIDDEBUG_PassList *psl = ((SELECTIDDEBUG_Data *)vedata)->psl;
71}
72
73static void select_debug_engine_free(void)
74{
75 DRW_SHADER_FREE_SAFE(e_data.select_debug_sh);
76}
77
80/* -------------------------------------------------------------------- */
86
88 /*next*/ nullptr,
89 /*prev*/ nullptr,
90 /*idname*/ N_("Select ID Debug"),
91 /*vedata_size*/ &select_debug_data_size,
92 /*engine_init*/ &select_debug_engine_init,
93 /*engine_free*/ &select_debug_engine_free,
94 /*instance_free*/ nullptr,
95 /*cache_init*/ nullptr,
96 /*cache_populate*/ nullptr,
97 /*cache_finish*/ nullptr,
98 /*draw_scene*/ &select_debug_draw_scene,
99 /*view_update*/ nullptr,
100 /*id_update*/ nullptr,
101 /*render_to_image*/ nullptr,
102 /*store_metadata*/ nullptr,
103};
104
107#undef SELECT_DEBUG_ENGINE
ID and Library types, which are fundamental for SDNA.
char DRWViewportEmptyList
Definition DRW_render.hh:97
#define DRW_SHADER_FREE_SAFE(shader)
#define DRW_VIEWPORT_DATA_SIZE(ty)
GPUShader * GPU_shader_create_from_info_name(const char *info_name)
struct GPUShader GPUShader
DRWShadingGroup * DRW_shgroup_create(GPUShader *shader, DRWPass *pass)
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
DRWPass * DRW_pass_create(const char *name, DRWState state)
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *shgroup, const Object *ob, uint tri_count)
void DRW_draw_pass(DRWPass *pass)
@ DRW_STATE_BLEND_ALPHA
Definition draw_state.hh:55
@ DRW_STATE_WRITE_COLOR
Definition draw_state.hh:30
static void select_debug_draw_scene(void *vedata)
struct GPUShader * select_debug_sh
DrawEngineType draw_engine_debug_select_type
static struct @245 e_data
static const DrawEngineDataSize select_debug_data_size
static void select_debug_engine_init(void *vedata)
static void select_debug_engine_free(void)
GPUTexture * DRW_engine_select_texture_get()
DRWViewportEmptyList * txl
DRWViewportEmptyList * fbl
SELECTIDDEBUG_PassList * psl
DRWViewportEmptyList * stl
#define N_(msgid)