Blender V4.3
layer.cc File Reference
#include <atomic>
#include <cstring>
#include "CLG_log.h"
#include "BLI_listbase.h"
#include "BLI_mempool.h"
#include "BLI_string.h"
#include "BLI_string_utf8.h"
#include "BLI_string_utils.hh"
#include "BLI_threads.h"
#include "BLT_translation.hh"
#include "BKE_animsys.h"
#include "BKE_collection.hh"
#include "BKE_freestyle.h"
#include "BKE_idprop.hh"
#include "BKE_layer.hh"
#include "BKE_lib_id.hh"
#include "BKE_main.hh"
#include "BKE_node.hh"
#include "BKE_object.hh"
#include "BKE_object_types.hh"
#include "DNA_ID.h"
#include "DNA_collection_types.h"
#include "DNA_layer_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_space_types.h"
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
#include "DNA_workspace_types.h"
#include "DNA_world_types.h"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_debug.hh"
#include "DEG_depsgraph_query.hh"
#include "DRW_engine.hh"
#include "RE_engine.h"
#include "MEM_guardedalloc.h"
#include "BLO_read_write.hh"

Go to the source code of this file.

Classes

struct  LayerCollectionResync
 
struct  LayerObjectBaseIteratorData
 

Macros

#define DNA_DEPRECATED_ALLOW
 

Functions

Private Iterator Helpers
static void object_bases_iterator_next (BLI_Iterator *iter, const int flag)
 
static bool object_bases_iterator_is_valid (const View3D *v3d, Base *base, const int flag)
 
static void object_bases_iterator_begin (BLI_Iterator *iter, void *data_in_v, const int flag)
 
static void object_bases_iterator_end (BLI_Iterator *iter)
 
static void objects_iterator_begin (BLI_Iterator *iter, void *data_in, const int flag)
 
static void objects_iterator_next (BLI_Iterator *iter, const int flag)
 
static void objects_iterator_end (BLI_Iterator *iter)
 
Layer Collections and Bases
static LayerCollectionlayer_collection_add (ListBase *lb_parent, Collection *collection)
 
static void layer_collection_free (ViewLayer *view_layer, LayerCollection *lc)
 
static Baseobject_base_new (Object *ob)
 
View Layer
ViewLayerBKE_view_layer_default_view (const Scene *scene)
 
ViewLayerBKE_view_layer_default_render (const Scene *scene)
 
ViewLayerBKE_view_layer_find (const Scene *scene, const char *layer_name)
 
ViewLayerBKE_view_layer_context_active_PLACEHOLDER (const Scene *scene)
 
static ViewLayerview_layer_add (const char *name)
 
static void layer_collection_exclude_all (LayerCollection *layer_collection)
 
ViewLayerBKE_view_layer_add (Scene *scene, const char *name, ViewLayer *view_layer_source, const int type)
 
void BKE_view_layer_free (ViewLayer *view_layer)
 
void BKE_view_layer_free_ex (ViewLayer *view_layer, const bool do_id_user)
 
void BKE_view_layer_free_object_content (ViewLayer *view_layer)
 
void BKE_view_layer_selected_objects_tag (const Scene *scene, ViewLayer *view_layer, const int tag)
 
static bool find_scene_collection_in_scene_collections (ListBase *lb, const LayerCollection *lc)
 
ObjectBKE_view_layer_camera_find (const Scene *scene, ViewLayer *view_layer)
 
ViewLayerBKE_view_layer_find_from_collection (const Scene *scene, LayerCollection *lc)
 
static void view_layer_bases_hash_create (ViewLayer *view_layer, const bool do_base_duplicates_fix)
 
BaseBKE_view_layer_base_find (ViewLayer *view_layer, Object *ob)
 
void BKE_view_layer_base_deselect_all (const Scene *scene, ViewLayer *view_layer)
 
void BKE_view_layer_base_select_and_set_active (ViewLayer *view_layer, Base *selbase)
 
Copy View Layer and Layer Collections
static void layer_aov_copy_data (ViewLayer *view_layer_dst, const ViewLayer *view_layer_src, ListBase *aovs_dst, const ListBase *aovs_src)
 
static void layer_lightgroup_copy_data (ViewLayer *view_layer_dst, const ViewLayer *view_layer_src, ListBase *lightgroups_dst, const ListBase *lightgroups_src)
 
static void layer_collections_copy_data (ViewLayer *view_layer_dst, const ViewLayer *view_layer_src, ListBase *layer_collections_dst, const ListBase *layer_collections_src)
 
void BKE_view_layer_copy_data (Scene *scene_dst, const Scene *, ViewLayer *view_layer_dst, const ViewLayer *view_layer_src, const int flag)
 
void BKE_view_layer_rename (Main *bmain, Scene *scene, ViewLayer *view_layer, const char *newname)
 
static LayerCollectioncollection_from_index (ListBase *lb, const int number, int *i)
 
static bool layer_collection_hidden (ViewLayer *view_layer, LayerCollection *lc)
 
LayerCollectionBKE_layer_collection_from_index (ViewLayer *view_layer, const int index)
 
LayerCollectionBKE_layer_collection_get_active (ViewLayer *view_layer)
 
bool BKE_layer_collection_activate (ViewLayer *view_layer, LayerCollection *lc)
 
LayerCollectionBKE_layer_collection_activate_parent (ViewLayer *view_layer, LayerCollection *lc)
 
static int collection_count (const ListBase *lb)
 
int BKE_layer_collection_count (const ViewLayer *view_layer)
 
static int index_from_collection (ListBase *lb, const LayerCollection *lc, int *i)
 
int BKE_layer_collection_findindex (ViewLayer *view_layer, const LayerCollection *lc)
 
Object Selection
bool BKE_layer_collection_objects_select (const Scene *scene, ViewLayer *view_layer, LayerCollection *lc, bool deselect)
 
bool BKE_layer_collection_has_selected_objects (const Scene *scene, ViewLayer *view_layer, LayerCollection *lc)
 
bool BKE_layer_collection_has_layer_collection (LayerCollection *lc_parent, LayerCollection *lc_child)
 
Object Visibility
void BKE_base_set_visible (Scene *scene, ViewLayer *view_layer, Base *base, bool extend)
 
bool BKE_base_is_visible (const View3D *v3d, const Base *base)
 
bool BKE_object_is_visible_in_viewport (const View3D *v3d, const Object *ob)
 
Collection Isolation & Local View
static void layer_collection_flag_set_recursive (LayerCollection *lc, const int flag)
 
static void layer_collection_flag_unset_recursive (LayerCollection *lc, const int flag)
 
void BKE_layer_collection_isolate_global (Scene *, ViewLayer *view_layer, LayerCollection *lc, bool extend)
 
static void layer_collection_local_visibility_set_recursive (LayerCollection *layer_collection, const int local_collections_uid)
 
static void layer_collection_local_visibility_unset_recursive (LayerCollection *layer_collection, const int local_collections_uid)
 
static void layer_collection_local_sync (const Scene *scene, ViewLayer *view_layer, LayerCollection *layer_collection, const ushort local_collections_uid, bool visible)
 
void BKE_layer_collection_local_sync (const Scene *scene, ViewLayer *view_layer, const View3D *v3d)
 
void BKE_layer_collection_local_sync_all (const Main *bmain)
 
void BKE_layer_collection_isolate_local (const Scene *scene, ViewLayer *view_layer, const View3D *v3d, LayerCollection *lc, bool extend)
 
static void layer_collection_bases_show_recursive (const Scene *scene, ViewLayer *view_layer, LayerCollection *lc)
 
static void layer_collection_bases_hide_recursive (const Scene *scene, ViewLayer *view_layer, LayerCollection *lc)
 
void BKE_layer_collection_set_visible (const Scene *scene, ViewLayer *view_layer, LayerCollection *lc, const bool visible, const bool hierarchy)
 
static void layer_collection_flag_recursive_set (LayerCollection *lc, const int flag, const bool value, const bool restore_flag)
 
void BKE_layer_collection_set_flag (LayerCollection *lc, const int flag, const bool value)
 
static LayerCollectionfind_layer_collection_by_scene_collection (LayerCollection *lc, const Collection *collection)
 
LayerCollectionBKE_layer_collection_first_from_scene_collection (const ViewLayer *view_layer, const Collection *collection)
 
bool BKE_view_layer_has_collection (const ViewLayer *view_layer, const Collection *collection)
 
bool BKE_scene_has_object (Scene *scene, Object *ob)
 
BKE_view_layer_selected_objects_iterator
void BKE_view_layer_selected_objects_iterator_begin (BLI_Iterator *iter, void *data_in)
 
void BKE_view_layer_selected_objects_iterator_next (BLI_Iterator *iter)
 
void BKE_view_layer_selected_objects_iterator_end (BLI_Iterator *iter)
 
BKE_view_layer_visible_objects_iterator
void BKE_view_layer_visible_objects_iterator_begin (BLI_Iterator *iter, void *data_in)
 
void BKE_view_layer_visible_objects_iterator_next (BLI_Iterator *iter)
 
void BKE_view_layer_visible_objects_iterator_end (BLI_Iterator *iter)
 
BKE_view_layer_selected_editable_objects_iterator
void BKE_view_layer_selected_editable_objects_iterator_begin (BLI_Iterator *iter, void *data_in)
 
void BKE_view_layer_selected_editable_objects_iterator_next (BLI_Iterator *iter)
 
void BKE_view_layer_selected_editable_objects_iterator_end (BLI_Iterator *iter)
 
BKE_view_layer_selected_bases_iterator
void BKE_view_layer_selected_bases_iterator_begin (BLI_Iterator *iter, void *data_in)
 
void BKE_view_layer_selected_bases_iterator_next (BLI_Iterator *iter)
 
void BKE_view_layer_selected_bases_iterator_end (BLI_Iterator *iter)
 
BKE_view_layer_visible_bases_iterator
void BKE_view_layer_visible_bases_iterator_begin (BLI_Iterator *iter, void *data_in)
 
void BKE_view_layer_visible_bases_iterator_next (BLI_Iterator *iter)
 
void BKE_view_layer_visible_bases_iterator_end (BLI_Iterator *iter)
 
BKE_view_layer_bases_in_mode_iterator
static bool base_is_in_mode (ObjectsInModeIteratorData *data, Base *base)
 
void BKE_view_layer_bases_in_mode_iterator_begin (BLI_Iterator *iter, void *data_in)
 
void BKE_view_layer_bases_in_mode_iterator_next (BLI_Iterator *iter)
 
void BKE_view_layer_bases_in_mode_iterator_end (BLI_Iterator *)
 
Evaluation
void BKE_base_eval_flags (Base *base)
 
static void layer_eval_view_layer (Depsgraph *depsgraph, Scene *scene, ViewLayer *view_layer)
 
void BKE_layer_eval_view_layer_indexed (Depsgraph *depsgraph, Scene *scene, int view_layer_index)
 
Blend File I/O
static void write_layer_collections (BlendWriter *writer, ListBase *lb)
 
void BKE_view_layer_blend_write (BlendWriter *writer, const Scene *scene, ViewLayer *view_layer)
 
static void direct_link_layer_collections (BlendDataReader *reader, ViewLayer *view_layer, ListBase *lb, bool master, bool &active_collection_found)
 
void BKE_view_layer_blend_read_data (BlendDataReader *reader, ViewLayer *view_layer)
 
void BKE_view_layer_blend_read_after_liblink (BlendLibReader *, ID *, ViewLayer *view_layer)
 
Shader AOV
static void viewlayer_aov_make_name_unique (ViewLayer *view_layer)
 
static void viewlayer_aov_active_set (ViewLayer *view_layer, ViewLayerAOV *aov)
 
ViewLayerAOVBKE_view_layer_add_aov (ViewLayer *view_layer)
 
void BKE_view_layer_remove_aov (ViewLayer *view_layer, ViewLayerAOV *aov)
 
void BKE_view_layer_set_active_aov (ViewLayer *view_layer, ViewLayerAOV *aov)
 
static void bke_view_layer_verify_aov_cb (void *userdata, Scene *, ViewLayer *, const char *name, int, const char *, eNodeSocketDatatype)
 
void BKE_view_layer_verify_aov (RenderEngine *engine, Scene *scene, ViewLayer *view_layer)
 
bool BKE_view_layer_has_valid_aov (ViewLayer *view_layer)
 
ViewLayerBKE_view_layer_find_with_aov (Scene *scene, ViewLayerAOV *aov)
 
Light Groups
static void viewlayer_lightgroup_make_name_unique (ViewLayer *view_layer, ViewLayerLightgroup *lightgroup)
 
static void viewlayer_lightgroup_active_set (ViewLayer *view_layer, ViewLayerLightgroup *lightgroup)
 
ViewLayerLightgroupBKE_view_layer_add_lightgroup (ViewLayer *view_layer, const char *name)
 
void BKE_view_layer_remove_lightgroup (ViewLayer *view_layer, ViewLayerLightgroup *lightgroup)
 
void BKE_view_layer_set_active_lightgroup (ViewLayer *view_layer, ViewLayerLightgroup *lightgroup)
 
ViewLayerBKE_view_layer_find_with_lightgroup (Scene *scene, ViewLayerLightgroup *lightgroup)
 
void BKE_view_layer_rename_lightgroup (Scene *scene, ViewLayer *view_layer, ViewLayerLightgroup *lightgroup, const char *name)
 
int BKE_lightgroup_membership_get (const LightgroupMembership *lgm, char *name)
 
int BKE_lightgroup_membership_length (const LightgroupMembership *lgm)
 
void BKE_lightgroup_membership_set (LightgroupMembership **lgm, const char *name)
 

Variables

static CLG_LogRef LOG = {"bke.layercollection"}
 
static const short g_base_collection_flags
 

Syncing

The layer collection tree mirrors the scene collection tree. Whenever that changes we need to synchronize them so that there is a corresponding layer collection for each collection. Note that the scene collection tree can contain link or override collections, and so this is also called on .blend file load to ensure any new or removed collections are synced.

The view layer also contains a list of bases for each object that exists in at least one layer collection. That list is also synchronized here, and stores state like selection.

This API allows to temporarily forbid resync of LayerCollections.

This can greatly improve performances in cases where those functions get called a lot (e.g. during massive remappings of IDs).

Usage of these should be done very carefully though. In particular, calling code must ensures it resync LayerCollections before any UI/Event loop handling can happen.

Warning
This is not threadsafe at all, only use from main thread.
Note
It is probably needed to use BKE_main_collection_sync_remap instead of just BKE_main_collection_sync after disabling LayerCollection resync, unless it is absolutely certain that no ID remapping (or any other process that may invalidate the caches) will happen while it is disabled.
This is a quick and safe band-aid around the long-known issue regarding this resync process. Proper fix would be to make resync itself lazy, i.e. only happen when actually needed. See also #73411.
static std::atomic< int32_tno_resync = 0
 
static constexpr int no_resync_recurse_max = 16 * 256
 
void BKE_layer_collection_resync_forbid ()
 
void BKE_layer_collection_resync_allow ()
 
static LayerCollectionResynclayer_collection_resync_create_recurse (LayerCollectionResync *parent_layer_resync, LayerCollection *layer, BLI_mempool *mempool)
 
static LayerCollectionResynclayer_collection_resync_find (LayerCollectionResync *layer_resync, Collection *child_collection)
 
static void layer_collection_resync_unused_layers_free (ViewLayer *view_layer, LayerCollectionResync *layer_resync)
 
void BKE_view_layer_need_resync_tag (ViewLayer *view_layer)
 
void BKE_view_layer_synced_ensure (const Scene *scene, ViewLayer *view_layer)
 
void BKE_scene_view_layers_synced_ensure (const Scene *scene)
 
void BKE_main_view_layers_synced_ensure (const Main *bmain)
 
static void layer_collection_objects_sync (ViewLayer *view_layer, LayerCollection *layer, ListBase *r_lb_new_object_bases, const short collection_restrict, const short layer_restrict, const ushort local_collections_bits)
 
static void layer_collection_sync (ViewLayer *view_layer, LayerCollectionResync *layer_resync, BLI_mempool *layer_resync_mempool, ListBase *r_lb_new_object_bases, const short parent_layer_flag, const short parent_collection_restrict, const short parent_layer_restrict, const ushort parent_local_collections_bits)
 
static bool view_layer_objects_base_cache_validate (ViewLayer *view_layer, LayerCollection *layer)
 
void BKE_layer_collection_doversion_2_80 (const Scene *scene, ViewLayer *view_layer)
 
void BKE_layer_collection_sync (const Scene *scene, ViewLayer *view_layer)
 
void BKE_scene_collection_sync (const Scene *scene)
 
void BKE_main_collection_sync (const Main *bmain)
 
void BKE_main_collection_sync_remap (const Main *bmain)
 

Macro Definition Documentation

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 10 of file blenkernel/intern/layer.cc.

Function Documentation

◆ base_is_in_mode()

static bool base_is_in_mode ( ObjectsInModeIteratorData * data,
Base * base )
static

◆ BKE_base_eval_flags()

void BKE_base_eval_flags ( Base * base)

◆ BKE_base_is_visible()

bool BKE_base_is_visible ( const View3D * v3d,
const Base * base )

Definition at line 1618 of file blenkernel/intern/layer.cc.

References BASE_ENABLED_AND_MAYBE_VISIBLE_IN_VIEWPORT, BASE_ENABLED_AND_VISIBLE_IN_DEFAULT_VIEWPORT, Base::flag, View3D::flag, Base::local_collections_bits, View3D::local_collections_uid, Base::local_view_bits, View3D::local_view_uid, View3D::localvd, Base::object, View3D::object_type_exclude_viewport, Object::type, and V3D_LOCAL_COLLECTIONS.

Referenced by BKE_view_layer_bases_in_mode_iterator_begin(), BKE_view_layer_bases_in_mode_iterator_next(), blender::ed::sculpt_paint::trim::can_invoke(), blender::ed::sculpt_paint::face_set::change_visibility_invoke(), blender::ed::sculpt_paint::face_set::create_op_exec(), blender::ed::sculpt_paint::face_set::edit_op_invoke(), blender::ed::sculpt_paint::face_set::gesture_box_invoke(), blender::ed::sculpt_paint::face_set::gesture_lasso_invoke(), blender::ed::sculpt_paint::face_set::gesture_line_invoke(), blender::ed::sculpt_paint::project::gesture_line_invoke(), blender::ed::sculpt_paint::face_set::gesture_polyline_invoke(), blender::ed::sculpt_paint::face_set::init_op_exec(), blender::ed::sculpt_paint::mask::mask_by_color_invoke(), blender::ed::sculpt_paint::mask::mask_from_boundary_exec(), blender::ed::sculpt_paint::mask::mask_from_cavity_exec(), blender::ed::sculpt_paint::face_set::randomize_colors_exec(), blender::ed::sculpt_paint::sample_color_invoke(), blender::ed::sculpt_paint::dyntopo::sample_detail(), blender::ed::sculpt_paint::sculpt_brush_stroke_invoke(), blender::ed::sculpt_paint::cloth::sculpt_cloth_filter_invoke(), blender::ed::sculpt_paint::color::sculpt_color_filter_init(), SCULPT_cursor_geometry_info_update(), blender::ed::sculpt_paint::dyntopo::sculpt_detail_flood_fill_exec(), blender::ed::sculpt_paint::expand::sculpt_expand_invoke(), blender::ed::sculpt_paint::mask::sculpt_mask_filter_exec(), blender::ed::sculpt_paint::mask::sculpt_mask_init_exec(), blender::ed::sculpt_paint::filter::sculpt_mesh_filter_start(), blender::ed::sculpt_paint::set_persistent_base_exec(), blender::ed::sculpt_paint::set_pivot_position_exec(), and blender::ed::sculpt_paint::symmetrize_exec().

◆ BKE_base_set_visible()

void BKE_base_set_visible ( Scene * scene,
ViewLayer * view_layer,
Base * base,
bool extend )

Update after toggling visibility of an object base.

Definition at line 1599 of file blenkernel/intern/layer.cc.

References BASE_HIDDEN, BKE_view_layer_need_resync_tag(), BKE_view_layer_object_bases_get(), BKE_view_layer_synced_ensure(), Base::flag, and LISTBASE_FOREACH.

◆ BKE_layer_collection_activate()

◆ BKE_layer_collection_activate_parent()

◆ BKE_layer_collection_count()

int BKE_layer_collection_count ( const ViewLayer * view_layer)

Get the total number of collections (including all the nested collections)

Definition at line 710 of file blenkernel/intern/layer.cc.

References collection_count(), and ViewLayer::layer_collections.

◆ BKE_layer_collection_doversion_2_80()

void BKE_layer_collection_doversion_2_80 ( const Scene * scene,
ViewLayer * view_layer )

Helper to fix older pre-2.80 blend-files.

Ensures the given view_layer as a valid first-level layer collection, i.e. a single one matching the scene's master collection. This is a requirement for BKE_layer_collection_sync.

Definition at line 1300 of file blenkernel/intern/layer.cc.

References BLI_listbase_clear(), BLI_listbase_count_at_most(), LayerCollection::collection, ListBase::first, layer_collection_add(), LayerCollection::layer_collections, and ViewLayer::layer_collections.

◆ BKE_layer_collection_findindex()

int BKE_layer_collection_findindex ( ViewLayer * view_layer,
const LayerCollection * lc )
Returns
-1 if not found.

Definition at line 737 of file blenkernel/intern/layer.cc.

References index_from_collection(), and ViewLayer::layer_collections.

Referenced by blender::ed::object::collection_hide_menu_draw().

◆ BKE_layer_collection_first_from_scene_collection()

◆ BKE_layer_collection_from_index()

LayerCollection * BKE_layer_collection_from_index ( ViewLayer * view_layer,
int index )

Get the collection for a given index.

Definition at line 651 of file blenkernel/intern/layer.cc.

References collection_from_index(), and ViewLayer::layer_collections.

Referenced by blender::ed::object::object_hide_collection_exec().

◆ BKE_layer_collection_get_active()

◆ BKE_layer_collection_has_layer_collection()

◆ BKE_layer_collection_has_selected_objects()

◆ BKE_layer_collection_isolate_global()

void BKE_layer_collection_isolate_global ( Scene * scene,
ViewLayer * view_layer,
LayerCollection * lc,
bool extend )

Isolate the collection - hide all other collections but this one. Make sure to show all the direct parents and all children of the layer collection as well. When extending we simply show the collections and its direct family.

If the collection or any of its parents is disabled, make it enabled. Don't change the children disable state though.

Definition at line 1695 of file blenkernel/intern/layer.cc.

References BKE_layer_collection_activate(), BKE_layer_collection_has_layer_collection(), BKE_view_layer_need_resync_tag(), ListBase::first, LayerCollection::flag, layer_collection_flag_set_recursive(), layer_collection_flag_unset_recursive(), LAYER_COLLECTION_HIDE, LAYER_COLLECTION_VISIBLE_VIEW_LAYER, LayerCollection::layer_collections, ViewLayer::layer_collections, LISTBASE_FOREACH, and LayerCollection::runtime_flag.

Referenced by blender::ed::outliner::collection_isolate_exec(), and blender::ed::object::object_hide_collection_exec().

◆ BKE_layer_collection_isolate_local()

◆ BKE_layer_collection_local_sync()

◆ BKE_layer_collection_local_sync_all()

void BKE_layer_collection_local_sync_all ( const Main * bmain)

◆ BKE_layer_collection_objects_select()

◆ BKE_layer_collection_resync_allow()

◆ BKE_layer_collection_resync_forbid()

◆ BKE_layer_collection_set_flag()

void BKE_layer_collection_set_flag ( LayerCollection * lc,
const int flag,
const bool value )

◆ BKE_layer_collection_set_visible()

void BKE_layer_collection_set_visible ( const Scene * scene,
ViewLayer * view_layer,
LayerCollection * lc,
bool visible,
bool hierarchy )

Hide/show all the elements of a collection. Don't change the collection children enable/disable state, but it may change it for the collection itself.

Definition at line 1908 of file blenkernel/intern/layer.cc.

References LayerCollection::flag, layer_collection_bases_hide_recursive(), layer_collection_bases_show_recursive(), layer_collection_flag_set_recursive(), layer_collection_flag_unset_recursive(), and LAYER_COLLECTION_HIDE.

Referenced by blender::ed::outliner::collection_visibility_exec(), and blender::ed::outliner::outliner_hide_exec().

◆ BKE_layer_collection_sync()

◆ BKE_layer_eval_view_layer_indexed()

void BKE_layer_eval_view_layer_indexed ( Depsgraph * depsgraph,
Scene * scene,
int view_layer_index )

◆ BKE_lightgroup_membership_get()

int BKE_lightgroup_membership_get ( const LightgroupMembership * lgm,
char * name )

Definition at line 2724 of file blenkernel/intern/layer.cc.

References BLI_strncpy_rlen(), and LightgroupMembership::name.

◆ BKE_lightgroup_membership_length()

int BKE_lightgroup_membership_length ( const LightgroupMembership * lgm)

Definition at line 2733 of file blenkernel/intern/layer.cc.

References LightgroupMembership::name.

◆ BKE_lightgroup_membership_set()

void BKE_lightgroup_membership_set ( LightgroupMembership ** lgm,
const char * name )

Definition at line 2741 of file blenkernel/intern/layer.cc.

References BLI_strncpy(), and MEM_freeN().

◆ BKE_main_collection_sync()

◆ BKE_main_collection_sync_remap()

◆ BKE_main_view_layers_synced_ensure()

void BKE_main_view_layers_synced_ensure ( const Main * bmain)

◆ BKE_object_is_visible_in_viewport()

◆ BKE_scene_collection_sync()

void BKE_scene_collection_sync ( const Scene * scene)

◆ BKE_scene_has_object()

bool BKE_scene_has_object ( Scene * scene,
Object * ob )

See if the object is in any of the scene layers of the scene.

Definition at line 2013 of file blenkernel/intern/layer.cc.

References BKE_view_layer_base_find(), BKE_view_layer_synced_ensure(), and LISTBASE_FOREACH.

Referenced by ED_editors_init(), blender::ed::outliner::scene_drop_invoke(), and ui_template_id_liboverride_hierarchy_make().

◆ BKE_scene_view_layers_synced_ensure()

◆ BKE_view_layer_add()

◆ BKE_view_layer_add_aov()

◆ BKE_view_layer_add_lightgroup()

◆ BKE_view_layer_base_deselect_all()

◆ BKE_view_layer_base_find()

Base * BKE_view_layer_base_find ( ViewLayer * view_layer,
Object * ob )

Definition at line 394 of file blenkernel/intern/layer.cc.

References BLI_assert_msg, BLI_ghash_lookup(), ViewLayer::flag, ViewLayer::object_bases_hash, view_layer_bases_hash_create(), and VIEW_LAYER_OUT_OF_SYNC.

Referenced by blender::ed::object::add_hook_object_new(), blender::ed::object::bake_object_check(), bc_add_object(), BKE_layer_collection_has_selected_objects(), BKE_layer_collection_objects_select(), BKE_light_linking_select_receivers_of_emitter(), BKE_object_add(), BKE_object_add_for_data(), BKE_object_add_from(), BKE_object_pose_armature_get_visible(), BKE_object_pose_base_array_get_ex(), BKE_scene_has_object(), blender::ed::object::clear_override_library_exec(), collection_objects_select(), createTransObject(), CTX_data_active_base(), ctx_data_base_collection_get(), blender::ed::outliner::do_outliner_item_mode_toggle_generic(), do_pose_tag_select_op_prepare(), do_version_layers_to_collections(), blender::ed::object::duplibase_for_convert(), blender::ed::object::duplicate_exec(), ED_armature_pose_select_in_wpaint_mode(), blender::ed::object::ed_object_posemode_set_for_weight_paint_ex(), ED_outliner_give_base_under_cursor(), ED_undo_object_set_active_or_warn(), EDBM_edge_find_nearest(), EDBM_face_find_nearest(), EDBM_vert_find_nearest(), editselect_buf_cache_init(), blender::ed::outliner::element_should_draw_faded(), blender::io::obj::geometry_to_blender_objects(), getTransformOrientation_ex(), blender::ed::outliner::id_override_library_clear_single_process(), blender::io::usd::import_endjob(), import_endjob(), blender::io::ply::importer_main(), blender::io::stl::importer_main(), blender::ed::object::jump_to_object(), jump_to_target_ptr(), layer_collection_bases_hide_recursive(), layer_collection_bases_show_recursive(), layer_collection_local_sync(), lib_override_library_create_post_process(), loose_data_instantiate_collection_process(), loose_data_instantiate_object_base_instance_init(), blender::ed::object::make_local_all__instance_indirect_unused(), blender::ed::object::make_object_duplilist_real(), blender::ed::object::object_add_duplicate_internal(), blender::ed::outliner::object_batch_delete_hierarchy_tag_fn(), blender::ed::outliner::object_deselect_fn(), object_preview_scene_create(), blender::ed::outliner::object_select_fn(), blender::ed::object::object_select_mirror_exec(), blender::ed::object::object_transfer_mode_to_base(), blender::ed::outliner::outliner_base_or_object_pointer_create(), blender::ed::outliner::outliner_draw_restrictbuts(), blender::ed::outliner::outliner_draw_tree_element(), blender::ed::outliner::outliner_element_visible_get(), blender::ed::outliner::outliner_hide_collect_data_to_edit(), blender::ed::outliner::outliner_item_mode_toggle(), blender::ed::outliner::outliner_object_set_flag_recursive_fn(), blender::ed::outliner::outliner_select_sync_from_object(), blender::ed::outliner::outliner_select_sync_to_object(), override_idtemplate_clear_exec(), blender::ed::outliner::parent_drop_allowed(), blender::ed::outliner::scene_drop_invoke(), screen_set_3dview_camera(), blender::ed::object::select_grouped_object_hooks(), blender::ed::object::select_grouped_parent(), select_marker_camera_switch(), set_trans_object_base_flags(), transform_object_deform_pose_armature_get(), blender::ed::outliner::tree_element_object_activate(), blender::ed::outliner::tree_element_pose_state_get(), validate_object_select_id(), view3d_collection_drop_copy_external_asset(), and view3d_ob_drop_copy_external_asset().

◆ BKE_view_layer_base_select_and_set_active()

◆ BKE_view_layer_bases_in_mode_iterator_begin()

◆ BKE_view_layer_bases_in_mode_iterator_end()

void BKE_view_layer_bases_in_mode_iterator_end ( BLI_Iterator * iter)

Definition at line 2312 of file blenkernel/intern/layer.cc.

◆ BKE_view_layer_bases_in_mode_iterator_next()

void BKE_view_layer_bases_in_mode_iterator_next ( BLI_Iterator * iter)

◆ BKE_view_layer_blend_read_after_liblink()

void BKE_view_layer_blend_read_after_liblink ( BlendLibReader * reader,
ID * self_id,
ViewLayer * view_layer )

◆ BKE_view_layer_blend_read_data()

◆ BKE_view_layer_blend_write()

◆ BKE_view_layer_camera_find()

Object * BKE_view_layer_camera_find ( const Scene * scene,
ViewLayer * view_layer )

Fallback for when a Scene has no camera to use.

Parameters
view_layerin general you want to use the same ViewLayer that is used for depsgraph. If rendering you pass the scene active layer, when viewing in the viewport you want to get ViewLayer from context.

Definition at line 325 of file blenkernel/intern/layer.cc.

References BKE_view_layer_object_bases_get(), BKE_view_layer_synced_ensure(), LISTBASE_FOREACH, and OB_CAMERA.

Referenced by check_valid_camera(), check_valid_compositing_camera(), screen_set_3dview_camera(), and view_camera_exec().

◆ BKE_view_layer_context_active_PLACEHOLDER()

ViewLayer * BKE_view_layer_context_active_PLACEHOLDER ( const Scene * scene)

This is a placeholder to know which areas of the code need to be addressed for the Workspace changes. Never use this, you should typically get the active layer from the context or window.

Definition at line 153 of file blenkernel/intern/layer.cc.

References BLI_assert.

Referenced by BKE_scene_base_iter_next(), and render_init_from_main().

◆ BKE_view_layer_copy_data()

◆ BKE_view_layer_default_render()

◆ BKE_view_layer_default_view()

ViewLayer * BKE_view_layer_default_view ( const Scene * scene)

◆ BKE_view_layer_find()

ViewLayer * BKE_view_layer_find ( const Scene * scene,
const char * layer_name )

◆ BKE_view_layer_find_from_collection()

ViewLayer * BKE_view_layer_find_from_collection ( const Scene * scene,
LayerCollection * lc )

◆ BKE_view_layer_find_with_aov()

ViewLayer * BKE_view_layer_find_with_aov ( Scene * scene,
ViewLayerAOV * aov )

Definition at line 2608 of file blenkernel/intern/layer.cc.

References BLI_findindex(), and LISTBASE_FOREACH.

◆ BKE_view_layer_find_with_lightgroup()

ViewLayer * BKE_view_layer_find_with_lightgroup ( Scene * scene,
ViewLayerLightgroup * lightgroup )

Definition at line 2680 of file blenkernel/intern/layer.cc.

References BLI_findindex(), and LISTBASE_FOREACH.

◆ BKE_view_layer_free()

void BKE_view_layer_free ( ViewLayer * view_layer)

◆ BKE_view_layer_free_ex()

◆ BKE_view_layer_free_object_content()

void BKE_view_layer_free_object_content ( ViewLayer * view_layer)

Free the bases of this ViewLayer, and what they reference. This includes baseact, object_bases, object_bases_hash, and layer_collections.

Definition at line 282 of file blenkernel/intern/layer.cc.

References ViewLayer::basact, BLI_freelistN(), BLI_ghash_free(), BLI_listbase_clear(), layer_collection_free(), ViewLayer::layer_collections, LISTBASE_FOREACH_MUTABLE, MEM_freeN(), ViewLayer::object_bases, and ViewLayer::object_bases_hash.

Referenced by BKE_view_layer_free_ex().

◆ BKE_view_layer_has_collection()

bool BKE_view_layer_has_collection ( const ViewLayer * view_layer,
const Collection * collection )

◆ BKE_view_layer_has_valid_aov()

bool BKE_view_layer_has_valid_aov ( ViewLayer * view_layer)

Check if the given view layer has at least one valid AOV.

Definition at line 2598 of file blenkernel/intern/layer.cc.

References AOV_CONFLICT, ViewLayer::aovs, and LISTBASE_FOREACH.

Referenced by blender::bke::tests::TEST(), blender::bke::tests::TEST(), and blender::bke::tests::test_render_pass_conflict().

◆ BKE_view_layer_need_resync_tag()

◆ BKE_view_layer_remove_aov()

◆ BKE_view_layer_remove_lightgroup()

◆ BKE_view_layer_rename()

◆ BKE_view_layer_rename_lightgroup()

void BKE_view_layer_rename_lightgroup ( Scene * scene,
ViewLayer * view_layer,
ViewLayerLightgroup * lightgroup,
const char * name )

◆ BKE_view_layer_selected_bases_iterator_begin()

void BKE_view_layer_selected_bases_iterator_begin ( BLI_Iterator * iter,
void * data_in )

◆ BKE_view_layer_selected_bases_iterator_end()

void BKE_view_layer_selected_bases_iterator_end ( BLI_Iterator * iter)

Definition at line 2220 of file blenkernel/intern/layer.cc.

References object_bases_iterator_end().

◆ BKE_view_layer_selected_bases_iterator_next()

void BKE_view_layer_selected_bases_iterator_next ( BLI_Iterator * iter)

◆ BKE_view_layer_selected_editable_objects_iterator_begin()

◆ BKE_view_layer_selected_editable_objects_iterator_end()

void BKE_view_layer_selected_editable_objects_iterator_end ( BLI_Iterator * iter)

Definition at line 2198 of file blenkernel/intern/layer.cc.

References objects_iterator_end().

◆ BKE_view_layer_selected_editable_objects_iterator_next()

◆ BKE_view_layer_selected_objects_iterator_begin()

void BKE_view_layer_selected_objects_iterator_begin ( BLI_Iterator * iter,
void * data_in )

◆ BKE_view_layer_selected_objects_iterator_end()

void BKE_view_layer_selected_objects_iterator_end ( BLI_Iterator * iter)

Definition at line 2142 of file blenkernel/intern/layer.cc.

References objects_iterator_end().

◆ BKE_view_layer_selected_objects_iterator_next()

void BKE_view_layer_selected_objects_iterator_next ( BLI_Iterator * iter)

◆ BKE_view_layer_selected_objects_tag()

void BKE_view_layer_selected_objects_tag ( const Scene * scene,
ViewLayer * view_layer,
int tag )

Tag all the selected objects of a render-layer.

Definition at line 299 of file blenkernel/intern/layer.cc.

References BASE_SELECTED, BKE_view_layer_object_bases_get(), BKE_view_layer_synced_ensure(), and LISTBASE_FOREACH.

Referenced by blender::ed::object::make_single_user_exec().

◆ BKE_view_layer_set_active_aov()

void BKE_view_layer_set_active_aov ( ViewLayer * view_layer,
ViewLayerAOV * aov )

Definition at line 2551 of file blenkernel/intern/layer.cc.

References viewlayer_aov_active_set().

◆ BKE_view_layer_set_active_lightgroup()

void BKE_view_layer_set_active_lightgroup ( ViewLayer * view_layer,
ViewLayerLightgroup * lightgroup )

Definition at line 2675 of file blenkernel/intern/layer.cc.

References viewlayer_lightgroup_active_set().

◆ BKE_view_layer_synced_ensure()

void BKE_view_layer_synced_ensure ( const Scene * scene,
ViewLayer * view_layer )

Definition at line 998 of file blenkernel/intern/layer.cc.

References BKE_layer_collection_sync(), BLI_assert, ViewLayer::flag, and VIEW_LAYER_OUT_OF_SYNC.

Referenced by _setlooper_base_step(), actedit_get_shapekeys(), blender::ed::object::add_hook_object_new(), blender::ed::object::add_type_with_obdata(), ANIM_animdata_get_context(), animdata_filter_dopesheet(), animdata_filter_ds_sorted_bases(), animdata_filter_grease_pencil(), blender::ed::object::bake_object_check(), blender::ed::object::base_activate_with_mode_exit_if_needed(), bc_add_object(), bc_get_children(), BKE_base_set_visible(), BKE_collection_or_layer_objects(), BKE_layer_collection_has_selected_objects(), BKE_layer_collection_local_sync(), BKE_layer_collection_objects_select(), BKE_lib_override_library_main_resync(), BKE_light_linking_select_receivers_of_emitter(), BKE_mball_basis_find(), BKE_object_add(), BKE_object_add_for_data(), BKE_object_add_from(), BKE_object_pose_armature_get_visible(), BKE_object_pose_array_get_ex(), BKE_object_pose_base_array_get_ex(), BKE_object_relational_superset(), BKE_paint_get_active(), BKE_paint_get_active_from_context(), BKE_paintmode_get_active_from_context(), BKE_scene_base_flag_to_objects(), BKE_scene_base_iter_next(), BKE_scene_has_object(), BKE_scene_object_find(), BKE_scene_object_find_by_name(), BKE_scene_set_background(), BKE_scene_view_layers_synced_ensure(), BKE_view_layer_base_deselect_all(), BKE_view_layer_blend_write(), BKE_view_layer_camera_find(), BKE_view_layer_non_active_selected_object(), BKE_view_layer_selected_objects_tag(), BlendfileLoadingBaseTest::blendfile_load(), bone_select_menu_exec(), blender::deg::DepsgraphNodeBuilder::build_scene_speakers(), blender::deg::DepsgraphRelationBuilder::build_scene_speakers(), blender::deg::DepsgraphNodeBuilder::build_view_layer(), blender::deg::DepsgraphRelationBuilder::build_view_layer(), buttons_context_path_collection(), buttons_shading_context(), buttons_shading_new_context(), buttons_texture_users_from_context(), calculateCenterActive(), clean_viewport_memory(), blender::ed::object::clear_override_library_exec(), clear_trans_object_base_flags(), click_select_channel_object(), blender::ed::outliner::collection_hierarchy_delete_exec(), collection_objects_select(), convert_type_get(), create_trans_data(), createTransGPencil(), createTransObject(), createTransParticleVerts(), createTransSculpt(), createTransTexspace(), CTX_data_active_base(), ctx_data_base_collection_get(), curvesurf_prim_add(), blender::io::SubdivModifierDisabler::disable_modifiers(), do_lasso_select_objects(), do_object_box_select(), blender::ed::outliner::do_outliner_item_mode_toggle_generic(), blender::ed::outliner::do_outliner_object_select_recursive(), do_version_layers_to_collections(), do_view3d_region_buttons(), do_view3d_vgroup_buttons(), draw_selected_name(), drawTransformPixel(), DRW_draw_depth_loop(), DRW_draw_render_loop_2d_ex(), DRW_draw_render_loop_ex(), DRW_draw_select_id(), DRW_draw_select_loop(), DRW_notify_view_update(), drw_notify_view_update_offscreen(), DRW_object_wire_theme_get(), blender::ed::object::duplibase_for_convert(), blender::ed::object::duplicate_exec(), ED_armature_edit_select_pick_bone(), ED_armature_pose_select_in_wpaint_mode(), ED_armature_pose_select_pick_bone(), ED_curve_editnurb_select_pick(), ED_editors_init_for_undo(), ED_info_draw_stats(), ED_lattice_select_pick(), ED_localview_exit_if_empty(), ED_mball_select_pick(), blender::ed::object::ed_object_posemode_set_for_weight_paint_ex(), ed_object_select_pick(), ED_outliner_give_base_under_cursor(), ED_space_image_maskedit_poll(), ED_transform_calc_orientation_from_type(), ED_undo_editmode_bases_from_view_layer(), ED_undo_editmode_objects_from_view_layer(), ED_undo_is_legacy_compatible_for_property(), ED_undo_is_memfile_compatible(), ED_undo_object_set_active_or_warn(), ED_view3d_datamask(), EDBM_edge_find_nearest(), EDBM_face_find_nearest(), edbm_polybuild_delete_at_cursor_invoke(), edbm_polybuild_dissolve_at_cursor_invoke(), edbm_polybuild_face_at_cursor_invoke(), edbm_polybuild_split_at_cursor_invoke(), edbm_polybuild_transform_at_cursor_invoke(), edbm_preselect_or_active(), EDBM_select_pick(), edbm_shortest_path_pick_invoke(), EDBM_vert_find_nearest(), edcu_shortest_path_pick_invoke(), editarm_object_from_context(), editcurve_object_from_context(), editfont_object_from_context(), editlatt_object_from_context(), editmball_object_from_context(), editmesh_object_from_context(), blender::ed::object::editmode_exit_multi_ex(), blender::ed::object::editmode_toggle_exec(), editselect_buf_cache_init(), blender::ed::outliner::element_should_draw_faded(), blender::ed::object::find_first_by_data_id(), flushTransParticles(), geometry_node_tree_get_from_context(), blender::io::obj::geometry_to_blender_objects(), get_affected_rna_paths_from_transform_mode(), blender::ed::object::get_new_constraint_target(), get_orientation_object(), get_stats_string(), blender::ed::outliner::get_sync_select_active_data(), getTransformOrientation_ex(), gizmo_3d_calc_pos(), gizmo_3d_foreach_selected(), gizmo_3d_transform_space_object_get(), gizmo_light_radius_prop_matrix_get(), gizmo_light_radius_prop_matrix_set(), gizmo_preselect_edgering_test_select(), gizmo_preselect_elem_test_select(), gizmo_spot_blend_prop_matrix_get(), gizmo_spot_blend_prop_matrix_set(), blender::ed::outliner::id_override_library_clear_single_process(), image_listener(), blender::io::usd::import_endjob(), import_endjob(), blender::io::usd::import_startjob(), blender::io::ply::importer_main(), blender::io::stl::importer_main(), blender::draw::overlay::Instance::init(), initTransInfo(), iter_snap_objects(), blender::ed::object::jump_to_object(), jump_to_target_ptr(), layer_collection_bases_hide_recursive(), layer_collection_bases_show_recursive(), layer_collection_local_sync(), layer_eval_view_layer(), lib_override_library_create_post_process(), lib_override_library_resync(), localview_remove_from_exec(), loose_data_instantiate_collection_process(), loose_data_instantiate_object_base_instance_init(), blender::ed::object::make_local_all__instance_indirect_unused(), blender::ed::object::make_object_duplilist_real(), blender::ed::object::mode_set_ex(), blender::ed::object::modifier_remove_exec(), mouse_nla_tracks(), mouse_select_eval_buffer(), mouse_select_object_center(), blender::ed::object::object_add_duplicate_internal(), blender::ed::object::object_armature_add_exec(), blender::ed::outliner::object_batch_delete_hierarchy_tag_fn(), object_circle_select(), blender::ed::object::object_convert_exec(), object_deselect_all_except(), object_deselect_all_visible(), blender::ed::outliner::object_deselect_fn(), blender::bke::object_get_datamask(), blender::ed::object::object_hide_view_clear_exec(), blender::ed::object::object_hide_view_set_exec(), blender::ed::object::object_metaball_add_exec(), object_preview_scene_create(), blender::ed::sculpt_paint::object_sculpt_mode_enter(), blender::ed::sculpt_paint::object_sculpt_mode_exit(), blender::ed::outliner::object_select_fn(), blender::ed::object::object_select_grouped_exec(), blender::ed::object::object_select_linked_exec(), object_select_menu_exec(), blender::ed::object::object_select_mirror_exec(), blender::ed::object::object_select_more_less(), blender::draw::overlay::Origins::object_sync(), blender::ed::object::object_transfer_mode_to_base(), blender::ed::object::object_transform_to_mouse_exec(), blender::ed::object::objects_in_mode_or_selected(), blender::ed::object::objects_remove_active_exec(), blender::ed::outliner::outliner_base_or_object_pointer_create(), blender::ed::outliner::outliner_delete_exec(), blender::ed::outliner::outliner_draw_restrictbuts(), blender::ed::outliner::outliner_draw_tree_element(), blender::ed::outliner::outliner_element_visible_get(), blender::ed::outliner::outliner_hide_collect_data_to_edit(), blender::ed::outliner::outliner_is_co_within_active_mode_column(), blender::ed::outliner::outliner_item_mode_toggle(), blender::ed::outliner::outliner_object_set_flag_recursive_fn(), blender::ed::outliner::outliner_select_sync_from_object(), blender::ed::outliner::outliner_select_sync_to_edit_bone(), blender::ed::outliner::outliner_show_active_get_element(), blender::ed::outliner::outliner_unhide_all_exec(), blender::ed::outliner::outliner_viewcontext_init(), OVERLAY_object_center(), override_idtemplate_clear_exec(), paint_sample_color(), blender::ed::outliner::parent_drop_allowed(), particle_system_remove_exec(), particle_undosys_poll(), particle_undosys_step_encode(), PE_minmax(), blender::ed::object::posemode_exec(), prepare_mesh_for_viewport_render(), blender::ed::space_node::preview_prepare_scene(), preview_prepare_scene(), psys_in_edit_mode(), recalcData_actedit(), recalcData_graphedit(), recalcData_sculpt(), blender::ed::sculpt_paint::undo::restore_list(), blender::io::grease_pencil::GreasePencilExporter::retrieve_objects(), rigidbody_con_add_exec(), rigidbody_con_remove_exec(), saveTransform(), scene_copy_data(), blender::ed::outliner::scene_drop_invoke(), scene_foreach_id(), screen_ctx_active_bone(), screen_ctx_active_object(), screen_ctx_active_pose_bone(), screen_ctx_edit_object(), screen_ctx_editable_objects(), screen_ctx_grease_pencil_data(), screen_ctx_image_paint_object(), screen_ctx_object(), screen_ctx_objects_in_mode(), screen_ctx_objects_in_mode_unique_data(), screen_ctx_particle_edit_object(), screen_ctx_pose_object(), screen_ctx_sculpt_object(), screen_ctx_selectable_objects(), screen_ctx_selected_bones_(), screen_ctx_selected_editable_objects(), screen_ctx_selected_objects(), screen_ctx_selected_pose_bones_from_active_object(), screen_ctx_vertex_paint_object(), screen_ctx_visible_objects(), screen_ctx_visible_or_editable_bones_(), screen_ctx_visible_pose_bones(), screen_ctx_weight_paint_object(), screen_set_3dview_camera(), blender::ed::sculpt_paint::sculpt_mode_toggle_exec(), blender::ed::object::select_grouped_object_hooks(), blender::ed::object::select_grouped_parent(), select_marker_camera_switch(), set_orientation_poll(), set_trans_object_base_flags(), setSnappingCallback(), blender::ed::object::shade_poll(), blender::ed::object::shade_smooth_exec(), shader_get_from_context(), snap_target_select_from_spacetype(), special_aftertrans_update__sculpt(), stats_update(), blender::ed::sculpt_paint::undo::step_decode(), switch_preview_floor_visibility(), texture_get_from_context(), texture_paint_camera_project_exec(), blender::ed::sculpt_paint::image::ops::paint::texture_paint_init(), trans_object_base_deps_flag_finish(), trans_object_base_deps_flag_prepare(), transform_object_deform_pose_armature_get(), blender::ed::outliner::tree_element_active_material_get(), blender::ed::outliner::tree_element_bone_activate(), blender::ed::outliner::tree_element_bone_state_get(), blender::ed::outliner::tree_element_defgroup_state_get(), blender::ed::outliner::tree_element_material_activate(), blender::ed::outliner::tree_element_object_activate(), blender::ed::outliner::tree_element_pose_state_get(), txt_add_object(), uiTemplateHeader3D_mode(), uiTemplatePaintModeSelection(), v3d_cursor_snap_update(), validate_object_select_id(), blender::ed::object::vertex_parent_set_exec(), view3d_all_exec(), view3d_collection_drop_copy_external_asset(), view3d_context(), view3d_draw_region_info(), view3d_localview_exit(), view3d_localview_init(), view3d_main_region_cursor(), view3d_main_region_message_subscribe(), view3d_ob_drop_copy_external_asset(), view3d_opengl_select_ex(), view3d_orbit_calc_center(), view3d_panel_transform(), view3d_panel_transform_poll(), view3d_panel_vgroup(), view3d_panel_vgroup_poll(), view3d_ruler_item_mousemove(), view_camera_exec(), viewRedrawForce(), viewselected_exec(), WIDGETGROUP_armature_spline_poll(), WIDGETGROUP_armature_spline_refresh(), WIDGETGROUP_armature_spline_setup(), WIDGETGROUP_camera_message_subscribe(), WIDGETGROUP_camera_poll(), WIDGETGROUP_camera_refresh(), WIDGETGROUP_camera_setup(), WIDGETGROUP_camera_view_poll(), WIDGETGROUP_empty_image_poll(), WIDGETGROUP_empty_image_refresh(), WIDGETGROUP_forcefield_poll(), WIDGETGROUP_forcefield_refresh(), WIDGETGROUP_light_area_poll(), WIDGETGROUP_light_area_refresh(), WIDGETGROUP_light_point_draw_prepare(), WIDGETGROUP_light_point_poll(), WIDGETGROUP_light_spot_draw_prepare(), WIDGETGROUP_light_spot_poll(), WIDGETGROUP_light_spot_refresh(), WIDGETGROUP_light_target_draw_prepare(), WIDGETGROUP_light_target_poll(), WM_toolsystem_mode_from_spacetype(), WM_toolsystem_ref_sync_from_context(), and blender::ed::object::xform_skip_child_container_item_ensure_from_array().

◆ BKE_view_layer_verify_aov()

void BKE_view_layer_verify_aov ( RenderEngine * engine,
Scene * scene,
ViewLayer * view_layer )

Update the naming and conflicts of the AOVs.

Name must be unique between all AOVs. Conflicts with render passes will show a conflict icon. Reason is that switching a render engine or activating a render pass could lead to other conflicts that wouldn't be that clear for the user.

Definition at line 2579 of file blenkernel/intern/layer.cc.

References AOV_CONFLICT, ViewLayer::aovs, bke_view_layer_verify_aov_cb(), BLI_ghash_free(), BLI_ghash_lookup(), BLI_ghash_str_new(), count, LISTBASE_FOREACH, MEM_freeN(), POINTER_AS_INT, RE_engine_update_render_passes(), SET_FLAG_FROM_TEST, and viewlayer_aov_make_name_unique().

Referenced by blender::bke::tests::TEST(), blender::bke::tests::TEST(), blender::bke::tests::test_render_pass_conflict(), view_layer_add_aov_exec(), and view_layer_remove_aov_exec().

◆ bke_view_layer_verify_aov_cb()

static void bke_view_layer_verify_aov_cb ( void * userdata,
Scene * ,
ViewLayer * ,
const char * name,
int ,
const char * ,
eNodeSocketDatatype  )
static

◆ BKE_view_layer_visible_bases_iterator_begin()

void BKE_view_layer_visible_bases_iterator_begin ( BLI_Iterator * iter,
void * data_in )

Definition at line 2231 of file blenkernel/intern/layer.cc.

References object_bases_iterator_begin().

◆ BKE_view_layer_visible_bases_iterator_end()

void BKE_view_layer_visible_bases_iterator_end ( BLI_Iterator * iter)

Definition at line 2241 of file blenkernel/intern/layer.cc.

References object_bases_iterator_end().

◆ BKE_view_layer_visible_bases_iterator_next()

void BKE_view_layer_visible_bases_iterator_next ( BLI_Iterator * iter)

Definition at line 2236 of file blenkernel/intern/layer.cc.

References object_bases_iterator_next().

◆ BKE_view_layer_visible_objects_iterator_begin()

void BKE_view_layer_visible_objects_iterator_begin ( BLI_Iterator * iter,
void * data_in )

Definition at line 2153 of file blenkernel/intern/layer.cc.

References objects_iterator_begin().

◆ BKE_view_layer_visible_objects_iterator_end()

void BKE_view_layer_visible_objects_iterator_end ( BLI_Iterator * iter)

Definition at line 2163 of file blenkernel/intern/layer.cc.

References objects_iterator_end().

◆ BKE_view_layer_visible_objects_iterator_next()

void BKE_view_layer_visible_objects_iterator_next ( BLI_Iterator * iter)

Definition at line 2158 of file blenkernel/intern/layer.cc.

References objects_iterator_next().

◆ collection_count()

static int collection_count ( const ListBase * lb)
static

Recursively get the count of collections

Definition at line 701 of file blenkernel/intern/layer.cc.

References collection_count(), and LISTBASE_FOREACH.

Referenced by BKE_layer_collection_count(), collection_count(), and blender::ed::object::select_grouped_collection().

◆ collection_from_index()

static LayerCollection * collection_from_index ( ListBase * lb,
const int number,
int * i )
static

Recursively get the collection for a given index

Definition at line 605 of file blenkernel/intern/layer.cc.

References collection_from_index(), and LISTBASE_FOREACH.

Referenced by BKE_layer_collection_from_index(), and collection_from_index().

◆ direct_link_layer_collections()

static void direct_link_layer_collections ( BlendDataReader * reader,
ViewLayer * view_layer,
ListBase * lb,
bool master,
bool & active_collection_found )
static

◆ find_layer_collection_by_scene_collection()

◆ find_scene_collection_in_scene_collections()

static bool find_scene_collection_in_scene_collections ( ListBase * lb,
const LayerCollection * lc )
static

◆ index_from_collection()

static int index_from_collection ( ListBase * lb,
const LayerCollection * lc,
int * i )
static

Recursively get the index for a given collection

Definition at line 718 of file blenkernel/intern/layer.cc.

References index_from_collection(), and LISTBASE_FOREACH.

Referenced by BKE_layer_collection_findindex(), and index_from_collection().

◆ layer_aov_copy_data()

static void layer_aov_copy_data ( ViewLayer * view_layer_dst,
const ViewLayer * view_layer_src,
ListBase * aovs_dst,
const ListBase * aovs_src )
static

◆ layer_collection_add()

◆ layer_collection_bases_hide_recursive()

◆ layer_collection_bases_show_recursive()

◆ layer_collection_exclude_all()

◆ layer_collection_flag_recursive_set()

static void layer_collection_flag_recursive_set ( LayerCollection * lc,
const int flag,
const bool value,
const bool restore_flag )
static

◆ layer_collection_flag_set_recursive()

◆ layer_collection_flag_unset_recursive()

◆ layer_collection_free()

◆ layer_collection_hidden()

◆ layer_collection_local_sync()

◆ layer_collection_local_visibility_set_recursive()

static void layer_collection_local_visibility_set_recursive ( LayerCollection * layer_collection,
const int local_collections_uid )
static

◆ layer_collection_local_visibility_unset_recursive()

static void layer_collection_local_visibility_unset_recursive ( LayerCollection * layer_collection,
const int local_collections_uid )
static

◆ layer_collection_objects_sync()

◆ layer_collection_resync_create_recurse()

◆ layer_collection_resync_find()

◆ layer_collection_resync_unused_layers_free()

◆ layer_collection_sync()

static void layer_collection_sync ( ViewLayer * view_layer,
LayerCollectionResync * layer_resync,
BLI_mempool * layer_resync_mempool,
ListBase * r_lb_new_object_bases,
const short parent_layer_flag,
const short parent_collection_restrict,
const short parent_layer_restrict,
const ushort parent_local_collections_bits )
static

◆ layer_collections_copy_data()

static void layer_collections_copy_data ( ViewLayer * view_layer_dst,
const ViewLayer * view_layer_src,
ListBase * layer_collections_dst,
const ListBase * layer_collections_src )
static

◆ layer_eval_view_layer()

◆ layer_lightgroup_copy_data()

static void layer_lightgroup_copy_data ( ViewLayer * view_layer_dst,
const ViewLayer * view_layer_src,
ListBase * lightgroups_dst,
const ListBase * lightgroups_src )
static

◆ object_base_new()

static Base * object_base_new ( Object * ob)
static

◆ object_bases_iterator_begin()

◆ object_bases_iterator_end()

static void object_bases_iterator_end ( BLI_Iterator * iter)
static

◆ object_bases_iterator_is_valid()

static bool object_bases_iterator_is_valid ( const View3D * v3d,
Base * base,
const int flag )
static

◆ object_bases_iterator_next()

◆ objects_iterator_begin()

◆ objects_iterator_end()

◆ objects_iterator_next()

◆ view_layer_add()

◆ view_layer_bases_hash_create()

◆ view_layer_objects_base_cache_validate()

◆ viewlayer_aov_active_set()

static void viewlayer_aov_active_set ( ViewLayer * view_layer,
ViewLayerAOV * aov )
static

◆ viewlayer_aov_make_name_unique()

static void viewlayer_aov_make_name_unique ( ViewLayer * view_layer)
static

◆ viewlayer_lightgroup_active_set()

static void viewlayer_lightgroup_active_set ( ViewLayer * view_layer,
ViewLayerLightgroup * lightgroup )
static

◆ viewlayer_lightgroup_make_name_unique()

static void viewlayer_lightgroup_make_name_unique ( ViewLayer * view_layer,
ViewLayerLightgroup * lightgroup )
static

◆ write_layer_collections()

static void write_layer_collections ( BlendWriter * writer,
ListBase * lb )
static

Variable Documentation

◆ g_base_collection_flags

const short g_base_collection_flags
static
Initial value:

Definition at line 63 of file blenkernel/intern/layer.cc.

Referenced by BKE_base_eval_flags().

◆ LOG

◆ no_resync

◆ no_resync_recurse_max

int no_resync_recurse_max = 16 * 256
staticconstexpr