Commit Graph
1512 Commits
Author SHA1 Message Date
tylerjenningsw bb0e2b57db CC Particle World: Birth Rate decides the births of its own time, so a burst lives on (#1373)
The simulation runs from layer time 0, but it used the Birth Rate of the
rendered frame for every step. A rate keyed from 3 down to 0 simulated
no births at all once it reached 0, so the burst's particles vanished
that frame although their Longevity had not run out. A ramped rate was
simulated as if its current value had always applied.

Each step now samples Birth Rate at its own layer time through
EffectHost::param_at (with the effect's own index). Without such a host
the current value applies throughout, as before. Particles already alive
keep moving and ageing whatever the rate. The carry and particle ids
continue across rate changes.

Birth Rate is left out of the simulation cache key, so an animated rate
no longer restarts the simulation every frame. In its place:

- The CPU state keeps a hash of the rates it was stepped with (hist). A
  checkpoint is resumed only when that matches the current history, so
  moving an earlier key is never served from a stale checkpoint.
- The GPU gets the birth schedule of the sampled rates (births_at). Its
  checkpoints record which births they hold, and are resumed only when
  the request's births before that step are the same.

A constant Birth Rate gives exactly the particles it did. CC Particle
Systems II and CC Mr. Mercury keep their constant-rate simulation.
2026-10-13 20:45:20 -04:00
tylerjenningsw a00a76e7ed Particles: a birth schedule from a rate per step (#1373)
psim::births_at builds the GPU's birth schedule (the birth step of every
particle id) from the rate of each step, with the CPU step's carry
arithmetic. births() for a constant rate now uses it. It stops as soon
as the cap would be passed, before adding a step's births, so a huge
rate can't build a huge list first.
2026-10-13 20:45:20 -04:00
tylerjenningsw 2e654f92c1 Effects: SimCache can resume only from checkpoints reached with the same inputs (#1373)
SimCache::run_where takes a check on each checkpoint (its step and
state). A simulation whose steps depend on inputs outside its key, such
as a parameter's values over time, resumes only from a checkpoint
reached with the same inputs. A fresh checkpoint now replaces one at the
same step, so a changed history doesn't leave stale checkpoints behind.
run() is run_where with no check.
2026-10-13 20:45:20 -04:00
tylerjenningsw 7b0771fe5a Effects: a host evaluates one effect parameter at another layer time (#1373)
EffectHost::param_at(effect_index, id, layer_time) evaluates a single
parameter (by its flattened id, such as birthRate or group/param) of the
effect at that index in the layer's stack. A simulation can then sample
one parameter at every step without flattening the whole effect each
time.

The effect index is passed in, rather than read from the renderer's
running-effect index as params_at does: GPU-batched effects never update
that index, so a batched effect would read another effect's parameters.
The renderer's implementation walks the effect group by match id and
evaluates just that property (keyframes and expressions) at the comp
time of the layer time.
2026-10-13 20:45:20 -04:00
Brandon ThomasandClaude Opus 5.5 549e9d8251 Footage: the missing-footage toast names the real menu item, Relink Missing Footage… (#1106)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:34:22 -04:00
Brandon Thomas 7a9213611e Merge pull request #1106 from eliasx45/upstream/relink-moved-footage
# Conflicts:
#	docs/footage.md
2026-10-13 05:34:14 -04:00
Brandon ThomasandClaude Opus 5.5 91ee7bf1b3 cargo fmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:23:52 -04:00
Brandon ThomasandClaude Opus 5.5 6c799f3c3b Batch fixes: tests and catalogs that meet each other once the batch lands together
- Keyboard Shortcuts: Enter is not Delete while the delete confirmation is open (#1113 with #1019).
- Speed graph drag test compares proportions, since the Graph Editor now fits its selection (#1182 with #1109).
- Spanish panel test no longer demands the Chinese catalogs' exact rows (#996 with #1189, #1019).
- Object Matte gets its Simplified Chinese effect-name row (#1199 with #792).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:23:30 -04:00
Brandon ThomasandClaude Opus 5.5 3ac283eee4 Review fixes for the landed batch
- Cryptomatte (#1183): planes shorter than the image read as empty instead of panicking.
- layer.addMarker (#1180): a comp marker no longer replaces one at the same time.
- Desktop (#1005): ignore macOS's -psn_ argument instead of refusing to launch.
- Doc comments put back on their own items (#1153, #1037).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:47:52 -04:00
Brandon ThomasandClaude Opus 5.5 900b921dbf PSD: the optimisation tests use the reference decoder once #1137 and #1139 land together
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:47:52 -04:00
Brandon ThomasandClaude Opus 5.5 eb2b734059 PSD: take the integration branch's adapted non-finite test and psd_import formatting (#1149)
The six PSD PRs merged one by one leave #1131's test calling samples()/to_rgb(), which #1139
replaced; vangel76's integration draft #1149 has the adapted version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:47:27 -04:00
vangel76andClaude Sonnet 5.5 02c412b835 PSD: release_bytes takes the buffer by value (clippy ptr_arg)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 04:47:27 -04:00
vangel76andClaude Sonnet 5.5 5f4b3aee86 PSD integration test: deep groups + NaN text, damaged layer section, huge header under a small budget, on a 2 MiB stack
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 04:47:27 -04:00
Brandon ThomasandClaude Opus 5.5 f2d481ce20 Tracker: the 1080p timing test takes the fastest step, so a loaded FreeBSD VM doesn't fail it
The nightly FreeBSD run measured 119 ms/frame against a 100 ms limit: the mean included
Tracker::new and any scheduling stalls on the two-core VM. The best single step with a
250 ms bound still catches an order-of-magnitude regression.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:47:27 -04:00
Brandon ThomasandClaude Opus 5.5 1b4ea03fd2 i18n: a group's translated effect name also draws when it isn't being renamed (#1199 with #1075)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:35:32 -04:00
Brandon Thomas acb77a8c85 Merge pull request #1210 from arnav-hiwarkar/feat/copy-presets-folder-path 2026-10-13 04:35:21 -04:00
Brandon Thomas bb4972a886 Merge pull request #1160 from nanox333/fix/1063-levels-alpha-name
# Conflicts:
#	crates/script/src/tests.rs
2026-10-13 04:35:20 -04:00
Brandon Thomas 66c08de572 Merge pull request #1039 from moecr7/codex/fix-989-effect-paste-timing
# Conflicts:
#	contributors/people.toml
#	docs/gaps.md
2026-10-13 04:35:19 -04:00
Brandon Thomas 286a521598 Merge pull request #1037 from vbasky/fix/1001-selection-persist
# Conflicts:
#	crates/engine/src/lib.rs
2026-10-13 04:34:34 -04:00
Brandon Thomas 4ffd605296 Merge pull request #1180 from maxaeexe/feat/comp-marker-fallback 2026-10-13 04:33:46 -04:00
Jannik WapplerandClaude Opus 5.5 1765dc53df Tint: Swap Colors (#963) (#1060)
Squash of #1060 by @RavoxX, without the docs/images screenshots (kept out of the repo).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:33:43 -04:00
Brandon Thomas 9aabb5da4f Merge pull request #688 from MatejKozlovsky/gpu-resident-effects 2026-10-13 04:33:22 -04:00
Brandon Thomas 6d5bcaa058 Merge pull request #1142 from FredApps/fix/1118-video-preview-off-notice 2026-10-13 04:33:21 -04:00
Brandon Thomas 32792ff172 Merge pull request #1199 from cjcwwww/i18n/effect-names
# Conflicts:
#	crates/ui-egui/src/panels/timeline.rs
#	docs/gaps.md
#	docs/localization-parity.md
2026-10-13 04:33:20 -04:00
Brandon Thomas 2647357a0b Merge pull request #1206 from cjcwwww/fix/quick-apply-ime 2026-10-13 04:32:17 -04:00
Brandon Thomas f9d6457f6a Merge pull request #1021 from pravdomil/claude/uu-effect-params
# Conflicts:
#	crates/ui-egui/src/panels/timeline.rs
2026-10-13 04:32:16 -04:00
Brandon Thomas 430c968e52 Merge pull request #933 from Themolx/replace-with-precomp
# Conflicts:
#	crates/engine/src/tests_project_items.rs
2026-10-13 04:31:42 -04:00
Brandon Thomas 4574fb62bc Merge pull request #792 from vangel76/gap-object-matte
# Conflicts:
#	crates/ui-egui/src/i18n/ui.rs
#	docs/gaps.md
#	docs/target-app-parity.md
2026-10-13 04:30:49 -04:00
Brandon Thomas 120ecb9892 Merge pull request #1026 from FeiLiuEM/fix/1024-symbol-fallback-test
# Conflicts:
#	crates/ui-egui/src/theme.rs
2026-10-13 04:30:02 -04:00
Brandon Thomas 5281171282 Merge pull request #1204 from marcoarnulfo/fix/adjustment-track-matte 2026-10-13 04:29:49 -04:00
Brandon Thomas aa7a8714bd Merge pull request #1108 from eliasx45/upstream/timeline-editing 2026-10-13 04:29:48 -04:00
Brandon Thomas 287c35dae7 Merge pull request #1109 from eliasx45/upstream/azerty-graph-zoom
# Conflicts:
#	crates/engine/src/commands/time.rs
#	crates/ui-egui/src/panels/timeline.rs
2026-10-13 04:29:47 -04:00
Brandon Thomas 8a256a67ef Merge pull request #996 from diegozpy/i18n/es-panels
# Conflicts:
#	crates/ui-egui/src/i18n/ui.rs
2026-10-13 04:29:17 -04:00
Brandon Thomas 6ffb2823c7 Merge pull request #1188 from redonion23/fix/816-save-frame-to-png 2026-10-13 04:29:17 -04:00
Brandon Thomas 6e47aa3f00 Merge pull request #1176 from tylerjenningsw/fix/report-workspace-save-errors 2026-10-13 04:29:16 -04:00
Brandon Thomas ec4c3c782f Merge pull request #1166 from marcoarnulfo/fix/layer-style-dialog-draggable 2026-10-13 04:29:16 -04:00
Brandon Thomas e5e36aa3eb Merge pull request #1127 from pravdomil/claude/exciting-mccarthy-56ae16 2026-10-13 04:29:15 -04:00
Brandon Thomas 08e20e5dba Merge pull request #1112 from marcoarnulfo/fix/tracker-point-drag 2026-10-13 04:29:14 -04:00
Brandon Thomas 07047c7ec9 Merge pull request #1091 from dotCooCoo/fix/eps-arc-angles
# Conflicts:
#	contributors/people.toml
2026-10-13 04:29:14 -04:00
Brandon Thomas 3d2c4a67a1 Merge pull request #1082 from webdevtodayjason/fix/root-svg-viewport 2026-10-13 04:29:13 -04:00
Brandon Thomas 9f985ff374 Merge pull request #1046 from vbasky/fix/872-shapes-from-text
# Conflicts:
#	crates/ui-egui/tests/ui_workflow_selection.rs
2026-10-13 04:29:12 -04:00
Brandon Thomas 197ca451c0 Merge pull request #1028 from vbasky/fix/961-arrow-nudge 2026-10-13 04:29:11 -04:00
Brandon Thomas c4a162b2dc Merge pull request #1017 from marcoarnulfo/feat/layer-context-add-marker
# Conflicts:
#	crates/ui-egui/tests/ui_blank_context_menus.rs
2026-10-13 04:29:11 -04:00
Brandon Thomas 90621e2b04 Merge pull request #1111 from eliasx45/upstream/effect-fixes 2026-10-13 04:29:09 -04:00
Brandon Thomas 7197d2fb7e Merge pull request #1184 from MatejKozlovsky/gpu-frame-inflight-cap 2026-10-13 04:29:08 -04:00
Brandon Thomas 3aac824976 Merge pull request #1175 from storybored379/fix/roto-trim-span
# Conflicts:
#	ROADMAP.md
2026-10-13 04:29:08 -04:00
Brandon Thomas 12e21b5938 Merge pull request #1159 from nanox333/fix/1010-gimbal-precision 2026-10-13 04:29:07 -04:00
Brandon Thomas fa5ce34012 Merge pull request #1119 from marcoarnulfo/fix/ges-jsx-keyframes
# Conflicts:
#	crates/script/src/tests.rs
2026-10-13 04:29:06 -04:00
Brandon Thomas a985dfb36b Merge pull request #1098 from vangel76/feat-gap21-percent-guides-effect-labels
# Conflicts:
#	crates/engine/src/tests_menu_cmds.rs
#	docs/effects-parity.md
#	docs/gaps.md
#	docs/ui-parity.md
2026-10-13 04:29:06 -04:00
Brandon Thomas 5249ff8bad Merge pull request #1090 from vangel76/fix-1081-orient-along-path-flip 2026-10-13 04:29:05 -04:00