Blender V5.0
overlay_common_infos.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
7#ifdef GPU_SHADER
8# pragma once
9# include "gpu_shader_compat.hh"
10
13#endif
14
15#include "select_defines.hh"
16
18
19GPU_SHADER_CREATE_INFO(draw_globals)
20TYPEDEF_SOURCE("overlay_shader_shared.hh")
23
24GPU_SHADER_INTERFACE_INFO(select_id_patch_iface)
25FLAT(uint, select_id)
27
28/* Used to patch overlay shaders. */
29GPU_SHADER_CREATE_INFO(select_id_patch)
30TYPEDEF_SOURCE("select_shader_shared.hh")
31VERTEX_OUT(select_id_patch_iface)
32/* This is on purpose. We want all fragment to be considered during selection.
33 * Selection in object mode is not yet depth aware (see #135898). */
34// EARLY_FRAGMENT_TEST(true)
35UNIFORM_BUF(SELECT_DATA, SelectInfoData, select_info_buf)
36/* Select IDs for instanced draw-calls not using #PassMain. */
37STORAGE_BUF(SELECT_ID_IN, read, uint, in_select_buf[])
38/* Stores the result of the whole selection drawing. Content depends on selection mode. */
39STORAGE_BUF(SELECT_ID_OUT, read_write, uint, out_select_buf[])
41
42GPU_SHADER_CREATE_INFO(overlay_select)
43DEFINE("SELECT_ENABLE")
44ADDITIONAL_INFO(select_id_patch)
46
47#define OVERLAY_INFO_CLIP_VARIATION(name) \
48 GPU_SHADER_CREATE_INFO(name##_clipped) \
49 DO_STATIC_COMPILATION() \
50 ADDITIONAL_INFO(name) \
51 ADDITIONAL_INFO(drw_clipped) \
52 GPU_SHADER_CREATE_END()
53
54#define OVERLAY_INFO_SELECT_VARIATION(name) \
55 GPU_SHADER_CREATE_INFO(name##_selectable) \
56 DO_STATIC_COMPILATION() \
57 ADDITIONAL_INFO(name) \
58 ADDITIONAL_INFO(overlay_select) \
59 GPU_SHADER_CREATE_END()
60
61#define OVERLAY_INFO_VARIATIONS(name) \
62 OVERLAY_INFO_SELECT_VARIATION(name) \
63 OVERLAY_INFO_CLIP_VARIATION(name) \
64 OVERLAY_INFO_CLIP_VARIATION(name##_selectable)
65
66#define OVERLAY_INFO_VARIATIONS_MODELMAT(name, base_info) \
67 GPU_SHADER_CREATE_INFO(name) \
68 DO_STATIC_COMPILATION() \
69 ADDITIONAL_INFO(base_info) \
70 ADDITIONAL_INFO(draw_modelmat) \
71 GPU_SHADER_CREATE_END() \
72\
73 GPU_SHADER_CREATE_INFO(name##_selectable) \
74 DO_STATIC_COMPILATION() \
75 ADDITIONAL_INFO(base_info) \
76 ADDITIONAL_INFO(draw_modelmat_with_custom_id) \
77 ADDITIONAL_INFO(overlay_select) \
78 GPU_SHADER_CREATE_END() \
79\
80 OVERLAY_INFO_CLIP_VARIATION(name) \
81 OVERLAY_INFO_CLIP_VARIATION(name##_selectable)
unsigned int uint
#define OVERLAY_GLOBALS_SLOT
#define GPU_SHADER_INTERFACE_END()
#define GPU_SHADER_INTERFACE_INFO(_interface)
#define GPU_SHADER_CREATE_INFO(_info)
#define GPU_SHADER_CREATE_END()
#define TYPEDEF_SOURCE(filename)
#define VERTEX_OUT(stage_interface)
#define UNIFORM_BUF(slot, type_name, name)
#define ADDITIONAL_INFO(info_name)
#define DEFINE(name)
#define FLAT(type, name)
#define UNIFORM_BUF_FREQ(slot, type_name, name, freq)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define SELECT_DATA
#define SELECT_ID_IN
#define SELECT_ID_OUT