Blender V4.5
draw_view_data.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2021 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
11
12#pragma once
13
14#include "BLI_map.hh"
16
17#include "DRW_render.hh"
19
28
29#define GPU_INFO_SIZE 512 /* IMA_MAX_RENDER_TEXT_SIZE */
30
31namespace blender::draw {
32class TextureFromPool;
33class Manager;
34} // namespace blender::draw
35
36struct DRWTextStore;
37struct GPUFrameBuffer;
38struct GPUTexture;
39struct GPUViewport;
40struct ListBase;
41
44 GPUFrameBuffer *default_fb;
45 GPUFrameBuffer *overlay_fb;
46 GPUFrameBuffer *in_front_fb;
47 GPUFrameBuffer *color_only_fb;
48 GPUFrameBuffer *depth_only_fb;
49 GPUFrameBuffer *overlay_only_fb;
50};
51
53 GPUTexture *color;
54 GPUTexture *color_overlay;
55 GPUTexture *depth;
56 GPUTexture *depth_in_front;
57};
58
60 public:
64 bool from_viewport = false;
68
78#ifdef WITH_DRAW_DEBUG
79 blender::draw::edit_select_debug::Engine edit_select_debug;
80#endif
82
91
94
95 public:
98
100
101 template<typename CallbackT> void foreach_engine(CallbackT callback)
102 {
103 /* IMPORTANT: Order here defines the draw order. */
104
105 /* Render engines. Output to the render result frame-buffer. Mutually exclusive. */
106
107 callback(eevee);
108 callback(workbench);
109 callback(external);
110 callback(image);
111#ifdef WITH_DRAW_DEBUG
112 callback(edit_select_debug);
113#endif
115 callback(grease_pencil);
117 callback(compositor);
119 callback(overlay);
120
122 callback(object_select);
123 callback(edit_select);
124 }
125
126 template<typename CallbackT> void foreach_enabled_engine(CallbackT callback)
127 {
129 if (ptr.instance == nullptr || ptr.instance->used == false) {
130 return;
131 }
132 callback(*ptr.instance);
133 });
134 }
135
136 private:
137 void clear(bool free_instance_data);
138};
139
141void DRW_view_data_reset(DRWViewData *view_data);
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
void DRW_view_data_default_lists_from_viewport(DRWViewData *view_data, GPUViewport *viewport)
void DRW_view_data_reset(DRWViewData *view_data)
void DRW_view_data_free_unused(DRWViewData *view_data)
static void clear(Message &msg)
Definition msgfmt.cc:213
VecBase< int32_t, 2 > int2
blender::draw::external::Engine external
void foreach_engine(CallbackT callback)
blender::draw::select::Engine object_select
DefaultTextureList dtxl
blender::Map< std::string, std::unique_ptr< blender::draw::TextureFromPool > > viewport_compositor_passes
DefaultFramebufferList dfbl
blender::draw::Manager * manager
void foreach_enabled_engine(CallbackT callback)
blender::workbench::Engine workbench
blender::draw::compositor_engine::Engine compositor
blender::draw::gpencil::Engine grease_pencil
blender::image_engine::Engine image
blender::draw::overlay::Engine overlay
blender::draw::edit_select::Engine edit_select
blender::eevee::Engine eevee
void texture_list_size_validate(const blender::int2 &size)
blender::int2 texture_list_size
GPUFrameBuffer * depth_only_fb
GPUFrameBuffer * overlay_fb
GPUFrameBuffer * color_only_fb
GPUFrameBuffer * in_front_fb
GPUFrameBuffer * overlay_only_fb
GPUFrameBuffer * default_fb
GPUTexture * depth_in_front
GPUTexture * color_overlay
PointerRNA * ptr
Definition wm_files.cc:4227