Commit Graph
2645 Commits
Author SHA1 Message Date
aiongg f924bc0946 refactor(keyframe): move src/lib.rs tests to src/tests.rs 2026-10-26 21:49:11 +00:00
aiongg 78d650644b refactor(host): move src/lib.rs tests to src/tests.rs 2026-10-26 21:49:11 +00:00
aiongg 48afb082d5 refactor(engine): move src/remote.rs tests to src/remote/tests.rs 2026-10-26 21:49:11 +00:00
aiongg fd2c828670 refactor(engine): move src/offload.rs tests to src/offload/tests.rs 2026-10-26 21:49:11 +00:00
aiongg 873b519033 refactor(effects): move src/sim3.rs tests to src/sim3/tests.rs 2026-10-26 21:49:11 +00:00
aiongg 60126c4c97 refactor(effects): move src/sim2.rs tests to src/sim2/tests.rs 2026-10-26 21:49:11 +00:00
aiongg 111767f196 refactor(effects): move src/sim.rs tests to src/sim/tests.rs 2026-10-26 21:49:11 +00:00
aiongg 93ba0d34cb refactor(effects): move src/ocio_config.rs tests to src/ocio_config/tests.rs 2026-10-26 21:49:11 +00:00
aiongg ee489aae54 refactor(effects): move src/ocio.rs tests to src/ocio/tests.rs 2026-10-26 21:49:11 +00:00
aiongg 07c669adb9 refactor(effects): move src/generate3.rs tests to src/generate3/tests.rs 2026-10-26 21:49:10 +00:00
aiongg b4f32d3398 refactor(effects): move src/generate2.rs tests to src/generate2/tests.rs 2026-10-26 21:49:10 +00:00
aiongg 6f8b4406ba refactor(effects): move src/distort3.rs tests to src/distort3/tests.rs 2026-10-26 21:49:10 +00:00
aiongg fa7fe244a5 refactor(effects): move src/color_fx.rs tests to src/color_fx/tests.rs 2026-10-26 21:49:10 +00:00
aiongg cb97c5fbfe refactor(effects): move src/color2.rs tests to src/color2/tests.rs 2026-10-26 21:49:10 +00:00
aiongg 0e9ae5a49f refactor(effects): move src/channel3d.rs tests to src/channel3d/tests.rs 2026-10-26 21:49:10 +00:00
aiongg a3ea645fc6 refactor(engine): move commands/ to cmd/, keeping commands as an alias 2026-10-26 21:49:10 +00:00
aiongg 887af7f2c6 refactor(engine): move src/commands/mod.rs to src/commands.rs 2026-10-26 21:49:10 +00:00
aiongg be942e5776 refactor(opusenc): move src/silk/mod.rs to src/silk.rs 2026-10-26 21:49:10 +00:00
aiongg 226f76a5bf refactor(render): move src/three_d/mod.rs to src/three_d.rs 2026-10-26 21:49:10 +00:00
aiongg 0497fa6250 refactor(render): move src/three_d/adv/mod.rs to src/three_d/adv.rs 2026-10-26 21:49:10 +00:00
aiongg fe2469ee97 refactor(effects): move src/puppet/mod.rs to src/puppet.rs 2026-10-26 21:49:10 +00:00
aiongg 9e246e3b9c refactor(track): move src/camtrack/mod.rs to src/camtrack.rs 2026-10-26 21:49:10 +00:00
aiongg bca13987d9 refactor(track): move src/roto/mod.rs to src/roto.rs 2026-10-26 21:49:10 +00:00
aiongg 7ed8441e5e refactor(ui-egui): move src/panels/mod.rs to src/panels.rs 2026-10-26 21:49:10 +00:00
skylar 4397826f5f chore: merge current main for nextest update 2026-10-26 14:38:29 -06:00
Minher0 aff46dabb6 Cast shadows from the Environment light's default environment (#2436)
After Effects' default environment map casts shadows out of the box: an
Environment light with Cast Shadows on shadows the scene with no Source
set. The flat default cancelled its dominant direction to zero, so the
option did nothing until a Source image arrived. Give the default a soft
studio gradient (bright above and toward the initial camera, dark below
and behind), level-normalised so the light's colour x intensity still
sets the overall brightness; its dominant region drives the existing
shadow pipeline, CPU and GPU alike.
2026-10-26 20:26:03 +00:00
skylar ead4e62d39 ci: require nextest 0.9.150
Use the fixed release for GHSA-vc25-qg58-w57c.
2026-10-26 14:13:03 -06:00
Dylan M. Taylor c618429252 Sonar: reduce cognitive complexity in footage reload, edit delete and text layout 2026-10-26 16:01:49 -04:00
skylar taylor-barrick 6867f331f2 Merge pull request #2437 from storytold/codex/egui-037-effect-followup-20261025
Preserve migration regressions and fix software GPU median timeouts
2026-10-26 13:15:59 -06:00
Minher0 95e6ca9a2d Test that an Environment light visibly lights the scene (#2436)
End-to-end regression tests for the issue's report, through the real command
path (what the Light Settings dialog runs) and the real viewer: adding an
Environment light to a Classic 3D comp switches it to Advanced 3D and changes
the viewer's pixels — a red light at full intensity, the default white light,
and the same on the GPU compositor (skips without an adapter, like ui_gpu).
2026-10-26 19:15:29 +00:00
skylar taylor-barrick d9cc373169 M0.37: specialize median histograms for software Vulkan 2026-10-26 19:27:46 +01:00
skylar taylor-barrick 5d60eb4449 M0.37: keep median histograms in per-workgroup memory 2026-10-26 18:49:54 +01:00
Dylan M. Taylor 4c87a58c1a Use checked access in the WGSL grammar test scanner
The WGSL grammar test scanner indexed token characters directly, so a malformed shader could panic the test instead of failing it. Checked access turns that into a reported violation.
2026-10-26 13:08:12 -04:00
skylar taylor-barrick af354e49e8 M0.37: resolve relocated test binaries and expose GPU failures 2026-10-26 16:22:51 +01:00
Minher0 0539098887 Environment lights: review fixes — edit keeps Classic 3D, NaN sun guarded (#2436)
Three small fixes from the review of the shadow commit:

- light_settings switched a Classic 3D comp to Advanced 3D whenever the
  edited light was an Environment light (the resulting kind), so editing
  the intensity of one in a comp the user had switched back to Classic 3D
  dragged the renderer back. The switch now happens only on the
  non-Environment to Environment transition (the sources before and
  after), matching the docs; ordinary edits leave the renderer to the
  user.
- dominant_direction's thresholds let NaN through (every NaN comparison
  is false): a NaN or infinite texel produced a NaN sun direction and
  NaN shading with it. A non-finite weight or length now returns no
  direction — garbage casts no shadow.
- add_environment walked the full-resolution image for the dominant
  direction even when the light casts no shadows, where nothing reads
  it. Only a shadow-casting light pays for the pass now.

Tests: editing an existing Environment light in a Classic 3D comp keeps
the renderer and stays toast-silent; a NaN and an infinite environment
image yield no sun direction.
2026-10-26 13:40:53 +00:00
Minher0 863f0e49c1 Render the Environment light's shadow from its image (#2436)
The Casts Shadows option Environment lights got is only half a fix if
nothing shades for it: an image lights the scene from every direction,
and what occludes that light is the image itself — its dominant bright
region, the sun in a sky map.

- dominant_direction finds it: the radiance-weighted mean texel
  direction (solid-angle weighted, rotation applied). A uniform image
  cancels to zero — a flat default environment shines from everywhere
  at once and casts no shadow, which a uniform environment test pins.
- The shadow is one orthographic map over the scene from that
  direction, after the lights' maps, like a parallel light's: PCF
  widened by Shadow Diffusion, darkened by Shadow Darkness, cleared
  when nothing casts, the image is directionless, or the texel budget
  drops it.
- It darkens the environment's own diffuse and specular light on
  Accepts Shadows surfaces and counts in Cast Shadows Only. CPU and
  GPU (WGSL) do the same; Globals carries the environment's sun
  direction and shadow settings (40 → 44 floats, preflight updated).

A bright-disc environment turned to shine from behind the camera now
shadows a sphere onto the floor behind it, Cast Shadows off lights it
evenly again, and the GPU scene's sky gradient takes a shadow-casting
Environment light. Also: the renderer-switch toasts read "...renderer,
which draws 3D models", the dialog's Casts Shadows checkbox gets an
auto id (dialog.light.casts) the tests click, and the docs' Environment
notes cover the shadow.
2026-10-26 13:05:16 +00:00
Minher0 1599790ac9 Light Environment lights: default environment, Casts Shadows, Advanced 3D switch (#2436)
An Environment light had no visible effect, and its Light Settings dialog had
no Casts Shadows option — both halves of #2436.

No effect had two causes:

- Classic 3D (the default for new comps) skips Environment lights entirely,
  so creating one did nothing. Adding one (or changing a light's type to it)
  now switches the comp to Advanced 3D in the same undo step, with a toast,
  exactly as model and primitive layers already do; switching back to
  Classic 3D with an Environment light in the comp explains itself too.
- In Advanced 3D, a light with no Source and no Environment Layer produced no
  environment at all. It now falls back to a flat default environment of the
  light's colour × intensity, as After Effects does, so the light always
  lights the scene per its parameters.

Cast Shadows was missing because the dialog and the light's property groups
shared one gate (Falloff and Shadows together) that excluded Environment.
The two are now split: every light but Ambient gets Casts Shadows, Shadow
Darkness and Shadow Diffusion (stored, edited and carried over on type
changes), while Falloff stays on Parallel/Spot/Point only — an environment
light shines from every direction at once and has no use for a falloff.

Tests: the renderer lights a card from a sourceless Environment light (colour
and intensity drive it, zero intensity lights nothing), the engine switches
Classic comps to Advanced 3D on creation and type change (one undo step,
toast, and the Classic 3D switch-back toast), Environment lights take and
carry shadow options but no Falloff, and the dialog ticks Casts Shadows on
a new Environment light.
2026-10-26 09:43:47 +00:00
skylar taylor-barrick 69b9ce2bd1 M0.37: reconcile shared docking and qualify migration follow-up 2026-10-26 06:47:07 +01:00
aiongg 2961258879 Merge pull request #2458 from aiongg/comp-tabs
Timeline: each open comp is a tab in the group's tab row, with an overflow menu
2026-10-25 23:42:59 -04:00
aiongg d58f1570c7 Merge pull request #2459 from aiongg/docking-text-keys
Edit menu keys edit a focused text field, docked and in panel windows
2026-10-25 23:14:53 -04:00
aiongg 5a16de0948 Pin craft-libs crates to main 512b5435 2026-10-26 03:14:07 +00:00
aiongg 99e882f4fb Merge remote-tracking branch 'upstream/main' into comp-tabs 2026-10-26 03:13:59 +00:00
aiongg 0eefbc6803 Merge pull request #2432 from aiongg/craft-ui-docking
Panels: move onto craft-ui's shared docking
2026-10-25 23:13:40 -04:00
aiongg fce4a88c92 Timeline: comp tabs draw through craft-ui's extra-tabs hook
Pin craft-libs crates to 3723e32a, which adds the group extra-tabs hook.
The comp tabs follow the panel tabs directly, with no drag bar between
them, and the group header holds only the lock and the panel menu.
2026-10-26 02:44:56 +00:00
aiongg ec32863c26 Merge branch 'craft-ui-docking' into docking-text-keys 2026-10-26 02:30:01 +00:00
aiongg 917c44cd26 Edit menu keys edit a focused text field, docked and in panel windows
The macOS menu bar takes Cmd+C, Cmd+X, Cmd+V, Cmd+A, Cmd+Z and Shift+Cmd+Z
before any window sees them. The menu only checked the main window's
keyboard focus, so with a text field focused in a floating panel's own OS
window those keys ran Copy, Paste or Undo on the project. The menu now asks
craft-ui which window is typing and sends the field its keys there (the
window fetches the clipboard text for Paste), and keeps the Edit items a
field takes enabled while one has the keyboard: Paste followed the project
clipboard and was greyed out with nothing copied there.
2026-10-26 02:29:04 +00:00
aiongg ca0ff9e9dd Merge branch 'craft-ui-docking' into comp-tabs 2026-10-26 02:26:24 +00:00
aiongg 1c7fbfd503 Timeline: each open comp is a tab in the group's tab row, with an overflow menu
The comp tabs follow the panel tabs and are drawn like them (craft-ui's
tab widget and the dock style's font and colours). The panel tabs keep
their full width; comps without room are listed in a » menu at the end
of the row, and picking one shows it. The shown comp's tab always stays
in the row, and the comp tabs stay while another panel of the group is
shown.
2026-10-26 02:23:51 +00:00
aiongg 7c776d0b60 Pin craft-libs crates to main 1e6f1278 2026-10-26 02:13:50 +00:00
aiongg 6d063fc9de Merge upstream main into craft-ui-docking
craft-libs crates move to one rev, 37c907d2 (contains main's craft-update and craft-docpath pins).
Docs: native floating windows are Windows, macOS and X11 only; the UI estimate drops the
multi-monitor panel work that is done.
2026-10-26 01:59:50 +00:00