This is a more correct fix to the issue Brecht was fixing in D6600.
While the fix in that patch worked fine for linking it broke ASAN
runtime under some circumstances.
For example, `make full debug developer` would compile, but trying
to start blender will cause assert failure in ASAN (related on check
that ASAN is not running already).
Top-level idea: leave it to CMake to keep track of dependency graph.
The root of the issue comes to the fact that target like "blender" is
configured to use a lot of static libraries coming from Blender sources
and to use external static libraries. There is nothing which ensures
order between blender's and external libraries. Only order of blender
libraries is guaranteed.
It was possible that due to a cycle or other circumstances some of
blender libraries would have been passed to linker after libraries
it uses, causing linker errors.
For example, this order will likely fail:
libbf_blenfont.a libfreetype6.a libbf_blenfont.a
This change makes it so blender libraries are explicitly provided
their dependencies to an external libraries, which allows CMake to
ensure they are always linked against them.
General rule here: if bf_foo depends on an external library it is
to be provided to LIBS for bf_foo.
For example, if bf_blenkernel depends on opensubdiv then LIBS in
blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES.
The change is made based on searching for used include folders
such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries
to LIBS ion that CMakeLists.txt. Transitive dependencies are not
simplified by this approach, but I am not aware of any downside of
this: CMake should be smart enough to simplify them on its side.
And even if not, this shouldn't affect linking time.
Benefit of not relying on transitive dependencies is that build
system is more robust towards future changes. For example, if
bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES
and all such code is moved to bf_blenkernel this will not break
linking.
The not-so-trivial part is change to blender_add_lib (and its
version in Cycles). The complexity is caused by libraries being
provided as a single list argument which doesn't allow to use
different release and debug libraries on Windows. The idea is:
- Have every library prefixed as "optimized" or "debug" if
separation is needed (non-prefixed libraries will be considered
"generic").
- Loop through libraries passed to function and do simple parsing
which will look for "optimized" and "debug" words and specify
following library to corresponding category.
This isn't something particularly great. Alternative would be to
use target_link_libraries() directly, which sounds like more code
but which is more explicit and allows to have more flexibility
and control comparing to wrapper approach.
Tested the following configurations on Linux, macOS and Windows:
- make full debug developer
- make full release developer
- make lite debug developer
- make lite release developer
NOTE: Linux libraries needs to be compiled with D6641 applied,
otherwise, depending on configuration, it's possible to run into
duplicated zlib symbols error.
Differential Revision: https://developer.blender.org/D6642
The problem was related to the smooth of the strength. As the factor was very low and the value was smoothed , the result was almost nothing when the radius was very small. Now the factor is higher and the smooth is done after clamping pressure.
This adds some kind of dashing to the tube and cone limits. Although the
dashing is in object space and is not a good as old dashing. But it is
the least time consuming and least complex solution.
The operator always expect to be called form a button.
But this is not always the case.
This does not bring functional changes when not called from python.
This commit will prevent the crash. It does produce a result that may not
be desirable (only briding one face of the cube), but at least it's better
than crashing.
In our animation editors, we have a feature called View Frame. Problem is, it is not self evident what this feature does. Does it show frame numbers? Does it show all frames? Does it frame the view? Does it frame the view?
What this does, is it moves the view to where the playhead is. With clearer naming, we can communicate this much more clearly.
This is just a simple patch that changes the name from 'View Frame' -> 'Go to Current Frame'.
Differential Revision: https://developer.blender.org/D6437
As pointed out by user @Peter Fog (tintwotin):
The current name for this property is wrong for two reasons:
- Because it makes incorrect use of the term 'window' (in Blender these are called 'editors')
- 'Lock Time' is incorrect, because it has nothing to do with locking the time at all. In Blender, the time is already locked and always the same across editors, no matter what. This property only syncs the visible range, which is something quite different.
For this reason, this is changed to 'Sync Visible Range' instead. I also added a tooltip, which was completely missing.
This patch also adds this property to the Sequencer, where it was missing.
Differential Revision: https://developer.blender.org/D6632
Reviewed by Julian Eisel
Fixes the invisible scrollbar when opening preferences by 'Editor Type' by always creating scrollbars for V2D_COMMONVIEW_PANELS_UI objects.
This removes a fix (T47047) for dpi issues when dragging out the toolbox. The new toolbox in 2.8 does not seem to have the same DPI issues.
Exact steps for others to reproduce scrollbar invisible (T69413):
change the 3d viewport to preferences and go to addons. The scrollbar will not be visible
To verify there are no DPI issues:
Apply the patch and open blender. Hide the toolbar. Split the 3d view port into 4 windows, such that one is very small horizontally, another is very small vertically, and a third is small in both directions. Drag out the toolbar arrow on all four viewports. The Toolbar will be the same size in each. For further verification, adjust the scaling and repeat.
{F7805968}
Also this is my first time submitting a patch. Some instruction is welcome!
Reviewed By: #user_interface, Severin
Maniphest Tasks: T69413
Differential Revision: https://developer.blender.org/D6050
I also changed the Collada importer scuh that the diffuse Alpha is now set
for the generated PBSDF Shader AND for the base color.
Note: we can not export the base color AND the color
from the PBSDF Shaders at the same time. And when importing
we do not know if the color was originally coming from a base
material or from a shader. Setting them both in import seems
to give the most consistent results.
I'm still not entirely sure what was going on - I know that the execute
region didn't get initialized correctly, but doing that at a later point
didn't fix the issue. Apparently forcing the header region to
re-initialize does fix it, even though I was sure this was redundant.
Also fixes a memory leak in UI code after preferences were opened.
This function is a very special refresh function just for floating
regions. _initialize is more consistent with ED_area_initialize() so use
that too.
Also adds assert.
Add toolbar to sequencer regions.
A bit of refactoring has to be done in RNA space.
Currently there is only cut tool implemented to serve as template for
anybody who would like to add more.
Importers/exporters should show the sidebar by default (if they have
any settings). For some reason this was missing for the Alembic and
Collada exporters.
Waveform is freed in `sound_load_audio()` when sound length is `queried by BKE_sound_info_get()`.
Add argument free_waveform, so `BKE_sound_info_get()` can skip waveform freeing, as it is not expected to alter sound.
Reviewed By: sybren
Differential Revision: http://developer.blender.org/D6053
Add Adjust Last Operation panel to Sequencer.
`OPTYPE_REGISTER` was removed form some operators and few properties were hidden
So they don't show up on the panel
Author: a.monti
Reviewed By: ISS
Differential Revision: http://developer.blender.org/D6210
Refactor code to use `eSpaceSeq_Proxy_RenderSize` or corresponding `IMB_Proxy_Size`
enum items directly.
`SEQ_PROXY_RENDER_SIZE_100` has assigned value 99 to distinguish from `SEQ_PROXY_RENDER_SIZE_FULL`.
This caused error in image size calculation and because of that image had to be scaled.
Author: EitanSomething
Reviewed By: ISS
Differential Revision: http://developer.blender.org/D6368
Sometimes on flat open vertices the thickness would suddenly start
to be jumping in powers of 2, also when bending a plane there is a
noticeable jump in the geometry.
When offset is set to -1 or 1 weird glitches happen.
See D6559 for test cases that failed.
Some modifiers (like particle system, but also some other physics
simulations) require extra steps besides creating the modifier itself,
so had to switch to higher-level `ED_object_modifier_add()` to add
inserted modifiers in an overriding object data-block.
Due to how particle modifier handles copying, some extra nasty
hacks/work-around were also needed to get it working.
This data is only used to get current time/frame value, which is never
mandatory to add a modifier.
Needed by incoming fix to support particles modifiers in liboverrides.
Sometimes on flat open vertices the thickness would suddenly start
to be jumping in powers of 2, also when bending a plane there is a
noticeable jump in the geometry.
When offset is set to -1 or 1 weird glitches happen.
See D6559 for test cases that failed.
The `give_parvert()` function was only considering the mesh's original
vertex indices when the parent vertex index was valid for the evaluated
mesh. However, when using the Mask modifier the evaluated mesh can have
less vertices but still have the parent vertex.
Since the `if (nr < numVertex)` condition wasn't used to prevent any
out-of-bounds access, and seems just an incorrect optimisation, it could
be removed.
When using the color picker on a image editor it tries to read the color
from the original image. When there is no original image the code
crashes during the determination of the UDIM tile number.
There are 2 approaches to solve this.
1. Modify `BKE_image_get_tile_from_pos` to support NULL pointers.
2. Modify `ED_space_image_color_sample` with an early exit.
This patch modifies `ED_space_image_color_sample` with an early exit.
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D6629
Panel alignment was only updated when panel size changed. Now we can
also recognize changes in the category tabs offset and tag panels
for alignment updates.
Previously the window manager would receive the GHOST event and then query the
latest tablet data from the window to go along with it. If multiple events were
queued, it would then use too new tablet data for handling older events.
Fixes T62565: tablet pressure not working on macOS with some devices
Removing meaningless distinction between NULL pointer and EVT_TABLET_NONE,
and initialize pressure and tilt to 1.0 and 0.0 respectively when no tablet
is used.
There were two strange things going on:
- Start frame was clamped to 1, even when frame 0 is always a valid number.
This also ignored the 'Allow Negative Frames' user preference.
- Start frame was only clamped when setting the end frame, so first setting
the end frame and then the start frame would result in a different result
than doing it in the opposite order.
This commit fixes both issues by:
- Clamping the lower bound of the start frame only if negative frames are
not allowed, and
- apply that clamp both when setting the start and the end frame.