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:
authorAntonio Vazquez <blendergit@gmail.com>2019-08-24 00:10:41 +0300
committerAntonio Vazquez <blendergit@gmail.com>2019-08-24 00:10:48 +0300
commitee4ec69b28047629a1c153af356757a8fac5cee9 (patch)
treebe1023060e66794968e8e6f7a64b8dea268872ad /source/blender/makesdna/DNA_gpencil_types.h
parentd795dd1fa78036e7faa92891ee985c61508612c6 (diff)
Fix T66924 : Move GPencil Modifiers evaluation to Depsgraph
Before, the evaluation of modifers were done in draw manager. The reason of the old design was grease pencil was designed before depsgraph was in place. This commit moves this logic to depsgraph to follow general design and reduce Draw Manager complexity. Also, this is required in order to use modifiers in Edit modes. Really, there is nothing really new in the creation of derived data, only the logic has been moved to depsgraph, but the main logic is the same. In order to get a reference to the original stroke and points, a pointer is added to Runtime data as part of the evaluated data. These pointers allow to know and use the original data. As the modifiers now are evaluated in Depsgraph, the evaluated stroke is usable in Edit modes, so now it's possible to work with the evaluated version instead to use a "ghost" of the final image over the original geometry as work today. Reviewed By: brecht Differential Revision: https://developer.blender.org/D5470
Diffstat (limited to 'source/blender/makesdna/DNA_gpencil_types.h')
-rw-r--r--source/blender/makesdna/DNA_gpencil_types.h24
1 files changed, 20 insertions, 4 deletions
diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h
index 9682fa1d13b..58a7bf8f8b4 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -51,6 +51,14 @@ typedef struct bGPDcontrolpoint {
int size;
} bGPDcontrolpoint;
+typedef struct bGPDspoint_Runtime {
+ /** Original point (used to dereference evaluated data) */
+ struct bGPDspoint *pt_orig;
+ /** Original index array position */
+ int idx_orig;
+ char _pad0[4];
+} bGPDspoint_Runtime;
+
/* Grease-Pencil Annotations - 'Stroke Point'
* -> Coordinates may either be 2d or 3d depending on settings at the time
* -> Coordinates of point on stroke, in proportions of window size
@@ -72,6 +80,10 @@ typedef struct bGPDspoint {
float uv_fac;
/** Uv rotation for dot mode. */
float uv_rot;
+
+ /** Runtime data */
+ char _pad2[4];
+ bGPDspoint_Runtime runtime;
} bGPDspoint;
/* bGPDspoint->flag */
@@ -156,15 +168,21 @@ typedef enum eGPDpalette_Flag {
/* Runtime temp data for bGPDstroke */
typedef struct bGPDstroke_Runtime {
- /* runtime final colors (result of original colors and modifiers) */
+ /** runtime final colors (result of original colors and modifiers) */
float tmp_stroke_rgba[4];
+
+ /** runtime final fill colors (result of original colors and modifiers) */
float tmp_fill_rgba[4];
- /* temporary layer name only used during copy/paste to put the stroke in the original layer */
+ /** temporary layer name only used during copy/paste to put the stroke in the original layer */
char tmp_layerinfo[128];
/** Runtime falloff factor (only for transform). */
float multi_frame_falloff;
+ char _pad[4];
+
+ /** Original stroke (used to dereference evaluated data) */
+ struct bGPDstroke *gps_orig;
} bGPDstroke_Runtime;
/* Grease-Pencil Annotations - 'Stroke'
@@ -210,7 +228,6 @@ typedef struct bGPDstroke {
void *_pad3;
bGPDstroke_Runtime runtime;
- char _pad2[4];
} bGPDstroke;
/* bGPDstroke->flag */
@@ -468,7 +485,6 @@ typedef struct bGPdata {
ListBase layers;
/** Settings for this data-block. */
int flag;
-
char _pad1[4];
/* Palettes */