Blender V5.0
overlay_armature_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
16#endif
17
19
20GPU_SHADER_CREATE_INFO(overlay_frag_output)
21FRAGMENT_OUT(0, float4, frag_color)
22FRAGMENT_OUT(1, float4, line_output)
24
25GPU_SHADER_INTERFACE_INFO(overlay_armature_wire_iface)
26FLAT(float4, final_color)
27FLAT(float2, edge_start)
28NO_PERSPECTIVE(float2, edge_pos)
30
31GPU_SHADER_CREATE_INFO(overlay_armature_common)
32PUSH_CONSTANT(float, alpha)
33ADDITIONAL_INFO(draw_view)
35
36/* -------------------------------------------------------------------- */
39
40GPU_SHADER_CREATE_INFO(overlay_armature_sphere_outline)
43VERTEX_OUT(overlay_armature_wire_iface)
44VERTEX_SOURCE("overlay_armature_sphere_outline_vert.glsl")
45FRAGMENT_SOURCE("overlay_armature_wire_frag.glsl")
46ADDITIONAL_INFO(overlay_frag_output)
47ADDITIONAL_INFO(overlay_armature_common)
48ADDITIONAL_INFO(draw_globals)
49STORAGE_BUF(0, read, float4x4, data_buf[])
51
52OVERLAY_INFO_VARIATIONS(overlay_armature_sphere_outline)
53
54GPU_SHADER_INTERFACE_INFO(overlay_armature_sphere_solid_iface)
55FLAT(float3, final_state_color)
56FLAT(float3, final_bone_color)
57/* Cannot interpolate matrix. */
58FLAT(float4, sphere_matrix0)
59FLAT(float4, sphere_matrix1)
60FLAT(float4, sphere_matrix2)
61FLAT(float4, sphere_matrix3)
62SMOOTH(float3, view_position)
64
65GPU_SHADER_CREATE_INFO(overlay_armature_sphere_solid)
68/* Per instance. */
69VERTEX_IN(1, float4, color)
70DEPTH_WRITE(DepthWrite::GREATER)
71VERTEX_OUT(overlay_armature_sphere_solid_iface)
72VERTEX_SOURCE("overlay_armature_sphere_solid_vert.glsl")
73FRAGMENT_SOURCE("overlay_armature_sphere_solid_frag.glsl")
74ADDITIONAL_INFO(overlay_frag_output)
75ADDITIONAL_INFO(overlay_armature_common)
76ADDITIONAL_INFO(draw_globals)
77STORAGE_BUF(0, read, float4x4, data_buf[])
79
80OVERLAY_INFO_VARIATIONS(overlay_armature_sphere_solid)
81
83
84/* -------------------------------------------------------------------- */
87
88GPU_SHADER_INTERFACE_INFO(overlay_armature_shape_outline_iface)
89FLAT(float4, final_color)
90FLAT(float2, edge_start)
91NO_PERSPECTIVE(float2, edge_pos)
93
94GPU_SHADER_CREATE_INFO(overlay_armature_shape_outline)
96STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
97STORAGE_BUF(1, read, float4x4, data_buf[])
98PUSH_CONSTANT(int2, gpu_attr_0)
99VERTEX_OUT(overlay_armature_shape_outline_iface)
100VERTEX_SOURCE("overlay_armature_shape_outline_vert.glsl")
101FRAGMENT_SOURCE("overlay_armature_wire_frag.glsl")
102ADDITIONAL_INFO(overlay_frag_output)
103ADDITIONAL_INFO(overlay_armature_common)
104ADDITIONAL_INFO(gpu_index_buffer_load)
105ADDITIONAL_INFO(draw_globals)
107
108OVERLAY_INFO_VARIATIONS(overlay_armature_shape_outline)
109
110GPU_SHADER_INTERFACE_INFO(overlay_armature_shape_solid_iface)
111SMOOTH(float4, final_color)
112FLAT(int, inverted)
114
115GPU_SHADER_CREATE_INFO(overlay_armature_shape_solid)
119/* Per instance. */
120DEPTH_WRITE(DepthWrite::GREATER)
121VERTEX_OUT(overlay_armature_shape_solid_iface)
122VERTEX_SOURCE("overlay_armature_shape_solid_vert.glsl")
123FRAGMENT_SOURCE("overlay_armature_shape_solid_frag.glsl")
124ADDITIONAL_INFO(overlay_frag_output)
125ADDITIONAL_INFO(overlay_armature_common)
126ADDITIONAL_INFO(draw_globals)
127STORAGE_BUF(0, read, float4x4, data_buf[])
129
130OVERLAY_INFO_VARIATIONS(overlay_armature_shape_solid)
131
132GPU_SHADER_INTERFACE_INFO(overlay_armature_shape_wire_iface)
133FLAT(float4, final_color)
134FLAT(float, wire_width)
135NO_PERSPECTIVE(float, edge_coord)
137
138GPU_SHADER_CREATE_INFO(overlay_armature_shape_wire)
140PUSH_CONSTANT(bool, do_smooth_wire)
141STORAGE_BUF_FREQ(0, read, float, pos[], GEOMETRY)
142STORAGE_BUF(1, read, float4x4, data_buf[])
143PUSH_CONSTANT(int2, gpu_attr_0)
144PUSH_CONSTANT(bool, use_arrow_drawing)
145VERTEX_OUT(overlay_armature_shape_wire_iface)
146VERTEX_SOURCE("overlay_armature_shape_wire_vert.glsl")
147FRAGMENT_SOURCE("overlay_armature_shape_wire_frag.glsl")
148TYPEDEF_SOURCE("overlay_shader_shared.hh")
149ADDITIONAL_INFO(overlay_frag_output)
150ADDITIONAL_INFO(overlay_armature_common)
151ADDITIONAL_INFO(gpu_index_buffer_load)
152ADDITIONAL_INFO(draw_globals)
154
155OVERLAY_INFO_VARIATIONS(overlay_armature_shape_wire)
156
157GPU_SHADER_CREATE_INFO(overlay_armature_shape_wire_strip)
159ADDITIONAL_INFO(overlay_armature_shape_wire)
160DEFINE("FROM_LINE_STRIP")
162
163OVERLAY_INFO_VARIATIONS(overlay_armature_shape_wire_strip)
164
166
167/* -------------------------------------------------------------------- */
170
171GPU_SHADER_CREATE_INFO(overlay_armature_envelope_outline)
173TYPEDEF_SOURCE("overlay_shader_shared.hh")
174VERTEX_IN(0, float2, pos0)
175VERTEX_IN(1, float2, pos1)
176VERTEX_IN(2, float2, pos2)
177VERTEX_OUT(overlay_armature_wire_iface)
178VERTEX_SOURCE("overlay_armature_envelope_outline_vert.glsl")
179FRAGMENT_SOURCE("overlay_armature_wire_frag.glsl")
180ADDITIONAL_INFO(overlay_frag_output)
181ADDITIONAL_INFO(overlay_armature_common)
182ADDITIONAL_INFO(draw_globals)
183STORAGE_BUF(0, read, BoneEnvelopeData, data_buf[])
185
186OVERLAY_INFO_VARIATIONS(overlay_armature_envelope_outline)
187
188GPU_SHADER_INTERFACE_INFO(overlay_armature_envelope_solid_iface)
189FLAT(float3, final_state_color)
190FLAT(float3, final_bone_color)
191SMOOTH(float3, view_normal)
193
194GPU_SHADER_CREATE_INFO(overlay_armature_envelope_solid)
196TYPEDEF_SOURCE("overlay_shader_shared.hh")
198VERTEX_OUT(overlay_armature_envelope_solid_iface)
199PUSH_CONSTANT(bool, is_distance)
200VERTEX_SOURCE("overlay_armature_envelope_solid_vert.glsl")
201FRAGMENT_SOURCE("overlay_armature_envelope_solid_frag.glsl")
202ADDITIONAL_INFO(overlay_frag_output)
203ADDITIONAL_INFO(overlay_armature_common)
204ADDITIONAL_INFO(draw_globals)
205STORAGE_BUF(0, read, BoneEnvelopeData, data_buf[])
207
208OVERLAY_INFO_VARIATIONS(overlay_armature_envelope_solid)
209
211
212/* -------------------------------------------------------------------- */
215
216GPU_SHADER_INTERFACE_INFO(overlay_armature_stick_iface)
217NO_PERSPECTIVE(float, color_fac)
218FLAT(float4, final_wire_color)
219FLAT(float4, final_inner_color)
221
222GPU_SHADER_CREATE_INFO(overlay_armature_stick_base)
223TYPEDEF_SOURCE("overlay_shader_shared.hh")
224/* Bone aligned screen space. */
226VERTEX_IN(1, int, vclass)
227VERTEX_OUT(overlay_armature_stick_iface)
228VERTEX_SOURCE("overlay_armature_stick_vert.glsl")
229FRAGMENT_SOURCE("overlay_armature_stick_frag.glsl")
230ADDITIONAL_INFO(overlay_frag_output)
231ADDITIONAL_INFO(overlay_armature_common)
232ADDITIONAL_INFO(draw_globals)
233STORAGE_BUF(0, read, BoneStickData, data_buf[])
235
236OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_armature_stick, overlay_armature_stick_base)
237
239
240/* -------------------------------------------------------------------- */
243
244GPU_SHADER_CREATE_INFO(overlay_armature_dof)
246TYPEDEF_SOURCE("overlay_shader_shared.hh")
248VERTEX_OUT(overlay_armature_wire_iface)
249VERTEX_SOURCE("overlay_armature_dof_vert.glsl")
250FRAGMENT_SOURCE("overlay_armature_dof_solid_frag.glsl")
251ADDITIONAL_INFO(overlay_frag_output)
252ADDITIONAL_INFO(overlay_armature_common)
253ADDITIONAL_INFO(draw_globals)
254STORAGE_BUF(0, read, ExtraInstanceData, data_buf[])
256
257OVERLAY_INFO_CLIP_VARIATION(overlay_armature_dof)
258
260
261/* -------------------------------------------------------------------- */
264
265GPU_SHADER_CREATE_INFO(overlay_armature_wire_base)
266TYPEDEF_SOURCE("overlay_shader_shared.hh")
267PUSH_CONSTANT(float, alpha)
268VERTEX_OUT(overlay_armature_wire_iface)
269VERTEX_SOURCE("overlay_armature_wire_vert.glsl")
270FRAGMENT_SOURCE("overlay_armature_wire_frag.glsl")
271ADDITIONAL_INFO(draw_view)
272ADDITIONAL_INFO(overlay_frag_output)
273ADDITIONAL_INFO(draw_globals)
274STORAGE_BUF(0, read, VertexData, data_buf[])
276
277OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_armature_wire, overlay_armature_wire_base)
278
uint pos
uint nor
#define GPU_SHADER_INTERFACE_END()
#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 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 DEPTH_WRITE(value)
MatBase< 4, 4 > float4x4
#define OVERLAY_INFO_VARIATIONS(name)
#define OVERLAY_INFO_CLIP_VARIATION(name)
#define OVERLAY_INFO_VARIATIONS_MODELMAT(name, base_info)