Blender V5.0
overlay_outline_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"
12
15
17
18# define CURVES_SHADER
19# define DRW_HAIR_INFO
20
21# define POINTCLOUD_SHADER
22# define DRW_POINTCLOUD_INFO
23#endif
24
26
27/* -------------------------------------------------------------------- */
30
31GPU_SHADER_NAMED_INTERFACE_INFO(overlay_outline_prepass_iface, interp)
32FLAT(uint, ob_id)
34
35GPU_SHADER_CREATE_INFO(overlay_outline_prepass)
36TYPEDEF_SOURCE("overlay_shader_shared.hh")
37PUSH_CONSTANT(bool, is_transform)
38VERTEX_OUT(overlay_outline_prepass_iface)
39/* Using uint because 16bit uint can contain more ids than int. */
40FRAGMENT_OUT(0, uint, out_object_id)
41FRAGMENT_SOURCE("overlay_outline_prepass_frag.glsl")
42ADDITIONAL_INFO(draw_globals)
44
45GPU_SHADER_CREATE_INFO(overlay_outline_prepass_mesh)
48VERTEX_SOURCE("overlay_outline_prepass_vert.glsl")
49ADDITIONAL_INFO(draw_view)
50ADDITIONAL_INFO(draw_modelmat)
51ADDITIONAL_INFO(draw_globals)
52ADDITIONAL_INFO(draw_object_infos)
53ADDITIONAL_INFO(overlay_outline_prepass)
55
56OVERLAY_INFO_CLIP_VARIATION(overlay_outline_prepass_mesh)
57
58GPU_SHADER_NAMED_INTERFACE_INFO(overlay_outline_prepass_wire_iface, vert)
61
62GPU_SHADER_CREATE_INFO(overlay_outline_prepass_curves)
64VERTEX_SOURCE("overlay_outline_prepass_curves_vert.glsl")
65ADDITIONAL_INFO(draw_view)
66ADDITIONAL_INFO(draw_modelmat)
67ADDITIONAL_INFO(draw_globals)
68ADDITIONAL_INFO(draw_curves)
69ADDITIONAL_INFO(draw_curves_infos)
70ADDITIONAL_INFO(draw_object_infos)
71ADDITIONAL_INFO(overlay_outline_prepass)
73
74OVERLAY_INFO_CLIP_VARIATION(overlay_outline_prepass_curves)
75
76GPU_SHADER_CREATE_INFO(overlay_outline_prepass_wire)
78ADDITIONAL_INFO(overlay_outline_prepass)
79ADDITIONAL_INFO(draw_view)
80ADDITIONAL_INFO(draw_mesh)
81ADDITIONAL_INFO(draw_object_infos)
82ADDITIONAL_INFO(gpu_index_buffer_load)
83STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
84PUSH_CONSTANT(int2, gpu_attr_0)
85VERTEX_SOURCE("overlay_outline_prepass_wire_vert.glsl")
87
88OVERLAY_INFO_CLIP_VARIATION(overlay_outline_prepass_wire)
89
90GPU_SHADER_NAMED_INTERFACE_INFO(overlay_outline_prepass_gpencil_flat_iface, gp_interp_flat)
91FLAT(float2, aspect)
92FLAT(float4, sspos)
93FLAT(float4, sspos_adj)
95GPU_SHADER_NAMED_INTERFACE_INFO(overlay_outline_prepass_gpencil_noperspective_iface,
96 gp_interp_noperspective)
97NO_PERSPECTIVE(float4, thickness)
98NO_PERSPECTIVE(float, hardness)
99GPU_SHADER_NAMED_INTERFACE_END(gp_interp_noperspective)
100
101GPU_SHADER_CREATE_INFO(overlay_outline_prepass_gpencil)
103TYPEDEF_SOURCE("overlay_shader_shared.hh")
104PUSH_CONSTANT(bool, is_transform)
105VERTEX_OUT(overlay_outline_prepass_iface)
106VERTEX_OUT(overlay_outline_prepass_gpencil_flat_iface)
107VERTEX_OUT(overlay_outline_prepass_gpencil_noperspective_iface)
108VERTEX_SOURCE("overlay_outline_prepass_gpencil_vert.glsl")
109PUSH_CONSTANT(bool, gp_stroke_order3d) /* TODO(fclem): Move to a GPencil object UBO. */
110PUSH_CONSTANT(float4, gp_depth_plane) /* TODO(fclem): Move to a GPencil object UBO. */
111/* Using uint because 16bit uint can contain more ids than int. */
112FRAGMENT_OUT(0, uint, out_object_id)
113FRAGMENT_SOURCE("overlay_outline_prepass_gpencil_frag.glsl")
115ADDITIONAL_INFO(draw_view)
116ADDITIONAL_INFO(draw_modelmat)
117ADDITIONAL_INFO(draw_globals)
118ADDITIONAL_INFO(draw_gpencil)
119ADDITIONAL_INFO(draw_object_infos)
121
122OVERLAY_INFO_CLIP_VARIATION(overlay_outline_prepass_gpencil)
123
124GPU_SHADER_CREATE_INFO(overlay_outline_prepass_pointcloud)
126VERTEX_SOURCE("overlay_outline_prepass_pointcloud_vert.glsl")
127ADDITIONAL_INFO(draw_view)
128ADDITIONAL_INFO(draw_modelmat)
129ADDITIONAL_INFO(draw_globals)
130ADDITIONAL_INFO(draw_pointcloud)
131ADDITIONAL_INFO(draw_object_infos)
132ADDITIONAL_INFO(overlay_outline_prepass)
134
135OVERLAY_INFO_CLIP_VARIATION(overlay_outline_prepass_pointcloud)
136
138
139/* -------------------------------------------------------------------- */
142
143GPU_SHADER_CREATE_INFO(overlay_outline_detect)
145PUSH_CONSTANT(float, alpha_occlu)
146PUSH_CONSTANT(bool, is_xray_wires)
147PUSH_CONSTANT(bool, do_anti_aliasing)
148PUSH_CONSTANT(bool, do_thick_outlines)
149SAMPLER(0, usampler2D, outline_id_tx)
150SAMPLER(1, sampler2DDepth, outline_depth_tx)
151SAMPLER(2, sampler2DDepth, scene_depth_tx)
152FRAGMENT_OUT(0, float4, frag_color)
153FRAGMENT_OUT(1, float4, line_output)
154FRAGMENT_SOURCE("overlay_outline_detect_frag.glsl")
155ADDITIONAL_INFO(gpu_fullscreen)
156ADDITIONAL_INFO(draw_view)
157ADDITIONAL_INFO(draw_globals)
159
unsigned int uint
uint pos
#define GPU_SHADER_NAMED_INTERFACE_INFO(_interface, _inst_name)
#define GPU_SHADER_NAMED_INTERFACE_END(_inst_name)
#define GPU_SHADER_CREATE_INFO(_info)
#define GPU_SHADER_CREATE_END()
#define TYPEDEF_SOURCE(filename)
#define VERTEX_OUT(stage_interface)
#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 FLAT(type, name)
#define FRAGMENT_OUT(slot, type, name)
#define NO_PERSPECTIVE(type, name)
#define VERTEX_SOURCE(filename)
#define VERTEX_IN(slot, type, name)
#define DO_STATIC_COMPILATION()
#define DEPTH_WRITE(value)
SamplerBase< float, 2, false, false, false, true > sampler2DDepth
SamplerBase< uint, 2 > usampler2D
ccl_device_inline float interp(const float a, const float b, const float t)
Definition math_base.h:502
#define OVERLAY_INFO_CLIP_VARIATION(name)