VSE: indicate missing media in timeline/display #116869

Merged
Aras Pranckevicius merged 18 commits from aras_p/blender:vse-missing-media into main 2024-04-24 19:54:59 +02:00

Implements most of #116821 (except sine wave tone for missing audio during playback), but using design from the more recent #118288.

Sequencer timeline displays red tint & appropriate icons for strips that are missing media file (images, movies, audio, or meta strips that contain such). Before:

And in this PR:

How it looks like in a large timeline when zoomed out (Sprite Fright edit bundle - it is actually missing some media):

Sequencer preview and rendering displays missing media strips as magenta, similar to missing textures elsewhere in Blender. This is on by default, sequencer view settings have an option to turn it off:
missing-media-display.png

Some implementation details:

  • Media presence is cached per-strip into MediaPresence that is part of sequencer EditingRuntime. The cache is invalidated when invalidating other strip caches during editing (changing media files, swapping inputs, reloading strips etc.), or when doing Refresh All sequencer operator.
  • BLENDER_FILE_SUBVERSION had to be bumped so that previously made files could be changed to "show missing media" flag on.
  • I renamed SEQ_sequence_has_source to SEQ_sequence_has_valid_data to better reflect that the function is only about referenced data blocks.
Implements most of #116821 (except sine wave tone for missing audio during playback), but using design from the more recent #118288. Sequencer timeline displays red tint & appropriate icons for strips that are missing media file (images, movies, audio, or meta strips that contain such). Before: ![](/attachments/ee155224-229f-4bc1-b646-f4dd2acfba90) And in this PR: ![](/attachments/590e37df-d80f-40b5-8223-9a5528027880) How it looks like in a large timeline when zoomed out (Sprite Fright edit bundle - it is actually missing some media): ![](/attachments/1eb44024-d7dd-4ccf-a09b-a051c83bc87c) Sequencer preview and rendering displays missing media strips as magenta, similar to missing textures elsewhere in Blender. This is on by default, sequencer view settings have an option to turn it off: ![missing-media-display.png](/attachments/557adcfc-456d-4c1c-9960-56b9cf11e80f) Some implementation details: - Media presence is cached per-strip into `MediaPresence` that is part of sequencer `EditingRuntime`. The cache is invalidated when invalidating other strip caches during editing (changing media files, swapping inputs, reloading strips etc.), or when doing Refresh All sequencer operator. - `BLENDER_FILE_SUBVERSION` had to be bumped so that previously made files could be changed to "show missing media" flag on. - I renamed `SEQ_sequence_has_source` to `SEQ_sequence_has_valid_data` to better reflect that the function is only about referenced data blocks.
Aras Pranckevicius added 5 commits 2024-01-07 15:21:06 +01:00
buildbot/vexp-code-patch-lint Build done. Details
buildbot/vexp-code-patch-linux-x86_64 Build done. Details
buildbot/vexp-code-patch-darwin-x86_64 Build done. Details
buildbot/vexp-code-patch-windows-amd64 Build done. Details
buildbot/vexp-code-patch-darwin-arm64 Build done. Details
buildbot/vexp-code-patch-coordinator Build done. Details
be422aab9f
VSE: invalidate missing media cache when doing missing file checks, or editing strip
Author
Member

@blender-bot build

@blender-bot build
Aras Pranckevicius added this to the Video Sequencer project 2024-01-07 15:32:07 +01:00
Aras Pranckevicius requested review from Sebastian Parborg 2024-01-07 15:52:02 +01:00
Aras Pranckevicius requested review from Richard Antalik 2024-01-07 15:52:15 +01:00
Aras Pranckevicius changed title from WIP: VSE: indicate missing media in timeline/display to VSE: indicate missing media in timeline/display 2024-01-07 15:53:42 +01:00

I probably wont do full review today, just checked the code quickly. It's nice approach to use drawing loop for this and don't attempt to open file.

When you rename the file instead of pointing strip to new file, the cache would not be updated. This could be a bit annoying. A solution would be to invalidate whole cache if previously unavailable file can be rendered. Not 100% solution, but I think, it would be good enough.
Also it could work other way around - if file is lost during runtime, update the cache at least for this file. But chances are, more files would go missing then.

Looking at check_media_missing() I would say, that it covers 99.999% of use cases, but multiview can complicate filenames. Just look at horror of seq_open_anim_file() or seq_render_image_strip_view(). It's good, that you don't have to check for proxies :)

Finally I am not very happy about using Scene.seq_flag. The existing R_SEQ_OVERRIDE_SCENE_SETTINGS is for 3D pipeline or engine (not exactly sure) that signifies, that render settings of VSE scene are to be used for rendering of target 3D scene.
I would much rather make flag in Editing struct.

I probably wont do full review today, just checked the code quickly. It's nice approach to use drawing loop for this and don't attempt to open file. When you rename the file instead of pointing strip to new file, the cache would not be updated. This could be a bit annoying. A solution would be to invalidate whole cache if previously unavailable file can be rendered. Not 100% solution, but I think, it would be good enough. Also it could work other way around - if file is lost during runtime, update the cache at least for this file. But chances are, more files would go missing then. Looking at `check_media_missing()` I would say, that it covers 99.999% of use cases, but multiview can complicate filenames. Just look at horror of `seq_open_anim_file()` or `seq_render_image_strip_view()`. It's good, that you don't have to check for proxies :) Finally I am not very happy about using `Scene.seq_flag`. The existing `R_SEQ_OVERRIDE_SCENE_SETTINGS` is for 3D pipeline or engine (not exactly sure) that signifies, that render settings of VSE scene are to be used for rendering of target 3D scene. I would much rather make flag in `Editing` struct.
Richard Antalik reviewed 2024-01-07 20:33:45 +01:00
@ -256,1 +257,4 @@
}
/* Clear sequencer media presence caches. */
blender::ed::seq::media_presence_free_all(bmain);

Sequencer is relatively well separated between UI(editor) and core code. Looking at nodes, they do have separate namespaces where ed signifies editor code. so I would expect blender::seq namespace here.

Editing and core code is also separate by cmake so you can't include editor headers in BKE code. Besides conventions, not sure if these namespaces needs to be separated in such case.

Sequencer is relatively well separated between UI(editor) and core code. Looking at nodes, they do have separate namespaces where `ed` signifies editor code. so I would expect `blender::seq` namespace here. Editing and core code is also separate by cmake so you can't include editor headers in BKE code. Besides conventions, not sure if these namespaces needs to be separated in such case.
Author
Member

Indeed, brainfart on my part, should have been a blender::seq namespace.

Indeed, brainfart on my part, should have been a `blender::seq` namespace.
aras_p marked this conversation as resolved
Author
Member

Finally I am not very happy about using Scene.seq_flag. The existing R_SEQ_OVERRIDE_SCENE_SETTINGS is for 3D pipeline or engine (not exactly sure) that signifies, that render settings of VSE scene are to be used for rendering of target 3D scene.
I would much rather make flag in Editing struct.

Done, moved it there.

> Finally I am not very happy about using `Scene.seq_flag`. The existing `R_SEQ_OVERRIDE_SCENE_SETTINGS` is for 3D pipeline or engine (not exactly sure) that signifies, that render settings of VSE scene are to be used for rendering of target 3D scene. > I would much rather make flag in `Editing` struct. Done, moved it there.
Aras Pranckevicius added 2 commits 2024-01-08 11:54:36 +01:00
Aras Pranckevicius changed title from VSE: indicate missing media in timeline/display to WIP: VSE: indicate missing media in timeline/display 2024-01-08 19:35:25 +01:00
Aras Pranckevicius added 1 commit 2024-01-09 08:43:37 +01:00
639395d367 VSE: fix editing path of sound strip not invalidating proper presence caches
The sound strips actually reference bSound data block, and multiple
strips can reference the same one. Also when editing, it works
on bSound data, and you can't easily get to "which strips use it"
info.

So for sounds, cache media presence keyed by the bSound object itself,
not the sequencer strip.
Aras Pranckevicius added 1 commit 2024-01-10 09:56:00 +01:00
Richard Antalik requested changes 2024-01-10 22:00:52 +01:00
Richard Antalik left a comment
Member

This time, I have reviewed this patch fully. Got some more issues/suggestions. Just to be complete I will reiterate previous point:

I think that fixing or breaking file path outside from Blender should be handled when render code attempts to read file.

This time, I have reviewed this patch fully. Got some more issues/suggestions. Just to be complete I will reiterate previous point: I think that fixing or breaking file path outside from Blender should be handled when render code attempts to read file.
@ -189,6 +189,7 @@ static SeqRenderData sequencer_thumbnail_context_init(const bContext *C)
SEQ_render_new_render_data(bmain, depsgraph, scene, 0, 0, sseq->render_size, false, &context);
context.view_id = BKE_scene_multiview_view_id_get(&scene->r, STEREO_LEFT_NAME);
context.use_proxies = false;
context.never_show_missing_media = true;

Nitpick: Could this be called "ignore missing media" or something like that? Currently it's not double negative, but reads strange to me.

Nitpick: Could this be called "ignore missing media" or something like that? Currently it's not double negative, but reads strange to me.
aras_p marked this conversation as resolved
@ -112,7 +112,6 @@
\
.seq_prev_type = OB_SOLID, \
.seq_rend_type = OB_SOLID, \
.seq_flag = 0, \

I guess missing DNA defaults would be initialized to 0 anyway, but this is technically unrelated change and should not be done here.

I guess missing DNA defaults would be initialized to 0 anyway, but this is technically unrelated change and should not be done here.
aras_p marked this conversation as resolved
@ -0,0 +53,4 @@
}
char filepath[FILE_MAX];
const char *basepath = get_seq_base_path(seq);
for (int i = 0; i < paths_count; i++, elem++) {

Suggestion: This may not be worth to implement, but it would be great if we could emit log warning to console with number of missing files and filenames of missing files if there are not too many (like < 5). This would make it easier for user to debug if few images from sequence are missing.
See CLG_log.h for logging.

Not sure how useful would this be in practice though.

Suggestion: This may not be worth to implement, but it would be great if we could emit log warning to console with number of missing files and filenames of missing files if there are not too many (like < 5). This would make it easier for user to debug if few images from sequence are missing. See `CLG_log.h` for logging. Not sure how useful would this be in practice though.
Author
Member

My thinking is that File -> External Data -> Find Missing files already achieves that functionality, if user actually wants to have a report of missing file paths. Just logging it without user asking for it sounds like it could be spammy.

My thinking is that `File -> External Data -> Find Missing files` already achieves that functionality, if user actually wants to have a report of missing file paths. Just logging it without user asking for it sounds like it could be spammy.

Makes sense. Good idea to use existing feature to solve this issue.

Makes sense. Good idea to use existing feature to solve this issue.
iss marked this conversation as resolved
@ -0,0 +76,4 @@
return false;
}
struct MediaPresence {

Looking at presence cache structure, it makes sense, that this is optimized for sound IDs, so that it needs to do check only once.

Suggestion:
I think, that this could be also done for movie strips, but you would use file path as key. Unfortunately image sequences would be a bit problematic. But you could make hash function even for these.

This way you don't need 2 maps, but hashing would perhaps overcomplicate things, so again not sure if this is worth implementing.

Looking at presence cache structure, it makes sense, that this is optimized for sound IDs, so that it needs to do check only once. Suggestion: I think, that this could be also done for movie strips, but you would use file path as key. Unfortunately image sequences would be a bit problematic. But you could make hash function even for these. This way you don't need 2 maps, but hashing would perhaps overcomplicate things, so again not sure if this is worth implementing.
Author
Member

Using media path as hashtable key would be like an order of magnitude more costly lookup though -- right now it's just a "the key is a pointer", which is super cheap. Using path, would mean that to get the key, it needs to do work of: "concat dir name and file name, turn that into absolute path, compute hash of resulting string", and then if there are hashtable collisions in the hash bucket, compute more string equalities. Sounds like a lot of extra work, for dubious benefit.

If it's the "we should have just one hashtable" that you want, then the key could be just void* that is either to Sequence or to bSound, at some loss of type safety (only internally in the implementation). Not sure if worth it either.

Using media path as hashtable key would be like an order of magnitude more costly lookup though -- right now it's just a "the key is a pointer", which is super cheap. Using path, would mean that to get the key, it needs to do work of: "concat dir name and file name, turn that into absolute path, compute hash of resulting string", and then if there are hashtable collisions in the hash bucket, compute more string equalities. Sounds like a lot of extra work, for dubious benefit. If it's the "we should have just one hashtable" that you want, then the key could be just `void*` that is either to Sequence or to bSound, at some loss of type safety (only internally in the implementation). Not sure if worth it either.

Yeah that is correct probably. We could have cache that would map pointer to hash though :D (just kidding)

Yeah that is correct probably. We could have cache that would map pointer to hash though :D (just kidding)
iss marked this conversation as resolved
@ -1042,3 +1060,3 @@
if (ibuf == nullptr) {
return nullptr;
return create_missing_media_image(context, s_elem);

There is problem with generating image of missing media here - It is put into image cache, so if you recover the issue, it will still show pink. Even if this is done in seq_render_strip(), it could be cached as composite or final image, which is not great.
Only solution I see is to flag the ImBuf somehow, then make exception in image cache for images with this flag.
There is flag IB_DISPLAY_BUFFER_INVALID, but I am not sure how exactly is used, so it could affect code downstream. Also comment suggests different use-case, but from cache point of view it would be almost correct meaning.

That would effectively mean, that frames, whereimage is missing can not be cached if the option to show them is enabled, but I think, that's OK.

There is problem with generating image of missing media here - It is put into image cache, so if you recover the issue, it will still show pink. Even if this is done in `seq_render_strip()`, it could be cached as composite or final image, which is not great. Only solution I see is to flag the `ImBuf` somehow, then make exception in image cache for images with this flag. There is flag `IB_DISPLAY_BUFFER_INVALID`, but I am not sure how exactly is used, so it could affect code downstream. Also comment suggests different use-case, but from cache point of view it would be almost correct meaning. That would effectively mean, that frames, whereimage is missing can not be cached if the option to show them is enabled, but I think, that's OK.
Author
Member

Is that a problem though?

I mean, today if you have a missing media file, then e.g. the composite image is still cached, yet the result is arguably "wrong" (it is missing something!). And if you recover the file, then it still has the cached composite image with "missing parts". So overall, this does not change things, just depending on your viewing options, you either get result with "missing parts" or with "pink parts" into the cache. And the way to "kick sequencer into a refresh" operator (Refresh All) throws away the cache, and rebuilds it, as far as I understand, thereby fixing the issue.

Is that a problem though? I mean, today if you have a missing media file, then e.g. the composite image is still cached, yet the result is arguably "wrong" (it is missing something!). And if you recover the file, then it still has the cached composite image with "missing parts". So overall, this does not change things, just depending on your viewing options, you either get result with "missing parts" or with "pink parts" into the cache. And the way to "kick sequencer into a refresh" operator (Refresh All) throws away the cache, and rebuilds it, as far as I understand, thereby fixing the issue.

The refresh all operator is a workaround for various issues and would be removed, if those issues are resolved. I personally see this as undesired behavior, other users or devs may see it as such too. @ZedDB what do you think?

The refresh all operator is a workaround for various issues and would be removed, if those issues are resolved. I personally see this as undesired behavior, other users or devs may see it as such too. @ZedDB what do you think?

I asked for this to be moved into the "Refresh all" operator as that is what we use to "kick" the VSE.

Some issues that the "Refresh all" operator is used to workaround could of course be solved. However in this case there is a scenario where it is impossible to solve.
For files that are stored locally on the computer, we could use "file listeners" to get callbacks when the file was changed or removed and refresh the relevant strips.

However this can not be done reliably for network drives as many of them (like SAMBA and NFS) does not communicate changes or deletion of files to the client computers automatically.

Therefore we will probably always need a "kick" command to have the VSE manually go over the files again and get the current status of them.

Edit:
My brain was a bit fried so I didn't answer the actual question. 😅

I asked for this to be moved into the "Refresh all" operator as that is what we use to "kick" the VSE. Some issues that the "Refresh all" operator is used to workaround could of course be solved. However in this case there is a scenario where it is impossible to solve. For files that are stored locally on the computer, we could use "file listeners" to get callbacks when the file was changed or removed and refresh the relevant strips. However this can not be done reliably for network drives as many of them (like SAMBA and NFS) does not communicate changes or deletion of files to the client computers automatically. Therefore we will probably always need a "kick" command to have the VSE manually go over the files again and get the current status of them. Edit: My brain was a bit fried so I didn't answer the actual question. 😅

I have made a mistake here - it's not as easy as flagging imbuf. The cache would need to track if any image used to make final image was pink, so it's probably fine to not implement it here.

I still think, that it would be better to not cache these images. I think I will wait for user feedback for this case.

I have made a mistake here - it's not as easy as flagging imbuf. The cache would need to track if any image used to make final image was pink, so it's probably fine to not implement it here. I still think, that it would be better to not cache these images. I think I will wait for user feedback for this case.
Author
Member

What we did in another product I worked previously to "refresh what has changed externally outside the app", was a combination of:

  • OS filesystem notifications for things local on this computer, plus:
  • Manual "go over all the files and check their timestamp / content hash", that is done by default whenever "our" application gains focus (i.e. you had Alt-Tabbed away to something else, and are now switching back to "this" program).

This setup works quite well in practice, but it also needs an option to get turned off (e.g. in user's preferences), since "go over all the file paths and cheir their timestamp" can get slow at scale and/or on a high latency network share.

But to me it feels like if such a system ("automatically reload data that has changed behind blender's back") would be implemented, it should be done more holistically across the board, i.e. not only for sequencer, but also for reloading material textures, etc. etc.

What we did in another product I worked previously to "refresh what has changed externally outside the app", was a combination of: - OS filesystem notifications for things local on this computer, _plus_: - Manual "go over all the files and check their timestamp / content hash", that is done by default whenever "our" application gains focus (i.e. you had Alt-Tabbed away to something else, and are now switching back to "this" program). This setup works quite well in practice, but it also needs an option to get turned off (e.g. in user's preferences), since "go over all the file paths and cheir their timestamp" can get slow at scale and/or on a high latency network share. But to me it feels like if such a system ("automatically reload data that has changed behind blender's back") would be implemented, it should be done more holistically across the board, i.e. not only for sequencer, but also for reloading material textures, etc. etc.

Right, that, why I don't suggest to use OS notifications - it isn't done anywhere else. It could be done in VSE first, but it's not top of list of priorities.

But image cache can look at previous images in particular frame and discard all of them if there is pink image. It is bit more complicated to do than simple flag, but fairly trivial. My assumption is, that missing files is something you resolve once and then work normally, so making this part of workflow is nice, but fairly unnecessary if it's too complicated. So if I get reports, that this is hindering, I can make it work, otherwise, it's probably not bothering anybody.

Right, that, why I don't suggest to use OS notifications - it isn't done anywhere else. It could be done in VSE first, but it's not top of list of priorities. But image cache can look at previous images in particular frame and discard all of them if there is pink image. It is bit more complicated to do than simple flag, but fairly trivial. My assumption is, that missing files is something you resolve once and then work normally, so making this part of workflow is nice, but fairly unnecessary if it's too complicated. So if I get reports, that this is hindering, I can make it work, otherwise, it's probably not bothering anybody.
iss marked this conversation as resolved
Aras Pranckevicius added 2 commits 2024-01-11 11:50:50 +01:00
2718050268 Merge branch 'main' into vse-missing-media
# Conflicts:
#	source/blender/blenloader/intern/versioning_400.cc
Aras Pranckevicius added 1 commit 2024-01-11 12:25:47 +01:00
9350444e74 Make render/preview also mark images and movies as missing/present as it loads them
Since that can be on a different thread, added mutex around media
presence functions.
Richard Antalik approved these changes 2024-01-11 19:03:44 +01:00
Aras Pranckevicius added 3 commits 2024-04-24 18:03:34 +02:00
da164e0650 Merge branch 'main' into vse-missing-media
# Conflicts:
#	scripts/startup/bl_ui/space_sequencer.py
#	source/blender/blenkernel/BKE_blender_version.h
#	source/blender/blenloader/intern/versioning_400.cc
#	source/blender/editors/space_sequencer/sequencer_timeline_draw.cc
#	source/blender/sequencer/intern/strip_relations.cc
d2acb0fef9 Merge branch 'main' into vse-missing-media
# Conflicts:
#	source/blender/blenloader/intern/versioning_400.cc
Aras Pranckevicius added 1 commit 2024-04-24 18:11:16 +02:00
buildbot/vexp-code-patch-lint Build done. Details
buildbot/vexp-code-patch-darwin-x86_64 Build done. Details
buildbot/vexp-code-patch-linux-x86_64 Build done. Details
buildbot/vexp-code-patch-darwin-arm64 Build done. Details
buildbot/vexp-code-patch-windows-amd64 Build done. Details
buildbot/vexp-code-patch-coordinator Build done. Details
ee883ddd11
Cleanup: diagonal stripes xscale is no longer needed
Author
Member

@blender-bot build

@blender-bot build
Aras Pranckevicius changed title from WIP: VSE: indicate missing media in timeline/display to VSE: indicate missing media in timeline/display 2024-04-24 18:17:07 +02:00
Aras Pranckevicius added 1 commit 2024-04-24 18:21:41 +02:00
Pablo Vazquez reviewed 2024-04-24 18:30:09 +02:00
@ -2475,0 +2476,4 @@
RNA_def_property_boolean_sdna(
prop, nullptr, "show_missing_media_flag", SEQ_EDIT_SHOW_MISSING_MEDIA);
RNA_def_property_ui_text(
prop, "Show Missing Media", "Render missing images/movies as solid color");
Member

"...as solid color" might not be clear enough. Because this color is not customizable we could mention it directly in the tooltip?

Something like: "Render missing images/movies as a solid magenta block"

@HooglyBoogly what do you think? It doesn't English enough to me.

"...as solid color" might not be clear enough. Because this color is not customizable we could mention it directly in the tooltip? Something like: "Render missing images/movies as a solid magenta block" @HooglyBoogly what do you think? It doesn't English enough to me.
Member

How about Render missing images/movies with a solid magenta color

How about `Render missing images/movies with a solid magenta color`
aras_p marked this conversation as resolved
Pablo Vazquez approved these changes 2024-04-24 18:40:59 +02:00
Pablo Vazquez left a comment
Member

Fantastic!

Other than the tooltip change that Hans suggested for "Show Missing Media":
Render missing images/movies with a solid magenta color

It's good to go from the UI point of view. Thanks!

Fantastic! Other than the tooltip change that Hans suggested for "Show Missing Media": `Render missing images/movies with a solid magenta color` It's good to go from the UI point of view. Thanks!
Aras Pranckevicius added 1 commit 2024-04-24 19:53:33 +02:00
Aras Pranckevicius merged commit 31e56797f0 into main 2024-04-24 19:54:59 +02:00
Aras Pranckevicius deleted branch vse-missing-media 2024-04-24 19:55:02 +02:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#116869
No description provided.