Blender  V3.3
BKE_subdiv_modifier.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2021 Blender Foundation. All rights reserved. */
3 
8 #pragma once
9 
10 #include "BKE_subdiv.h"
11 
12 #include "BLI_sys_types.h"
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 /* Hardcoded for until GPU shaders are automatically generated, then we will have a more
19  * programmatic way of detecting this. */
20 #define MAX_GPU_SUBDIV_SSBOS 12
21 
22 struct Mesh;
23 struct Object;
24 struct Scene;
25 struct Subdiv;
26 struct SubdivSettings;
27 struct SubsurfModifierData;
28 
29 /* Runtime subsurf modifier data, cached in modifier on evaluated meshes. */
30 typedef struct SubsurfRuntimeData {
31  /* Subdivision settings, exists before descriptor or mesh wrapper is created. */
33 
34  /* Cached subdivision surface descriptor, with topology and settings. */
35  struct Subdiv *subdiv;
37 
38  /* Cached mesh wrapper data, to be used for GPU subdiv or lazy evaluation on CPU. */
44 
45  /* Cached from the draw code for stats display. */
51 
52 bool BKE_subsurf_modifier_runtime_init(struct SubsurfModifierData *smd, bool use_render_params);
53 
55  const struct Mesh *mesh);
56 
63  const struct SubsurfModifierData *smd, const struct Mesh *mesh);
69  const struct Object *ob,
70  const struct Mesh *mesh,
71  const struct SubsurfModifierData *smd,
72  int required_mode);
73 
75 
76 extern void (*BKE_subsurf_modifier_free_gpu_cache_cb)(struct Subdiv *subdiv);
77 
83  struct SubsurfRuntimeData *runtime_data, const struct Mesh *mesh, bool for_draw_code);
84 
89 int BKE_subsurf_modifier_eval_required_mode(bool is_final_render, bool is_edit_mode);
90 
91 #ifdef __cplusplus
92 }
93 #endif
int BKE_subsurf_modifier_eval_required_mode(bool is_final_render, bool is_edit_mode)
void(* BKE_subsurf_modifier_free_gpu_cache_cb)(struct Subdiv *subdiv)
bool BKE_subsurf_modifier_can_do_gpu_subdiv(const struct Scene *scene, const struct Object *ob, const struct Mesh *mesh, const struct SubsurfModifierData *smd, int required_mode)
bool BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh(const struct SubsurfModifierData *smd, const struct Mesh *mesh)
struct Subdiv * BKE_subsurf_modifier_subdiv_descriptor_ensure(struct SubsurfRuntimeData *runtime_data, const struct Mesh *mesh, bool for_draw_code)
bool BKE_subsurf_modifier_use_custom_loop_normals(const struct SubsurfModifierData *smd, const struct Mesh *mesh)
bool BKE_subsurf_modifier_runtime_init(struct SubsurfModifierData *smd, bool use_render_params)
bool BKE_subsurf_modifier_has_gpu_subdiv(const struct Mesh *mesh)
struct SubsurfRuntimeData SubsurfRuntimeData
Scene scene
SyclQueue void void size_t num_bytes void
struct Subdiv * subdiv
SubdivSettings settings