2017-02-07 11:20:15 +01:00
|
|
|
/*
|
|
|
|
* Copyright 2016, Blender Foundation.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*
|
|
|
|
* Contributor(s): Blender Institute
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
/** \file draw_cache.h
|
|
|
|
* \ingroup draw
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __DRAW_CACHE_H__
|
|
|
|
#define __DRAW_CACHE_H__
|
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch;
|
2017-06-28 13:38:24 +10:00
|
|
|
struct GPUMaterial;
|
2017-06-22 19:19:55 +02:00
|
|
|
struct ModifierData;
|
2018-05-09 11:14:27 +02:00
|
|
|
struct Object;
|
|
|
|
struct PTCacheEdit;
|
2017-02-07 11:20:15 +01:00
|
|
|
|
|
|
|
void DRW_shape_cache_free(void);
|
2018-06-11 11:36:09 +02:00
|
|
|
void DRW_shape_cache_reset(void);
|
2017-02-07 11:20:15 +01:00
|
|
|
|
2018-03-27 23:50:26 +02:00
|
|
|
/* 3D cursor */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_cursor_get(bool crosshair_lines);
|
2018-03-27 23:50:26 +02:00
|
|
|
|
2017-02-07 11:20:15 +01:00
|
|
|
/* Common Shapes */
|
2018-08-23 13:35:10 +02:00
|
|
|
struct GPUBatch *DRW_cache_grid_get(void);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_fullscreen_quad_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_quad_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_cube_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_sphere_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_single_vert_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_single_line_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_single_line_endpoints_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_screenspace_circle_get(void);
|
2017-02-07 11:20:15 +01:00
|
|
|
|
2017-04-21 02:18:14 +10:00
|
|
|
/* Common Object */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_object_wire_outline_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_object_edge_detection_get(struct Object *ob, bool *r_is_manifold);
|
|
|
|
struct GPUBatch *DRW_cache_object_surface_get(struct Object *ob);
|
2018-11-25 18:34:28 +03:00
|
|
|
struct GPUBatch *DRW_cache_object_surface_get_ex(struct Object *ob, bool use_hide);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_object_loose_edges_get(struct Object *ob);
|
|
|
|
struct GPUBatch **DRW_cache_object_surface_material_get(
|
2018-11-25 18:34:28 +03:00
|
|
|
struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len, bool use_hide,
|
2018-05-02 15:36:09 +02:00
|
|
|
char **auto_layer_names, int **auto_layer_is_srgb, int *auto_layer_count);
|
2018-12-07 05:03:01 +01:00
|
|
|
struct GPUBatch *DRW_cache_object_face_wireframe_get(Object *ob);
|
2017-04-21 02:18:14 +10:00
|
|
|
|
2017-02-07 11:20:15 +01:00
|
|
|
/* Empties */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_plain_axes_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_single_arrow_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_empty_cube_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_circle_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_square_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_empty_sphere_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_empty_cylinder_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_empty_cone_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_empty_capsule_cap_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_empty_capsule_body_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_image_plane_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_image_plane_wire_get(void);
|
2017-02-07 11:20:15 +01:00
|
|
|
|
2017-04-10 22:22:37 +02:00
|
|
|
/* Force Field */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_field_wind_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_field_force_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_field_vortex_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_field_tube_limit_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_field_cone_limit_get(void);
|
2017-04-10 22:22:37 +02:00
|
|
|
|
2018-07-31 10:22:19 +02:00
|
|
|
/* Grease Pencil */
|
|
|
|
struct GPUBatch *DRW_cache_gpencil_axes_get(void);
|
|
|
|
|
2017-02-07 11:20:15 +01:00
|
|
|
/* Lamps */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_lamp_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_lamp_shadows_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_lamp_sunrays_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_lamp_area_square_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_lamp_area_disk_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_lamp_hemi_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_lamp_spot_get(void);
|
2018-08-22 18:44:24 +02:00
|
|
|
struct GPUBatch *DRW_cache_lamp_spot_volume_get(void);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_lamp_spot_square_get(void);
|
2018-08-22 18:44:24 +02:00
|
|
|
struct GPUBatch *DRW_cache_lamp_spot_square_volume_get(void);
|
2017-02-07 11:20:15 +01:00
|
|
|
|
2017-03-04 00:09:22 +01:00
|
|
|
/* Camera */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_camera_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_camera_frame_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_camera_tria_get(void);
|
2017-03-04 00:09:22 +01:00
|
|
|
|
2017-02-15 03:38:21 +01:00
|
|
|
/* Speaker */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_speaker_get(void);
|
2017-02-15 03:38:21 +01:00
|
|
|
|
2017-06-07 16:00:10 +02:00
|
|
|
/* Probe */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_lightprobe_cube_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_lightprobe_grid_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_lightprobe_planar_get(void);
|
2017-06-07 16:00:10 +02:00
|
|
|
|
2017-02-22 13:00:15 +01:00
|
|
|
/* Bones */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_bone_octahedral_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_octahedral_wire_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_box_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_box_wire_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_envelope_solid_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_envelope_outline_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_envelope_head_wire_outline_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_point_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_point_wire_outline_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_stick_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_arrows_get(void);
|
2018-10-03 15:42:05 +02:00
|
|
|
struct GPUBatch *DRW_cache_bone_dof_sphere_get(void);
|
|
|
|
struct GPUBatch *DRW_cache_bone_dof_lines_get(void);
|
2017-02-22 13:00:15 +01:00
|
|
|
|
2017-02-07 11:20:15 +01:00
|
|
|
/* Meshes */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_mesh_surface_overlay_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_face_centers_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_mesh_wire_outline_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_mesh_edge_detection_get(struct Object *ob, bool *r_is_manifold);
|
2018-11-25 18:34:28 +03:00
|
|
|
struct GPUBatch *DRW_cache_mesh_surface_get(struct Object *ob, bool use_hide);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_mesh_loose_edges_get(struct Object *ob);
|
2018-09-23 20:41:10 +03:00
|
|
|
struct GPUBatch *DRW_cache_mesh_surface_weights_get(struct Object *ob, struct ToolSettings *ts, bool paint_mode);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_mesh_surface_vert_colors_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_mesh_surface_verts_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_mesh_edges_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_mesh_verts_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_mesh_edges_paint_overlay_get(struct Object *ob, bool use_wire, bool use_sel);
|
|
|
|
struct GPUBatch *DRW_cache_mesh_faces_weight_overlay_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_mesh_verts_weight_overlay_get(struct Object *ob);
|
|
|
|
struct GPUBatch **DRW_cache_mesh_surface_shaded_get(
|
2018-11-25 18:34:28 +03:00
|
|
|
struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len, bool use_hide,
|
2018-05-02 15:36:09 +02:00
|
|
|
char **auto_layer_names, int **auto_layer_is_srgb, int *auto_layer_count);
|
2018-11-25 18:34:28 +03:00
|
|
|
struct GPUBatch **DRW_cache_mesh_surface_texpaint_get(struct Object *ob, bool use_hide);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_mesh_surface_texpaint_single_get(struct Object *ob);
|
2018-12-07 05:03:01 +01:00
|
|
|
struct GPUBatch *DRW_cache_mesh_face_wireframe_get(struct Object *ob);
|
2017-02-07 11:20:15 +01:00
|
|
|
|
2017-07-13 00:27:06 +10:00
|
|
|
void DRW_cache_mesh_sculpt_coords_ensure(struct Object *ob);
|
|
|
|
|
2017-04-15 16:46:17 +10:00
|
|
|
/* Curve */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_curve_surface_get(struct Object *ob);
|
|
|
|
struct GPUBatch **DRW_cache_curve_surface_shaded_get(
|
2017-12-14 12:21:38 -02:00
|
|
|
struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_curve_surface_verts_get(struct Object *ob);
|
2018-12-14 15:23:13 +01:00
|
|
|
struct GPUBatch *DRW_cache_curve_loose_edges_get(struct Object *ob);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_curve_edge_wire_get(struct Object *ob);
|
2018-12-07 05:03:01 +01:00
|
|
|
struct GPUBatch *DRW_cache_curve_face_wireframe_get(Object *ob);
|
2017-04-21 17:58:18 +10:00
|
|
|
/* edit-mode */
|
2018-12-13 01:26:07 +01:00
|
|
|
struct GPUBatch *DRW_cache_curve_edge_normal_get(struct Object *ob);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_curve_edge_overlay_get(struct Object *ob);
|
2018-09-25 20:56:22 +02:00
|
|
|
struct GPUBatch *DRW_cache_curve_vert_overlay_get(struct Object *ob, bool handles);
|
2017-04-21 02:18:14 +10:00
|
|
|
|
|
|
|
/* Font */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_text_surface_get(struct Object *ob);
|
2018-12-14 15:23:13 +01:00
|
|
|
struct GPUBatch *DRW_cache_text_loose_edges_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_text_edge_wire_get(struct Object *ob);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch **DRW_cache_text_surface_shaded_get(
|
2017-12-14 12:21:38 -02:00
|
|
|
struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len);
|
2018-12-07 05:03:01 +01:00
|
|
|
struct GPUBatch *DRW_cache_text_face_wireframe_get(Object *ob);
|
2017-04-21 17:58:18 +10:00
|
|
|
/* edit-mode */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_text_cursor_overlay_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_text_select_overlay_get(struct Object *ob);
|
2017-04-21 02:18:14 +10:00
|
|
|
|
|
|
|
/* Surface */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_surf_surface_get(struct Object *ob);
|
2018-12-14 15:23:13 +01:00
|
|
|
struct GPUBatch *DRW_cache_surf_edge_wire_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_surf_loose_edges_get(struct Object *ob);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch **DRW_cache_surf_surface_shaded_get(
|
2017-12-14 12:21:38 -02:00
|
|
|
struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len);
|
2018-12-07 05:03:01 +01:00
|
|
|
struct GPUBatch *DRW_cache_surf_face_wireframe_get(Object *ob);
|
2017-04-15 16:46:17 +10:00
|
|
|
|
2017-04-13 22:09:59 +10:00
|
|
|
/* Lattice */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_lattice_verts_get(struct Object *ob);
|
|
|
|
struct GPUBatch *DRW_cache_lattice_wire_get(struct Object *ob, bool use_weight);
|
|
|
|
struct GPUBatch *DRW_cache_lattice_vert_overlay_get(struct Object *ob);
|
2017-04-13 22:09:59 +10:00
|
|
|
|
2017-05-09 16:23:47 +02:00
|
|
|
/* Particles */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_particles_get_hair(
|
2018-05-26 10:41:25 +02:00
|
|
|
struct Object *object, struct ParticleSystem *psys, struct ModifierData *md);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_particles_get_dots(
|
2018-05-26 10:41:25 +02:00
|
|
|
struct Object *object, struct ParticleSystem *psys);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_particles_get_edit_strands(
|
2018-11-27 13:49:00 +01:00
|
|
|
struct Object *object, struct ParticleSystem *psys, struct PTCacheEdit *edit, bool use_weight);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_particles_get_edit_inner_points(
|
2018-05-26 10:41:25 +02:00
|
|
|
struct Object *object, struct ParticleSystem *psys, struct PTCacheEdit *edit);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_particles_get_edit_tip_points(
|
2018-05-26 10:41:25 +02:00
|
|
|
struct Object *object, struct ParticleSystem *psys, struct PTCacheEdit *edit);
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_particles_get_prim(int type);
|
2017-05-09 16:23:47 +02:00
|
|
|
|
2017-11-16 15:12:32 -02:00
|
|
|
/* Metaball */
|
2018-07-18 00:12:21 +02:00
|
|
|
struct GPUBatch *DRW_cache_mball_surface_get(struct Object *ob);
|
|
|
|
struct GPUBatch **DRW_cache_mball_surface_shaded_get(struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len);
|
2018-12-07 05:03:01 +01:00
|
|
|
struct GPUBatch *DRW_cache_mball_face_wireframe_get(Object *ob);
|
2017-11-16 15:12:32 -02:00
|
|
|
|
2017-04-20 05:23:48 +10:00
|
|
|
#endif /* __DRAW_CACHE_H__ */
|