Commit Graph

4116 Commits

Author SHA1 Message Date
Sybren A. Stüvel
b5253159b6 Cleanup: split BKE_anim.h and anim.c into smaller pieces
The files are now split up into the following sections:
- `BKE_anim_path.h` and `anim_path.c` for path/curve functions.
- `BKE_anim_visualization.h` and `anim_visualizationanim_path.c` for
  animation visualization (mostly motion paths).
- `BKE_duplilist.h` for DupliList function declarations. These were
  already implemented in `object_dupli.c`, so they were rather out of
  place being declared in `BKE_anim.h` in the first place.

No functional changes.
2020-04-03 12:13:51 +02:00
Campbell Barton
973e1f9d9a Cleanup: use term 'attr' instead of 'attrib'
This was already the case in most parts of the GPU API.
Use full name for descriptive-comments.
2020-04-03 17:25:58 +11:00
Pablo Dobarro
b8d9b5e331 Sculpt: Delay Viewport Updates
In Blender 2.81 we update and draw all nodes inside the view planes.
When navigating with a pen tablet after an operation that tags the whole
mesh to update (like undo or inverting the mask), this introduces some
lag as nodes are updating when they enter the view. The viewport is not
fully responsive again until all nodes have entered the view after the
operation.

This commit delays nodes updates until the view navigation stops, so the
viewport navigation is always fully responsive. This introduces some
artifacts while navigating,  so it can be disabled if you don't want to
see them.

I'm storing the update planes in the PBVH. This way I can add support
for some tools to update in real-time only the nodes inside this plane
while running the operator, like the mesh filter.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D6269
2020-04-02 18:00:51 +02:00
Jeroen Bakker
b26bebd59f Missed file in previous commit 2020-04-02 15:32:17 +02:00
Jeroen Bakker
88362565f6 Fix T72688: Vertex Group Weights in Edit Mode Occludes In Front Armatures
Due to legacy this overlay was implemented twice (Edit Mesh and Weight
Painting) with different results. This patch consolidates both drawing
and uses only the Weight Painting drawing.
2020-04-02 15:12:32 +02:00
Dalai Felinto
fa8a3c8f26 Revert "Fix T72688: Vertex Group Weights in Edit Mode Occludes In Front Armatures"
This reverts commit 782e6ea4ed.

Said fix introduced a crash the moment one goes to edit mode.
2020-04-02 15:07:56 +02:00
Jeroen Bakker
782e6ea4ed Fix T72688: Vertex Group Weights in Edit Mode Occludes In Front Armatures
Due to legacy this overlay was implemented twice (Edit Mesh and Weight
Painting) with different results. This patch consolidates both drawing
and uses only the Weight Painting drawing.

Reviewed By: Clément Foucault

Differential Revision: https://developer.blender.org/D7289
2020-04-02 11:49:39 +02:00
Jeroen Bakker
b0bd9b4c70 Fix T75244: Screw Modifier Crash
Draw batch extraction wrongly assumed that when mapped extraction
happened that all original data could be found. This is not the case as
mapped extraction is also enabled when part of the data is present.

This fix does additional nullptr checks.
2020-03-31 16:05:19 +02:00
Jeroen Bakker
155f917403 Fix T73513: Facing Overlay Intervene With Selection
Do not draw the facing overlay during selection.
2020-03-31 11:47:09 +02:00
Jeroen Bakker
039d619c76 Fix T74898: Multiresolution Ghost After Orbiting
EEVEE and Workbench both had the same issue that they continue with the
last sample when leaving navigating. This is ok for regular meshes as
they are all the same. For multiresolution it ain't as a low res version
of the mesh is used during navigation.

This patch also resets the AA samples when the user leaves navigation.
2020-03-31 10:29:34 +02:00
Antonio Vazquez
248873603f GPencil: Remove is_edit_mode from cache data
This value is not used by new engine.
2020-03-30 18:56:46 +02:00
Antonio Vazquez
4c40468856 GPencil: Remove GP_DATA_PYTHON_UPDATED used by old engine 2020-03-30 18:54:41 +02:00
Clément Foucault
2c9e27f209 Fix T75144 Grease Pencil: Python generated strokes flicker and crash
This was caused by a flag not being reset in time, causing discard of
batches already queued to be drawn.
2020-03-30 18:38:15 +02:00
Antonio Vazquez
100896e080 GPencil: Rename Overlay blend mode to Hard Light
Differential Revision: https://developer.blender.org/D7280
2020-03-30 18:23:36 +02:00
Clément Foucault
6428da84ed Fix T74663 GPencil: Fills are Flickering on Nvidia
This was caused by an unitialized variable.
2020-03-30 17:57:31 +02:00
Clément Foucault
af1e3b0270 GPencil: Fix overlay blend mode creating inverted colors 2020-03-30 17:57:31 +02:00
Clément Foucault
9371c051b1 EEVEE: Bloom: Fix inverted source and base buffer
This does not change the ouput much.
2020-03-30 17:57:31 +02:00
Jeroen Bakker
a2d19c1f78 NormalOverlay: Center Dot Normal Drawing With Modifiers
When using generative modifiers too many center dots were rendered in
the normal overlay. This patch only renders the normals of original
center dots.

Known issue: decoding the `norAndFlag` has issues on Intel GPU.
2020-03-30 14:39:16 +02:00
Jeroen Bakker
57d8bde088 Normal Overlay: Hide Normals Of Generated Loops
The loop normals were always drawn. We used to only draw the normals if
it was mapped to an original loop of the mesh. Due to recent changes we
can not find the correct loop and decide if we need to draw them.

Note still need to check the face dots normals. This is more complicated
as facedot normals needs to be encoded in a different way
2020-03-30 14:06:54 +02:00
Jeroen Bakker
cf258b02f4 Fix T75053: Paint Overlay Show Modified Wires and Edges
The paint mask overlay showed the wires and edges of the final mesh.
This change will only draw wires and edges that are mapped to the
original mesh.

This change enables mapping data in regular Mesh extraction. This
can also be used for better drawing of the normal overlay.

Reviewed By: Clément Foucault

Differential Revision: https://developer.blender.org/D7277
2020-03-30 13:13:42 +02:00
Campbell Barton
6c48a36962 DRW: match edge opacity to 2.82
Edges were hard to see in some cases in edit-mesh vertex/face modes.

Since 804e90b42d alpha is handled differently,
update edge alpha to visually match 2.82.
2020-03-30 10:12:08 +11:00
Clément Foucault
bf3b0db785 Overlay: Edit Mesh: Add offset for thicker edges
Edges with sharpness, seam and bevel are thicker and thus needs more offset
to not appear aliased.

Based on D5448 by @oficsu
2020-03-29 20:49:07 +02:00
Clément Foucault
0b57ecc665 Overlay: Edit Mesh: Make offset depth dependent (w.r.t depth precision)
The previous offset was done in view space. It is now done in NDC space
to avoid differences when adjusting the near/far plane distances.
2020-03-29 20:46:42 +02:00
Campbell Barton
aec9e0e1b6 Cleanup: spelling, comments 2020-03-29 17:11:41 +11:00
mano-wii
1f949121cd Fix T74969: Crash in gpencil edit mode
Result of poor shader pre-processing on Intel HD 4000 drivers
2020-03-27 20:12:05 -03:00
Clément Foucault
d85026db15 Overlay: Outline: Fix unreported feedback loop when smooth wire is disabled 2020-03-27 20:11:43 +01:00
Antonio Vazquez
7fd71c1694 GPencil: More cleanups missing in previous commit 2020-03-27 12:39:18 +01:00
Antonio Vazquez
8a62fa9855 GPencil: Cleanup of unused code a arguments 2020-03-27 12:36:24 +01:00
Philipp Oeser
ff62481f65 Fix T69060: File Output Node does not work with Time Remapping
Problem is that the RenderEngines will change the RenderData cfra when
rendering (when time remapping is used -- at least workbench/eevee/
gpencil do a combination of BKE_scene_frame_get() plus
RE_GetCameraWindow() which alters the RenderData cfra).

Later on in the pipeline, the Compositor will use this RenderData cfra
to determine the output file name for the FileOutput node. (In contrast
to this, the 'regular' Output will use the Scene's RenderData -- not the
Render's -- cfra [which hasnt been altered])

It is not entirely clear why RE_GetCameraWindow was setting the cfra on
the Render, but it appears to be legacy OGL rendering related and is not
needed anymore.
Removing this will keep the cfra as needed for the Compositor FileOutput
node.
2020-03-27 10:10:54 +01:00
Campbell Barton
5c74b0964b Cleanup: add iterator macros to clang-format
Also rename START to BEGIN (matching BEGIN/END for most iterator macros).
2020-03-27 11:28:20 +11:00
Clément Foucault
839f0cfa41 Overlay: Fix crash caused by NULL passes 2020-03-26 19:16:57 +01:00
Clément Foucault
a0437c3f73 Fix T75087 Workbench: DoF: Divide By Zero when antialiasing is disabled 2020-03-26 16:03:48 +01:00
Clément Foucault
e000dcb849 Overlay: Wireframe: New method to avoid zfighting with geometry
This new method is only enabled if Overlay Smooth Wire is enabled.

This method gives really nice results but has some downside:
- Require a depth copy or loose the ability to write wire depth to the
  depth buffer and have correct depth ordering of wires. This patch use the former, with its associated cost.
- Require some depth sampling and prevent early depth test (i.e: has
  some performance impact).
- Has some relatively minor instability with geometry that are perpendicular
  to the view and intersecting with other geometry.

Pros:
- Compared to a fullpass approach this is surely going to have less
  performance impact and much higher quality.
- Removes the additional vertex offset. (see T74961)
- Fixes all half edges z-fighting.

{F8428014}

{F8428015}

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D7233
2020-03-26 15:55:16 +01:00
Pablo Dobarro
32bb848838 Fix T74692: Do not draw nodes with the default face set
The default face set color is white, so we can skip drawing the default
face set. This allows to enable again the optimization of not drawing
overlays in nodes where the mask is empty.

This will still slow down the viewport when a new face set is created
for the whole mesh or when inverting the mask, like in previous
versions.

I also renamed the function to make more clear that now it is checking
for both mask and face sets.

Reviewed By: brecht

Maniphest Tasks: T74692

Differential Revision: https://developer.blender.org/D7207
2020-03-26 15:39:41 +01:00
Jeroen Bakker
0545a84729 Fix Crash In Paint Overlay
The previous implementation tested the normal behavior and ignored some
edge cases. This patch will also test for NULL in all cases
2020-03-26 14:16:17 +01:00
Jeroen Bakker
1ca1744c29 Fix T70807: Weight Paint Overlay XRay
Weight paint overlay was not working when XRay was turned on.

The Weight Paint overlay is rendered directly into the default
framebuffer with a depth equal test. This test fails as the depth won't match.
This patch will update the depth buffer in these cases.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D7176
2020-03-26 13:35:06 +01:00
Antonio Vazquez
622e1591da GPencil: Fix unreported fade object when no Gpencil object is selected
Only must fade if the active object is a GPencil.
2020-03-26 13:17:22 +01:00
Jeroen Bakker
b2f04fce2d Fix T75062: Frame Flashes During 3D Viewport Animation Playback
This issue became visible after fixing other TAA issues recently.
The sample count of the first frame wasn't reset resulting that the
incorrect resolve took place. This issue was already there beforehand,
it is just much clearer during the recent changes.

Now the `taa_sample will be reset when performing an animation playback
in the 3d viewport.
2020-03-26 08:22:52 +01:00
Brecht Van Lommel
d554cf8dd9 Fix T75090: crash with old NVIDIA drivers after overlay refactor
Work around GLSL compiler bug with backslash in preprocessor macros.
2020-03-25 23:14:50 +01:00
Philipp Oeser
59aaba739d Cleanup: typo in print 2020-03-25 16:52:04 +01:00
Joe Eagar
035a3760af Alpha hash support for hair in EEvee
This patch adds support for alpha hash for hair rendering in EEvee.  Here's a comparison of with alpha hashing:

{F7588610}

And no alpha hashing:

{F7588615}

Note that this needs "soft shadows" enabled, otherwise shadows will be noisy; here's a render with soft shadows disabled:

{F7588621}

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D5221
2020-03-25 15:45:24 +01:00
Clément Foucault
f3ea8cd608 Overlay: Wireframe: Make facing ratio offset depends on gl_Position.w
This makes the offset dependent of the actual near and far clip distances.
2020-03-24 17:54:30 +01:00
Jeroen Bakker
28c3d952db Fix T74782: WorkBench TAA Artifacts During Painting/Drawing
When the TAA is finished the screen can still be redrawn by other
operations without the TAA resets.
If that happened the TAA did add a blank sample to the result as the
scene wasn't drawn, but the was processed.

Reviewed By: Clément Foucault

Differential Revision: https://developer.blender.org/D7226
2020-03-24 16:04:09 +01:00
Jeroen Bakker
b759857825 Revert "Fix T74782: WorkBench TAA Artifacts During Painting/Drawing"
This reverts commit 58ac113b76.
2020-03-24 14:02:16 +01:00
Philipp Oeser
02f7a6b2bd Fix T74744: Studio Lights editor not updating in realtime when tweaking
the settings

Caused by rBc476c36e4008.

This hooks into the existing FIXME (workaround for a missing update
tagging), reactivates the NS_VIEW3D_GPU notifier (introduced in
rB2ad3d8f158d2 -- but not going anywhere atm.) to check changes to rv3d
rflag which indicated UserStudioLight has changed. To not have updates
all the time, the rflag also needs to be cleared again (see original
rB2ad3d8f158d2).

Maniphest Tasks: T74744

Differential Revision: https://developer.blender.org/D7194
2020-03-24 09:58:25 +01:00
Philipp Oeser
ed44bb902d Fix T74872: Clipping Region not updating
Caused by rBc476c36e4008.

This hooks into the existing FIXME (workaround for a missing update
tagging), needs to also check the clip_state (to detect
changes in DRW_STATE_CLIP_PLANES).

Maniphest Tasks: T74872

Differential Revision: https://developer.blender.org/D7193
2020-03-24 09:54:28 +01:00
Philipp Oeser
a6dd22d431 Fix T74957: Matcap flip not updating
Caused by rBc476c36e4008.

This hooks into the existing FIXME (workaround for a missing update
tagging from operators), needs to also check the shading.flag (to detect
changes in V3D_SHADING_MATCAP_FLIP_X).

Differential Revision: https://developer.blender.org/D7192
2020-03-24 09:50:09 +01:00
Philipp Oeser
579447bd89 Fix T74096: Paint Masking overlay can`t be hidden
Caused by rB9516921c05bd.

Dont really see a reason to draw overlays here if overlays are disabled.
Looks like this only affects Face/Vertex mask selection drawing [which
should indeed be hidden when overlays are disabled] next to two
exceptions:

- OVERLAY_paint_vertex_cache_populate draws weights as well [D7176 /
T70807 might be related here, but to me it looks like drawing weights
here is actually not needed at all]

- OVERLAY_paint_texture_cache_populate calls
DRW_cache_mesh_surface_texpaint_get [not sure about this one, this is
also called from workbench_cache_texpaint_populate, looks like this is
not needed when overlays are hidden]

Maniphest Tasks: T74096

Differential Revision: https://developer.blender.org/D7179
2020-03-24 09:44:42 +01:00
Germano Cavalcante
b701af328a Revert "COW: Edit Mesh: Do not copy the looptris pointer"
The looptri is repeated in the linked Meshes but the pointer
is only referenced in the evaluated ones.

This reverts commit 64982e213f.
2020-03-23 14:18:36 -03:00
Jeroen Bakker
58ac113b76 Fix T74782: WorkBench TAA Artifacts During Painting/Drawing
When the TAA is finished the screen can still be redrawn by other
operations without the TAA needs to be reset.
If that happened the TAA did add a blank sample to the result.

This patch will add an early exit in the case TAA was finished. Note
that there are still some cases still not working. The overlay engine
can in certain circumstances draw directly into the default_fb what can
lead to render artifacts.
2020-03-23 17:10:01 +01:00