Age | Commit message (Collapse) | Author |
|
|
|
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
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
This would happen if a tile is found on disk, painting would actually
request that tile (because corresponding uvs were in that range), but
that tile was not added in blenders list of tiles in that Image.
Need to also check tile in `image_quick_test` (regardless of iuser
having passed).
thx @lukasstockner97 for additional input!
Maniphest Tasks: T73110
Differential Revision: https://developer.blender.org/D6578
|
|
|
|
|
|
Added missing check that prevented bake from being executed correctly.
|
|
|
|
The smoke mesh geometry always needs to be updated when using the adaptive domain.
|
|
|
|
|
|
We can't use the fast path when the mesh is used by mulitple objects and so
slower sculpting is expected then. But fake users should not affect this. This
also fixes the same type of error in a few other areas.
|
|
|
|
Consistent with similar API functions.
|
|
The combined export was using the old flag format.
|
|
Cache file loading for mesh and particle files now works through the direct update_structures functions. The final cache mode now also only bakes the most essential files and is therefore not resumable anymore.
|
|
|
|
When computing the roll value coming from the handle bone, the code
was using some strange unexplained math. It probably works fine when
the difference with the 'zero roll' orientation is pure twist, like
is the case when called from mat3_to_vec_roll. However, it appears
to break when significant swing is involved.
The issue is fixed by using the proper Swing+Twist decomposition
utility function that was added in a recent version for drivers.
|
|
|
|
Once again, am not exactly sure why that was working before, and not
anymore - but in any case, doing that kind of update here is not only
useless (since we have to do it at the end of the whole
collections/objects duplication and remapping anyway), it is also rather
dangerous, as collections are currently in rather invalid states at that
point of the code...
Note that in ideal world, `BKE_main_collection_sync()` & co would be
lazy (setting only a flag, then code actually needing this to be valid
again should call some sort of `BKE_main_collection_sync_ensure()`).
Then we would not have to worry about such things (and we'd get nice
performance improvements in some cases, also in main remapping code,
etc.).
Food for some refactoring, some day...
|
|
Both actual Collection datablocks and the horrible master collection
should share the same code (there were already some differences,
although probably not critical, but some callbacks from
scene->master_collection did not have the 'not self' flag...).
|
|
### Description of the problem
Until now, it is only possible to correctly add a lightprobe in python via an operator:
`bpy.ops.object.lightprobe_add()`
### Description of the proposed solution
The idea of this patch is to fix the lack of consistency lightprobe creation without operator.
It allow creation of different lightprobe type directly via `bpy.data.lightprobes.new(name, type)` (such as for curves).
In order to make it possible I had to:
1. Add a function `BKE_lightprobe_configure` in charge of lightprobe settings configuration (avoid code redundancy)
2. Allow an object to take lightprobe datablock as data during is initialization.
### A short example of this patch usage
```
lp = bpy.data.lightprobes.new('some_name','PLANAR')
bpy.data.objects.new('toto', lp)
```
Reviewed By: fclem
Differential Revision: https://developer.blender.org/D6396
|
|
This integrates hair collisions with the new cloth collision system,
greatly improving reliability, and reducing the amount of hair-specific
code paths in the cloth code.
The removes all the point constraint based collision stuff, instead
implementing segment impulse based collisions, using the same collision
response code as the normal cloth solver.
The hair system can now also collide with the emitter if it is a
collision object.
Reviewed By: mano-wii, Sebastian Parborg
Differential Revision: https://developer.blender.org/D6545
|
|
|
|
The last handle wasn't corrected, also, there is no reason
to flip the handles while sorting (checking the same handles many times)
move this into it's own loop.
|
|
|
|
|
|
|
|
Based on @fclem's suggestion in D6421, this commit implements support for
storing all tiles of a UDIM texture in a single 2D array texture on the GPU.
Previously, Eevee was binding one OpenGL texture per tile, quickly running
into hardware limits with nontrivial UDIM texture sets.
Workbench meanwhile had no UDIM support at all, as reusing the per-tile
approach would require splitting the mesh by tile as well as texture.
With this commit, both Workbench as well as Eevee now support huge numbers
of tiles, with the eventual limits being GPU memory and ultimately
GL_MAX_ARRAY_TEXTURE_LAYERS, which tends to be in the 1000s on modern GPUs.
Initially my plan was to have one array texture per unique size, but managing
the different textures and keeping everything consistent ended up being way
too complex.
Therefore, we now use a simpler version that allocates a texture that
is large enough to fit the largest tile and then packs all tiles into as many
layers as necessary.
As a result, each UDIM texture only binds two textures (one for the actual
images, one for metadata) regardless of how many tiles are used.
Note that this rolls back per-tile GPUTextures, meaning that we again have
per-Image GPUTextures like we did before the original UDIM commit,
but now with four instead of two types.
Reviewed By: fclem
Differential Revision: https://developer.blender.org/D6456
|
|
|
|
Not sure how the WorkSpaceLayout.screen pointer could end up being NULL,
but apparently that happens, or at least happened with older files.
Rather than just adding NULL-checks, prefer not keeping around those
invalid layouts at all.
|
|
Incorporated suggestions from the task discussion
|
|
into Mantaflow
Having this loop in directly Manta is faster and potentially fixes issues T72783 and T72894.
|
|
Relative paths in the cache are no longer converted into absolute paths automatically.
|
|
Incorporated suggestions from the task discussion
|
|
into Mantaflow
Having this loop in directly Manta is faster and potentially fixes issues T72783 and T72894.
|
|
|
|
The compatible option was used for euler rotation but not quaternions.
|
|
|
|
When a node was partially/fully hidden, this was causing the mask flags
to update incorrectly because it was not checking all vertices, so they
were assigned the fully_masked state and not updating in the transform
tool and mesh filter.
Reviewed By: jbakker
Maniphest Tasks: T73094
Differential Revision: https://developer.blender.org/D6573
|
|
|
|
The PBVH usually is rebuild after a topology change, so it does not make
sense to keep the previous dynamic mesh preview vertex list. This may
cause a crash is the number of vertices of the new mesh (and preview) is
larger previous one. Now the list is deleted with the PBVH and a new one
will be generated using the new mesh when the cursor is updated.
Reviewed By: jbakker
Maniphest Tasks: T71712
Differential Revision: https://developer.blender.org/D6476
|
|
|
|
The original code had 0 as a magic number in the test whether the weight
belongs to a locked group, instead of comparing it to the actual group
number.
Thanks @mano-wii for providing the diff.
|
|
Relative paths in the cache are no longer converted into absolute paths automatically.
|
|
Currently a curve's beveled geometry is built with duplicate geometry
along the seams between the "front," "back," etc, sections of the
curve. This builds them in one piece, resulting in smooth geometry.
Other than the duplicate geometry, the vertex positions are the same
as before.
Reviewed By: campbellbarton, mano-wii
Differential Revision: https://developer.blender.org/D6562
|