Blender V5.0
overlay_shader.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#include "overlay_private.hh"
10
11namespace blender::draw::overlay {
12
13StaticShader ShaderModule::shader_clippable(const char *create_info_name)
14{
15 std::string name = create_info_name;
16
17 if (clipping_enabled_) {
18 name += "_clipped";
19 }
20
21 return StaticShader(name);
22}
23
24StaticShader ShaderModule::shader_selectable(const char *create_info_name)
25{
26 std::string name = create_info_name;
27
28 if (selection_type_ != SelectionType::DISABLED) {
29 name += "_selectable";
30 }
31
32 if (clipping_enabled_) {
33 name += "_clipped";
34 }
35
36 return StaticShader(name);
37}
38
39StaticShader ShaderModule::shader_selectable_no_clip(const char *create_info_name)
40{
41 std::string name = create_info_name;
42
43 if (selection_type_ != SelectionType::DISABLED) {
44 name += "_selectable";
45 }
46
47 return StaticShader(name);
48}
49
50using namespace blender::gpu::shader;
51
52ShaderModule &ShaderModule::module_get(SelectionType selection_type, bool clipping_enabled)
53{
54 int selection_index = selection_type == SelectionType::DISABLED ? 0 : 1;
55 return get_static_cache()[selection_index][clipping_enabled].get(selection_type,
56 clipping_enabled);
57}
58
60{
61 for (int i : IndexRange(2)) {
62 for (int j : IndexRange(2)) {
63 get_static_cache()[i][j].release();
64 }
65 }
66}
67
68} // namespace blender::draw::overlay
static ShaderModule * module_get()
gpu::StaticShader StaticShader
select::SelectionType SelectionType
const char * name
i
Definition text_draw.cc:230