Blender V5.0
overlay_edit_mode_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
16# define CURVES_SHADER
17# define DRW_HAIR_INFO
18
19# define POINTCLOUD_SHADER
20# define DRW_POINTCLOUD_INFO
21#endif
22
24
25GPU_SHADER_INTERFACE_INFO(overlay_edit_flat_wire_iface)
26NO_PERSPECTIVE(float2, edge_pos)
27FLAT(float2, edge_start)
28FLAT(float4, final_color)
30GPU_SHADER_INTERFACE_INFO(overlay_edit_flat_color_iface)
31FLAT(float4, final_color)
33GPU_SHADER_INTERFACE_INFO(overlay_edit_smooth_color_iface)
34SMOOTH(float4, final_color)
36GPU_SHADER_INTERFACE_INFO(overlay_edit_nopersp_color_iface)
37NO_PERSPECTIVE(float4, final_color)
39
40/* -------------------------------------------------------------------- */
43
44GPU_SHADER_CREATE_INFO(overlay_edit_mesh_common)
45DEFINE_VALUE("blender_srgb_to_framebuffer_space(a)", "a")
46SAMPLER(0, sampler2DDepth, depth_tx)
47DEFINE("LINE_OUTPUT")
48FRAGMENT_OUT(0, float4, frag_color)
49FRAGMENT_OUT(1, float4, line_output)
50/* Per view factor. */
51PUSH_CONSTANT(float, ndc_offset_factor)
52/* Per pass factor. */
53PUSH_CONSTANT(float, ndc_offset)
54PUSH_CONSTANT(bool, wire_shading)
55PUSH_CONSTANT(bool, select_face)
56PUSH_CONSTANT(bool, select_edge)
57PUSH_CONSTANT(float, alpha)
58PUSH_CONSTANT(float, retopology_offset)
59PUSH_CONSTANT(int4, data_mask)
60ADDITIONAL_INFO(draw_globals)
62
63GPU_SHADER_CREATE_INFO(overlay_edit_mesh_depth)
66PUSH_CONSTANT(float, retopology_offset)
67VERTEX_SOURCE("overlay_edit_mesh_depth_vert.glsl")
68FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
69ADDITIONAL_INFO(draw_view)
70ADDITIONAL_INFO(draw_modelmat)
71ADDITIONAL_INFO(draw_globals)
73
74OVERLAY_INFO_CLIP_VARIATION(overlay_edit_mesh_depth)
75
76GPU_SHADER_INTERFACE_INFO(overlay_edit_mesh_vert_iface)
77SMOOTH(float4, final_color)
78SMOOTH(float, vertex_crease)
80
81GPU_SHADER_CREATE_INFO(overlay_edit_mesh_vert)
83BUILTINS(BuiltinBits::POINT_SIZE)
84DEFINE("VERT")
87VERTEX_IN(2, float3, vnor)
88VERTEX_SOURCE("overlay_edit_mesh_vert.glsl")
89VERTEX_OUT(overlay_edit_mesh_vert_iface)
90FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
91ADDITIONAL_INFO(overlay_edit_mesh_common)
92ADDITIONAL_INFO(draw_view)
93ADDITIONAL_INFO(draw_modelmat)
94ADDITIONAL_INFO(draw_globals)
96
97OVERLAY_INFO_CLIP_VARIATION(overlay_edit_mesh_vert)
98
99GPU_SHADER_NAMED_INTERFACE_INFO(overlay_edit_mesh_edge_geom_iface, geometry_out)
100SMOOTH(float4, final_color)
102GPU_SHADER_NAMED_INTERFACE_INFO(overlay_edit_mesh_edge_geom_flat_iface, geometry_flat_out)
103FLAT(float4, final_color_outer)
104GPU_SHADER_NAMED_INTERFACE_END(geometry_flat_out)
105GPU_SHADER_NAMED_INTERFACE_INFO(overlay_edit_mesh_edge_geom_noperspective_iface,
106 geometry_noperspective_out)
107NO_PERSPECTIVE(float, edge_coord)
108GPU_SHADER_NAMED_INTERFACE_END(geometry_noperspective_out)
109
110GPU_SHADER_CREATE_INFO(overlay_edit_mesh_edge)
112DEFINE("EDGE")
113STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
114STORAGE_BUF_FREQ(1, read, uint, vnor[], GEOMETRY)
115STORAGE_BUF_FREQ(2, read, uint, data[], GEOMETRY)
116PUSH_CONSTANT(int2, gpu_attr_0)
117PUSH_CONSTANT(int2, gpu_attr_1)
118PUSH_CONSTANT(int2, gpu_attr_2)
119PUSH_CONSTANT(bool, do_smooth_wire)
120PUSH_CONSTANT(bool, use_vertex_selection)
121VERTEX_OUT(overlay_edit_mesh_edge_geom_iface)
122VERTEX_OUT(overlay_edit_mesh_edge_geom_flat_iface)
123VERTEX_OUT(overlay_edit_mesh_edge_geom_noperspective_iface)
124TYPEDEF_SOURCE("overlay_shader_shared.hh")
125VERTEX_SOURCE("overlay_edit_mesh_edge_vert.glsl")
126FRAGMENT_SOURCE("overlay_edit_mesh_frag.glsl")
127ADDITIONAL_INFO(draw_view)
128ADDITIONAL_INFO(draw_modelmat)
129ADDITIONAL_INFO(gpu_index_buffer_load)
130ADDITIONAL_INFO(overlay_edit_mesh_common)
132
133OVERLAY_INFO_CLIP_VARIATION(overlay_edit_mesh_edge)
134
135GPU_SHADER_CREATE_INFO(overlay_edit_mesh_face)
137DEFINE("FACE")
140VERTEX_SOURCE("overlay_edit_mesh_vert.glsl")
141VERTEX_OUT(overlay_edit_flat_color_iface)
142FRAGMENT_SOURCE("overlay_varying_color.glsl")
143ADDITIONAL_INFO(overlay_edit_mesh_common)
144ADDITIONAL_INFO(draw_view)
145ADDITIONAL_INFO(draw_modelmat)
146ADDITIONAL_INFO(draw_globals)
148
149OVERLAY_INFO_CLIP_VARIATION(overlay_edit_mesh_face)
150
151GPU_SHADER_CREATE_INFO(overlay_edit_mesh_facedot)
153DEFINE("FACEDOT")
156VERTEX_IN(2, float4, norAndFlag)
157VERTEX_SOURCE("overlay_edit_mesh_facedot_vert.glsl")
158VERTEX_OUT(overlay_edit_flat_color_iface)
159FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
160ADDITIONAL_INFO(draw_view)
161ADDITIONAL_INFO(draw_modelmat)
162ADDITIONAL_INFO(overlay_edit_mesh_common)
164
165OVERLAY_INFO_CLIP_VARIATION(overlay_edit_mesh_facedot)
166
167GPU_SHADER_CREATE_INFO(overlay_edit_mesh_normal)
168PUSH_CONSTANT(int2, gpu_attr_0)
169PUSH_CONSTANT(int2, gpu_attr_1)
170SAMPLER(0, sampler2DDepth, depth_tx)
171PUSH_CONSTANT(float, normal_size)
172PUSH_CONSTANT(float, normal_screen_size)
173PUSH_CONSTANT(float, alpha)
174PUSH_CONSTANT(bool, is_constant_screen_size_normals)
175VERTEX_OUT(overlay_edit_flat_color_iface)
176DEFINE("LINE_OUTPUT")
177FRAGMENT_OUT(0, float4, frag_color)
178FRAGMENT_OUT(1, float4, line_output)
179VERTEX_SOURCE("overlay_edit_mesh_normal_vert.glsl")
180FRAGMENT_SOURCE("overlay_varying_color.glsl")
182
183GPU_SHADER_CREATE_INFO(overlay_mesh_face_normal)
185ADDITIONAL_INFO(overlay_edit_mesh_normal)
186ADDITIONAL_INFO(draw_view)
187ADDITIONAL_INFO(draw_modelmat)
188ADDITIONAL_INFO(draw_globals)
189ADDITIONAL_INFO(gpu_index_buffer_load)
190STORAGE_BUF_FREQ(1, read, float, pos[], GEOMETRY)
191DEFINE("FACE_NORMAL")
192PUSH_CONSTANT(bool, hq_normals)
193STORAGE_BUF_FREQ(0, read, uint, norAndFlag[], GEOMETRY)
195
196OVERLAY_INFO_CLIP_VARIATION(overlay_mesh_face_normal)
197
198GPU_SHADER_CREATE_INFO(overlay_mesh_face_normal_subdiv)
200ADDITIONAL_INFO(overlay_edit_mesh_normal)
201ADDITIONAL_INFO(draw_view)
202ADDITIONAL_INFO(draw_modelmat)
203ADDITIONAL_INFO(draw_globals)
204ADDITIONAL_INFO(gpu_index_buffer_load)
205STORAGE_BUF_FREQ(1, read, float, pos[], GEOMETRY)
206DEFINE("FACE_NORMAL")
207DEFINE("FLOAT_NORMAL")
208STORAGE_BUF_FREQ(0, read, float4, norAndFlag[], GEOMETRY)
210
211OVERLAY_INFO_CLIP_VARIATION(overlay_mesh_face_normal_subdiv)
212
213GPU_SHADER_CREATE_INFO(overlay_mesh_loop_normal)
215ADDITIONAL_INFO(overlay_edit_mesh_normal)
216ADDITIONAL_INFO(draw_view)
217ADDITIONAL_INFO(draw_modelmat)
218ADDITIONAL_INFO(draw_globals)
219ADDITIONAL_INFO(gpu_index_buffer_load)
220STORAGE_BUF_FREQ(1, read, float, pos[], GEOMETRY)
221DEFINE("LOOP_NORMAL")
222PUSH_CONSTANT(bool, hq_normals)
223STORAGE_BUF_FREQ(0, read, uint, lnor[], GEOMETRY)
225
226OVERLAY_INFO_CLIP_VARIATION(overlay_mesh_loop_normal)
227
228GPU_SHADER_CREATE_INFO(overlay_mesh_loop_normal_subdiv)
230ADDITIONAL_INFO(overlay_edit_mesh_normal)
231ADDITIONAL_INFO(draw_view)
232ADDITIONAL_INFO(draw_modelmat)
233ADDITIONAL_INFO(draw_globals)
234ADDITIONAL_INFO(gpu_index_buffer_load)
235STORAGE_BUF_FREQ(1, read, float, pos[], GEOMETRY)
236DEFINE("LOOP_NORMAL")
237DEFINE("FLOAT_NORMAL")
238STORAGE_BUF_FREQ(0, read, float4, lnor[], GEOMETRY)
240
241OVERLAY_INFO_CLIP_VARIATION(overlay_mesh_loop_normal_subdiv)
242
243GPU_SHADER_CREATE_INFO(overlay_mesh_vert_normal)
245ADDITIONAL_INFO(overlay_edit_mesh_normal)
246ADDITIONAL_INFO(draw_view)
247ADDITIONAL_INFO(draw_modelmat)
248ADDITIONAL_INFO(draw_globals)
249ADDITIONAL_INFO(gpu_index_buffer_load)
250STORAGE_BUF_FREQ(1, read, float, pos[], GEOMETRY)
251DEFINE("VERT_NORMAL")
252STORAGE_BUF_FREQ(0, read, uint, vnor[], GEOMETRY)
254
255OVERLAY_INFO_CLIP_VARIATION(overlay_mesh_vert_normal)
256
257GPU_SHADER_CREATE_INFO(overlay_mesh_vert_normal_subdiv)
259ADDITIONAL_INFO(overlay_edit_mesh_normal)
260ADDITIONAL_INFO(draw_view)
261ADDITIONAL_INFO(draw_modelmat)
262ADDITIONAL_INFO(draw_globals)
263ADDITIONAL_INFO(gpu_index_buffer_load)
264STORAGE_BUF_FREQ(1, read, float, pos[], GEOMETRY)
265DEFINE("VERT_NORMAL")
266DEFINE("FLOAT_NORMAL")
267STORAGE_BUF_FREQ(0, read, float, vnor[], GEOMETRY)
269
270OVERLAY_INFO_CLIP_VARIATION(overlay_mesh_vert_normal_subdiv)
271
272GPU_SHADER_INTERFACE_INFO(overlay_edit_mesh_analysis_iface)
273SMOOTH(float4, weight_color)
275
276GPU_SHADER_CREATE_INFO(overlay_edit_mesh_analysis)
279VERTEX_IN(1, float, weight)
280SAMPLER(0, sampler1D, weight_tx)
281FRAGMENT_OUT(0, float4, frag_color)
282FRAGMENT_OUT(1, float4, line_output)
283VERTEX_OUT(overlay_edit_mesh_analysis_iface)
284VERTEX_SOURCE("overlay_edit_mesh_analysis_vert.glsl")
285FRAGMENT_SOURCE("overlay_edit_mesh_analysis_frag.glsl")
286ADDITIONAL_INFO(draw_view)
287ADDITIONAL_INFO(draw_modelmat)
288ADDITIONAL_INFO(draw_globals)
290
291OVERLAY_INFO_CLIP_VARIATION(overlay_edit_mesh_analysis)
292
293GPU_SHADER_CREATE_INFO(overlay_edit_mesh_skin_root)
295VERTEX_OUT(overlay_edit_flat_color_iface)
296FRAGMENT_OUT(0, float4, frag_color)
297VERTEX_SOURCE("overlay_edit_mesh_skin_root_vert.glsl")
298FRAGMENT_SOURCE("overlay_varying_color.glsl")
299ADDITIONAL_INFO(draw_view)
300ADDITIONAL_INFO(draw_modelmat)
301ADDITIONAL_INFO(draw_globals)
302/* TODO(fclem): Use correct vertex format. For now we read the format manually. */
303STORAGE_BUF_FREQ(0, read, float, size[], GEOMETRY)
304DEFINE("VERTEX_PULL")
306
307OVERLAY_INFO_CLIP_VARIATION(overlay_edit_mesh_skin_root)
308
310
311/* -------------------------------------------------------------------- */
314
315GPU_SHADER_INTERFACE_INFO(overlay_edit_uv_iface)
316SMOOTH(float, selection_fac)
317FLAT(float2, stipple_start)
318NO_PERSPECTIVE(float, edge_coord)
319NO_PERSPECTIVE(float2, stipple_pos)
321
322GPU_SHADER_CREATE_INFO(overlay_edit_uv_edges)
324STORAGE_BUF_FREQ(0, read, float, au[], GEOMETRY)
325STORAGE_BUF_FREQ(1, read, uint, data[], GEOMETRY)
326PUSH_CONSTANT(int2, gpu_attr_0)
327PUSH_CONSTANT(int2, gpu_attr_1)
328PUSH_CONSTANT(int, line_style)
329PUSH_CONSTANT(bool, do_smooth_wire)
330PUSH_CONSTANT(float, alpha)
331PUSH_CONSTANT(float, dash_length)
332SPECIALIZATION_CONSTANT(bool, use_edge_select, false)
333VERTEX_OUT(overlay_edit_uv_iface)
334FRAGMENT_OUT(0, float4, frag_color)
335VERTEX_SOURCE("overlay_edit_uv_edges_vert.glsl")
336FRAGMENT_SOURCE("overlay_edit_uv_edges_frag.glsl")
337TYPEDEF_SOURCE("overlay_shader_shared.hh")
338ADDITIONAL_INFO(draw_view)
339ADDITIONAL_INFO(draw_modelmat)
340ADDITIONAL_INFO(draw_object_infos)
341ADDITIONAL_INFO(draw_resource_id_varying)
342ADDITIONAL_INFO(gpu_index_buffer_load)
343ADDITIONAL_INFO(draw_globals)
345
346GPU_SHADER_CREATE_INFO(overlay_edit_uv_faces)
348VERTEX_IN(0, float2, au)
350PUSH_CONSTANT(float, uv_opacity)
351VERTEX_OUT(overlay_edit_flat_color_iface)
352FRAGMENT_OUT(0, float4, frag_color)
353VERTEX_SOURCE("overlay_edit_uv_faces_vert.glsl")
354FRAGMENT_SOURCE("overlay_varying_color.glsl")
355ADDITIONAL_INFO(draw_view)
356ADDITIONAL_INFO(draw_modelmat)
357ADDITIONAL_INFO(draw_object_infos)
358ADDITIONAL_INFO(draw_resource_id_varying)
359ADDITIONAL_INFO(draw_globals)
361
362GPU_SHADER_CREATE_INFO(overlay_edit_uv_face_dots)
364VERTEX_IN(0, float2, au)
366PUSH_CONSTANT(float, dot_size)
367VERTEX_OUT(overlay_edit_flat_color_iface)
368FRAGMENT_OUT(0, float4, frag_color)
369VERTEX_SOURCE("overlay_edit_uv_face_dots_vert.glsl")
370FRAGMENT_SOURCE("overlay_varying_color.glsl")
371ADDITIONAL_INFO(draw_view)
372ADDITIONAL_INFO(draw_modelmat)
373ADDITIONAL_INFO(draw_globals)
375
376GPU_SHADER_INTERFACE_INFO(overlay_edit_uv_vert_iface)
377SMOOTH(float4, fill_color)
378SMOOTH(float4, outline_color)
379SMOOTH(float4, radii)
381
382GPU_SHADER_CREATE_INFO(overlay_edit_uv_verts)
384VERTEX_IN(0, float2, au)
386PUSH_CONSTANT(float, dot_size)
387PUSH_CONSTANT(float, outline_width)
388PUSH_CONSTANT(float4, color)
389VERTEX_OUT(overlay_edit_uv_vert_iface)
390FRAGMENT_OUT(0, float4, frag_color)
391VERTEX_SOURCE("overlay_edit_uv_verts_vert.glsl")
392FRAGMENT_SOURCE("overlay_edit_uv_verts_frag.glsl")
393ADDITIONAL_INFO(draw_view)
394ADDITIONAL_INFO(draw_modelmat)
395ADDITIONAL_INFO(draw_globals)
397
398GPU_SHADER_CREATE_INFO(overlay_edit_uv_tiled_image_borders)
401PUSH_CONSTANT(float4, ucolor)
402FRAGMENT_OUT(0, float4, frag_color)
403VERTEX_SOURCE("overlay_edit_uv_tiled_image_borders_vert.glsl")
404FRAGMENT_SOURCE("overlay_uniform_color_frag.glsl")
405PUSH_CONSTANT(float3, tile_pos)
406DEFINE_VALUE("tile_scale", "float3(1.0f)")
407ADDITIONAL_INFO(draw_view)
409
410GPU_SHADER_INTERFACE_INFO(edit_uv_image_iface)
411SMOOTH(float2, uvs)
413
414GPU_SHADER_CREATE_INFO(overlay_edit_uv_stencil_image)
417VERTEX_OUT(edit_uv_image_iface)
418VERTEX_SOURCE("overlay_edit_uv_image_vert.glsl")
419SAMPLER(0, sampler2D, img_tx)
420PUSH_CONSTANT(bool, img_premultiplied)
421PUSH_CONSTANT(bool, img_alpha_blend)
422PUSH_CONSTANT(float4, ucolor)
423FRAGMENT_OUT(0, float4, frag_color)
424FRAGMENT_SOURCE("overlay_image_frag.glsl")
425PUSH_CONSTANT(float2, brush_offset)
426PUSH_CONSTANT(float2, brush_scale)
427ADDITIONAL_INFO(draw_view);
429
430GPU_SHADER_CREATE_INFO(overlay_edit_uv_mask_image)
433VERTEX_OUT(edit_uv_image_iface)
434SAMPLER(0, sampler2D, img_tx)
435PUSH_CONSTANT(float4, color)
436PUSH_CONSTANT(float, opacity)
437FRAGMENT_OUT(0, float4, frag_color)
438VERTEX_SOURCE("overlay_edit_uv_image_vert.glsl")
439FRAGMENT_SOURCE("overlay_edit_uv_image_mask_frag.glsl")
440PUSH_CONSTANT(float2, brush_offset)
441PUSH_CONSTANT(float2, brush_scale)
442ADDITIONAL_INFO(draw_view)
444
446
447/* -------------------------------------------------------------------- */
450
451GPU_SHADER_CREATE_INFO(overlay_edit_uv_stretching)
453PUSH_CONSTANT(float2, aspect)
454PUSH_CONSTANT(float, stretch_opacity)
455VERTEX_OUT(overlay_edit_nopersp_color_iface)
456FRAGMENT_OUT(0, float4, frag_color)
457VERTEX_SOURCE("overlay_edit_uv_stretching_vert.glsl")
458FRAGMENT_SOURCE("overlay_varying_color.glsl")
460
461GPU_SHADER_CREATE_INFO(overlay_edit_uv_stretching_area)
463VERTEX_IN(1, float, ratio)
464PUSH_CONSTANT(float, total_area_ratio)
465ADDITIONAL_INFO(draw_view)
466ADDITIONAL_INFO(draw_modelmat)
467ADDITIONAL_INFO(draw_globals)
468ADDITIONAL_INFO(overlay_edit_uv_stretching)
470
471GPU_SHADER_CREATE_INFO(overlay_edit_uv_stretching_angle)
473DEFINE("STRETCH_ANGLE")
474VERTEX_IN(1, float2, uv_angles)
475VERTEX_IN(2, float, angle)
476ADDITIONAL_INFO(draw_view)
477ADDITIONAL_INFO(draw_modelmat)
478ADDITIONAL_INFO(draw_globals)
479ADDITIONAL_INFO(overlay_edit_uv_stretching)
481
483
484/* -------------------------------------------------------------------- */
487
488GPU_SHADER_CREATE_INFO(overlay_edit_curve_handle)
490TYPEDEF_SOURCE("overlay_shader_shared.hh")
491STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
492STORAGE_BUF_FREQ(1, read, uint, data[], GEOMETRY)
493PUSH_CONSTANT(int2, gpu_attr_0)
494PUSH_CONSTANT(int2, gpu_attr_1)
495VERTEX_OUT(overlay_edit_smooth_color_iface)
496PUSH_CONSTANT(bool, show_curve_handles)
497PUSH_CONSTANT(int, curve_handle_display)
498PUSH_CONSTANT(float, alpha)
499DEFINE("LINE_OUTPUT")
500FRAGMENT_OUT(0, float4, frag_color)
501FRAGMENT_OUT(1, float4, line_output)
502VERTEX_SOURCE("overlay_edit_curve_handle_vert.glsl")
503FRAGMENT_SOURCE("overlay_varying_color.glsl")
504ADDITIONAL_INFO(draw_view)
505ADDITIONAL_INFO(draw_modelmat)
506ADDITIONAL_INFO(gpu_index_buffer_load)
507ADDITIONAL_INFO(draw_globals)
509
510OVERLAY_INFO_CLIP_VARIATION(overlay_edit_curve_handle)
511
512GPU_SHADER_CREATE_INFO(overlay_edit_curve_point)
514TYPEDEF_SOURCE("overlay_shader_shared.hh")
517VERTEX_OUT(overlay_edit_flat_color_iface)
518PUSH_CONSTANT(bool, show_curve_handles)
519PUSH_CONSTANT(int, curve_handle_display)
520DEFINE("LINE_OUTPUT")
521FRAGMENT_OUT(0, float4, frag_color)
522FRAGMENT_OUT(1, float4, line_output)
523VERTEX_SOURCE("overlay_edit_curve_point_vert.glsl")
524FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
525ADDITIONAL_INFO(draw_view)
526ADDITIONAL_INFO(draw_modelmat)
527ADDITIONAL_INFO(draw_globals)
529
530OVERLAY_INFO_CLIP_VARIATION(overlay_edit_curve_point)
531
532GPU_SHADER_CREATE_INFO(overlay_edit_curve_wire)
536VERTEX_IN(2, float3, tangent)
537VERTEX_IN(3, float, rad)
538PUSH_CONSTANT(float, normal_size)
539VERTEX_OUT(overlay_edit_flat_wire_iface)
540DEFINE("LINE_OUTPUT_NO_DUMMY") /* TODO(fclem): Should be the default. */
541FRAGMENT_OUT(0, float4, frag_color)
542FRAGMENT_OUT(1, float4, line_output)
543VERTEX_SOURCE("overlay_edit_curve_wire_vert.glsl")
544FRAGMENT_SOURCE("overlay_varying_color.glsl")
545ADDITIONAL_INFO(draw_view)
546ADDITIONAL_INFO(draw_modelmat)
547ADDITIONAL_INFO(draw_globals)
549
550OVERLAY_INFO_CLIP_VARIATION(overlay_edit_curve_wire)
551
552GPU_SHADER_CREATE_INFO(overlay_edit_curve_normals)
554STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
555STORAGE_BUF_FREQ(1, read, float, rad[], GEOMETRY)
556STORAGE_BUF_FREQ(2, read, uint, nor[], GEOMETRY)
557STORAGE_BUF_FREQ(3, read, uint, tangent[], GEOMETRY)
558PUSH_CONSTANT(int2, gpu_attr_0)
559PUSH_CONSTANT(int2, gpu_attr_1)
560PUSH_CONSTANT(int2, gpu_attr_2)
561PUSH_CONSTANT(int2, gpu_attr_3)
562PUSH_CONSTANT(float, normal_size)
563PUSH_CONSTANT(bool, use_hq_normals)
564VERTEX_OUT(overlay_edit_flat_color_iface)
565DEFINE("LINE_OUTPUT")
566FRAGMENT_OUT(0, float4, frag_color)
567FRAGMENT_OUT(1, float4, line_output)
568VERTEX_SOURCE("overlay_edit_curve_normals_vert.glsl")
569FRAGMENT_SOURCE("overlay_varying_color.glsl")
570ADDITIONAL_INFO(draw_view)
571ADDITIONAL_INFO(draw_modelmat)
572ADDITIONAL_INFO(gpu_index_buffer_load)
573ADDITIONAL_INFO(draw_globals)
575
576OVERLAY_INFO_CLIP_VARIATION(overlay_edit_curve_normals)
577
579
580/* -------------------------------------------------------------------- */
583
584GPU_SHADER_CREATE_INFO(overlay_edit_curves_handle)
586TYPEDEF_SOURCE("overlay_shader_shared.hh")
587STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
588STORAGE_BUF_FREQ(1, read, uint, data[], GEOMETRY)
589STORAGE_BUF_FREQ(2, read, float, selection[], GEOMETRY)
590PUSH_CONSTANT(int2, gpu_attr_0)
591PUSH_CONSTANT(int2, gpu_attr_1)
592PUSH_CONSTANT(int2, gpu_attr_2)
593VERTEX_OUT(overlay_edit_smooth_color_iface)
594PUSH_CONSTANT(int, curve_handle_display)
595FRAGMENT_OUT(0, float4, frag_color)
596VERTEX_SOURCE("overlay_edit_curves_handle_vert.glsl")
597FRAGMENT_SOURCE("overlay_varying_color.glsl")
598ADDITIONAL_INFO(draw_view)
599ADDITIONAL_INFO(draw_modelmat)
600ADDITIONAL_INFO(gpu_index_buffer_load)
601ADDITIONAL_INFO(draw_globals)
603
604OVERLAY_INFO_CLIP_VARIATION(overlay_edit_curves_handle)
605
606GPU_SHADER_CREATE_INFO(overlay_edit_curves_point)
608TYPEDEF_SOURCE("overlay_shader_shared.hh")
609DEFINE("CURVES_POINT")
612VERTEX_IN(2, float, selection)
613#if 1 /* TODO(fclem): Required for legacy gpencil overlay. To be moved to specialized shader. */
614TYPEDEF_SOURCE("gpencil_shader_shared.hh")
615VERTEX_IN(3, uint, vflag)
616PUSH_CONSTANT(bool, do_stroke_endpoints)
617#endif
618VERTEX_OUT(overlay_edit_flat_color_iface)
619SAMPLER(0, sampler1D, weight_tx)
620PUSH_CONSTANT(bool, use_weight)
621PUSH_CONSTANT(bool, use_grease_pencil)
622PUSH_CONSTANT(int, curve_handle_display)
623FRAGMENT_OUT(0, float4, frag_color)
624VERTEX_SOURCE("overlay_edit_particle_point_vert.glsl")
625FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
626ADDITIONAL_INFO(draw_view)
627ADDITIONAL_INFO(draw_modelmat)
628ADDITIONAL_INFO(draw_globals)
630
631OVERLAY_INFO_CLIP_VARIATION(overlay_edit_curves_point)
632
634
635/* -------------------------------------------------------------------- */
638
639GPU_SHADER_CREATE_INFO(overlay_edit_lattice_point)
642VERTEX_OUT(overlay_edit_flat_color_iface)
643DEFINE("LINE_OUTPUT")
644FRAGMENT_OUT(0, float4, frag_color)
645FRAGMENT_OUT(1, float4, line_output)
646VERTEX_SOURCE("overlay_edit_lattice_point_vert.glsl")
647FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
648ADDITIONAL_INFO(draw_view)
649ADDITIONAL_INFO(draw_globals)
650ADDITIONAL_INFO(draw_modelmat)
653
654OVERLAY_INFO_CLIP_VARIATION(overlay_edit_lattice_point)
655
656GPU_SHADER_CREATE_INFO(overlay_edit_lattice_wire)
658VERTEX_IN(1, float, weight)
659SAMPLER(0, sampler1D, weight_tx)
660VERTEX_OUT(overlay_edit_smooth_color_iface)
661DEFINE("LINE_OUTPUT")
662FRAGMENT_OUT(0, float4, frag_color)
663FRAGMENT_OUT(1, float4, line_output)
664VERTEX_SOURCE("overlay_edit_lattice_wire_vert.glsl")
665FRAGMENT_SOURCE("overlay_varying_color.glsl")
666ADDITIONAL_INFO(draw_view)
667ADDITIONAL_INFO(draw_globals)
668ADDITIONAL_INFO(draw_modelmat)
671
672OVERLAY_INFO_CLIP_VARIATION(overlay_edit_lattice_wire)
673
675
676/* -------------------------------------------------------------------- */
679
680GPU_SHADER_CREATE_INFO(overlay_edit_particle_strand)
683VERTEX_IN(1, float, selection)
684SAMPLER(0, sampler1D, weight_tx)
685PUSH_CONSTANT(bool, use_weight)
686PUSH_CONSTANT(bool, use_grease_pencil)
687VERTEX_OUT(overlay_edit_smooth_color_iface)
688FRAGMENT_OUT(0, float4, frag_color)
689FRAGMENT_OUT(1, float4, line_output)
690DEFINE("LINE_OUTPUT")
691VERTEX_SOURCE("overlay_edit_particle_strand_vert.glsl")
692FRAGMENT_SOURCE("overlay_varying_color.glsl")
693ADDITIONAL_INFO(draw_view)
694ADDITIONAL_INFO(draw_modelmat)
695ADDITIONAL_INFO(draw_globals)
697
698OVERLAY_INFO_CLIP_VARIATION(overlay_edit_particle_strand)
699
700GPU_SHADER_CREATE_INFO(overlay_edit_particle_point)
703VERTEX_IN(1, float, selection)
704VERTEX_OUT(overlay_edit_flat_color_iface)
705SAMPLER(0, sampler1D, weight_tx)
706PUSH_CONSTANT(bool, use_weight)
707PUSH_CONSTANT(bool, use_grease_pencil)
708FRAGMENT_OUT(0, float4, frag_color)
709FRAGMENT_OUT(1, float4, line_output)
710DEFINE("LINE_OUTPUT")
711#if 1 /* TODO(fclem): Required for legacy gpencil overlay. To be moved to specialized shader. */
712TYPEDEF_SOURCE("gpencil_shader_shared.hh")
713TYPEDEF_SOURCE("overlay_shader_shared.hh")
714VERTEX_IN(3, uint, vflag)
715PUSH_CONSTANT(bool, do_stroke_endpoints)
716#endif
717VERTEX_SOURCE("overlay_edit_particle_point_vert.glsl")
718FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
719ADDITIONAL_INFO(draw_view)
720ADDITIONAL_INFO(draw_modelmat)
721ADDITIONAL_INFO(draw_globals)
723
724OVERLAY_INFO_CLIP_VARIATION(overlay_edit_particle_point)
725
727
728/* -------------------------------------------------------------------- */
731
732GPU_SHADER_CREATE_INFO(overlay_edit_pointcloud)
733VERTEX_IN(0, float4, pos_rad)
734VERTEX_OUT(overlay_edit_flat_color_iface)
735DEFINE("LINE_OUTPUT")
736FRAGMENT_OUT(0, float4, frag_color)
737FRAGMENT_OUT(1, float4, line_output)
738VERTEX_SOURCE("overlay_edit_pointcloud_vert.glsl")
739FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
740ADDITIONAL_INFO(draw_view)
741ADDITIONAL_INFO(draw_globals)
742ADDITIONAL_INFO(draw_modelmat)
745
746OVERLAY_INFO_CLIP_VARIATION(overlay_edit_pointcloud)
747
749
750/* -------------------------------------------------------------------- */
755
756GPU_SHADER_CREATE_INFO(overlay_depth_mesh_base)
758VERTEX_SOURCE("overlay_depth_only_vert.glsl")
759FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
760ADDITIONAL_INFO(draw_globals)
761ADDITIONAL_INFO(draw_view)
763
764OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_mesh, overlay_depth_mesh_base)
765
766GPU_SHADER_CREATE_INFO(overlay_depth_mesh_conservative_base)
767STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
768PUSH_CONSTANT(int2, gpu_attr_0)
769VERTEX_SOURCE("overlay_depth_only_mesh_conservative_vert.glsl")
770FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
771ADDITIONAL_INFO(draw_globals)
772ADDITIONAL_INFO(draw_view)
773ADDITIONAL_INFO(gpu_index_buffer_load)
775
776OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_mesh_conservative,
777 overlay_depth_mesh_conservative_base)
778
779GPU_SHADER_NAMED_INTERFACE_INFO(overlay_depth_only_gpencil_flat_iface, gp_interp_flat)
780FLAT(float2, aspect)
781FLAT(float4, sspos)
782FLAT(float4, sspos_adj)
783GPU_SHADER_NAMED_INTERFACE_END(gp_interp_flat)
784GPU_SHADER_NAMED_INTERFACE_INFO(overlay_depth_only_gpencil_noperspective_iface,
785 gp_interp_noperspective)
786NO_PERSPECTIVE(float4, thickness)
787NO_PERSPECTIVE(float, hardness)
788GPU_SHADER_NAMED_INTERFACE_END(gp_interp_noperspective)
789
790GPU_SHADER_CREATE_INFO(overlay_depth_gpencil_base)
791TYPEDEF_SOURCE("gpencil_shader_shared.hh")
792VERTEX_OUT(overlay_depth_only_gpencil_flat_iface)
793VERTEX_OUT(overlay_depth_only_gpencil_noperspective_iface)
794VERTEX_SOURCE("overlay_depth_only_gpencil_vert.glsl")
795FRAGMENT_SOURCE("overlay_depth_only_gpencil_frag.glsl")
797PUSH_CONSTANT(bool, gp_stroke_order3d) /* TODO(fclem): Move to a GPencil object UBO. */
798PUSH_CONSTANT(float4, gp_depth_plane) /* TODO(fclem): Move to a GPencil object UBO. */
799ADDITIONAL_INFO(draw_view)
800ADDITIONAL_INFO(draw_globals)
801ADDITIONAL_INFO(draw_gpencil)
802ADDITIONAL_INFO(draw_object_infos)
804
805OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_gpencil, overlay_depth_gpencil_base)
806
807GPU_SHADER_CREATE_INFO(overlay_depth_pointcloud_base)
808VERTEX_SOURCE("overlay_depth_only_pointcloud_vert.glsl")
809FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
810ADDITIONAL_INFO(draw_pointcloud)
811ADDITIONAL_INFO(draw_globals)
812ADDITIONAL_INFO(draw_view)
814
815OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_pointcloud, overlay_depth_pointcloud_base)
816
817GPU_SHADER_CREATE_INFO(overlay_depth_curves_base)
818VERTEX_SOURCE("overlay_depth_only_curves_vert.glsl")
819FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
820ADDITIONAL_INFO(draw_curves)
821ADDITIONAL_INFO(draw_curves_infos)
822ADDITIONAL_INFO(draw_globals)
823ADDITIONAL_INFO(draw_view)
825
826OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_curves, overlay_depth_curves_base)
827
829
830/* -------------------------------------------------------------------- */
833
834GPU_SHADER_CREATE_INFO(overlay_uniform_color)
837PUSH_CONSTANT(float4, ucolor)
838DEFINE("LINE_OUTPUT")
839FRAGMENT_OUT(0, float4, frag_color)
840FRAGMENT_OUT(1, float4, line_output)
841VERTEX_SOURCE("overlay_depth_only_vert.glsl")
842FRAGMENT_SOURCE("overlay_uniform_color_frag.glsl")
843ADDITIONAL_INFO(draw_view)
844ADDITIONAL_INFO(draw_globals)
845ADDITIONAL_INFO(draw_modelmat)
847
848OVERLAY_INFO_CLIP_VARIATION(overlay_uniform_color)
849
unsigned int uint
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
Definition IK_Math.h:117
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
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 SPECIALIZATION_CONSTANT(type, name, default_value)
#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 BUILTINS(builtin)
#define VERTEX_SOURCE(filename)
#define VERTEX_IN(slot, type, name)
#define DO_STATIC_COMPILATION()
#define DEPTH_WRITE(value)
#define DEFINE_VALUE(name, value)
SamplerBase< float, 1 > sampler1D
SamplerBase< float, 2, false, false, false, true > sampler2DDepth
SamplerBase< float, 2 > sampler2D
#define OVERLAY_INFO_CLIP_VARIATION(name)
#define OVERLAY_INFO_VARIATIONS_MODELMAT(name, base_info)
uint8_t flag
Definition wm_window.cc:145