|
Blender V4.3
|
#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.
Variables | |
| void(* | BKE_subsurf_modifier_free_gpu_cache_cb )(subdiv::Subdiv *subdiv) = nullptr |
| bool BKE_subsurf_modifier_can_do_gpu_subdiv | ( | const Scene * | scene, |
| const Object * | ob, | ||
| const Mesh * | mesh, | ||
| const SubsurfModifierData * | smd, | ||
| int | required_mode ) |
| skip_check_is_last | When 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().
| 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().
| 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().
| bool BKE_subsurf_modifier_has_gpu_subdiv | ( | const Mesh * | mesh | ) |
Definition at line 157 of file subdiv_modifier.cc.
References SubsurfRuntimeData::has_gpu_subdiv.
Referenced by blender::draw::DRW_mesh_batch_cache_create_requested(), and blender::draw::overlay::Meshes::edit_object_sync().
| bool BKE_subsurf_modifier_has_split_normals | ( | const SubsurfModifierData * | smd, |
| const Mesh * | mesh ) |
Definition at line 91 of file subdiv_modifier.cc.
References BKE_subsurf_modifier_use_custom_loop_normals().
Referenced by BKE_subsurf_modifier_can_do_gpu_subdiv(), and BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh().
| bool BKE_subsurf_modifier_runtime_init | ( | SubsurfModifierData * | smd, |
| const bool | use_render_params ) |
Definition at line 42 of file subdiv_modifier.cc.
References BKE_subsurf_modifier_settings_init(), SubsurfModifierData::modifier, ModifierData::runtime, SubsurfRuntimeData::settings, SubsurfRuntimeData::used_cpu, and SubsurfRuntimeData::used_gpu.
Referenced by deform_matrices(), and modify_mesh().
| subdiv::Settings BKE_subsurf_modifier_settings_init | ( | const SubsurfModifierData * | smd, |
| const bool | use_render_params ) |
Definition at line 24 of file subdiv_modifier.cc.
References SubsurfModifierData::boundary_smooth, eSubsurfModifierFlag_UseCrease, eSubsurfModifierFlag_UseRecursiveSubdivision, SubsurfModifierData::flags, blender::bke::subdiv::fvar_interpolation_from_uv_smooth(), blender::bke::subdiv::Settings::is_simple, SubsurfModifierData::levels, SubsurfModifierData::quality, SubsurfModifierData::renderLevels, SubsurfModifierData::subdivType, SUBSURF_TYPE_SIMPLE, SubsurfModifierData::uv_smooth, and blender::bke::subdiv::vtx_boundary_interpolation_from_subsurf().
Referenced by BKE_subsurf_modifier_runtime_init(), and subdivide_edit_mesh().
| subdiv::Subdiv * BKE_subsurf_modifier_subdiv_descriptor_ensure | ( | SubsurfRuntimeData * | runtime_data, |
| const Mesh * | mesh, | ||
| bool | for_draw_code ) |
Main goal of this function is to give usable subdivision surface descriptor which matches settings and topology.
Definition at line 165 of file subdiv_modifier.cc.
References SubsurfRuntimeData::settings, SubsurfRuntimeData::subdiv_cpu, SubsurfRuntimeData::subdiv_gpu, blender::bke::subdiv::update_from_mesh(), SubsurfRuntimeData::used_cpu, and SubsurfRuntimeData::used_gpu.
Referenced by deform_matrices(), blender::draw::draw_subdiv_create_requested_buffers(), mesh_wrapper_ensure_subdivision(), and modify_mesh().
| bool BKE_subsurf_modifier_use_custom_loop_normals | ( | const SubsurfModifierData * | smd, |
| const Mesh * | mesh ) |
Definition at line 85 of file subdiv_modifier.cc.
References CD_CUSTOMLOOPNORMAL, CustomData_has_layer(), eSubsurfModifierFlag_UseCustomNormals, and SubsurfModifierData::flags.
Referenced by BKE_subsurf_modifier_has_split_normals(), and modify_mesh().
|
static |
Definition at line 97 of file subdiv_modifier.cc.
References GPU_backend_get_type(), GPU_BACKEND_OPENGL, GPU_DEVICE_QUALCOMM, GPU_DRIVER_ANY, GPU_max_compute_shader_storage_blocks(), GPU_OS_WIN, GPU_type_matches(), and MAX_GPU_SUBDIV_SSBOS.
Referenced by BKE_subsurf_modifier_can_do_gpu_subdiv(), and BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh().
|
static |
Definition at line 68 of file subdiv_modifier.cc.
References BKE_modifier_is_enabled(), ListBase::last, Object::modifiers, and ModifierData::prev.
Referenced by BKE_subsurf_modifier_can_do_gpu_subdiv().
| 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().