Age | Commit message (Collapse) | Author |
|
Viewport drawing has moved to offscreen buffers, and we no longer need to have
depth, stencil, aa samples, sRGB buffers as part of the window. So all that
code is removed now. The depth buffer was the only one still being allocated,
its removal save a bit of memory.
Code by Germano and Brecht.
Differential Revision: https://developer.blender.org/D4708
|
|
Differential Revision: https://developer.blender.org/D4710
|
|
Contributed by EitanSomething.
Differential Revision: https://developer.blender.org/D4735
|
|
active
Similar to many apps:
- Use left click and drag to box select
- Hold modifiers like Ctrl and Shift to remove or expand selections
- Use MMB-drag to use the tool outside of the gizmo area
In the future it would be nice if the transform tools would have this increased flexibility built-in so you could configure it more easily, but this setup seems to at least make it do the most commonly useful thing by default.
|
|
Using mat4 in a uniform buffer object was not properly supported.
|
|
Enabling the drawing of the mesh analysis overlay.
Currently the settings are part of the scene toolsettings. What makes sense,
for 3d printing, but does not fit well with the per viewport blender 2.80
overlays.
Reviewers: brecht, fclem
Differential Revision: https://developer.blender.org/D4707
|
|
|
|
Modifier previews should be implemented by a more generic system.
The current system is already a hack and needed a lot of work
to get it working again in 2.80 and even so that would be replaced by
another system in the near future.
For Vertex Colors we have a work around in place by using Workbench
Vertex Colors. For Vertex Weights we loose the previewing. Not sure
targetting weight is working (even for 279).
Reviewed By: brecht
Maniphest Tasks: T63857
Differential Revision: https://developer.blender.org/D4734
|
|
We always keep the children that are not in a collection listed in the
end of the children list due to design. This way we can visually draw
them with dashed vertical lines.
This was already working for alphabetical sorting, however whenever
sorting was disabled, we would end up with a list of children ordered
regardless of their state (whether the child itself is in the collection).
|
|
As known as outliner parenting hierarchy take two.
Implemented suggestion by Brecht Van Lommel:
```
The problem is that it's iterating over te_parent->subtree,
while at the same time removing elements from it as tree_to_remove_objects_from.
Further there is a linear lookup to find tree elements corresponding to a child
object, which causes O(n^2) time complexity overall and so poor scaling for many
objects in a collection.
The more efficient solution that also fixes the crash could be:
* Build a map from Object* to a list of TreeElement* matching the object.
* For all objects in the tree lookup the parent in this map, and move or add
tree elements as needed.
```
I removed the grouping of the children not in collection in the end of
the children list when sorting was not enabled. If we think we really
need it back it can be tackled separately.
That said, despite due to performance reasons, I can't see why would
someone not have the a-z sorting enabled. And if they do, it is not the
end of the world to have interleaved children that are in the collection
or not in the parent subtree.
|
|
tellp() is not valid to check if the string stream is empty. Just get the
string directly as there is no obvious efficient method to check otherwise.
|
|
Try to make it more clear that this only affects Cycles, many users seem to
miss the panel title.
|
|
This is likely to cause crashes in many file, so disable this feature until
it is fixed.
|
|
|
|
Reviewers: brecht
Maniphest Tasks: T63841
Differential Revision: https://developer.blender.org/D4733
|
|
Force Displist to Mesh conversion if there is any modifier.
This is until we find a better way to store the batches per objects.
Also fix draw cache functions that were not returning final mesh edges.
|
|
|
|
The crash is related to the format, but the real reason is unknown.
|
|
I also had to make the "New" operator a submenu in the
`File Context Menu`, so that you can still select the template.
This partially solves T61599. Currently the confirm dialog
is not shown when an already existing file is opened.
Implementing that requires a bit more work and will be
done in a separate patch.
Reviewers: brecht
Differential Revision: https://developer.blender.org/D4732
|
|
Previously only a fixed bounding box could be used.
This was not flexible enough.
T63193 will benefit from this refactor.
Reviewers: brecht, campbellbarton
|
|
This never really worked as it was supposed to. The main goal of this is to
turn noise from sampling tiny hairs into multiple layers of transparency that
do not need to be sampled stochastically. However the implementation of this
worked by randomly discarding hair intersections in BVH traversal, which
defeats the purpose.
If it ever comes back, it's best implemented outside the kernel as a preprocess
that changes hair radius before BVH building. This would also make it work with
Embree, where it's not supported now. But it's not so clear anymore that with
many AA samples and GPU rendering this feature is as helpful as it once was for
CPU raytracers with few AA samples.
The benefit of removing this feature is improved hair ray tracing performance,
tested on NVIDIA Titan Xp:
bmw27: +0.37%
classroom: +0.26%
fishy_cat: -7.36%
koro: -12.98%
pabellon: -0.12%
Differential Revision: https://developer.blender.org/D4532
|
|
If the "Object Children" filter is enabled, we nest the object children inside
the object. If the child itself is not in the collection, it is grayed out,
connected by a dash line, and its restriction flags and contents are not shown.
If "Object Children" filter is disabled, it works as before.
Note: This is not super fast, but at least we traverse the tree only once to get the
children of an object. That said, there is a lot of loops going on here.
Task T63526.
Development notes:
I could use the GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR shader, but
that would mean I would need to iterate over the tree twice (once for
each shader) - or do some bigger refactor.
Also I could not get that shader to work. This shader expects float
vertices while the current one is using integers, so converting the code
would make the dash line drawing to diverge from the regular lines even
further.
Differential Revision: https://developer.blender.org/D4696
|
|
Shader nodes are now shared with Eevee, so makes more sense to have it in
the core and not be Cycles specific.
Fix T62415: issues with append/link of old Cycles settings.
|
|
On file read we need to update group nodes in case the group they refer to
has changed its inputs and outputs. This had O(n^2) time complexity and was
updating all datablocks even if they did not change.
|
|
Forward compatibility with that version is already long gone, and removing
it means we can avoid running some complicated code on every file read/write.
|
|
Node versioning code was added before there was a mechanism to do versioning
after lib linking. Now integrate with that system and make it less of a strange
exception. Node versioning is now skipped on undo, like other versioning code.
|
|
Closely spaced buttons caused the curve clipping popup to close
before the cursor could mouse-over it.
|
|
This is a first step towards T61599.
This way the invoke function can be used for the confirm
dialog in a separate patch.
Reviewers: campbellbarton
Differential Revision: https://developer.blender.org/D4723
|
|
This is a dependency graph part, which is the last required bit to get the
issue solved after all the rest of the work done by Clement.
|
|
When solid mode is enabled, but Texture mode is disabled, the color of the stroke must not use the texture.
|
|
The offset added allows to generate a vector to determine direction. This direction will be used when rotate the object to rotate texture.
The solution is not 100% perfect, but it's far better that having an unpredictable rotation.
|
|
Each spaces top-bar wasn't showing it's own active tool,
Remove RNA access to the workspaces tool since using it is error prone.
Eventually this should be completely removed.
|
|
|
|
D4693 by @miqlas
|
|
D4695 by @kamran
|
|
Take the entire gutter used for panel tabs into account.
Introduced in recent fix for T61554
|
|
Clip on one axis for aligned regions to avoid tabs being clipped out.
Introduced in recent fix for T61554
|
|
Change to recent fix for T61554
|
|
|
|
When OSL is enabled, Cycles disables RTTI in some of its modules, which
then breaks vptr sanitizer (part of the 'undefined' sanitizer).
thanks to @brecht for helping tracking down the issue.
|
|
If image buffer is not loaded and blender attempts to reload it (during
`BKE_image_acquire_ibuf`) over and over for each frame rendered.
When attempting this reload, image_load_image_file is calling
`BKE_image_free_buffers` and tag the Image to the (GPU) image_free_queue
(because this run on the rendering thread).
If the main thread decide to redraw the UI and go through `GPU_free_unused_buffers` they all get deleted and if that happens before the rendering thread use them ... segfault.
If I replace the environment textures with correct ones (the file does not seems to contain them), there is no crash when rendering.
I used a list of GPUTexture from blender Image to increase and decrease the
reference counter correctly.
This add very little memory and computation overhead.
|
|
For good this time...
forgot to commit it in the previous commit rBedde48f57844.
|
|
The danger of void pointers...
|
|
|
|
|
|
Note: This doesn't fix any bug we know of, but it is the correct flag to
tag in this case.
|
|
Since it is a continuous cycle, there's no need to repeat the
name of the previous bone. Also, dot is a common symbol in object
and bone names, so use '/' instead for node nesting.
|
|
Before this options was only available to Dots mode.
|
|
Add a callback to allow custom node editors to draw their own
backdrop.
Differential Revision: https://developer.blender.org/D4709
Reviewed by: JacquesLucke
|
|
Targeting a different object always requires its transform,
and normally dependencies should go to the solver node.
ITASC is quite broken so special case it until fixed.
|