Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-05-07 21:56:20 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-05-08 18:52:48 +0300
commitb6b3a57c2241ea61e9df5505cfa33c8760dfd46c (patch)
tree0d66ffe9f58fb1e3697d8d21f2e8c399a63a0f27 /source/blender/draw/intern/draw_manager.h
parent1ae2385106c4bd7bde342a4d3aad74721f781473 (diff)
DRW: Add DRW_duplidata_get to create fast path for duplis
This is in order to create less shading group when using duplis. Data for dupli objects keep in draw manager state until the source object changes so retrieval is fast. Note that this system could be extended to all meshes.
Diffstat (limited to 'source/blender/draw/intern/draw_manager.h')
-rw-r--r--source/blender/draw/intern/draw_manager.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_manager.h b/source/blender/draw/intern/draw_manager.h
index 6dd112e3ad7..e592101b10c 100644
--- a/source/blender/draw/intern/draw_manager.h
+++ b/source/blender/draw/intern/draw_manager.h
@@ -329,6 +329,9 @@ typedef struct DRWManager {
uchar state_cache_id; /* Could be larger but 254 view changes is already a lot! */
struct DupliObject *dupli_source;
struct Object *dupli_parent;
+ struct Object *dupli_origin;
+ struct GHash *dupli_ghash;
+ void **dupli_datas; /* Array of dupli_data (one for each enabled engine) to handle duplis. */
/* Rendering state */
GPUShader *shader;
@@ -365,6 +368,7 @@ typedef struct DRWManager {
ListBase enabled_engines; /* RenderEngineType */
void **vedata_array; /* ViewportEngineData */
+ int enabled_engine_count; /* Length of enabled_engines list. */
bool buffer_finish_called; /* Avoid bad usage of DRW_render_instance_buffer_finish */