Commit Graph

371 Commits

Author SHA1 Message Date
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
a3b6ae9fb9 Cleanup/Refactor: Move CurveCache runtime data into Object.runtime struct.
Also, fix missing cleanup of Object.runtime when copying Object
datablocks!
2018-07-30 16:58:44 +02:00
3005c2e2be Eevee: LightProbes: Fix RNA defaults and remove unused data_draw_size 2018-07-20 22:22:30 +02:00
8cd7828792 GWN: Port to GPU module: Replace GWN prefix by GPU 2018-07-18 11:49:15 +02:00
7b3a18f0aa Cleanup: moving shading type into View3DShading.
So all shading settings are in this struct and can be reused in the OpenGL
render engine.
2018-07-17 14:59:07 +02:00
7dcc7bd5ee Object Mode: Add back object bound display 2018-07-17 11:36:21 +02:00
7a693626d6 Smoke: Port display to Workbench + object mode
This does not fix the smokesim. It only port the drawing method.

The Object mode engine is in charge of rendering the velocity debugging.

Things left to do:
- Flame rendering.
- Color Ramp coloring of volume data.
- View facing slicing (for now it's only doing sampling starting from the
  volume bounds which gives a squarish look)
- Add option to enable dithering (currently on by default.
2018-07-16 20:08:09 +02:00
4e9d039ef7 3D View: option not to draw center dots
While this is a fairly obscure option,
it means it's possible to disable all overlays except for any
overlays the users wants to see.
2018-07-11 18:55:54 +02:00
ff39cbdc86 3D View: any view axis also showing grid
Setting accidentally impacted in ortho view.
2018-07-11 11:59:11 +02:00
ccc9f476ca Fix empty-images not using selection color 2018-07-11 11:02:03 +02:00
8a3366a494 3D View: option to hide object overlays
This hides extra wires and details you may want to disable,
name may be changed.
2018-07-10 18:31:52 +02:00
97f90d48a0 Object Mode: Change Lightprobe display. 2018-07-10 15:31:34 +02:00
873d7f7e14 DrawData: Change drawdata to a generic struct shared accross ID types
This makes tagging much more generic and make the world updates more in
line with the new tagging system (Depsgraph).
2018-07-10 15:31:34 +02:00
9d43ed521c Cleanup: abbreviate unsigned types (draw manager) 2018-07-08 12:49:03 +02:00
a48b52d546 3D View: support object type visibility/selection
Trying to have a single option for this is too likely to be
insufficient in some cases.

Instead, support object type visibility & selectability per view-port.
2018-07-06 17:53:40 +02:00
72e04f9890 Draw Manager: simplify object mask usage
Remove flag defines, use object types directly.
2018-07-05 20:43:50 +02:00
404bacc639 Refactored into a single option
Technical all options are still there for finetuning.
2018-07-05 16:57:22 +02:00
35f8198c9d Refactor: SHOW->HIDE
HIDE needs less code also in the future, RNA still uses SHOW.
2018-07-05 16:57:22 +02:00
4dfcc6c25a Overlay: enable/disable drawing of specific object types.
This patch will allow users to customize what object types will be drawn by the object mode overlay.
It supports: Empties, Lamps, Cameras, Speakers, Armatures and Lightprobes.

It currently does not support Physics objects due to the overlap it has with other objects types.

Also be aware that in pose mode the armature is drawn, but not by the object mode overlay

Reviewers: campbellbarton

Tags: #bf_blender_2.8

Differential Revision: https://developer.blender.org/D3524
2018-07-05 16:57:22 +02:00
c1678a3723 Revert "Overlay: enable/disable drawing of specific object types."
This reverts commit f7ec70895c.
2018-07-05 16:51:49 +02:00
f7ec70895c Overlay: enable/disable drawing of specific object types.
Added a option to the overlay popover that controls the visibility of
non-renderable objects like lamps, cameras, speakers, armatures, curves
empties and force fields.

After discussion we went for a single option with more detailed check in
the object_mode draw engine.

Differential Revision: https://developer.blender.org/D3524
2018-07-05 16:46:06 +02:00
0d31ab362e Revert "Experimental Tweak: Only show relationship lines between objects when either the parent/child object is selected"
This reverts commit 9129319647.

This meant users needed to select everything to see relationship lines,
this isn't always easy since objects can have limit-selection set.

This could be made into an enum option if it's important.
2018-07-01 08:28:12 +02:00
747843516f Draw relationship lines for rigid body constraints 2018-06-28 15:32:19 +02:00
a9bc880cf8 Object Mode: Add Shape visual for spot and point lamps
Since Eevee and Cycles both use lamp size for point lamps, displaying
the shape is now more relevant than before.
2018-06-24 15:03:10 +02:00
35c02c08b8 3D View: support outline overlay option 2018-06-18 09:23:25 +02:00
4a2c58e077 Outlines: Don't draw Xray mode outlines in material or render mode 2018-06-16 23:28:39 +02:00
0626de2033 GPU: consistenly use mipmap on/off in all draw modes.
This is important for good texture paint performance.
2018-06-14 15:50:22 +02:00
1f1ca74476 Outlines: Make Xray outlines 2px thick instead of 3px 2018-06-11 18:04:00 +02:00
638590078c Outlines: Make outlines in xray mode not occluded.
This is visually too distracting (flickering). Until we have a better
solution, just disable occlusion fading.
2018-06-11 18:04:00 +02:00
542462d35c Workbench: Xray: Add selected/active non-occluded outlines
This Fix the problem when multiple objects are selected and one of them
occlude the others. You cannot see clearly what is selected.

With this option, selection is more clear when Xray mode is enabled.
2018-06-10 20:06:26 +02:00
9129319647 Experimental Tweak: Only show relationship lines between objects when either the parent/child object is selected
As in Pose Mode, the idea here it to try to reduce viewport complexity
without requiring users to turn off the overlay completely all the time.
For example, a background prop (e.g. a tree with a tyre hanging off it,
or a branch with hand-placed leaves) won't be cluttering the viewport with
its relationship lines all the time, when you're trying to do something else.

When you really do need to see these lines, you can still select the object
in question, and you'll see the lines for which objects are its children
or what its parent is. And to see all lines, you can still always select all
objects.
2018-06-11 02:49:38 +12:00
ca16c74e87 Viewport: "Show Relationship Lines" overlay toggle is now respected by Object Mode & Armatures (Edit/Pose) 2018-06-11 02:49:38 +12:00
613faa0987 Draw: Don't take cache existence into account for draw type 2018-06-07 11:31:56 +02:00
72cfd5134b Draw: Use proper continue when psys is disabled 2018-06-07 11:31:56 +02:00
4683091369 Object Mode: Display loose edges if overlays are enables.
This fix T55280 Loose edges not visible in object mode
2018-06-01 11:36:01 +02:00
f03953ae06 Object Mode: Add Texture space visualization. 2018-05-30 14:27:40 +02:00
4ca4e64d25 Grid: Do not go over objects in front/side ortho views.
Fixes T55190 Grid displayed on top of objects in orthographic view
2018-05-27 11:26:17 +02:00
2241a61aab Armature: Fix missing bone edges in object mode. 2018-05-26 22:28:52 +02:00
5505ba8d47 Cycles/Eevee: Implement disk and ellipse shapes for area lamps
The implementation is pretty straightforward.

In Cycles, sampling the shapes is currently done w.r.t. area instead of solid angle.

There is a paper on solid angle sampling for disks [1], but the described algorithm is based on
simply sampling the enclosing square and rejecting samples outside of the disk, which is not exactly
great for Cycles' RNG (we'd need to setup a LCG for the repeated sampling) and for GPU divergence.

Even worse, the algorithm is only defined for disks. For ellipses, the basic idea still works, but a
way to analytically calculate the solid angle is required. This is technically possible [2], but the
calculation is extremely complex and still requires a lookup table for the Heuman Lambda function.

Therefore, I've decided to not implement that for now, we could still look into it later on.

In Eevee, the code uses the existing ltc_evaluate_disk to implement the lighting calculations.

[1]: "Solid Angle Sampling of Disk and Cylinder Lights"
[2]: "Analytical solution for the solid angle subtended at any point by an ellipse via a point source radiation vector potential"

Reviewers: sergey, brecht, fclem

Differential Revision: https://developer.blender.org/D3171
2018-05-24 16:43:47 +02:00
4bbb1d4e5e DRW: Rename some DRW_STATE_* for more consistency. 2018-05-20 19:17:11 +02:00
361bc2bc50 Particle edit: Make visibility check to be per-particle system
This way we can see other particle systems while combing another one.
2018-05-15 17:20:02 +02:00
327789eaf8 Draw manager: Add utility function to check whether particle systems are to be drawn 2018-05-11 12:49:25 +02:00
33f3298e28 Cleanup: use 'uint' in draw manager 2018-05-11 07:48:52 +02:00
283158ecc1 Draw manager: Ignore particles when object is in particle edit mode 2018-05-09 10:34:45 +02:00
8ab3697e21 Armature: Add new Transparent Bone overlay option.
This is half the replacement of the old wireframe mode. It's not doing any
XRay drawing at the moment.
2018-05-07 17:00:10 +02:00
e3d30ffb92 Armature: Add back relationship lines. 2018-05-07 00:24:41 +02:00
17370a27a3 Object Mode: Use stipple shader for relationship lines. 2018-05-07 00:24:41 +02:00
c769b1a553 Armature: Add a special Pass for bone axes.
In object mode, the axes are drawn like any other wire objects with
depth test and depth write. Thus enabling MSAA to work but not their xray
behaviour.

In edit armature/pose mode, draw smooth line without depth testing. This
produces wrong draw ordering problem but still gives the desired xray
behaviour. We do it outside of the MSAA pass since the xray behaviour is not
compatible with it. But we are drawing smoothed lines so no need for MSAA.
The lines are 2px thick and improve readability.
2018-05-06 18:42:23 +02:00
1c3f953565 Armature: Put passes in a struct easier to pass around. 2018-05-06 18:36:47 +02:00
b365cc017a 3D Viewport: move overlay settings from collections to 3D viewport.
For some we may add per object overrides, but for most we plan to keep them
strictly per viewport settings. Display settings from the mesh still need to
be moved here, only collections were done to remove that code.
2018-05-05 15:54:43 +02:00