Implementation of the stroke mode of the eraser tool for grease pencil.
In this mode, the eraser removes each stroke that it touches, meaning each stroke that either intersects the eraser or that has all points inside of it.
Pull Request: https://projects.blender.org/blender/blender/pulls/110304
The units defined in blenkernel/intern/unit.c were extracted using a
regex which contained `NULL`. Commit 129f78eee7 converted this file to
c++, and these `NULL` were replaced with `nullptr`, breaking the
regex.
This commit changes the regex to `nullptr` as well to restore the
translations.
Pull Request: https://projects.blender.org/blender/blender/pulls/110420
This is only used as temporary state while evaluating SVM nodes,
there's no point in storing it in the ShaderData for later.
Since ShaderData size is relevant for GPU performance, we should
save the space and only keep it where needed.
Pull Request: https://projects.blender.org/blender/blender/pulls/110366
Reduce indentation in two armature drawing functions, by flipping
conditions and using `continue` (instead of having the entire `for`-body
inside two nested conditions).
No functional changes.
In order to avoid navigation hotkey conflicts during transform
operations, this commit implements the "Transform Navigation with Alt"
option.
This option is enabled by default and makes navigation hotkeys require
the `Alt` key during a transforming in the 3D View.
Pull Request: https://projects.blender.org/blender/blender/pulls/109754
Adopt the use of structs to enclose and organize operator-specific
navigation data.
With this, we create well-defined boundaries for the navigation data of
individual operators.
This makes the code more flexible and easier to maintain and avoid
errors.
Caused by 0b7d8a20bf
Above commit broke the operation because of this change: `if (do_extrude != 0)`
Earlier True/False/2 were used to determine the point of extrude.
Use enum to fix this and to improve the code readability.
Pull Request: https://projects.blender.org/blender/blender/pulls/110256
This commit refactors the code by converting the data manipulation
functions of 'ViewOpsData' into methods.
This change adopts a more object-oriented approach, resulting in
improved code organization and enhanced reusability.
Pull Request: https://projects.blender.org/blender/blender/pulls/110209
- A `_size` suffixed argument was modified to be come the length,
store in a variable with a `_len` suffix to avoid confusion.
- The enum type for masking characters read like a number
(used Set suffix), add `e` prefix to make it clear it's an enum.
This was caused by 89218b66c2
The removal of the transmission roughness socket messed
with the hardcoded socket indices used to for auto socket
values and optimization detection.
Use defines inbetween sockets declarations to make it more
obvious that it they needs to be updated on socket changes.
This also makes the code a bit more meaningful.
The normals were inverted because they use
geometric normals. These are computed using
partial derivatives (`dFdx` & `dFdy`) and are
dependent on the view orientation. But the
baking views were not all captured from the
same side, which flipped sufels normals in
2 out of the 3 views.
There's no reason why this would need to be its own closure, it was
just a slightly different microfacet distribution with a hardcoded
IOR and intensity multiplier internally.
No functional change, just cleaning up the mess of custom OSL closures.
Pull Request: https://projects.blender.org/blender/blender/pulls/109951
This was already unsupported in combination with Multiscattering GGX,
prevented the Principled BSDF from using microfaced-based Fresnel for
Glass materials, and would have made future improvements even trickier.
Pull Request: https://projects.blender.org/blender/blender/pulls/109950
Previously Glass Fresnel used to get baked into the closure weight,
so the MNEE code could just ignore it.
However, now that it's part of the closure implementation, we need
to account for it in the MNEE throughput calculation as well.