25 const bool use_render_params)
32 settings.level = settings.is_simple ? 1 :
33 (settings.is_adaptive ? smd->
quality : requested_levels);
47 if (settings.level == 0) {
60 if (runtime_data ==
nullptr) {
61 runtime_data = MEM_cnew<SubsurfRuntimeData>(__func__);
94 mesh->normals_domain() == MeshNormalDomain::Corner;
167 const bool for_draw_code)
182 if (is_final_render) {
CustomData interface, see also DNA_customdata_types.h.
bool CustomData_has_layer(const CustomData *data, eCustomDataType type)
bool BKE_modifier_is_enabled(const Scene *scene, ModifierData *md, int required_mode)
#define MAX_GPU_SUBDIV_SSBOS
@ eSubsurfModifierFlag_UseRecursiveSubdivision
@ eSubsurfModifierFlag_UseCrease
@ eSubsurfModifierFlag_UseCustomNormals
Object is a sort of wrapper for general info.
@ USER_GPU_FLAG_SUBDIVISION_EVALUATION
int GPU_max_compute_shader_storage_blocks()
eGPUBackendType GPU_backend_get_type()
Read Guarded memory(de)allocation.
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
FVarLinearInterpolation fvar_interpolation_from_uv_smooth(int uv_smooth)
VtxBoundaryInterpolation vtx_boundary_interpolation_from_subsurf(int boundary_smooth)
Subdiv * update_from_mesh(Subdiv *subdiv, const Settings *settings, const Mesh *mesh)
struct ModifierData * prev
blender::bke::subdiv::Settings settings
blender::bke::subdiv::Subdiv * subdiv_cpu
blender::bke::subdiv::Subdiv * subdiv_gpu
int BKE_subsurf_modifier_eval_required_mode(bool is_final_render, bool is_edit_mode)
void(* BKE_subsurf_modifier_free_gpu_cache_cb)(subdiv::Subdiv *subdiv)
bool BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh(const SubsurfModifierData *smd, const Mesh *mesh)
bool BKE_subsurf_modifier_has_split_normals(const SubsurfModifierData *smd, const Mesh *mesh)
bool BKE_subsurf_modifier_runtime_init(SubsurfModifierData *smd, const bool use_render_params)
bool BKE_subsurf_modifier_can_do_gpu_subdiv(const Scene *scene, const Object *ob, const Mesh *mesh, const SubsurfModifierData *smd, int required_mode)
static ModifierData * modifier_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)
static bool is_subdivision_evaluation_possible_on_gpu()
subdiv::Settings BKE_subsurf_modifier_settings_init(const SubsurfModifierData *smd, const bool use_render_params)
bool BKE_subsurf_modifier_has_gpu_subdiv(const Mesh *mesh)
subdiv::Subdiv * BKE_subsurf_modifier_subdiv_descriptor_ensure(SubsurfRuntimeData *runtime_data, const Mesh *mesh, const bool for_draw_code)