Blender V5.0
overlay_extra_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#ifdef GPU_SHADER
6# pragma once
7# include "gpu_shader_compat.hh"
8
10# include "draw_view_infos.hh"
11
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(int, gpu_attr_0_len) /* Avoid a warning on Metal. */
206PUSH_CONSTANT(int4, mpath_line_settings)
207PUSH_CONSTANT(bool, selected)
208PUSH_CONSTANT(float3, custom_color_pre)
209PUSH_CONSTANT(float3, custom_color_post)
210PUSH_CONSTANT(int, line_thickness) /* In pixels. */
211PUSH_CONSTANT(float4x4, camera_space_matrix)
212VERTEX_OUT(overlay_motion_path_line_iface)
213FRAGMENT_OUT(0, float4, frag_color)
214VERTEX_SOURCE("overlay_motion_path_line_vert.glsl")
215FRAGMENT_SOURCE("overlay_motion_path_line_frag.glsl")
216ADDITIONAL_INFO(draw_view)
217ADDITIONAL_INFO(gpu_index_buffer_load)
218ADDITIONAL_INFO(draw_globals)
220
221OVERLAY_INFO_CLIP_VARIATION(overlay_motion_path_line)
222
223GPU_SHADER_INTERFACE_INFO(overlay_motion_path_point_iface)
224FLAT(float4, final_color)
226
227GPU_SHADER_CREATE_INFO(overlay_motion_path_point)
229TYPEDEF_SOURCE("overlay_shader_shared.hh")
231VERTEX_IN(1, int, flag)
232PUSH_CONSTANT(int4, mpath_point_settings)
233PUSH_CONSTANT(bool, show_key_frames)
234PUSH_CONSTANT(float3, custom_color_pre)
235PUSH_CONSTANT(float3, custom_color_post)
236PUSH_CONSTANT(float4x4, camera_space_matrix)
237VERTEX_OUT(overlay_motion_path_point_iface)
238FRAGMENT_OUT(0, float4, frag_color)
239VERTEX_SOURCE("overlay_motion_path_point_vert.glsl")
240FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
241ADDITIONAL_INFO(draw_view)
242ADDITIONAL_INFO(draw_globals)
244
245OVERLAY_INFO_CLIP_VARIATION(overlay_motion_path_point)
246
248
249/* -------------------------------------------------------------------- */
252
253GPU_SHADER_INTERFACE_INFO(overlay_image_iface)
254SMOOTH(float2, uvs)
256
257GPU_SHADER_CREATE_INFO(overlay_image_base)
258PUSH_CONSTANT(bool, depth_set)
259PUSH_CONSTANT(bool, is_camera_background)
260PUSH_CONSTANT(bool, img_premultiplied)
261PUSH_CONSTANT(bool, img_alpha_blend)
262PUSH_CONSTANT(float4, ucolor)
264VERTEX_OUT(overlay_image_iface)
265SAMPLER(0, sampler2D, img_tx)
266FRAGMENT_OUT(0, float4, frag_color)
267VERTEX_SOURCE("overlay_image_vert.glsl")
268FRAGMENT_SOURCE("overlay_image_frag.glsl")
269ADDITIONAL_INFO(draw_view)
270ADDITIONAL_INFO(draw_globals)
272
273OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_image, overlay_image_base)
274
275GPU_SHADER_CREATE_INFO(overlay_image_depth_bias_base)
276ADDITIONAL_INFO(overlay_image_base)
277DEFINE("DEPTH_BIAS")
278PUSH_CONSTANT(float4x4, depth_bias_winmat)
280
281OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_image_depth_bias, overlay_image_depth_bias_base)
282
284
285/* -------------------------------------------------------------------- */
288
289GPU_SHADER_CREATE_INFO(overlay_gpencil_canvas)
291VERTEX_OUT(overlay_extra_iface)
292PUSH_CONSTANT(float4, color)
293PUSH_CONSTANT(float3, axis_x)
294PUSH_CONSTANT(float3, axis_y)
295PUSH_CONSTANT(float3, origin)
296PUSH_CONSTANT(int, half_line_count)
297FRAGMENT_OUT(0, float4, frag_color)
298FRAGMENT_OUT(1, float4, line_output)
299VERTEX_SOURCE("overlay_edit_gpencil_canvas_vert.glsl")
300FRAGMENT_SOURCE("overlay_extra_frag.glsl")
301ADDITIONAL_INFO(draw_mesh)
302ADDITIONAL_INFO(draw_view)
303ADDITIONAL_INFO(draw_globals)
305
306OVERLAY_INFO_CLIP_VARIATION(overlay_gpencil_canvas)
307
309
310/* -------------------------------------------------------------------- */
313
314GPU_SHADER_INTERFACE_INFO(overlay_particle_iface)
315FLAT(float4, final_color)
317
318GPU_SHADER_CREATE_INFO(overlay_particle_dot_base)
319SAMPLER(0, sampler1D, weight_tx)
320PUSH_CONSTANT(float4, ucolor) /* Draw-size packed in alpha. */
321VERTEX_IN(0, float3, part_pos)
322VERTEX_IN(1, float4, part_rot)
323VERTEX_IN(2, float, part_val)
324VERTEX_OUT(overlay_particle_iface)
325FRAGMENT_OUT(0, float4, frag_color)
326FRAGMENT_OUT(1, float4, line_output)
327VERTEX_SOURCE("overlay_particle_vert.glsl")
328FRAGMENT_SOURCE("overlay_particle_frag.glsl")
329ADDITIONAL_INFO(draw_view)
330ADDITIONAL_INFO(draw_globals)
332
333OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_particle_dot, overlay_particle_dot_base)
334
335GPU_SHADER_CREATE_INFO(overlay_particle_shape_base)
336TYPEDEF_SOURCE("overlay_shader_shared.hh")
337SAMPLER(0, sampler1D, weight_tx)
338PUSH_CONSTANT(float4, ucolor) /* Draw-size packed in alpha. */
339PUSH_CONSTANT(int, shape_type)
340/* Use first attribute to only bind one buffer. */
341STORAGE_BUF_FREQ(0, read, ParticlePointData, part_pos[], GEOMETRY)
342VERTEX_OUT(overlay_extra_iface)
343FRAGMENT_OUT(0, float4, frag_color)
344FRAGMENT_OUT(1, float4, line_output)
345VERTEX_SOURCE("overlay_particle_shape_vert.glsl")
346FRAGMENT_SOURCE("overlay_particle_shape_frag.glsl")
347ADDITIONAL_INFO(draw_view)
348ADDITIONAL_INFO(draw_globals)
350
351OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_particle_shape, overlay_particle_shape_base)
352
353GPU_SHADER_CREATE_INFO(overlay_particle_hair_base)
354TYPEDEF_SOURCE("overlay_shader_shared.hh")
357PUSH_CONSTANT(int, color_type)
358PUSH_CONSTANT(bool, is_transform)
359PUSH_CONSTANT(bool, use_coloring)
360VERTEX_OUT(overlay_extra_iface)
361FRAGMENT_OUT(0, float4, frag_color)
362FRAGMENT_OUT(1, float4, line_output)
363VERTEX_SOURCE("overlay_particle_hair_vert.glsl")
364FRAGMENT_SOURCE("overlay_particle_shape_frag.glsl")
365ADDITIONAL_INFO(draw_view)
366ADDITIONAL_INFO(draw_object_infos)
367ADDITIONAL_INFO(draw_globals)
369
370OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_particle_hair, overlay_particle_hair_base)
371
uint pos
uint nor
#define GPU_SHADER_INTERFACE_END()
#define GPU_SHADER_NAMED_INTERFACE_INFO(_interface, _inst_name)
#define GPU_SHADER_NAMED_INTERFACE_END(_inst_name)
#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 SMOOTH(type, name)
#define SAMPLER(slot, type, name)
#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 FLAT(type, name)
#define FRAGMENT_OUT(slot, type, name)
#define NO_PERSPECTIVE(type, name)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define VERTEX_SOURCE(filename)
#define VERTEX_IN(slot, type, name)
#define DO_STATIC_COMPILATION()
#define DEFINE_VALUE(name, value)
MatBase< 4, 4 > float4x4
SamplerBase< float, 1 > sampler1D
SamplerBase< float, 2, false, false, false, true > sampler2DDepth
SamplerBase< float, 2 > sampler2D
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)
uint8_t flag
Definition wm_window.cc:145