v2.0.0-preview.1
·
224 commits
to main
since this release
日本語のリリースノートはこちらです。
What's Changed
Warning
Due to significant changes to the object model, basic projects can still be loaded, but some extensions will require updates.
Also, projects created in v2.x will no longer be loadable in v1.x.
Warning
The node tree feature in v1.x has been replaced by node graphs in v2.x. Please note that projects using node trees in v1.x will not be loaded in v2.x.
Warning
When you open a project created in v1.x, all tool tabs will be hidden. To re-display each tab, click "Timeline," "Output," "Element Property," "Library," and "File Browser" from "View > Tools" in the Window menu.
- Windows
- macOS
- Linux
New Features
- Effects
- Added PathFollowEffect
- Added color grading effects
- Added GLSL / SKSL / C# script effects
- Added PixelSort effect
- Added channel selection, signed mode, and Decal spread to Displacement Map effect
- Added Delay Animation effect
- Added node graph effect
- Objects
- Added a Time Controller for controlling the time of drawing objects
- Added Trim and Offset properties to stroke properties
- Added an object that allows scenes to be called from other scenes
- Added speed/loop properties to video objects
- Added Particle Emitter
- Added 3D Scene
- Added node graphs for use as drawing objects
- Added Presenter objects that reference other objects for drawing objects, brushes, transforms, and effects
- Added C# Expression functionality to each property
- Implemented grouping and ungrouping of timeline elements
- Added thumbnails to timeline elements (video/audio)
- Implemented interactive tutorials
- Added BPM grid to timeline and graph editor
- Visualized easing functions on the timeline
- Implemented automatic scrolling mode settings for the timeline
- Added update notifications for extensions
- Implemented pointer lock and color dropper for macOS
- Automatically expand properties when adding effects
- Added a setting to limit resizing of timeline elements to the original video length
- Added project export/import functionality
- Runtime installation/uninstallation of extensions
- Partial support for encoding, decoding, and previewing HDR videos (HDR10, HLG)
Improvements & Refactoring
- Integrated Vulkan backend and added 3D rendering capabilities
- Replaced FFmpeg.AutoGen with FFmpeg4Sharp, adding hardware decoding support
- Replaced codes using cvFindContours with a proprietary ContourTracer
- Reimplemented NodeTree system and changed to NodeGraph (snapshot-based evaluation)
- Abolished SourceOperator / SourceOperation layers and transitioned to direct ownership by EngineObject
- Abolished RenderNodeCacheContext and replaced with static RenderNodeCacheHelper
- Deleted Beutl.Operators project
- Automatically tracks property changes and records history
- Implemented chunk-based sample/frame generation
- Introduced ComposeThread for audio synthesis
- Separated control styles and behaviors into separate files
- Re-resolved extension dependencies when Beutl version changes
- Added fallback object handling for unknown types during deserialization
- Removed OpenCV from dependencies
- Modified FFmpeg to operate via IPC
Changelog
- [Breaking Change] New Rendering Property System by @yuto-trd in #1407
- Enhance CoreObject Serialization with Uri Property and Adjust Serialization Modes by @yuto-trd in #1425
- Add missing project reference by @yuto-trd in #1428
- Implement the PathFollowEffect by @yuto-trd in #1427
- Add expression support across properties by @Copilot in #1432
- Add expression support across properties by @yuto-trd in #1431
- Deprecate CreateEffectNode and replace with CreateNode for audio effects by @yuto-trd in #1434
- fix: moved the OffsetPosition property to the Sound class to work correctly by @yuto-trd in #1433
- Introduce ComposeThread for improved audio composition handling by @yuto-trd in #1435
- Fix URI path handling for encoded characters by @yuto-trd in #1437
- Add grouping and ungrouping functionality for elements by @yuto-trd in #1438
- Add element preview (images/videos/audio), video speed/loop props, and preview toggle by @yuto-trd in #1436
- Implement chunked sample and frame generation with threading by @yuto-trd in #1439
- Integrate Vulkan support by @yuto-trd in #1445
- Add Beutl.Editor project with core editor functionality by @yuto-trd in #1440
- Optimize property tracking with CorePropertyOperationObserver by @yuto-trd in #1447
- Add Color Grading effect with customizable properties by @yuto-trd in #1442
- Add localization support for UI strings and messages by @yuto-trd in #1449
- Refactor media source handling to improve resource management by @yuto-trd in #1450
- Enhance serialization for time anchor properties in EngineObject by @yuto-trd in #1451
- TreeLineDecorator control for enhanced editor layout by @yuto-trd in #1452
- Add SimplePropertyAdapter for expression handling by @yuto-trd in #1453
- feat: add SKSLScriptEffect and CSharpScriptEffect filter effects by @yuto-trd in #1456
- Add localized display names for various effects and segments by @yuto-trd in #1457
- Add null check for hierarchical root in auto-save logic by @yuto-trd in #1458
- feat: implement Presenter classes for weak references by @yuto-trd in #1454
- Add Display attribute to IProperty properties by @yuto-trd in #1464
- feat: smooth speed animation for SourceVideo by @yuto-trd in #1463
- Add Vulkan backend for 3D rendering with advanced features by @yuto-trd in #1446
- fix: re-check operation queue before waiting in QueueSynchronizationContext by @yuto-trd in #1469
- feat: optimize thumbnail and waveform rendering by skipping offscreen elements by @yuto-trd in #1470
- feat: add PresenterType attribute to base classes by @yuto-trd in #1471
- refactor: use LibraryItemPickerFlyout for type selection by @yuto-trd in #1472
- feat: add references tab to LibraryItemPickerFlyout by @yuto-trd in #1473
- feat: add file browser tab with tooltip and localization by @yuto-trd in #1474
- feat: expand Add Element menu to collapsible submenu by @yuto-trd in #1476
- feat: add DrawableTimeController and extract SpeedIntegrator by @yuto-trd in #1475
- feat: Add project export/import functionality by @yuto-trd in #1467
- feat: Change LutEffect.Source type to CubeSource by @yuto-trd in #1477
- Move primitive implementations to Beutl.Editor.Components by @yuto-trd in #1481
- Add GLSL Script Effect support by @yuto-trd in #1478
- refactor: Replace FFmpeg.AutoGen with FFmpeg4Sharp in FFmpegReader and add hardware decoding support by @yuto-trd in #1480
- Add script error editor UI for script effects by @yuto-trd in #1482
- refactor: reimplement NodeTree system by @yuto-trd in #1483
- refactor: separate NodeTree data from rendering with snapshot-based evaluation by @yuto-trd in #1484
- feat: Automatically expand properties when adding effects by @yuto-trd in #1485
- feat: Limit timeline resizing to prevent exceeding original media length by @yuto-trd in #1488
- feat: implement NodeTreeDrawable and refactor NodeTree rendering by @yuto-trd in #1490
- Add element thumbnail and waveform caching by @yuto-trd in #1489
- feat: add particle emitter system by @yuto-trd in #1492
- feat: add interactive tutorial system with welcome and timeline basics tutorials by @yuto-trd in #1491
- feat: add BPM grid overlay to timeline and graph editor by @yuto-trd in #1493
- feat: add GLSLShader and SKSLShader utility classes by @yuto-trd in #1495
- fix: update FontFamily to use ContentControlThemeFontFamily in styles by @yuto-trd in #1520
- refactor: decompose EngineObjectResourceGenerator into modular components by @yuto-trd in #1532
- feat: Add SoundGroup operator and localization by @yuto-trd in #1479
- Remove SourceOperator/SourceOperation layer and refactor to direct EngineObject ownership by @yuto-trd in #1555
- Add SceneDrawable and SceneSound for scene-as-drawable support by @yuto-trd in #1559
- feat: Add trim properties to Pen class by @yuto-trd in #1560
- ci: replace daily format auto-fix workflow with PR format check by @yuto-trd in #1565
- Set Reason and ErrorMessage on FallbackEngineObject in migration deserialization failure path by @Copilot in #1564
- feat: Add fallback object handling for deserialization of unknown types by @yuto-trd in #1561
- fix: use git diff approach for format check to avoid false positives by @yuto-trd in #1567
- Enable analyzer release tracking for Beutl.Engine.SourceGenerators by @yuto-trd in #1566
- feat: support runtime extension install and uninstall by @yuto-trd in #1562
- feat: wait for loading extensions before project operations by @yuto-trd in #1570
- feat: add CreateRenderNode method to Resource and update FilterEffectRenderNode usage by @yuto-trd in #1569
- feat: Add DelayAnimationEffect filter effect by @yuto-trd in #1568
- feat: add package update notification and task for checking updates by @yuto-trd in #1571
- feat: rename AuthorizedUser to AuthenticatedUser across the application by @yuto-trd in #1572
- feat: implement cross-platform pointer lock functionality for macOS by @yuto-trd in #1573
- feat: implement cross-platform color dropper functionality for macOS by @yuto-trd in #1574
- fix: add SuppressResourceClassGeneration to test NodeItem classes to fix build warnings by @yuto-trd in #1583
- feat: add InlineEasingGraphControl for visualizing easing functions by @yuto-trd in #1578
- feat: add TimelineAutoScrollMode configuration and implement auto-scroll functionality in timeline views by @yuto-trd in #1582
- refactor: remove RenderNodeCacheContext and replace with static RenderNodeCacheHelper by @yuto-trd in #1586
- feat: replace OpenCV dependency with native ContourTracer for stroke-related effects by @yuto-trd in #1585
- feat: add Offset property to Pen for path inflation/deflation by @yuto-trd in #1584
- feat: add PixelSort filter effect by @yuto-trd in #1587
- refactor: extract control styles and behaviors into separate files by @yuto-trd in #1594
- i18n: migrate to Aigamo.ResXGenerator and split resource files by domain by @yuto-trd in #1599
- refactor: clean up unused variables and improve null handling by @yuto-trd in #1600
- feat: Display description tooltips on property editors and library items by @yuto-trd in #1609
- refactor: replace PropertyInfo-based reflection with Attribute[] in IProperty by @yuto-trd in #1607
- refactor: Automatically close tabs when objects are detached. by @yuto-trd in #1610
- refactor: rename NodeTree to NodeGraph and extract as separate project by @yuto-trd in #1613
- delete: remove Beutl.Operators project and related references by @yuto-trd in #1612
- feat: Re-resolve extension dependencies on Beutl version change by @yuto-trd in #1611
- feat: add ImageSourceNode and VideoSourceNode to node graph by @yuto-trd in #1614
- feat: Enhance DisplacementMapEffect with channel selection, signed mode, and Decal spread by @yuto-trd in #1615
- feat: add paid extension support with price display and purchase flow by @yuto-trd in #1616
- feat: add Beutl.Extensibility.Sdk project and update build configuration by @yuto-trd in #1617
- feat: add NodeGraphFilterEffect for node-based filter effect composition by @yuto-trd in #1625
- fix: correct color space handling for linear-to-sRGB conversion and refactor bitmap types by @yuto-trd in #1624
- feat: add NumberStep attribute for configurable numeric editor increments by @yuto-trd in #1629
- feat: add specialized property editors for FFmpeg encoder settings by @yuto-trd in #1634
- feat: add HDR rendering, encoding, and preview support by @yuto-trd in #1641
- refactor: remove OpenCvSharp dependency and replace with native implementations by @yuto-trd in #1642
- Fix scene duration adjustment to account for scene start time by @yuto-trd in #1644
- feat: add out-of-process FFmpeg execution via IPC worker by @yuto-trd in #1643
- feat: add dry-run mode to release workflow via workflow_dispatch by @yuto-trd in #1645
- feat: add feedback feature with session tracking by @yuto-trd in #1646
Full Changelog: v1.1.0...v2.0.0-preview.1