Blender Git Commit Log

Git Commits -> Revision d09b1d2

Revision d09b1d2 by Jacques Lucke (master)
December 31, 2021, 13:24 (GMT)
Fix T94464: video texture is not refreshing

In the past that worked because the `GPUMaterial` referenced the
`ImageUser` from the image node. However, that design was incompatible
with the recent node tree update refactor (rB7e712b2d6a0d257d272e).
Also, in general it is a bad idea to have references between data that is
owned by two different data blocks.

This incompatibility was resolved by copying the image user from the node
to the `GPUMaterial` (rB28df0107d4a8). Unfortunately, eevee depended
on this reference, because the image user on the node was update when the
frame changed. Because the image user was copied, the image user in the
`GPUMaterial` did not receive the frame update anymore.

This frame update is added back by this commit. The main change is that
the image user iterator now also iterates over image users in `GPUMaterial`s
on material and world data blocks. An issue is that these materials don't
exist on the original data blocks and that caused the check in
`build_animation_images` in the depsgraph to give the wrong answer.
Therefore the check is extended.

Right now the check is not optimal, because it results in more depsgraph
nodes than are necessary. This can be improved when it becomes cheaper
to check if a node tree contains any references to a video texture.
The node tree update refactor mentioned before makes it much easier
to construct this kind of run-time data from the bottom up, instead of
scanning the entire node tree recursively every time some information
is needed.

Commit Details:

Full Hash: d09b1d2759861aa012ab2e7e4ce2ffa2b56bd9d3
Parent Commit: 56344fb
Lines Changed: +32, -2

By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021