Blender V4.5
overlay_extra_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#ifdef GPU_SHADER
6# pragma once
7# include "gpu_glsl_cpp_stubs.hh"
8
10# include "draw_view_info.hh"
11
12# include "gpu_index_load_info.hh"
13
15#endif
16
18
19/* -------------------------------------------------------------------- */
22
23GPU_SHADER_INTERFACE_INFO(overlay_extra_iface)
24NO_PERSPECTIVE(float2, edge_pos)
25FLAT(float2, edge_start)
26FLAT(float4, final_color)
28
29GPU_SHADER_CREATE_INFO(overlay_extra)
31TYPEDEF_SOURCE("overlay_shader_shared.hh")
33VERTEX_IN(1, int, vclass)
34VERTEX_OUT(overlay_extra_iface)
35FRAGMENT_OUT(0, float4, frag_color)
36FRAGMENT_OUT(1, float4, line_output)
37VERTEX_SOURCE("overlay_extra_vert.glsl")
38FRAGMENT_SOURCE("overlay_extra_frag.glsl")
39ADDITIONAL_INFO(draw_view)
40ADDITIONAL_INFO(draw_globals)
41STORAGE_BUF(0, read, ExtraInstanceData, data_buf[])
43
44OVERLAY_INFO_VARIATIONS(overlay_extra)
45
46GPU_SHADER_CREATE_INFO(overlay_extra_spot_cone)
48ADDITIONAL_INFO(overlay_extra)
49DEFINE("IS_SPOT_CONE")
51
52OVERLAY_INFO_CLIP_VARIATION(overlay_extra_spot_cone)
53
55
56/* -------------------------------------------------------------------- */
59
60GPU_SHADER_INTERFACE_INFO(overlay_extra_grid_iface)
61FLAT(float4, final_color)
63
64GPU_SHADER_CREATE_INFO(overlay_extra_grid_base)
65SAMPLER(0, sampler2DDepth, depth_buffer)
66PUSH_CONSTANT(float4x4, grid_model_matrix)
67PUSH_CONSTANT(bool, is_transform)
68VERTEX_OUT(overlay_extra_grid_iface)
69FRAGMENT_OUT(0, float4, frag_color)
70VERTEX_SOURCE("overlay_extra_lightprobe_grid_vert.glsl")
71FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
72ADDITIONAL_INFO(draw_view)
73ADDITIONAL_INFO(draw_globals)
75
76OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_extra_grid, overlay_extra_grid_base)
77
79
80/* -------------------------------------------------------------------- */
83
84GPU_SHADER_CREATE_INFO(overlay_extra_groundline)
87/* Instance attributes. */
88VERTEX_OUT(overlay_extra_iface)
89FRAGMENT_OUT(0, float4, frag_color)
90FRAGMENT_OUT(1, float4, line_output)
91VERTEX_SOURCE("overlay_extra_groundline_vert.glsl")
92FRAGMENT_SOURCE("overlay_extra_frag.glsl")
93ADDITIONAL_INFO(draw_view)
94ADDITIONAL_INFO(draw_globals)
95STORAGE_BUF(0, read, float4, data_buf[])
97
98OVERLAY_INFO_VARIATIONS(overlay_extra_groundline)
99
101
102/* -------------------------------------------------------------------- */
105
106GPU_SHADER_INTERFACE_INFO(overlay_extra_wire_iface)
107NO_PERSPECTIVE(float2, stipple_coord)
108FLAT(float2, stipple_start)
109FLAT(float4, final_color)
111
112GPU_SHADER_CREATE_INFO(overlay_extra_wire_base)
113VERTEX_OUT(overlay_extra_wire_iface)
114FRAGMENT_OUT(0, float4, frag_color)
115FRAGMENT_OUT(1, float4, line_output)
116VERTEX_SOURCE("overlay_extra_wire_vert.glsl")
117FRAGMENT_SOURCE("overlay_extra_wire_frag.glsl")
118TYPEDEF_SOURCE("overlay_shader_shared.hh")
119STORAGE_BUF(0, read, VertexData, data_buf[])
120PUSH_CONSTANT(int, colorid)
121DEFINE_VALUE("pos", "data_buf[gl_VertexID].pos_.xyz")
122DEFINE_VALUE("color", "data_buf[gl_VertexID].color_")
123ADDITIONAL_INFO(draw_view)
124ADDITIONAL_INFO(draw_globals)
126
127OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_extra_wire, overlay_extra_wire_base)
128
129GPU_SHADER_CREATE_INFO(overlay_extra_wire_object_base)
131VERTEX_IN(1, float4, color)
132/* If colorid is equal to 0 (i.e: Not specified) use color attribute and stippling. */
133VERTEX_IN(2, int, colorid)
134VERTEX_OUT(overlay_extra_wire_iface)
135FRAGMENT_OUT(0, float4, frag_color)
136FRAGMENT_OUT(1, float4, line_output)
137VERTEX_SOURCE("overlay_extra_wire_vert.glsl")
138FRAGMENT_SOURCE("overlay_extra_wire_frag.glsl")
139DEFINE("OBJECT_WIRE")
140ADDITIONAL_INFO(draw_view)
141ADDITIONAL_INFO(draw_globals)
143
144OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_extra_wire_object, overlay_extra_wire_object_base)
145
147
148/* -------------------------------------------------------------------- */
151
152GPU_SHADER_INTERFACE_INFO(overlay_extra_point_iface)
153FLAT(float4, radii)
154FLAT(float4, fill_color)
155FLAT(float4, outline_color)
157
158GPU_SHADER_CREATE_INFO(overlay_extra_point_base)
159/* TODO(fclem): Move the vertex shader to Overlay engine and remove this bypass. */
160DEFINE_VALUE("blender_srgb_to_framebuffer_space(a)", "a")
161VERTEX_OUT(overlay_extra_point_iface)
162FRAGMENT_OUT(0, float4, frag_color)
163VERTEX_SOURCE("overlay_extra_point_vert.glsl")
164FRAGMENT_SOURCE("overlay_point_varying_color_varying_outline_aa_frag.glsl")
165ADDITIONAL_INFO(draw_view)
166ADDITIONAL_INFO(draw_globals)
167TYPEDEF_SOURCE("overlay_shader_shared.hh")
168STORAGE_BUF(0, read, VertexData, data_buf[])
170
171OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_extra_point, overlay_extra_point_base)
172
173GPU_SHADER_INTERFACE_INFO(overlay_extra_loose_point_iface)
174SMOOTH(float4, final_color)
176
177GPU_SHADER_CREATE_INFO(overlay_extra_loose_point_base)
178VERTEX_OUT(overlay_extra_loose_point_iface)
179FRAGMENT_OUT(0, float4, frag_color)
180FRAGMENT_OUT(1, float4, line_output)
181VERTEX_SOURCE("overlay_extra_loose_point_vert.glsl")
182FRAGMENT_SOURCE("overlay_extra_loose_point_frag.glsl")
183TYPEDEF_SOURCE("overlay_shader_shared.hh")
184STORAGE_BUF(0, read, VertexData, data_buf[])
185ADDITIONAL_INFO(draw_view)
186ADDITIONAL_INFO(draw_globals)
188
189OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_extra_loose_point, overlay_extra_loose_point_base)
190
192
193/* -------------------------------------------------------------------- */
196
197GPU_SHADER_NAMED_INTERFACE_INFO(overlay_motion_path_line_iface, interp)
198SMOOTH(float4, color)
200
201GPU_SHADER_CREATE_INFO(overlay_motion_path_line)
203STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
204PUSH_CONSTANT(int2, gpu_attr_0)
205PUSH_CONSTANT(int4, mpath_line_settings)
206PUSH_CONSTANT(bool, selected)
207PUSH_CONSTANT(float3, custom_color_pre)
208PUSH_CONSTANT(float3, custom_color_post)
209PUSH_CONSTANT(int, line_thickness) /* In pixels. */
210PUSH_CONSTANT(float4x4, camera_space_matrix)
211VERTEX_OUT(overlay_motion_path_line_iface)
212FRAGMENT_OUT(0, float4, frag_color)
213VERTEX_SOURCE("overlay_motion_path_line_vert.glsl")
214FRAGMENT_SOURCE("overlay_motion_path_line_frag.glsl")
215ADDITIONAL_INFO(draw_view)
216ADDITIONAL_INFO(gpu_index_buffer_load)
217ADDITIONAL_INFO(draw_globals)
219
220OVERLAY_INFO_CLIP_VARIATION(overlay_motion_path_line)
221
222GPU_SHADER_INTERFACE_INFO(overlay_motion_path_point_iface)
223FLAT(float4, final_color)
225
226GPU_SHADER_CREATE_INFO(overlay_motion_path_point)
228TYPEDEF_SOURCE("overlay_shader_shared.hh")
230VERTEX_IN(1, int, flag)
231PUSH_CONSTANT(int4, mpath_point_settings)
232PUSH_CONSTANT(bool, show_key_frames)
233PUSH_CONSTANT(float3, custom_color_pre)
234PUSH_CONSTANT(float3, custom_color_post)
235PUSH_CONSTANT(float4x4, camera_space_matrix)
236VERTEX_OUT(overlay_motion_path_point_iface)
237FRAGMENT_OUT(0, float4, frag_color)
238VERTEX_SOURCE("overlay_motion_path_point_vert.glsl")
239FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
240ADDITIONAL_INFO(draw_view)
241ADDITIONAL_INFO(draw_globals)
243
244OVERLAY_INFO_CLIP_VARIATION(overlay_motion_path_point)
245
247
248/* -------------------------------------------------------------------- */
251
252GPU_SHADER_INTERFACE_INFO(overlay_image_iface)
253SMOOTH(float2, uvs)
255
256GPU_SHADER_CREATE_INFO(overlay_image_base)
257PUSH_CONSTANT(bool, depth_set)
258PUSH_CONSTANT(bool, is_camera_background)
259PUSH_CONSTANT(bool, img_premultiplied)
260PUSH_CONSTANT(bool, img_alpha_blend)
261PUSH_CONSTANT(float4, ucolor)
263VERTEX_OUT(overlay_image_iface)
264SAMPLER(0, sampler2D, img_tx)
265FRAGMENT_OUT(0, float4, frag_color)
266VERTEX_SOURCE("overlay_image_vert.glsl")
267FRAGMENT_SOURCE("overlay_image_frag.glsl")
268ADDITIONAL_INFO(draw_view)
269ADDITIONAL_INFO(draw_globals)
271
272OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_image, overlay_image_base)
273
274GPU_SHADER_CREATE_INFO(overlay_image_depth_bias_base)
275ADDITIONAL_INFO(overlay_image_base)
276DEFINE("DEPTH_BIAS")
277PUSH_CONSTANT(float4x4, depth_bias_winmat)
279
280OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_image_depth_bias, overlay_image_depth_bias_base)
281
283
284/* -------------------------------------------------------------------- */
287
288GPU_SHADER_CREATE_INFO(overlay_gpencil_canvas)
290VERTEX_OUT(overlay_extra_iface)
291PUSH_CONSTANT(float4, color)
292PUSH_CONSTANT(float3, axis_x)
293PUSH_CONSTANT(float3, axis_y)
294PUSH_CONSTANT(float3, origin)
295PUSH_CONSTANT(int, half_line_count)
296FRAGMENT_OUT(0, float4, frag_color)
297FRAGMENT_OUT(1, float4, line_output)
298VERTEX_SOURCE("overlay_edit_gpencil_canvas_vert.glsl")
299FRAGMENT_SOURCE("overlay_extra_frag.glsl")
300ADDITIONAL_INFO(draw_mesh)
301ADDITIONAL_INFO(draw_view)
302ADDITIONAL_INFO(draw_globals)
304
305OVERLAY_INFO_CLIP_VARIATION(overlay_gpencil_canvas)
306
308
309/* -------------------------------------------------------------------- */
312
313GPU_SHADER_INTERFACE_INFO(overlay_particle_iface)
314FLAT(float4, final_color)
316
317GPU_SHADER_CREATE_INFO(overlay_particle_dot_base)
318SAMPLER(0, sampler1D, weight_tx)
319PUSH_CONSTANT(float4, ucolor) /* Draw-size packed in alpha. */
320VERTEX_IN(0, float3, part_pos)
321VERTEX_IN(1, float4, part_rot)
322VERTEX_IN(2, float, part_val)
323VERTEX_OUT(overlay_particle_iface)
324FRAGMENT_OUT(0, float4, frag_color)
325FRAGMENT_OUT(1, float4, line_output)
326VERTEX_SOURCE("overlay_particle_vert.glsl")
327FRAGMENT_SOURCE("overlay_particle_frag.glsl")
328ADDITIONAL_INFO(draw_view)
329ADDITIONAL_INFO(draw_globals)
331
332OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_particle_dot, overlay_particle_dot_base)
333
334GPU_SHADER_CREATE_INFO(overlay_particle_shape_base)
335TYPEDEF_SOURCE("overlay_shader_shared.hh")
336SAMPLER(0, sampler1D, weight_tx)
337PUSH_CONSTANT(float4, ucolor) /* Draw-size packed in alpha. */
338PUSH_CONSTANT(int, shape_type)
339/* Use first attribute to only bind one buffer. */
340STORAGE_BUF_FREQ(0, read, ParticlePointData, part_pos[], GEOMETRY)
341VERTEX_OUT(overlay_extra_iface)
342FRAGMENT_OUT(0, float4, frag_color)
343FRAGMENT_OUT(1, float4, line_output)
344VERTEX_SOURCE("overlay_particle_shape_vert.glsl")
345FRAGMENT_SOURCE("overlay_particle_shape_frag.glsl")
346ADDITIONAL_INFO(draw_view)
347ADDITIONAL_INFO(draw_globals)
349
350OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_particle_shape, overlay_particle_shape_base)
351
352GPU_SHADER_CREATE_INFO(overlay_particle_hair_base)
353TYPEDEF_SOURCE("overlay_shader_shared.hh")
356PUSH_CONSTANT(int, color_type)
357PUSH_CONSTANT(bool, is_transform)
358PUSH_CONSTANT(bool, use_coloring)
359VERTEX_OUT(overlay_extra_iface)
360FRAGMENT_OUT(0, float4, frag_color)
361FRAGMENT_OUT(1, float4, line_output)
362VERTEX_SOURCE("overlay_particle_hair_vert.glsl")
363FRAGMENT_SOURCE("overlay_particle_shape_frag.glsl")
364ADDITIONAL_INFO(draw_view)
365ADDITIONAL_INFO(draw_object_infos)
366ADDITIONAL_INFO(draw_globals)
368
369OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_particle_hair, overlay_particle_hair_base)
370
uint pos
uint nor
SamplerBase< float, 1 > sampler1D
VecBase< float, 4 > float4
MatBase< 4, 4 > float4x4
SamplerBase< float, 2, false, false, false, true > sampler2DDepth
SamplerBase< float, 2 > sampler2D
#define TYPEDEF_SOURCE(filename)
#define VERTEX_OUT(stage_interface)
#define SMOOTH(type, name)
#define SAMPLER(slot, type, name)
#define GPU_SHADER_INTERFACE_END()
#define FRAGMENT_SOURCE(filename)
#define STORAGE_BUF_FREQ(slot, qualifiers, type_name, name, freq)
#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 FRAGMENT_OUT(slot, type, name)
#define NO_PERSPECTIVE(type, name)
#define GPU_SHADER_INTERFACE_INFO(_interface)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define GPU_SHADER_CREATE_INFO(_info)
#define VERTEX_SOURCE(filename)
#define VERTEX_IN(slot, type, name)
#define GPU_SHADER_CREATE_END()
#define DO_STATIC_COMPILATION()
#define DEFINE_VALUE(name, value)
ccl_device_inline float interp(const float a, const float b, const float t)
Definition math_base.h:502
#define OVERLAY_INFO_VARIATIONS(name)
#define OVERLAY_INFO_CLIP_VARIATION(name)
#define OVERLAY_INFO_VARIATIONS_MODELMAT(name, base_info)
read
uint8_t flag
Definition wm_window.cc:139