Blender V4.3
BKE_subdiv_modifier.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2021 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "BKE_subdiv.hh"
12
13#include "BLI_sys_types.h"
14
15/* Hardcoded for until GPU shaders are automatically generated, then we will have a more
16 * programmatic way of detecting this. */
17#define MAX_GPU_SUBDIV_SSBOS 12
18
19struct Mesh;
20struct Object;
21struct Scene;
23
24namespace blender::bke::subdiv {
25struct Subdiv;
26struct Settings;
27} // namespace blender::bke::subdiv
28
29/* Runtime subsurf modifier data, cached in modifier on evaluated meshes. */
31 /* Subdivision settings, exists before descriptor or mesh wrapper is created. */
33
34 /* Cached subdivision surface descriptor, with topology and settings. */
37
38 /* Recent usage markers for UI diagnostics. To avoid UI flicker due to races
39 * between evaluation and UI redraw, they are set to 2 when an evaluator is used,
40 * and count down every frame. */
42
43 /* Cached mesh wrapper data, to be used for GPU subdiv or lazy evaluation on CPU. */
48
49 /* Cached from the draw code for stats display. */
54};
55
57 bool use_render_params);
58
59bool BKE_subsurf_modifier_runtime_init(SubsurfModifierData *smd, bool use_render_params);
60
62 const Mesh *mesh);
64
71 const Mesh *mesh);
77 const Object *ob,
78 const Mesh *mesh,
79 const SubsurfModifierData *smd,
80 int required_mode);
81
83
85
91 SubsurfRuntimeData *runtime_data, const Mesh *mesh, bool for_draw_code);
92
97int BKE_subsurf_modifier_eval_required_mode(bool is_final_render, bool is_edit_mode);
int BKE_subsurf_modifier_eval_required_mode(bool is_final_render, bool is_edit_mode)
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_can_do_gpu_subdiv(const Scene *scene, const Object *ob, const Mesh *mesh, const SubsurfModifierData *smd, int required_mode)
bool BKE_subsurf_modifier_use_custom_loop_normals(const SubsurfModifierData *smd, const Mesh *mesh)
blender::bke::subdiv::Settings BKE_subsurf_modifier_settings_init(const SubsurfModifierData *smd, bool use_render_params)
bool BKE_subsurf_modifier_has_gpu_subdiv(const Mesh *mesh)
void(* BKE_subsurf_modifier_free_gpu_cache_cb)(blender::bke::subdiv::Subdiv *subdiv)
bool BKE_subsurf_modifier_runtime_init(SubsurfModifierData *smd, bool use_render_params)
blender::bke::subdiv::Subdiv * BKE_subsurf_modifier_subdiv_descriptor_ensure(SubsurfRuntimeData *runtime_data, const Mesh *mesh, bool for_draw_code)
blender::bke::subdiv::Settings settings
blender::bke::subdiv::Subdiv * subdiv_cpu
blender::bke::subdiv::Subdiv * subdiv_gpu