Blender V4.3
subdiv_modifier.cc File Reference
#include "BKE_subdiv_modifier.hh"
#include "MEM_guardedalloc.h"
#include "DNA_mesh_types.h"
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "DNA_userdef_types.h"
#include "BKE_customdata.hh"
#include "BKE_mesh.hh"
#include "BKE_modifier.hh"
#include "BKE_subdiv.hh"
#include "GPU_capabilities.hh"
#include "GPU_context.hh"

Go to the source code of this file.

Functions

subdiv::Settings BKE_subsurf_modifier_settings_init (const SubsurfModifierData *smd, const bool use_render_params)
 
bool BKE_subsurf_modifier_runtime_init (SubsurfModifierData *smd, const bool use_render_params)
 
static ModifierDatamodifier_get_last_enabled_for_mode (const Scene *scene, const Object *ob, int required_mode)
 
bool BKE_subsurf_modifier_use_custom_loop_normals (const SubsurfModifierData *smd, const Mesh *mesh)
 
bool BKE_subsurf_modifier_has_split_normals (const SubsurfModifierData *smd, const Mesh *mesh)
 
static bool is_subdivision_evaluation_possible_on_gpu ()
 
bool BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh (const SubsurfModifierData *smd, const Mesh *mesh)
 
bool BKE_subsurf_modifier_can_do_gpu_subdiv (const Scene *scene, const Object *ob, const Mesh *mesh, const SubsurfModifierData *smd, int required_mode)
 
bool BKE_subsurf_modifier_has_gpu_subdiv (const Mesh *mesh)
 
subdiv::SubdivBKE_subsurf_modifier_subdiv_descriptor_ensure (SubsurfRuntimeData *runtime_data, const Mesh *mesh, const bool for_draw_code)
 
int BKE_subsurf_modifier_eval_required_mode (bool is_final_render, bool is_edit_mode)
 

Variables

void(* BKE_subsurf_modifier_free_gpu_cache_cb )(subdiv::Subdiv *subdiv) = nullptr
 

Function Documentation

◆ BKE_subsurf_modifier_can_do_gpu_subdiv()

bool BKE_subsurf_modifier_can_do_gpu_subdiv ( const Scene * scene,
const Object * ob,
const Mesh * mesh,
const SubsurfModifierData * smd,
int required_mode )
Parameters
skip_check_is_lastWhen true, we assume that the modifier passed is the last enabled modifier in the stack.

Definition at line 133 of file subdiv_modifier.cc.

References BKE_subsurf_modifier_has_split_normals(), is_subdivision_evaluation_possible_on_gpu(), modifier_get_last_enabled_for_mode(), and USER_GPU_FLAG_SUBDIVISION_EVALUATION.

Referenced by modify_mesh().

◆ BKE_subsurf_modifier_eval_required_mode()

int BKE_subsurf_modifier_eval_required_mode ( bool is_final_render,
bool is_edit_mode )

Return the ModifierMode required for the evaluation of the subsurf modifier, which should be used to check if the modifier is enabled.

Definition at line 180 of file subdiv_modifier.cc.

References eModifierMode_Editmode, eModifierMode_Realtime, eModifierMode_Render, and int.

Referenced by modify_mesh().

◆ BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh()

bool BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh ( const SubsurfModifierData * smd,
const Mesh * mesh )

Return true if GPU subdivision evaluation is disabled by force due to incompatible mesh or modifier settings. This will only return true if GPU subdivision is enabled in the preferences and supported by the GPU. It is mainly useful for showing UI messages.

Definition at line 117 of file subdiv_modifier.cc.

References BKE_subsurf_modifier_has_split_normals(), is_subdivision_evaluation_possible_on_gpu(), and USER_GPU_FLAG_SUBDIVISION_EVALUATION.

Referenced by panel_draw().

◆ BKE_subsurf_modifier_has_gpu_subdiv()

bool BKE_subsurf_modifier_has_gpu_subdiv ( const Mesh * mesh)

◆ BKE_subsurf_modifier_has_split_normals()

bool BKE_subsurf_modifier_has_split_normals ( const SubsurfModifierData * smd,
const Mesh * mesh )

◆ BKE_subsurf_modifier_runtime_init()

bool BKE_subsurf_modifier_runtime_init ( SubsurfModifierData * smd,
const bool use_render_params )

◆ BKE_subsurf_modifier_settings_init()

◆ BKE_subsurf_modifier_subdiv_descriptor_ensure()

subdiv::Subdiv * BKE_subsurf_modifier_subdiv_descriptor_ensure ( SubsurfRuntimeData * runtime_data,
const Mesh * mesh,
bool for_draw_code )

◆ BKE_subsurf_modifier_use_custom_loop_normals()

bool BKE_subsurf_modifier_use_custom_loop_normals ( const SubsurfModifierData * smd,
const Mesh * mesh )

◆ is_subdivision_evaluation_possible_on_gpu()

◆ modifier_get_last_enabled_for_mode()

static ModifierData * modifier_get_last_enabled_for_mode ( const Scene * scene,
const Object * ob,
int required_mode )
static

Variable Documentation

◆ BKE_subsurf_modifier_free_gpu_cache_cb

void(* BKE_subsurf_modifier_free_gpu_cache_cb) (subdiv::Subdiv *subdiv) ( subdiv::Subdiv * subdiv) = nullptr

Definition at line 163 of file subdiv_modifier.cc.

Referenced by DRW_engines_register(), and blender::bke::subdiv::free().