154 if (draw_edit_weights) {
230 if (*dupli_data ==
NULL) {
234 else if ((*dupli_data)->base_flag != ob->
base_flag) {
275 if (!active_object || !ob) {
283 if ((active_object->
mode & ob->
mode) != 0) {
305 const bool instance_parent_in_edit_mode = is_instance ?
311 const bool in_paint_mode = (ob == draw_ctx->
obact) &&
313 const bool in_sculpt_curve_mode = (ob == draw_ctx->
obact) &&
315 const bool in_sculpt_mode = (ob == draw_ctx->
obact) && (ob->
sculpt !=
NULL) &&
317 const bool in_curves_sculpt_mode = (ob == draw_ctx->
obact) &&
319 const bool has_surface =
ELEM(ob->
type,
334 const bool draw_mode_transfer = draw_surface;
336 const bool draw_wires = draw_surface && has_surface &&
338 const bool draw_outlines = !in_edit_mode && !in_paint_mode && !in_sculpt_curve_mode &&
339 renderable && has_surface && !instance_parent_in_edit_mode &&
345 const bool draw_extras =
362 if (draw_mode_transfer) {
371 if (draw_bone_selection) {
383 if (draw_edit_weights) {
412 else if (in_pose_mode && draw_bones) {
430 else if (in_particle_edit_mode) {
434 if (in_sculpt_mode) {
437 else if (in_curves_sculpt_mode) {
441 if (draw_motion_paths) {
448 if (draw_bones && (is_select || (!in_edit_mode && !in_pose_mode))) {
526 GPU_framebuffer_ensure_config(
528 {GPU_ATTACHMENT_TEXTURE(dtxl->depth_in_front), GPU_ATTACHMENT_TEXTURE(dtxl->color)});
554 const float clear_col[4] = {0.0f, 0.0f, 0.0f, 0.0f};
enum eContextObjectMode CTX_data_mode_enum_ex(const struct Object *obedit, const struct Object *ob, eObjectMode object_mode)
@ CTX_MODE_WEIGHT_GPENCIL
@ CTX_MODE_VERTEX_GPENCIL
@ CTX_MODE_SCULPT_GPENCIL
General operations, lookup, etc. for blender objects.
bool BKE_scene_uses_blender_workbench(const struct Scene *scene)
#define BLI_assert_msg(a, msg)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
float DEG_get_ctime(const Depsgraph *graph)
#define OB_MODE_ALL_PAINT
@ SI_OVERLAY_SHOW_OVERLAYS
@ V3D_OVERLAY_FACE_ORIENTATION
@ V3D_OVERLAY_HIDE_OBJECT_ORIGINS
@ V3D_OVERLAY_HIDE_MOTION_PATHS
@ V3D_OVERLAY_HIDE_OBJECT_XTRAS
@ V3D_OVERLAY_FADE_INACTIVE
#define V3D_SELECT_OUTLINE
#define RV3D_CLIPPING_ENABLED(v3d, rv3d)
@ V3D_OVERLAY_EDIT_WEIGHT
#define V3D_HIDE_OVERLAYS
#define DRW_UBO_FREE_SAFE(ubo)
#define DRW_VIEWPORT_DATA_SIZE(ty)
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object instance
struct Object * DRW_object_get_dupli_parent(const Object *UNUSED(ob))
void ** DRW_duplidata_get(void *vedata)
bool DRW_state_is_select(void)
bool DRW_state_is_depth(void)
bool DRW_object_is_in_edit_mode(const Object *ob)
DefaultFramebufferList * DRW_viewport_framebuffer_list_get(void)
bool DRW_object_is_renderable(const Object *ob)
bool DRW_state_is_fbo(void)
const DRWContextState * DRW_context_state_get(void)
DefaultTextureList * DRW_viewport_texture_list_get(void)
void DRW_view_set_active(const DRWView *view)
void DRW_texture_ensure_fullscreen_2d(GPUTexture **tex, eGPUTextureFormat format, DRWTextureFlag flags)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void OVERLAY_antialiasing_cache_init(OVERLAY_Data *vedata)
void OVERLAY_antialiasing_cache_finish(OVERLAY_Data *vedata)
void OVERLAY_antialiasing_init(OVERLAY_Data *vedata)
void OVERLAY_xray_depth_copy(OVERLAY_Data *vedata)
void OVERLAY_antialiasing_start(OVERLAY_Data *vedata)
void OVERLAY_xray_depth_infront_copy(OVERLAY_Data *vedata)
void OVERLAY_xray_fade_draw(OVERLAY_Data *vedata)
void OVERLAY_antialiasing_end(OVERLAY_Data *vedata)
void OVERLAY_armature_in_front_draw(OVERLAY_Data *vedata)
bool OVERLAY_armature_is_pose_mode(Object *ob, const DRWContextState *draw_ctx)
void OVERLAY_edit_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_armature_cache_finish(OVERLAY_Data *vedata)
void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
void OVERLAY_pose_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_pose_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_pose_draw(OVERLAY_Data *vedata)
void OVERLAY_armature_draw(OVERLAY_Data *vedata)
void OVERLAY_background_cache_init(OVERLAY_Data *vedata)
void OVERLAY_background_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_curve_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_curve_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_curve_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_surf_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_curves_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_curves_init(OVERLAY_Data *vedata)
void OVERLAY_edit_curves_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_curves_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_mesh_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_mesh_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_mesh_init(OVERLAY_Data *vedata)
void OVERLAY_edit_mesh_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_text_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_text_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_text_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_uv_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_uv_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_uv_cache_finish(OVERLAY_Data *vedata)
void OVERLAY_edit_uv_init(OVERLAY_Data *vedata)
static void OVERLAY_draw_scene(void *vedata)
BLI_INLINE OVERLAY_DupliData * OVERLAY_duplidata_get(Object *ob, void *vedata, bool *do_init)
static const DrawEngineDataSize overlay_data_size
static void OVERLAY_engine_free(void)
static void OVERLAY_cache_init(void *vedata)
static void OVERLAY_cache_populate(void *vedata, Object *ob)
static bool overlay_object_is_edit_mode(const OVERLAY_PrivateData *pd, const Object *ob)
DrawEngineType draw_engine_overlay_type
static void OVERLAY_engine_init(void *vedata)
static bool overlay_should_fade_object(Object *ob, Object *active_object)
static void OVERLAY_cache_finish(void *vedata)
static void OVERLAY_instance_free(void *instance_)
void OVERLAY_facing_infront_draw(OVERLAY_Data *vedata)
void OVERLAY_facing_draw(OVERLAY_Data *vedata)
void OVERLAY_facing_init(OVERLAY_Data *UNUSED(vedata))
void OVERLAY_facing_cache_init(OVERLAY_Data *vedata)
void OVERLAY_facing_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_fade_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_fade_draw(OVERLAY_Data *vedata)
void OVERLAY_fade_infront_draw(OVERLAY_Data *vedata)
void OVERLAY_fade_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_gpencil_cache_init(OVERLAY_Data *vedata)
void OVERLAY_gpencil_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_gpencil_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_gpencil_draw(OVERLAY_Data *vedata)
void OVERLAY_gpencil_draw(OVERLAY_Data *vedata)
void OVERLAY_grid_draw(OVERLAY_Data *vedata)
void OVERLAY_grid_init(OVERLAY_Data *vedata)
void OVERLAY_grid_cache_init(OVERLAY_Data *ved)
void OVERLAY_image_cache_init(OVERLAY_Data *vedata)
void OVERLAY_image_background_draw(OVERLAY_Data *vedata)
void OVERLAY_image_in_front_draw(OVERLAY_Data *vedata)
void OVERLAY_image_scene_background_draw(OVERLAY_Data *vedata)
void OVERLAY_image_cache_finish(OVERLAY_Data *vedata)
void OVERLAY_image_draw(OVERLAY_Data *vedata)
void OVERLAY_image_init(OVERLAY_Data *vedata)
void OVERLAY_lattice_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_lattice_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_lattice_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_lattice_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_mode_transfer_cache_init(OVERLAY_Data *vedata)
void OVERLAY_mode_transfer_cache_finish(OVERLAY_Data *vedata)
void OVERLAY_mode_transfer_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_mode_transfer_infront_draw(OVERLAY_Data *vedata)
void OVERLAY_mode_transfer_draw(OVERLAY_Data *vedata)
void OVERLAY_motion_path_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_motion_path_draw(OVERLAY_Data *vedata)
void OVERLAY_motion_path_cache_init(OVERLAY_Data *vedata)
void OVERLAY_outline_cache_populate(OVERLAY_Data *vedata, Object *ob, OVERLAY_DupliData *dupli, bool init_dupli)
void OVERLAY_outline_draw(OVERLAY_Data *vedata)
void OVERLAY_outline_init(OVERLAY_Data *vedata)
void OVERLAY_outline_cache_init(OVERLAY_Data *vedata)
void OVERLAY_paint_texture_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_paint_init(OVERLAY_Data *vedata)
void OVERLAY_paint_cache_init(OVERLAY_Data *vedata)
void OVERLAY_paint_draw(OVERLAY_Data *vedata)
void OVERLAY_paint_weight_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_paint_vertex_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_particle_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_particle_cache_init(OVERLAY_Data *vedata)
void OVERLAY_particle_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_particle_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_particle_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_particle_draw(OVERLAY_Data *vedata)
void OVERLAY_sculpt_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_shader_free(void)
void OVERLAY_sculpt_draw(OVERLAY_Data *vedata)
void OVERLAY_wireframe_draw(OVERLAY_Data *vedata)
void OVERLAY_volume_draw(OVERLAY_Data *vedata)
void OVERLAY_sculpt_curves_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_wireframe_in_front_draw(OVERLAY_Data *vedata)
void OVERLAY_sculpt_curves_cache_init(OVERLAY_Data *vedata)
void OVERLAY_volume_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_volume_cache_init(OVERLAY_Data *vedata)
void OVERLAY_sculpt_cache_init(OVERLAY_Data *vedata)
void OVERLAY_wireframe_cache_populate(OVERLAY_Data *vedata, Object *ob, OVERLAY_DupliData *dupli, bool init_dupli)
void OVERLAY_sculpt_curves_draw(OVERLAY_Data *vedata)
void OVERLAY_wireframe_cache_init(OVERLAY_Data *vedata)
void OVERLAY_wireframe_init(OVERLAY_Data *vedata)
struct SpaceLink * space_data
struct Depsgraph * depsgraph
struct Object * object_edit
struct RegionView3D * rv3d
struct GPUFrameBuffer * overlay_only_fb
struct GPUFrameBuffer * in_front_fb
struct GPUFrameBuffer * overlay_fb
struct GPUTexture * depth_in_front
struct GPUFrameBuffer * overlay_line_in_front_fb
struct GPUFrameBuffer * overlay_in_front_fb
struct GPUFrameBuffer * overlay_default_fb
struct GPUFrameBuffer * overlay_line_fb
struct GPUFrameBuffer * overlay_color_only_fb
struct OVERLAY_PrivateData::@256 armature
struct OVERLAY_PrivateData::@252 edit_mesh
bool xray_enabled_and_not_wire
enum eContextObjectMode ctx_mode
struct OVERLAY_PrivateData * pd
struct SculptSession * sculpt
struct ToolSettings * toolsettings
SpaceImageOverlay overlay
float sculpt_mode_mask_opacity
float sculpt_mode_face_sets_opacity
float wireframe_threshold