Brandon Thomas and Claude Opus 5.5
36683d95ee
Merge main into IO-2/SHP-5/OUT-2/PRV-2 work
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 22:39:47 -04:00
Brandon Thomas and Claude Opus 5.5
94e1c86d89
IO-2/SHP-5/PRV-2: PSD import, SVG import + vector/text conversions, persistent disk cache
...
- effectcraft-psd (L1): PSD/PSB reader from Adobe's published file format spec (layers, groups,
masks, blend modes, text engine data, lfx2 effects, fill/adjustment layers, vector masks;
1/8/16/32-bit, RGB/CMYK/Gray/Lab/Indexed, raw/RLE/ZIP) and a minimal writer for fixtures.
- File > Import: importAs footage|composition|compositionLayerSizes, layer (Choose Layer);
groups -> precomps (pass-through collapses), text -> editable text, styles -> Layer Styles,
adjustments -> adjustment layers with effects; UI asks the Import Kind for Photoshop files.
- effectcraft-svg (L2): SVG parser (shapes, paths, transforms, use, CSS, gradients) and
rasteriser; .svg imports as footage, continuously rasterised when the switch is on.
- layer.create: shapesFromVector, shapesFromText, masksFromText, editableText (stub removed).
- Disk cache (render::disk_cache): LZ4 content-keyed frames and layer buffers, LRU size limit
from prefs, atomic writes, restart persistence; edit.purge clears it, cache.diskStats query;
viewer frames read/write it and the timeline shows disk-only frames in blue.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 22:10:48 -04:00
Brandon Thomas and Claude Opus 5.5
83c7e14b94
M7.4: model import
...
New crate effectcraft-model (L2): glTF 2.0 (.gltf/.glb, data URIs, external buffers and
images, PBR metallic-roughness with base/MR/normal/occlusion/emissive textures, node
hierarchy, skins, step/linear/cubic animations) and OBJ/MTL import, parametric primitives,
extruded/bevelled outline meshes and polygon triangulation with holes.
Project: FootageKind::Model, LayerSource::Model/Primitive, Layer::environment, Geometry and
Material Options builders, Environment light Source. Media probes and loads models
(FootageSource::model). Engine: layer.newModel, layer.new3dPrimitive/newPrimitive,
comp.renderer, layer.environment, material.set/reset/duplicateAssign/revealSource (stubs
replaced); File > Import and layer.addItem pick up models. Hand-written fixtures with
attribution sidecars.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 21:04:47 -04:00
Brandon Thomas and Claude Opus 5.5
31f192e2a9
M15.1: web build (eframe wasm) + xtask web
...
- apps/effectcraft-web (L6): eframe web runner booting the shared EffectcraftApp with a browser
session: in-memory file table, <input type=file> pickers and drag-and-drop for open/import,
downloads for Save and Render Queue outputs (several files as one stored .zip), and the
window.effectcraft promise API over the control channel. Demo project on start.
- wasm32 runtime fixes: web-time for Instant/SystemTime (render, engine, export, ui-egui);
Frames renders queued jobs on the UI thread (Frames::pump) instead of a thread pool;
Render Queue runs inline; relative outputs resolve under / ; control PNGs inline.
- effectcraft-export: per-job output Sink (files to memory instead of disk); host FileExporter
carries it; test that sink exports touch no file.
- xtask web [--dev] [--serve PORT] (wasm-bindgen 0.2.129, optional wasm-opt, COOP/COEP server);
effectcraft-web in WEB_CRATES. docs/web.md, headless Chrome smoke test, favicon (+attribution).
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 00:19:35 -04:00
Brandon Thomas and Claude Opus 5.5
76ac3f74f7
M7.1: Classic 3D renderer, cameras, lights, 3D views and camera-tool commands
...
- render/three_d: camera eval (one/two-node, DOF), default 50mm comp camera,
orthographic Front/Left/Top/Back/Right/Bottom + perspective Custom Views,
orbit/pan/dolly rig math; lights (parallel/spot/point/ambient, falloff,
cone feather) and material shading; per-pixel depth-sorted compositor for
3D runs (exact intersections, perspective-correct sampling, blend modes,
track mattes, motion blur), ray-cast planar shadows with transmission and
diffusion, per-layer DOF blur. RenderOpts.view camera override.
- project: camera iris/highlight props, aperture per comp width, light
orientation/rotations, two-node auto-orient defaults.
- engine: layer.newCamera/newLight with presets & settings,
layer.cameraSettings/lightSettings (Layer Settings dispatches),
view.set3DView + View > Switch 3D View items (F10/F11/F12), last/reset view,
camera.orbit/pan/dolly, view.get3D; EditorState.views3d.
- demo: "3D Showcase" comp (camera move, key spot + ambient fill, shadows,
DOF, intersecting planes, gridded floor).
- tests: projection, depth order, intersections, lighting, shadows, DOF,
views, rig math; command undo/redo. Fix a few pre-existing clippy lints.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-01 21:09:21 -04:00
Brandon Thomas and Claude Opus 5.5
808cd490cd
M0.1–M0.7: workspace, time/geom/color/keyframe/project/raster/path/text/effects/render crates
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-01 14:05:20 -04:00