Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
This separate probe rendering from viewport rendering, making possible to
run the baking in another thread (non blocking and faster).
The baked lighting is saved in the blend file. Nothing needs to be
recomputed on load.
There is a few missing bits / bugs:
- Cache cannot be saved to disk as a separate file, it is saved in the DNA
for now making file larger and memory usage higher.
- Auto update only cubemaps does update the grids (bug).
- Probes cannot be updated individually (considered as dynamic).
- Light Cache cannot be (re)generated during render.
|
|
This makes tagging much more generic and make the world updates more in
line with the new tagging system (Depsgraph).
|
|
|
|
|
|
|
|
Modifier stack might reference arrays from mesh, so if any of sub-data
pointer changed, modifier stack is to be re-evaluated.
|
|
Old behavior: tagging ID with DEG_TAG_COPY_ON_WRITE will do copy-on-write
(as requested), but will also flush changes to all operations with depends
on it. This means, for example, tagging object for copy-on-write will force
its modifier stack to be evaluated.
This was needed in the earlier days of copy-on-write when things were not
well defined and when lots of areas were not doing proper tagging.
New behavior: tagging ID with DEG_TAG_COPY_ON_WRITE will only ensure copy
of the dadatblock is up to date, without flushing updates to any dependencies.
This means following things:
- We can update parts of ID without invoking heavy computation of other
parts of same ID. For example, tagging object for COPY_ON_WRITE update
on mode change will not force modifiers stack to update.
- If some dependent datablock is dependent on pointers which are invalidated
by copy-on-write (like, evaluated mesh referencing custom data layers from
original mesh), this will either require explicit tag or explicit relation
in the dependency graph.
Currently can not find a faulty case since tagging of mesh happens with
either 0 (which means, everything) or with GEOMETRY, which also forces
all dependent modifier stacks to be re-evaluated.
This fixes missing PBVH when going into sculpt mode (sculpt mode toggle
was tagging object for COPY_ON_WRITE update, which was forcing modifier
stack to be updated, which was freeing PBVH.
Some other operations might also become faster with this change.
|
|
Internally it's still mostly named lamps, though some modules like Cycles
were already calling them lights.
|
|
|
|
|
|
Shading is supposed to be dealing with draw manager batch cached
thingamajigs, but was causing full object update.
This was causing both flickering in sculpt mode (PBVH was removed,
why it was SOMETIMES restored before draw is a mystery), and was
also causing things to be really slow.
|
|
|
|
|
|
|
|
This way we guarantee that animation component on the datablock will
totally wait for action to be fully evaluated before attempting to
evaluate f-curves.
Fixes T55642: Inconsistent result on animated DoF file
|
|
Pose init initializes inversed object matrix, which means it does
need to have proper object transform.
|
|
|
|
|
|
Because looping over the scene is unsafe and slow.
|
|
|
|
|
|
Same reasoning as effector relations in earlier commit.
|
|
|
|
|
|
To find all effectors in the scene, we need to loop over all objects.
Doing this during depsgraph evaluation caused crashes because not all
objects are guaranteed to be evaluated yet.
To fix this, we now cache the relations as part of the dependency graph
build. As a bonus this also makes evaluation faster for big scenes,
since looping over all objects for each particle system is slow.
Fixes T55156.
|
|
|
|
Transform evaluation does depend on that matrix, but relation was never
in dependency graph. It was not even in the old dependency graph, which
makes me wonder how this thing worked reliably to begin with.
Should fix flickering issue in the render farm.
|
|
Transform evaluation doesn't not depend on objects which are being duplicated,
so should not be any regressions here.
The whole relation should probably be gone as it's kind of rooting back to
legacy times, but that would need more clear research and investigation and
regression testing.
|
|
That will help with cases when dupli_group object is not linked
directly to the scene.
|
|
This should already be happening elsewhere and was causing depsgraph
rebuild to be slower than it should.
|
|
|
|
Note this is now separate from H key hiding, and meant for more persistent
ways to define which objects are relevant to the viewport or render.
This avoids some cases where you'd have to create collection specifically
to hide objects for viewport/render.
|
|
|
|
- rbw->group added to the depsgraph.
- Mesh evaluation added when necessary.
- Prevent of double-free by freeing the scene before objects.
|
|
Currently done for mesh batch cache update, and for base flags sync.
Those components do not need anything from original object, and hence
can skip CoW tag and have faster update after them used.
|
|
|
|
Use all the explicit tagging. Solves characters being in T-pose after
opening specific scene files.
|
|
For physics simulation it's still fuzzy though, but this needs bigger
design for how it works with view layers and visibility.
|
|
keyframe on timeline
Completely ignore animation for legacy zero update tag.
If one needs animation to be evaluated, tag with proper update tag, stop relying
on direct assignment of adt->>recalc with zero update tag for DEG.
This commit might cause missing updates when needed, those needs to be looked
into once they happen.
|
|
See comment for INVALIDATE_ON_FLUSH.
|
|
|
|
|
|
|
|
This commit actually adds some G.main... but at much, much higher level
than the ones it removes, so should still be better ;)
|
|
This partially reverts f8d7df6f162.
I committed this bit by mistake.
|
|
|
|
Note: Depsgraph still calls the nodetree eval function that doesn't
nothing in turn. We can remove it, but it is harmless though.
|