diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-06-22 18:15:20 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-06-22 18:22:53 +0300 |
commit | b175bb2503bd1c93464349c9c2a583b642de6d5f (patch) | |
tree | 16bc80cc66dca4400e822bd22aa19012782de4f2 /source/blender/blenkernel/BKE_subdiv_ccg.h | |
parent | 41158a91f2edcc8f7b29e5a0b37ef7a951908c3c (diff) |
Subdiv CCG: Add access to first grid index of a face
Is lazily-initialized array owned by the SubdivCCG. Allows to access
index of a first grid of a given face in the flat array of grids.
Currently unused, but is needed for multires bake.
Diffstat (limited to 'source/blender/blenkernel/BKE_subdiv_ccg.h')
-rw-r--r-- | source/blender/blenkernel/BKE_subdiv_ccg.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_subdiv_ccg.h b/source/blender/blenkernel/BKE_subdiv_ccg.h index 8d2565c31f7..78e91d3ad2f 100644 --- a/source/blender/blenkernel/BKE_subdiv_ccg.h +++ b/source/blender/blenkernel/BKE_subdiv_ccg.h @@ -214,6 +214,12 @@ typedef struct SubdivCCG { /* Corresponds to MULTIRES_HIDDEN_MODIFIED. */ bool hidden; } dirty; + + /* Cached values, are not supposed to be accessed directly. */ + struct { + /* Indexed by face, indicates index of the first grid which corresponds to the face. */ + int *start_face_grid_index; + } cache_; } SubdivCCG; /* Create CCG representation of subdivision surface. @@ -307,6 +313,15 @@ void BKE_subdiv_ccg_neighbor_coords_get(const SubdivCCG *subdiv_ccg, int BKE_subdiv_ccg_grid_to_face_index(const SubdivCCG *subdiv_ccg, const int grid_index); +/* Get array which is indexed by face index and contains index of a first grid of the face. + * + * The "ensure" version allocates the mapping if it's not know yet and stores it in the subdiv_ccg + * descriptor. This function is NOT safe for threading. + * + * The "get" version simply returns cached array. */ +const int *BKE_subdiv_ccg_start_face_grid_index_ensure(SubdivCCG *subdiv_ccg); +const int *BKE_subdiv_ccg_start_face_grid_index_get(const SubdivCCG *subdiv_ccg); + #ifdef __cplusplus } #endif |