Commit Graph

59 Commits

Author SHA1 Message Date
e63c947204 GP: Refactor drawing engine to single VBO
This is part of T57829.

Reduce the number of batches used to only one by shader type.  This reduces GPU overhead and increase a lot the FPS. As the number of batches is small, the time to allocate and free memory was reduced in 90% or more.

Also the code has been simplified and all batch management has been removed because this is not necessary. Now, all shading groups are created after all vertex buffer data for all strokes has been created using DRW_shgroup_call_range_add().

All batch cache data has been moved to the Object runtime struct and not as before where some parts (derived data) were saved inside GPD datablock.

For particles, now the code is faster and cleaner and gets better FPS.

Thanks to Clément Foucault for his help and advices to improve speed.
2018-11-20 20:05:37 +01:00
d5e61240ae GP: Set Thickness default to 2
New modifiers have thsi default value.
2018-11-17 19:28:58 +01:00
5ccd60e0e7 GP: Fix Time Offset for frames before range 2018-11-06 11:10:14 +01:00
0f1390c99e GP: Rename variable 2018-11-06 11:10:14 +01:00
46060d54bf GP: Limit internally Time offset to something logic
If the offset is greater than frame range, the offset could gets some unlogic values, so now the value is normalized in the range.
2018-11-05 19:52:51 +01:00
abbe4df301 GP: More tweaks to Time Offset 2018-11-05 19:10:52 +01:00
a120b120ce GP: Fix Time Offset bug when use range
The frames greater than frame range were wrongly calculated.
2018-11-05 18:35:34 +01:00
807b460a11 GP: Time Offset verify range if loop is disabled 2018-11-04 13:27:41 +01:00
0db31c03c6 GP: Fix Time Offset when range frame is 0 2018-11-03 20:27:30 +01:00
d2b4eaa137 GP: New Time Offset custom frame range parameters
These parameters allow to define a frame range for the animation loop and make possible to loop a section while the scene is playing.
2018-11-03 17:11:38 +01:00
1fb9fcb333 Cleanup: indentation 2018-10-31 14:43:25 +11:00
26ed545276 Cleanup: style 2018-10-29 10:24:42 +11:00
39bc44ffc5 GP: Refactor Instance modifier and rename to Array
The old name Instance was logic when the modifier created new object instances, but now works equal to mesh Array modifier, so the old name was not logic and must be Array.

Also added a Object to use as offset similar to mesh Array modifier.
2018-10-28 18:20:50 +01:00
4082502239 GP: Fix compiler warnings 2018-10-24 22:53:28 +02:00
735d6cb8d8 GP: Add new Layer Pass Index filter to modifiers
Now the modifier can be filtered using the new layer index.

Also changed panels to put layers and passes filter always at the end of the panel.
2018-10-24 16:46:35 +02:00
e1a66201da GP: Add layer pass index to time modifier 2018-10-24 11:03:09 +02:00
5af716620a GP: Add new modes to Time Offset modifier 2018-10-24 10:32:03 +02:00
3e9405e26d GP: Add new frame scale parameter to Time modifier
This new parameter allows to increase or decrease the animation speed to break animation patterns when reuse data blocks.
2018-10-23 16:47:09 +02:00
bc480c4989 GP: Rename modifier Time to Time Offset 2018-10-23 13:16:15 +02:00
5891f81f25 Cleanup: style, warning 2018-10-23 11:01:25 +11:00
efa3389b83 Fix build after recent changes, filename must have right case. 2018-10-22 19:10:48 +02:00
e010d5e3b1 GP: New Time modifier
This modifier allows to offset the keyframe animated to get more variations in the animation when reuse the same datablock.
2018-10-22 18:30:26 +02:00
7e26991472 GP: Fix Thickness modifier error for strokes with few points 2018-09-29 18:07:54 +02:00
631ddc5acc GP: New parameters for instance modifier: Material and On Top
Now it's possible to define what material is used in the generated strokes and if the strokes are put in front of the original (default) or keep the original in front.

Before, the generated strokes have been always on top of the original because they were drawn later.
2018-09-29 16:54:16 +02:00
6398e6608f GPencil: Avoid tautology assignment
This is considered a warning which is usually promoted to
error in developers' environment.

Probably worth adding an assert or so, if possible?
2018-09-28 10:10:25 +02:00
d06d1937ef GP: Check weight data before using it 2018-09-26 13:12:49 +02:00
e3f3a8101a Fix T56917: GP noise modifier vertex group crash 2018-09-25 19:48:57 +02:00
e81f7f25ac GP: Verify weight data is correct before assigning 2018-09-19 17:26:09 +02:00
03bb7cd9ad GP: Fix crash when select vertex group in modifiers 2018-09-19 17:20:55 +02:00
f35e9f047a Merge branch 'master' into blender2.8 2018-09-19 12:14:36 +10:00
6abb37babc Cleanup: style 2018-09-02 16:49:45 +10:00
9a646b6a20 GP: New Armature modifier and tools to handle weights
This commit adds a new armature modifier for grease pencil. The deformations are done reusing the mesh deform routines.

There is also a new operator in weight paint mode to help the artist to generate weights base on armatures. This operator is required because 2D animation workflow is not equal to meshes when parent an object to armatures.

In the drawing engine has been added the option to handle the Fade object parameter used in armatures to see the strokes while move the bones.

When rename bones, all related data of grease pencil is renamed too. This not only affect new armature code, but also layers parented and hook modifiers.

Thanks @aligorith for his review and help.
2018-08-30 12:23:08 +02:00
0845b1c8c8 GP: Improve Subdivide and Simplify
Now the weights are managed in the operators.

The subdivide operator and modifier code have been replaced with a shared function.

Some cleanup also.
2018-08-30 11:11:47 +02:00
9a9b1e9884 GP: Revert replace custom function by standard API
Using custom api breaks material at object level
2018-08-28 08:18:09 +02:00
60b24f2415 Cleanup: indentation 2018-08-28 11:01:29 +10:00
9195b5b3b1 GP: Replace custom function by standard API
Replace BKE_gpencil_get_material_index by BKE_object_material_slot_find_index
2018-08-27 23:16:02 +02:00
34c97a1b00 Cleanup: rename 'vindex' to 'def_nr'
Name hinted 'vertex index', where it's the index of the vertex group.
2018-08-27 16:05:57 +10:00
21c75bc7c5 GP: replace custom API w/ BKE_deform API 2018-08-27 14:20:40 +10:00
1948681440 GP: Reduce weight paint data memory footprint
Before, the weight data array was created always, but now only is added when a weight value is assigned.

This change was suggested by algorithm, and both agreed it was good idea.
2018-08-26 16:40:06 +02:00
7eaf00bfb0 Cleanup: style 2018-08-22 10:10:12 +10:00
8e8d93eb86 GP: Redesign logic of drawing engine for object instance support
The initial design assumed that there was only one object for each unique name, but that was not the case when instances were created.

Now, instances are supported and speed has been greatly improved when repetitions are used.

As a result of this change, the option to create objects has been removed in the Instances modifier. This option was strange and was also against Blender's design rules, since a modifier should never create objects. The old functionality of the modifier can be achieved with instances.

Also, several memory leakage problems that were not previously detected have been eliminated, and especially in the grid and in the drawing process

Onion Skin is not supported in multi-user datablocks.  Support this, makes incompatible with instances. We need find a solution in the long term, but now it's better keep disabled and make instances work. Anyway, the new instances makes unnecessary to use muli-user datablocks.
2018-08-15 20:27:59 +02:00
eb7b450c0c Cleanup: style 2018-08-10 08:14:22 +10:00
2e10c658f4 GP: Add option to select color affected in modifiers
Now it's possible to define if the Tint, Hue and OPacity modifier affect the stroke color, fill color or both.
2018-08-09 13:43:21 +02:00
f284821bf7 GP: Undo incorrect modification in previous commit 2018-08-09 13:39:35 +02:00
05c0992c9b GP: Fix modifiers Tint, Opacity and Hue and create materials to Opacity
Thanks to Charlie Jolly (mistajolly@gmail.com) for his patch D3586 that added create materials to opacity modifier.

I had to do some more changes to get all running.
2018-08-08 20:40:11 +02:00
5c4fd52612 Fix T56220: Adding Grease Object crashes if link Material is set to Object 2018-08-08 16:56:56 +02:00
78a6fa1a72 Cleanup: Move some duplicate code to new function 2018-08-08 13:37:56 +02:00
cb58658f41 Cleanup: style 2018-08-08 10:59:50 +10:00
5f71093bb6 Cleanup: Fix stupid duplication 2018-08-07 22:26:54 +02:00
d2f709b179 Fix memory leak in previous commit 2018-08-07 22:22:03 +02:00