-
Notifications
You must be signed in to change notification settings - Fork 10
Image Sequence support #28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
ssh4net
wants to merge
13
commits into
houmain:main
Choose a base branch
from
ssh4net:sequence
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Introduces image sequence handling for textures, including new properties (isSequence, sequencePattern, frameStart, frameEnd, loopSequence, currentFrame) in the Texture model. Updates TextureBase to manage sequence state, resolve filenames per frame, and advance frames with looping/clamping. The UI is extended to allow editing sequence parameters, and the session model and property mapping are updated accordingly.
Introduces getSequenceTexture and buildSequenceFileName methods to FileCache, enabling retrieval of textures from file sequences using a pattern and frame number. This supports workflows involving image sequences, with pattern parsing for zero-padded frame numbers.
Added new SVG icons for media-back_playback-start, media-skip-backward, media-step-backward, and media-step-forward to the src/icons/light/icons directory. These icons expand the available media control options in the light icon set.
Updated the Texture struct's currentFrame member to initialize at 0 instead of 1, clarifying that it is a zero-based index. This improves consistency and avoids off-by-one errors.
Resets sequence frames on evaluation reset, corrects zero-based frame indexing for sequences, and adds proper handling for frame looping and clamping. Also exposes Texture::currentFrame to the session model and removes unnecessary mutability from currentFrame. Debug output and message handling for sequence frames have been updated for clarity.
Sequence textures now advance their frame index during manual, automatic, and steady evaluations in SynchronizeLogic. TextureEditor connects to evaluation updates and reloads sequence textures to ensure the displayed frame matches the current sequence state, providing correct updates during playback or manual stepping.
Moved sequence frame advancement logic from TextureBase to SynchronizeLogic, ensuring frame state is managed centrally. Updated render sessions to rebuild command queues on manual and steady evaluations. Enhanced TextureProperties UI to display and update the current frame, with new label and live updates on evaluation or model changes. Removed frame advancement from TextureBase::updateSequenceFrame, making it a no-op for compatibility.
Update TextureEditor and PropertiesEditor to generate and use frame-specific filenames when saving sequence textures. This ensures that saving a frame in a texture sequence uses the correct filename, matching the behavior when loading sequence textures. Note: File-name in menu ignoring
Introduces a usage label to the TextureProperties panel that displays whether a texture is unassigned, loaded, or assigned to a target. The label updates automatically when relevant data changes, improving clarity for users managing texture assignments.
Introduces an auto-save option for single (non-sequence) textures, allowing them to be automatically saved with a timestamped filename on every evaluation. Updates the Texture editor, session model, and properties UI to support enabling/disabling auto-save, with appropriate UI feedback and validation. The auto-save option is only available for target textures with a valid file path and is disabled after restart.
Sets various image format attributes such as compression, subsampling, and alpha handling when saving textures with OpenImageIO. These options are currently hardcoded and intended to be exposed in the Preferences UI in the future.
Introduces a frameOffset property for texture sequences, updates UI and logic to support frame offsets, and ensures consistent handling of baseName for both single and sequence textures. Improves display and editor key logic for texture editors, updates file name resolution for sequences, and enhances the TextureProperties UI and logic for more robust sequence management. Also adds automatic evaluation triggers and display improvements for sequence textures throughout the application.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Sorry, I don't have too much time to understand a code. So I tried to use LLM (Claude Code) with fixed requirements and strict guidelines from my to minimize changes in current GPUPad code as much as possible.
Textures now support image sequences.
Texture properties has additional UI that enables via Sequence checkbox.
This switch texture loading to use pattern (ffmpeg convention like %06d) that replace a filename.
Start and End frame used to start-end frame number in pattern.
Loop to loop small sequences.
Frame evaluation control synchronised for Texture Editor view and Shader.
I specially do not worked with pre-fetching. Because this can make a code way more complicated and may be not needed.
Looks like code working.
I will use this PR for prototyping Motion Vectors algorythms. That should allow me to use it