Commit Graph

65757 Commits

Author SHA1 Message Date
Alexander Gavrilov
0709fac41e BKE_mesh: add a utility to get edge indices from looptri.
Not all three sides of a tesselated mesh triangle are guaranteed
to be original mesh edges, so a somewhat complicated check is
required to detect which ones are real. It seems that until now
there was no utility function for that, only some example code.
2018-11-06 21:20:17 +03:00
Alexander Gavrilov
84fa806491 BLI_kdopbvh: add an option to use a priority queue in find_nearest.
Simple find_nearest relies on a heuristic for efficient culling of
the BVH tree, which involves a fast callback that always updates the
result, and the caller reusing the result of the previous find_nearest
to prime the process for the next vertex.

If the callback is slow and/or applies significant restrictions on
what kind of nodes can qualify for the result, the heuristic can't
work. Thus for such tasks it is necessary to order and prune nodes
before the callback at BVH tree level using a priority queue.

Since, according to code history, for simple find_nearest the
heuristic approach is faster, this mode has to be an option.
2018-11-06 21:20:16 +03:00
Brecht Van Lommel
39b1e66afd Defaults: disable AV Sync by default again, it breaks physics caching.
This reverts back to the 2.79 situation. The better solution would be to make
physics caching somehow simulate the skipped frames. But for now the more
important thing is to have working physics.

Ref T54943, T56352.
2018-11-06 17:52:27 +01:00
Bastien Montagne
7b38df41ae Fix/cleanup RNA viewlayer API.
RNA's ViewLayer would present 'first level' of layer collection as a
list (collection property), when it is actually now only a single item,
same as the scene's master collection.

Note: did not try to update view_layer python tests, those are already
fully broken for quiet some time I guess (they still assume
view_layer.collections to be mutable e.g.)...
2018-11-06 17:20:49 +01:00
Jacques Lucke
a145c7dc62 Cleanup: No need to save/restor frame buffer twice 2018-11-06 15:46:07 +01:00
Jacques Lucke
50b43ff6d4 GPU: frame buffer stack
Reviewers: fclem

Differential Revision: https://developer.blender.org/D3903
2018-11-06 15:24:13 +01:00
Pablo Vazquez
ddc64b9dd4 UI: Tooltip for context properties too verbose.
"Type of active data to display and edit" is a bit too descriptive and takes
away from reading which context we're actually viewing. Also minor tweaks to
context description.
2018-11-06 14:32:04 +01:00
Antonioya
9d32b9fb8a GP: Fix unreported error moving material slots 2018-11-06 13:08:31 +01:00
Sergey Sharybin
5d6ec23e3e Multires: Refactor propagation to the higher levels
Now it is forumlated in terms of deltas, and consists of the
following steps:

- Original displacement at the reshape level are being backed up.
- New displacement is being written by the reshape routines.
- Delta of the displacement is calculated.
- Deltas are propagated to the higher levels, which also includes
  their interpolation/
- Original displacement is restored.
- New interpolated displacements are added to the original ones.

This is a base ground for the upcoming change related on using
Catmull-Clark smoothing for the deltas instead of linear
interpolation. Currently is no changes for artists, just preparing
for upcoming work.
2018-11-06 12:40:50 +01:00
Clément Foucault
c3149a712c Eevee: Make nodegroup fix recursive. 2018-11-06 12:05:21 +01:00
Clément Foucault
26d5a92606 Eevee: Fix broken shader if only using an Ambient Occlusion node
This quick fix does generate some invalid uniform. Will fix that later on.
2018-11-06 12:05:21 +01:00
Clément Foucault
2a0a7cd73d Eevee: Fix missing UBO bound if using a muted Shader to RGB node with SSS
This is a nasty bug. Because the node does not get properlly tagged as SSS
(sss_id is 0) but is still evaluated (so tagging the GPUMaterial as having
SSS). The sssProfile UBO is still declared and we need to bind something
to it.
2018-11-06 12:05:21 +01:00
Clément Foucault
15ad75ffef Eevee: Correctly handle Sharp glossy/refraction BSDF nodes
This is a quick workaround, but I don't see the point of making the
lighting functions more complex than it is now in order to optimize this
rather not so common case.
2018-11-06 12:05:21 +01:00
Antonioya
5ccd60e0e7 GP: Fix Time Offset for frames before range 2018-11-06 11:10:14 +01:00
Antonioya
0f1390c99e GP: Rename variable 2018-11-06 11:10:14 +01:00
Alexander Gavrilov
798cdaeeb6 Implement an Armature constraint that mimics the modifier.
The main use one can imagine for this is adding tweak controls to
parts of a model that are already deformed by multiple other major
bones. It is natural to expect such locations to deform as if the
tweaks aren't there by default; however currently there is no easy
way to make a bone follow multiple other bones.

This adds a new constraint that implements the math behind the Armature
modifier, with support for explicit weights, bone envelopes, and dual
quaternion blending. It can also access bones from multiple armatures
at the same time (mainly because it's easier to code it that way.)

This also fixes dquat_to_mat4, which wasn't used anywhere before.

Differential Revision: https://developer.blender.org/D3664
2018-11-06 10:56:08 +03:00
Campbell Barton
a817613be5 Cleanup: remove unused brushes 2018-11-06 18:21:52 +11:00
Campbell Barton
80109c976c Brush: split out vertex paint tool & blend mode
- Vertex & weight paint now use the 'blend' setting.
- Weight paint now has it's own tool setting,
  since weight paint doesn't deal with color - we'll likely
  support different tools eventually.
2018-11-06 18:06:33 +11:00
Campbell Barton
900c562b71 Cleanup: rename fast-heap -> heap-simple
In general prefer API names don't start with adjectives
since it causes grouping of unrelated API's for completion.
2018-11-06 13:06:49 +11:00
Campbell Barton
d805a4a5ef Cleanup: move fast heap into own source & header 2018-11-06 12:52:34 +11:00
Campbell Barton
a90bcdf93d Tool System: use tool type enum to access brushes
Previously the brush names were used which had the limit that:

- Brush names that were deleted wouldn't show up in the toolbar.
- Naming collisions between user defined brushes and existing tools
  broke tool selection.

Now brushes are created as needed when tools are selected.

Note, vertex/weight paint combine tool and blend modes,
this should be split out into a separate enum.
2018-11-06 12:39:51 +11:00
Campbell Barton
29dfe9a614 Cleanup: style 2018-11-06 12:39:51 +11:00
Bastien Montagne
5ae853d20a Fix (unreported) potential race condition in view_layer_bases_hash_create().
When you check for undone work before acquiring a lock that ensures you
are the only one actually doing the work, you have to redo the check
*after* acquiring said lock.

Otherwise, there is room for nasty random race condition issues...
2018-11-05 20:29:36 +01:00
Antonioya
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
Jacques Lucke
a8e9959e07 API Docs: gpu api introduction + examples 2018-11-05 19:28:28 +01:00
Antonioya
abbe4df301 GP: More tweaks to Time Offset 2018-11-05 19:10:52 +01:00
Alexander Gavrilov
fee6ab18e7 BLI_heap: implement a limited but faster version of heap.
If the user only needs insertion and removal from top, there is
no need to allocate and manage separate HeapNode objects: the
data can be stored directly in the main tree array.

This measured a 24% FPS increase on a ~50% heap-heavy workload.

Reviewers: brecht

Differential Revision: https://developer.blender.org/D3898
2018-11-05 20:49:17 +03:00
Antonioya
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
Clément Foucault
b4dfe00fd6 Wireframe: Extend Xray slider range
This makes it possible to bypass the depth dithering effect at the cost
of less accurate depth perception.
2018-11-05 16:31:12 +01:00
Clément Foucault
946f9d8fb3 Eevee: Fix "Show Irradiance/cubemap" icons 2018-11-05 16:31:12 +01:00
Clément Foucault
2ae88c4d78 UI: Make the grid alpha themable
Now that the 3d grid is infinite, antialiased, not occluded, and overlaid
on top of rendered view, being able to decrease its opacity to reduce
visual strain is a must.
2018-11-05 16:31:12 +01:00
Clément Foucault
205d1876ff DRW: Fix crash with deferred compilation 2018-11-05 16:31:12 +01:00
Clément Foucault
050e91340d Edit Mesh: Fix wire opacity when not rotating the view in Xray mode 2018-11-05 16:31:11 +01:00
Clément Foucault
3927fbf98e LightProbe: Fix description of influence type 2018-11-05 16:31:11 +01:00
Antonioya
83b3b540de GP: Change Lock icon and Popover title 2018-11-05 16:29:07 +01:00
Pablo Vazquez
3e5e4a05f1 UI VSE: Rename submode Image Preview to Preview.
It's confusing that it says Image when it's also video or final result.
And also since the third option is called Sequencer/Preview, having the
others called Sequencer, and Preview, makes sense.
2018-11-05 15:34:23 +01:00
Alexander Gavrilov
721a484ccb BLI_kdopbvh: reduce branching in calc_nearest_point_squared.
This lets the compiler use min/max instructions for 4.5% FPS
improvement in Shrinkwrap to Nearest Surface Point.
2018-11-05 17:16:06 +03:00
Alexander Gavrilov
a70589e439 BLI_heap: optimize heap_swap, heap_down and heap_up.
The index field of nodes is supposed to be its actual index, so
there is no need to read it in swap. On a 64-bit processor i and
j are already in registers, so this removes two memory reads.

In addition, cache the tree pointer, use branch hints, and
put the most frequently accessed 'value' field at 0 offset.

Produced a 20% FPS improvement for a 50% heap-heavy workload.
2018-11-05 17:16:06 +03:00
Antonioya
7c7c8f3492 GP: Add new layer above active layer
Before, the layer was added to tail always, but this was weird for 2D animators.
2018-11-05 09:59:38 +01:00
Campbell Barton
efd133a9a6 Paint: setting the brush now updates tool slots
Adding a brush wasn't refreshing the tool-system (left blank topbar).
2018-11-05 16:20:15 +11:00
Campbell Barton
1b928c2d9a Paint: add tool offset & mode to runtime data
It was getting too impractical to call BKE_paint_brush_tool_info
which needed to lookup the scene pointers.

Now each store tool offset and brush mode in 'Paint.runtime'
2018-11-05 16:18:43 +11:00
Campbell Barton
56917bcf73 Missing from last commit 2018-11-05 15:47:22 +11:00
Campbell Barton
8b31f6fb21 Paint: add BKE_paint_ensure to initialize toolsettings
Each mode had its own logic for initializing paint structs,
move to a single function.

Also remove "BKE_brush_get_gpencil_paint", entering grease pencil
mode is responsible for ensuring the data is created.
2018-11-05 15:31:25 +11:00
Campbell Barton
25a9816c30 Cleanup: use bool 2018-11-05 13:22:49 +11:00
Campbell Barton
9361c1c83d UI: Add back line to curve map
D3894 by @charlie with edits
2018-11-05 13:04:43 +11:00
Campbell Barton
7c5d014666 UI: rename Cursor 'Depth' -> 'Surface Project' 2018-11-05 12:08:51 +11:00
Campbell Barton
4cdf4d1eba Cleanup: correct last commit, also use font_id var 2018-11-05 11:06:09 +11:00
Campbell Barton
c192ce6717 Gizmo: use fonts for drawing 3D axis characters 2018-11-05 10:48:18 +11:00
Brecht Van Lommel
1e56c8c47d Merge branch 'master' into blender2.8 2018-11-05 00:30:33 +01:00
Brecht Van Lommel
4e37796976 Fix various Freestyle rendering bugs. 2018-11-05 00:22:33 +01:00