Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-09-19Merge branch 'master' into temp-T96708-brush-texture-refactoringtemp-T96708-brush-texture-refactoringJeroen Bakker
2022-09-19DNA: Remove unnecessary studio light & light probe struct paddingsJulian Eisel
2022-09-19GHOST/Wayland: correct flag for checking pressed keysCampbell Barton
Check modifier keys using XKB_STATE_MODS_DEPRESSED which is used to check if modifiers are physically held. In practice it's unlikely this would have caused an error for key-maps in common use.
2022-09-19Fix T101180: console HOME key doesn't workCampbell Barton
Regression in [0], re-order the key-map so the home key can be used for cursor motion. [0]: 82fc52ffc88142e0fa29335e07595c87c173a3a6
2022-09-19Cleanup: use doxy sectionsCampbell Barton
2022-09-19Cleanup: spellingCampbell Barton
2022-09-19Cleanup: prefer 'arg' over 'params' for sphinx documentationCampbell Barton
While both are supported, 'arg' is in more common use so prefer it.
2022-09-19Fix T101137: Crash with Transform NodeWannes Malfait
In `BKE_mesh_tag_coords_changed_uniformly` the checks for dirty vertex and dirty poly normals were swapped around, causing an assert to be triggered. Differential Revision: https://developer.blender.org/D16002
2022-09-19Cleanup: Fix grammar in IndexRange headerHans Goudey
Also make it more clear by avoiding repeating the name of the function.
2022-09-18Curves: Remove CurveEval and old Spline typesHans Goudey
`CurveEval` was added for the first iteration of geometry nodes curve support. Since then, it has been replaced by the new `Curves` type which is designed to be much faster for many curves and better integrated with the rest of Blender. Now that all curve nodes have been moved to use `Curves` (T95443), the type can be removed, along with the corresponding geometry component.
2022-09-18Curves: Port Curve to Points node to the new data-blockHans Goudey
This is the last node to use the `CurveEval` type. Since the curve to points node is basically the same as the resample node, now it just reuses the resample code and moves the curve point `CustomData` to a new point cloud at the end. I had to add support for sampling tangents and normals to the resampling. There is one behavior change: If the radius attribute doesn't exist, the node won't set the radius to 1 for the output point cloud anymore. Instead, the default radius for point clouds will be used. That issue was similar to T99814. Differential Revision: https://developer.blender.org/D16008
2022-09-18Fix T101166: crash when creating group input socketJacques Lucke
The issue was that not all Group Input nodes were updated when the node group interface changed.
2022-09-18Fix: Prevent clipping of node drop shadowLeon Schittek
Fix clipping artifacts of node drop shadows that could occur on hidden nodes, when using higher UI scaling. Reviewed By: Hans Goudey Differential Revision: http://developer.blender.org/D16007
2022-09-18Fix: Make node position consistent when added through link drag searchLeon Schittek
The node position is specified in the coordinate space of the node editor. The cursor position has to be divided by `UI_DPI_FAC` since it's in view space but the offset is independent of any ui scaling. Reviewed By: Hans Goudey Differential Revision: http://developer.blender.org/D16006
2022-09-18Cycles: sync changes from standalone repositoryBrecht Van Lommel
* Windows build fixes * Workaround for Hydra + OpenColorIO link issue * Bump version
2022-09-18Build: fix gtest build flags affecting actual libraryBrecht Van Lommel
Switch to target_ functions to avoid this.
2022-09-18Build: limit Py_ENABLE_SHARED to modules using Python headersBrecht Van Lommel
And remove Python flags from nodes, no longer needed.
2022-09-18Build: disable gtests entirely for Python moduleBrecht Van Lommel
To avoid test failure on Windows.
2022-09-18Geometry Nodes: New Face Set Boundaries nodeWannes Malfait
With the recent addition of the UV unwrapping node, there is a need to be able to create seams easily. This node does that by outputting a selection of the boundaries between different input face sets. In the context of UV mapping, one inputs the "patches" you want, and the node gives you the seams needed to make those patches. Differential Revision: https://developer.blender.org/D15423
2022-09-18BLI: Add generic utlity for gathering values with indicesMattias Fredriksson
Add new functions to `array_utils` namespace called `gather(..)`. Versions of `GVArray::materialize_compressed_to_uninitialized(..)` with threading have been reimplemented locally in multiple geometry node contexts. The purpose of this patch is therefore to: * Assemble these implementations in a single file. * Provide a naming convention that is easier to recognize. Differential Revision: https://developer.blender.org/D15786
2022-09-18Curves: Correct and improve Catmull Rom interpolationMattias Fredriksson
Correct interpolation of integer POD types for Catmull Rom interpolation as implemented in eaf416693dcb. **Problem description** `attribute_math::DefaultMixer<T>::mix_in()` assumes/asserts positive weights but the basis function for Catmull-Rom splines generates negative weights (see image in revision). Passing negative weights will yield correct result as sum(weights) = 1 (after multiplication by 0.5) but the assert is still triggered in debug builds. This patch adjusts the behavior by extending the mix functions with mix4(). The benefit of using mix#() over a DefaultMixer is that the result no longer needs to be divided by the weight sum, instead utilizing that the basis weight sum is constant (see plot). **Changes** * Added mix4() and updated catmull_rom::interpolate() to use it. * Removed TODOs from catmull_rom functions. * Moved mix definitions to be ordered as 2, 3, 4 in the header. **Implementation specifics** `catmull_rom::interpolate()` uses a constexpr to differentiate between POD types which multiplies the result with 0.5 after weighting the values, this reduces the number of multiplications for 1D, 2D, 3D vectors (https://godbolt.org/z/8M1z9Pxx6). While this could be considered unnecessary, I didn't want to change the original behavior as it could influence performance (did not measure performance here as this should ensure the logic is ~identical for FP types). Differential Revision: https://developer.blender.org/D15997
2022-09-18Curves: Don't allow resolutions less than 1Hans Goudey
While this worked, the result for curves with a resolution of zero was just a single evaluated point, which isn't useful or intuitive. Using the attribute validation from 8934f00ac5701ea34, make sure users can't set values 0 or less.
2022-09-18LineArt: Force intersection option.YimingWu
This option allows easier setup of intersection overrides on more complex scene structures. Setting force intersection would allow objects to always produce intersection lines even against no-intersection ones. Reviewed By: Aleš Jelovčan (frogstomp) Antonio Vazquez (antoniov) Differential Revision: https://developer.blender.org/D15978
2022-09-18Fix: Crash after recent attributes commitHans Goudey
Fixes test failures from 8934f00ac5701ea349f2b.
2022-09-18Fix OS-key events repeating on GHOST/Win32Campbell Barton
Holding the OS (Windows) key on Win32 used key-repeat behavior. While as far as I know it didn't cause user visible errors - sending repeated modifier events isn't expected behavior and doesn't happen on other platforms (or for other modifier keys).
2022-09-18GHOST: support left/right OS-keyCampbell Barton
Handling the OS key now match other modifiers in GHOST which detect each key separately, making the behavior simpler to reason about since mapping a single key to a modifier state is simpler, avoiding handling that only applied to the OS-Key. This means simulating key up/down events can use the correct modifier. In the window-manager this is still only accessed accessed via KM_OSKEY.
2022-09-17Attributes: Validate some builtin attributes for untrusted inputsHans Goudey
We expect some builtin attributes to have positive values or values within a certain range, but currently there some cases where users can set attributes to arbitrary values: the store named attribute node, and the output attributes of the geometry nodes modifier. The set material index node also needs validation. This patch adds an `AttributeValidator` to the attribute API, which can be used to correct values from these untrusted inputs if necessary. As an alternative to D15548, this approach makes it much easier to understand when validation is being applied, without the need to add arguments to every attribute API method or complicate the virtual array system. Currently validation is provided with a multi-function. That integrates well with the field evaluations that set these values now, but it could be wrapped to be friendlier to other areas of Blender in the future. The Python API is not handled here either. Currently I would prefer to wait until we can integrate the C++ and C attribute APIs better before addressing that. Fixes T100952 Differential Revision: https://developer.blender.org/D15990
2022-09-17Mikktspace: Fix triangle reordering predicateLukas Stockner
This only affected meshes containing degenerate triangles.
2022-09-17Fix: lite build on windowsRay Molenkamp
writefile.cc includes BLI_winstuff.h which includes Windows.h which supplies definitions of min/max that conflict with the c++ headers previously windows.h was only included when TBB was enabled, the inclusion of BLI_winstuff.h now makes this define mandatory for all configurations
2022-09-17WM: send a modifier press when activating a window with modifier heldCampbell Barton
Previously the a simulated event was sent for releasing modifiers on activation but pressing only set the eventstate flag. Prefer the simulated events since press/release events are used in some modal key-maps.
2022-09-17WM: refactor modifier hold/release logic when activating a windowCampbell Barton
Initial support for matching left/right modifier keys for simulated events - no functional changes.
2022-09-17PyDoc: correct parameter doc-strings & exception messageCampbell Barton
2022-09-17Fix T100330: Remove Render Slot not working for first slotLukas Stockner
This bug was caused by the weird ownership logic for render results. Basically, the most recent render result is owned by the Render, while all others are owned by the RenderSlots. When a new render is started, the previous Render is handed over to its slot, and the new slot is cleared. So far, so good. However, when a slot is removed and happens to be the one with the most recent render, this causes a complication. The code handles this by making another slot the most recent one, along with moving its result back to the Render, as if that had always been the most recent one. That works, unless there is no most recent render because you haven't rendered anything yet. Unfortunately, there is no way to store "there hasn't been a render yet", so the code still tries to perform this handover but can't. Previously, the code handled that case by just refusing to delete the slot. However, this blocks users from deleting this slot. But of course, if there hasn't been a render yet, the slots will not contain anything yet, so this entire maneuver is pointless. Therefore, the fix for the bug is to just skip it altogether if there is no Render instead of failing the operation. Technically, there is a weird corner case remaining, because Renders are per-scene. Therefore, if a user renders images in one scene, switches to a different scene, deletes a slot there and then switches back, in some situations the result in the deleted slot might end up in the next slot. Unfortunately this is just a limitation of the weird split ownership logic and can't just be worked around. The proper fix for this probably would be to hand over ownership of the result from the Render to the RenderSlot once the render is done, but this is quite complex. Also fixes a crash when iuser->scene is NULL.
2022-09-17GPencil: Remove Leak SizeAntonio Vazquez
This value was used to close gaps, but now with the new system is not needed. Internally, still we need to keep a small leak size, but after doing a lot of test a value of 3 is perfect, so it's harcoded.
2022-09-17GPencil: Move Gap Closure option to separated subpanelAntonio Vazquez
Also removed leak size
2022-09-17GPencil: Change prop text to `Closure Mode`Antonio Vazquez
2022-09-17GPencil: Hide the help Circles for gaps when gap is closedAntonio Vazquez
To avoid too much noise, the help circles are only visible if the the gap is still open. When the gap is closed, the circles are hidden. Hiding the circles makes it easier to focus on what is problematic. instead, to see many circles that are already resolved.
2022-09-17GPencil: Rename Fill closure methodsAntonio Vazquez
The new names are: * Radius * Extend The mode Radius + Extend has been removed. Also, some code cleanup and format.
2022-09-17GPencil: Add more types of stroke extensions when fillingDave Pagurek
The motivation for this change: while working on an animation recently, I found that there are some gaps that won't close easily via stroke extension or leak size checking. In D14698, I attempted to address this by changing the algorithm of the raster-space flood fill. This patch attempts to address the same issue in vector space by adding two new cases where stroke extensions are added, as suggested by @frogstomp: # **Points of high curvature:** when the curvature at a point is high enough that it's hard to visually distinguish between it and an endpoint, add a stroke extension out along the normal (pointing in the opposite direction of the stroke's acceleration.) This addresses cases where technically the endpoint points up, but there's a sharp corner right below it that should extend to connect. # **Stroke endpoints within a radius**: when two endpoints are close together, regardless of the angle they make, connect them if they are within a radius. This addresses cases like where the two endpoints have effectively parallel tangents, so extensions won't close the gap. Reviewed By: antoniov, mendio, frogstomp Differential Revision: https://developer.blender.org/D14809
2022-09-17IndexRange: Add new `intersect` methodClément Foucault
Returns a new range, that contains the intersection of the current one with the given range. This is helpful to select a portion of a range without having to deal with all the asserts of other functions. The resulting range being always a valid subrange, it can be used to iterate or copy a part of a vector.
2022-09-17DRW: Debug: Fix row / column counters not being reset on initClément Foucault
This fixes the issues with CPU debug print not being in the right order.
2022-09-17DRW: GPU wrapper: Add new StorageVectorBufferClément Foucault
Same as `StorageArrayBuffer` but has a length counter and act like a `blender::Vector` you can clear and append to.
2022-09-17Geometry Nodes: use stringref instead of string in loggerJacques Lucke
This reduces logging overhead. The performance difference is only significant when there are many fast nodes. In my test file with many math nodes, the performance improved from 720ms to 630ms.
2022-09-17GL: Framebuffer: Add support for empty framebuffer (no attachments)Clément Foucault
This allows to reduce the memory footprint of very large framebuffers if there is no need for any attachment.
2022-09-17Cleanup: formatCampbell Barton
2022-09-17Cleanup: compiler warningsCampbell Barton
2022-09-17Cleanup: spelling, punctuation & repeated words in commentsCampbell Barton
2022-09-17Cleanup: Use dedicated function to offset VSE strip handlesRichard Antalik
2022-09-17Fix T101098: Moving meta strip can change its lengthRichard Antalik
Caused by clamping handle translation to strip bounds in functions `SEQ_time_*_handle_frame_set()` to prevent strip ending in invalid state. Issue happens when meta strip is moved so quickly, such that immediate offset is greater than strip length. Currently meta strip bounds are updated when any contained strip changes its position, but this update always preserves meta strip position. Transforming meta strip is not possible directly and all contained strips are moved instead. Therefore this is 2-step process and fix needs to be applied on update function and on translation function. Inline offset handling without clamping in function `SEQ_time_update_meta_strip_range()`. Add new function `seq_time_translate_handles()` to move both handles at once in `SEQ_transform_translate_sequence()`.
2022-09-16Sculpt: add .sculpt to allow_procedural_attribute_accessJoseph Eagar
Also cleaned up a comment.