Commit Graph

150 Commits

Author SHA1 Message Date
dc3b5024be Cleanup: add BEGIN/END to GPL headers 2019-01-23 11:32:43 +11:00
0edd93effb Fix inconsistent/broken Cycles object visibility for instances.
Object visibility is now handled by the depsgraph iterator, but this API
was incomplete as it made no distinction for visibility of the object itself,
particles and generated instances.

The depsgraph iterator API now includes information about which part of the
object is visible, and this is used by Cycles to replace the old custom logic.
Cycles and EEVEE visibility should now be consistent, which unfortunately does
means some subtle compatibility breakage for both.

Fixes T58956, T58202, T59284.

Differential Revision: https://developer.blender.org/D4109
2018-12-21 16:05:48 +01:00
65bc931306 Cleanup: argument wrapping indentation 2018-12-20 08:03:48 +11:00
351f537fa8 GP: New Curve primitive and other primitive improvements
This commit adds support for new curve tool and adds more functionalities to the existing primitives, including new handles, editing, stroke thickness curve, noise, preview of the real stroke, etc.

Thanks to @charlie for his great contribution to this improvement.
2018-12-15 17:21:47 +01:00
a3375729f8 Cleanup: macro hygiene, style, doxy comments 2018-12-13 23:04:14 +11:00
6c39ea27c8 GP: Create Framebuffer textures only if needed
Now, if there aren't grease pencil objects, the textures and framebuffers are not created. This unload GPU Memory when not using GP.
2018-12-13 11:51:41 +01:00
715ab529f1 GP: Changes textures from DEPTH24_STENCIL8 to DEPTH_COMPONENT24
As we are not using stencil info, we don't need this in the texture.
2018-12-13 11:51:41 +01:00
9c5d104224 Fix T59248: Crash in Grease Pencil Edit mode when adding Annotation 2018-12-12 19:48:24 +01:00
f753fd1779 GP: Correct Tonemapping for Blend Layers 2018-11-26 22:52:28 +01:00
fb262f942e Cleanup: style, includes 2018-11-27 08:01:54 +11:00
99f7934e19 GP: New Blend Layers functionality
Now it's possible define the blend mode between layers including the option to clamp the layer using underlying layers.

Also a new Simplify option has been added to disable blend layers.
2018-11-26 18:12:39 +01:00
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
445d813c87 GP: Don't calculate fast drawing when playing 2018-11-13 18:53:42 +01:00
4e1057780b GP: Remove redundant texture attachment 2018-11-13 13:44:56 +01:00
c018cea680 GP: Show all objects sharing data in edit modes
Only need hide particle objects
2018-11-07 16:13:49 +01:00
5cfcee8c39 GP: Reorganize Canvas Grid
Now the grid is always controlled by the topbar selector and not in the canvas panel. To have two places to define orientation was confuse.

The orientation by default (no lock) is always to view plane.
2018-11-04 13:00:37 +01:00
1f67db75f1 Cleanup: style 2018-10-21 16:23:15 +11:00
8c9f8d6cbb GP: Fix duplication when draw strokes in multiple windows
The stroke must be visible only in the current region and only visible when the stroke is completed.
2018-10-20 19:40:29 +02:00
ae093e6a84 Cleanup: whitespace 2018-10-17 14:08:44 +11:00
918bb05799 GP: Cleanup style 2018-10-15 08:42:47 +02:00
04064fb186 Cleanup: use DRW_object_is_* for object checks
Also use const qualifier for object's.
2018-10-08 10:43:34 +11:00
3a1e9b9997 GP: Move grid parameters to GP object data level
The grid now can be configured by object because this helps to identify objects and allows to define diferent grid parameters for each objects.

Also added a color option.
2018-10-04 23:27:34 +02:00
f1afa6f6a7 GP: implement Shadow FX (wip)
Initial implementation of effect to create a drop shadow of the strokes
2018-09-30 11:49:02 +02:00
9df3467b4e GP: Add const to variable 2018-09-25 20:23:55 +02:00
4ad3182eb1 GP: Fix multi viewport onion error
For onion skin, the cache is set as dirty always because can be too many combinations of overlays and windows and makes impossible to control all changes of dirty flag.

This reduces performance, but it's safer and the onion is disabled while play animation, so the fps value is not affected.
2018-09-25 19:30:50 +02:00
2b628ba52b GP: Disable AA for material previews
This is not visible and it's using a lot of GPU memory
2018-09-24 22:10:08 +02:00
6b433f4eb3 Merge branch 'master' into blender2.8 2018-09-19 18:20:50 +02:00
a349527981 GP: Fix stupid mistake 2018-09-19 12:15:53 +02:00
25f25a6f30 GP: Remove unneeded flag 2018-09-19 12:15:05 +02:00
345c348262 Cleanup: style 2018-09-19 10:29:57 +10:00
e6766287d6 Fix T56827: Crash when enable onion skin in multiwindow
The problem was the cache was not set as dirty if one of the window had the overlay disabled.
2018-09-18 23:18:48 +02:00
43abc5dabf GP: Use original datablock and not evaluated version
This is required to avoid COW delay while drawing.
2018-09-11 10:33:29 +02:00
ae57383648 Cleanup: comment blocks 2018-09-02 18:28:27 +10:00
5155c51844 Fix T56529: Viewport ColorChage with Overlay "Fade 3D Objects" 2018-08-28 16:21:35 +02:00
56ec606413 Cleanup: style 2018-08-26 19:57:19 +10:00
3b2438192b GP: Fix unreported error drawing polygons
As the polygon drawing is handled using a buffer that is converted to stroke inmediately, the drawing engine was not drawing the buffer stroke because it was empty, and the stoke was not visible becaus eit was in fast drawing mode.

Now there is a special flag to indicate the polygon mode is enabled and force the drawing engine to draw strokes and disable fast drawing.
2018-08-24 17:05:01 +02:00
7eaf00bfb0 Cleanup: style 2018-08-22 10:10:12 +10:00
7170ff429f Cleanup: trailing space 2018-08-21 17:18:42 +10:00
a452e5e5e3 GP: Fix fast drawing error
During the modifications of the drawing engine, this was changed by error.
2018-08-17 11:09:08 +02:00
8661563156 Cleanup: Silent compiler warnings 2018-08-15 22:53:57 +02: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
211ad6bf9a GP: Fix memory leak in draw engine for buffer strokes
This memory leak was undetected during a long time, but with new memory checking is visible.

The problem was the stroke buffer batch was realocating new batches without free the memory.
2018-08-08 19:48:57 +02:00
65b31a4c9c GP: Check render status before use it. 2018-08-08 11:11:18 +02:00
cb58658f41 Cleanup: style 2018-08-08 10:59:50 +10:00
d04e8f41ae Cleanup GP: Change playing field to boolean 2018-08-07 13:56:30 +02:00
563e17091d GP: Add Simplify Shader FX option
This option was missing when old VFX modifers were backported as Shader FX.
2018-08-06 17:01:47 +02:00
29937dce8f Merge branch 'master' into blender2.8
Move 'View3D.flag3' options into 'gp_flag'.
2018-08-01 08:42:00 +10:00
20d525eb8b Fix assert when load file with shading enabled
Credits for this fix goes to Clément Foucault.
2018-07-31 12:37:58 +02:00
f06884b18a Cleanup: style, duplicate includes 2018-07-31 20:11:55 +10:00
66da2f537a New Grease Pencil object for 2D animation
This commit merge the full development done in greasepencil-object branch and include mainly the following features.

- New grease pencil object.
- New drawing engine.
- New grease pencil modes Draw/Sculpt/Edit and Weight Paint.
- New brushes for grease pencil.
- New modifiers for grease pencil.
- New shaders FX.
- New material system (replace old palettes and colors).
- Split of annotations (old grease pencil) and new grease pencil object.
- UI adapted to blender 2.8.

You can get more info here:

https://code.blender.org/2017/12/drawing-2d-animation-in-blender-2-8/
https://code.blender.org/2018/07/grease-pencil-status-update/

This is the result of nearly two years of development and I want thanks firstly the other members of the grease pencil team: Daniel M. Lara, Matias Mendiola and Joshua Leung for their support, ideas and to keep working in the project all the time, without them this project had been impossible.

Also, I want thanks other Blender developers for their help, advices and to be there always to help me, and specially to Clément Foucault, Dalai Felinto, Pablo Vázquez and Campbell Barton.
2018-07-31 10:50:43 +02:00