Blender V4.5
draw_view_info.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#include "draw_defines.hh"
6
7#ifdef GPU_SHADER
8# pragma once
9# include "gpu_glsl_cpp_stubs.hh"
10
11# include "draw_command_shared.hh"
12# include "draw_shader_shared.hh"
13
14/* Define stub defines for C++ test compilation. */
15# define DRAW_VIEW_CREATE_INFO
16# define DRW_VIEW_CULLING_INFO
17# define USE_WORLD_CLIP_PLANES
18
19# define DRW_VIEW_LEN DRW_VIEW_MAX
20#endif
21
23
24/* -------------------------------------------------------------------- */
28
33GPU_SHADER_NAMED_INTERFACE_INFO(draw_resource_id_iface, drw_ResourceID_iface)
34FLAT(uint, resource_index)
35GPU_SHADER_NAMED_INTERFACE_END(drw_ResourceID_iface)
36
37GPU_SHADER_CREATE_INFO(draw_resource_id_varying)
38VERTEX_OUT(draw_resource_id_iface)
39GEOMETRY_OUT(draw_resource_id_iface)
41
42GPU_SHADER_CREATE_INFO(draw_resource_id)
43STORAGE_BUF(DRW_RESOURCE_ID_SLOT, read, uint, resource_id_buf[])
45
46GPU_SHADER_CREATE_INFO(draw_resource_with_custom_id)
47DEFINE("WITH_CUSTOM_IDS")
48STORAGE_BUF(DRW_RESOURCE_ID_SLOT, read, uint2, resource_id_buf[])
50
54GPU_SHADER_CREATE_INFO(draw_resource_id_fallback)
55DEFINE("RESOURCE_ID_FALLBACK")
56VERTEX_IN(15, uint, in_resource_id)
58
59GPU_SHADER_CREATE_INFO(draw_resource_with_custom_id_fallback)
60DEFINE("RESOURCE_ID_FALLBACK")
61DEFINE("WITH_CUSTOM_IDS")
62VERTEX_IN(15, uint2, in_resource_id_custom_id)
64
66
67/* -------------------------------------------------------------------- */
70
71GPU_SHADER_CREATE_INFO(draw_modelmat_common)
72TYPEDEF_SOURCE("draw_shader_shared.hh")
74DEFINE("DRAW_MODELMAT_CREATE_INFO")
76
77GPU_SHADER_CREATE_INFO(draw_modelmat)
78ADDITIONAL_INFO(draw_modelmat_common)
79ADDITIONAL_INFO(draw_resource_id)
81
82GPU_SHADER_CREATE_INFO(draw_modelmat_with_custom_id)
83ADDITIONAL_INFO(draw_modelmat_common)
84ADDITIONAL_INFO(draw_resource_with_custom_id)
86
88
89/* -------------------------------------------------------------------- */
92
95DEFINE("DRAW_VIEW_CREATE_INFO")
96TYPEDEF_SOURCE("draw_shader_shared.hh")
98
99GPU_SHADER_CREATE_INFO(draw_view_culling)
101DEFINE("DRW_VIEW_CULLING_INFO")
102TYPEDEF_SOURCE("draw_shader_shared.hh")
104
106
107/* -------------------------------------------------------------------- */
110
111GPU_SHADER_CREATE_INFO(drw_clipped)
112/* TODO(fclem): Move to engine side. */
113UNIFORM_BUF_FREQ(DRW_CLIPPING_UBO_SLOT, float4, drw_clipping_[6], PASS)
114DEFINE("USE_WORLD_CLIP_PLANES")
116
118
119/* -------------------------------------------------------------------- */
122
123GPU_SHADER_CREATE_INFO(draw_resource_finalize)
125TYPEDEF_SOURCE("draw_shader_shared.hh")
126DEFINE("DRAW_FINALIZE_SHADER")
128STORAGE_BUF(0, read, ObjectMatrices, matrix_buf[])
129STORAGE_BUF(1, read_write, ObjectBounds, bounds_buf[])
130STORAGE_BUF(2, read_write, ObjectInfos, infos_buf[])
131PUSH_CONSTANT(int, resource_len)
132COMPUTE_SOURCE("draw_resource_finalize_comp.glsl")
134
135GPU_SHADER_CREATE_INFO(draw_view_finalize)
138DEFINE_VALUE("DRW_VIEW_LEN", STRINGIFY(DRW_VIEW_MAX))
139STORAGE_BUF(0, read_write, ViewCullingData, view_culling_buf[DRW_VIEW_LEN])
140COMPUTE_SOURCE("draw_view_finalize_comp.glsl")
141ADDITIONAL_INFO(draw_view)
143
144GPU_SHADER_CREATE_INFO(draw_visibility_compute)
147DEFINE_VALUE("DRW_VIEW_LEN", STRINGIFY(DRW_VIEW_MAX))
148STORAGE_BUF(0, read, ObjectBounds, bounds_buf[])
149STORAGE_BUF(1, read_write, uint, visibility_buf[])
150PUSH_CONSTANT(int, resource_len)
151PUSH_CONSTANT(int, view_len)
152PUSH_CONSTANT(int, visibility_word_per_draw)
153COMPUTE_SOURCE("draw_visibility_comp.glsl")
154ADDITIONAL_INFO(draw_view)
155ADDITIONAL_INFO(draw_view_culling)
157
158GPU_SHADER_CREATE_INFO(draw_command_generate)
160TYPEDEF_SOURCE("draw_shader_shared.hh")
161TYPEDEF_SOURCE("draw_command_shared.hh")
163STORAGE_BUF(0, read_write, DrawGroup, group_buf[])
164STORAGE_BUF(1, read, uint, visibility_buf[])
165STORAGE_BUF(2, read, DrawPrototype, prototype_buf[])
166STORAGE_BUF(3, write, DrawCommand, command_buf[])
167STORAGE_BUF(DRW_RESOURCE_ID_SLOT, write, uint, resource_id_buf[])
168PUSH_CONSTANT(int, prototype_len)
169PUSH_CONSTANT(int, visibility_word_per_draw)
170PUSH_CONSTANT(int, view_shift)
171PUSH_CONSTANT(int, view_len)
172PUSH_CONSTANT(bool, use_custom_ids)
173COMPUTE_SOURCE("draw_command_generate_comp.glsl")
175
177
178/* Stub needs to be after all definitions to avoid conflict with legacy definitions. */
179#ifdef GPU_SHADER
180/* Make it work for both draw_resource_id and draw_resource_with_custom_id. */
181# define resource_id_buf float2(0)
182#endif
unsigned int uint
#define STRINGIFY(x)
#define DRW_RESOURCE_ID_SLOT
#define DRW_VISIBILITY_GROUP_SIZE
#define DRW_FINALIZE_GROUP_SIZE
#define DRW_VIEW_CULLING_UBO_SLOT
#define DRW_COMMAND_GROUP_SIZE
#define DRW_CLIPPING_UBO_SLOT
#define DRW_VIEW_MAX
#define DRW_VIEW_UBO_SLOT
#define DRW_OBJ_MAT_SLOT
#define DRW_VIEW_LEN
VecBase< float, 4 > float4
#define TYPEDEF_SOURCE(filename)
#define VERTEX_OUT(stage_interface)
#define UNIFORM_BUF(slot, type_name, name)
#define GEOMETRY_OUT(stage_interface)
#define ADDITIONAL_INFO(info_name)
#define PUSH_CONSTANT(type, name)
#define DEFINE(name)
#define GPU_SHADER_NAMED_INTERFACE_INFO(_interface, _inst_name)
#define FLAT(type, name)
#define GPU_SHADER_NAMED_INTERFACE_END(_inst_name)
#define UNIFORM_BUF_FREQ(slot, type_name, name, freq)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define GPU_SHADER_CREATE_INFO(_info)
#define LOCAL_GROUP_SIZE(...)
#define VERTEX_IN(slot, type, name)
#define GPU_SHADER_CREATE_END()
#define COMPUTE_SOURCE(filename)
#define DO_STATIC_COMPILATION()
#define DEFINE_VALUE(name, value)
read