Blender V4.5
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
8
9#pragma once
10
11#include "BKE_subdiv.hh"
12
13/* Hardcoded for until GPU shaders are automatically generated, then we will have a more
14 * programmatic way of detecting this. */
15#define MAX_GPU_SUBDIV_SSBOS 12
16
17struct Mesh;
18struct Object;
19struct Scene;
21
22namespace blender::bke::subdiv {
23struct Subdiv;
24struct Settings;
25} // namespace blender::bke::subdiv
26
27/* Runtime subsurf modifier data, cached in modifier on evaluated meshes. */
29 /* Subdivision settings, exists before descriptor or mesh wrapper is created. */
31
32 /* Cached subdivision surface descriptor, with topology and settings. */
35
36 /* Recent usage markers for UI diagnostics. To avoid UI flicker due to races
37 * between evaluation and UI redraw, they are set to 2 when an evaluator is used,
38 * and count down every frame. */
40
41 /* Cached mesh wrapper data, to be used for GPU subdiv or lazy evaluation on CPU. */
46
47 /* Cached from the draw code for stats display. */
52};
53
55 bool use_render_params);
56
57bool BKE_subsurf_modifier_runtime_init(SubsurfModifierData *smd, bool use_render_params);
58
60 const Mesh *mesh);
62
69 const Mesh *mesh);
76
78
80
86 SubsurfRuntimeData *runtime_data, const Mesh *mesh, bool for_draw_code);
87
92int BKE_subsurf_modifier_eval_required_mode(bool is_final_render, bool is_edit_mode);
bool BKE_subsurf_modifier_can_do_gpu_subdiv(const SubsurfModifierData *smd, const Mesh *mesh)
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_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