63 offset_data_ =
state.offset_data_get();
66 auto &pass = edit_curves_ps_;
71 auto &sub = pass.sub(
"Lines");
74 state.clipping_plane_count);
75 sub.shader_set(res.shaders->curve_edit_line.get());
76 sub.bind_texture(
"weight_tx", &res.weight_ramp_tx);
77 sub.push_constant(
"use_weight",
false);
78 sub.push_constant(
"use_grease_pencil",
false);
79 edit_curves_lines_ = ⊂
84 auto &pass = edit_curves_handles_ps_;
89 auto &sub = pass.sub(
"Handles");
91 sub.shader_set(res.shaders->curve_edit_handles.get());
92 sub.push_constant(
"curve_handle_display",
int(
state.overlay.handle_display));
93 edit_curves_handles_ = ⊂
96 auto &sub = pass.sub(
"Points");
99 state.clipping_plane_count);
100 sub.shader_set(res.shaders->curve_edit_points.get());
101 sub.bind_texture(
"weight_tx", &res.weight_ramp_tx);
102 sub.push_constant(
"use_weight",
false);
103 sub.push_constant(
"use_grease_pencil",
false);
104 sub.push_constant(
"do_stroke_endpoints",
false);
105 sub.push_constant(
"curve_handle_display",
int(
state.overlay.handle_display));
106 edit_curves_points_ = ⊂
115 auto &pass = edit_legacy_curve_ps_;
120 auto &sub = pass.sub(
"Wires");
122 state.clipping_plane_count);
123 sub.shader_set(res.shaders->legacy_curve_edit_wires.get());
124 sub.push_constant(
"normal_size", 0.0f);
125 edit_legacy_curve_wires_ = ⊂
128 auto &sub = pass.sub(
"Normals");
130 state.clipping_plane_count);
131 sub.shader_set(res.shaders->legacy_curve_edit_normals.get());
132 sub.push_constant(
"normal_size",
state.overlay.normals_length);
133 sub.push_constant(
"use_hq_normals", use_hq_normals);
134 edit_legacy_curve_normals_ = ⊂
137 edit_legacy_curve_normals_ =
nullptr;
142 auto &pass = edit_legacy_curve_handles_ps_;
147 auto &sub = pass.sub(
"Handles");
149 sub.shader_set(res.shaders->legacy_curve_edit_handles.get());
151 sub.push_constant(
"curve_handle_display",
int(
state.overlay.handle_display));
152 sub.push_constant(
"alpha", 1.0f);
153 edit_legacy_curve_handles_ = ⊂
157 auto &sub = pass.sub(
"Points");
159 sub.shader_set(res.shaders->legacy_curve_edit_points.get());
161 sub.push_constant(
"curve_handle_display",
int(
state.overlay.handle_display));
162 sub.push_constant(
"use_grease_pencil",
false);
163 sub.push_constant(
"do_stroke_endpoints",
false);
164 edit_legacy_curve_points_ = ⊂
169 auto &pass = edit_legacy_surface_handles_ps;
174 auto create_sub = [&](
const char *
name,
DRWState drw_state,
float alpha) {
175 auto &sub = pass.sub(
name);
176 sub.state_set(drw_state,
state.clipping_plane_count);
177 sub.shader_set(res.shaders->legacy_curve_edit_handles.get());
179 sub.push_constant(
"curve_handle_display",
int(
state.overlay.handle_display));
180 sub.push_constant(
"alpha", alpha);
186 edit_legacy_surface_xray_handles_ = create_sub(
"SurfaceXrayHandles", state_xray, 0.2f);
190 edit_legacy_surface_handles_ = create_sub(
"SurfaceHandles", state_front, 1.0f);
235 edit_legacy_curve_wires_->draw(geom, res_handle);
237 if (edit_legacy_curve_normals_ && (curve.
flag &
CU_3D)) {
239 edit_legacy_curve_normals_->draw_expand(geom,
GPU_PRIM_LINES, 2, 1, res_handle);
244 edit_legacy_curve_handles_->draw_expand(geom,
GPU_PRIM_TRIS, 8, 1, res_handle);
247 edit_legacy_surface_xray_handles_->draw_expand(geom,
GPU_PRIM_TRIS, 8, 1, res_handle);
248 edit_legacy_surface_handles_->draw_expand(geom,
GPU_PRIM_TRIS, 8, 1, res_handle);
253 edit_legacy_curve_points_->draw(geom, res_handle);