Commit Graph

67 Commits

Author SHA1 Message Date
884611181a Refactor instance update flow, asset registry, and texture IO
- Renamed AddInstanceRequest to UpdateInstanceRequest; unified add/update logic for GPU instances
- Introduced UpdateGPUInstanceSystem to handle changed MeshInstance components
- Replaced QueryBuilder.Create() with QueryBuilder.New() for consistency
- Switched versioning in ChunkView HasChanged/HasStructuralChanged to uint
- Added extension-to-AssetType mapping in AssetHandlerRegistry
- Changed TextureAssetHandler/Processor to use nint for image data
- Enhanced DDS cache: read mipmap count, handle invalid files
- Updated ProjectBrowserViewModel to use IAssetRegistry
- Upgraded Misaki.HighPerformance and System.IO.Hashing packages
- Set DependencyChainCapacity in JobSchedulerDesc
- Fixed instance buffer logic in GhostRenderPipeline
- Miscellaneous cleanups and namespace improvements
2026-04-22 15:36:49 +09:00
cb4092179f refactor(core): asset pipeline overhaul & dock removal
- Introduced IAsset interface and refactored asset loading/saving.
- Migrated TextureContentHeader to Ghost.Engine; updated usage.
- Rewrote AssetRegistry, AssetCatalog, ImportCoordinator for new asset flow.
- Added thread-safe ConcurrentHashSet utility.
- Improved EditorApplication folder management/init.
- Updated TextureAssetHandler/TextureProcessor for new import/export.
- Added EditorContentProvider for asset access.
- Updated AssetManager to use new AssetType enum; removed GCHandle.
- Removed all custom docking controls and templates.
- Deleted obsolete ViewModels/Pages (Console, Hierarchy, Inspector, Project).
- Renamed ProjectBrowser to ContentBrowser; updated references.
- Updated NuGet packages, Result conversions, and commit instructions.
- General cleanup: namespaces, dead code, structure.
2026-04-21 23:20:29 +09:00
c249a389e3 Refactor AssetHandlerRegistry, modernize editor window UI
Refactored AssetHandlerRegistry to a static class and updated all usages. Replaced the docking-based EngineEditorWindow with a new grid/panel layout, adding modern toolbar, menu bar, and status bar. Introduced new divider styles and improved UI details. Removed obsolete and unused files, updated project references, and made minor code and UI/UX improvements.
2026-04-20 16:54:49 +09:00
ed00f205b0 feat: implement asynchronous asset management system with texture streaming support 2026-04-20 01:09:59 +09:00
13bf1501e4 feat(asset): asset manager + registration generator
Add runtime AssetManager and AssetHandlerRegistrationGenerator source generator.
Update editor asset handler types and services to work with new registration
mechanism and asset catalog. Remove legacy contracts ICloneable and IReleasable.

Files added:
- src/Runtime/Ghost.Engine/AssetManager.cs
- src/Runtime/Ghost.Generator/AssetHandlerRegistrationGenerator.cs

Major edits:
- Editor asset handler classes and services (Asset*, Texture*, Registry)
- Runtime Handle.cs and project files
- Render graph executor and tests updated accordingly

This commit introduces the foundation for the modern asset pipeline
including generated registration of asset handlers and a centralized
runtime AssetManager that will drive asset lifecycle.
2026-04-15 22:21:00 +09:00
6615fe794e feat(asset): modern asset system with SQLite catalog
Refactored asset management to use a persistent, thread-safe SQLite-backed AssetCatalog, replacing in-memory dictionaries.
Added AssetHandlerRegistry for O(1) handler lookup, ImportCoordinator for async background importing, and robust AssetMeta/AssetMetaIO for JSON-based metadata and settings.
Refactored AssetRegistry to integrate these components and support auto-import via file system watcher.
Updated IImportableAssetHandler for handler-specific settings and polymorphic serialization.
Added comprehensive unit tests for all new systems.
Removed obsolete code and legacy integration tests.

BREAKING CHANGE: Asset system APIs and storage format have changed; migration required for existing projects.
2026-04-14 20:18:38 +09:00
d9bfa43663 feat(rendering): add GPU scene updates and optimizations
Added a new `code-executor` agent with strict TDD and performance focus. Refactored `TextureProcessor` and `TextureAssetHandler` to use `Magick.NET` for image processing. Enhanced `GPUScene` with `InstanceCounterBuffer` and improved instance management. Introduced a compute shader for GPU scene updates. Updated `GhostRenderPipeline` to handle add/remove instance buffers.

BREAKING CHANGE: Removed `x86` platform support and replaced `CachesFolderPath` with `LibraryFolderPath`. Updated project dependencies and removed unused utility classes.
2026-04-14 17:56:23 +09:00
817b32b8d9 feat(graphics): refactor pipeline keying and allocators
Major refactor of graphics pipeline keying, shader cache, and resource allocation.
Replaced most Allocator usage with AllocationHandle, modernized logger usage,
and unified pipeline state keys. Updated MeshUtility to use AllocationHandle.FreeList.
Added new shader pipeline architecture docs and improved error handling throughout.

BREAKING CHANGE: Pipeline keying and resource allocation APIs have changed.
2026-04-13 23:07:52 +09:00
6321b36ef5 feat(resource): refactor heap management & suballocation
Major overhaul of GPU resource/heap management:
- Replace resource pooling and upload buffer logic with transient heap/page-based suballocation in ResourceManager.
- Add support for suballocation and heap flags/types, with D3D12 helpers.
- Remove ICommandBuffer.UploadBuffer/UploadTexture; add UpdateSubResources and CopyBuffer, move upload logic to RenderingContext.
- Refactor D3D12ResourceAllocator/Database for suballocation, heap flags, and mapping.
- Standardize on Handle<GPUBuffer> usage.
- Update meshlet/mesh utilities for new allocation handles and memory pools.
- Refactor RenderGraph and docs to use "heap" terminology.
- Use cpuFrame/gpuFrame consistently for frame sync.
- Add s2h.hlsl, s2h_3d.hlsl, s2h_scatter.hlsl shader debug libs.
- Miscellaneous fixes, cleanup, and dependency updates.

BREAKING CHANGE: Resource pooling and upload APIs replaced with new heap/page-based suballocation system. Update all buffer/texture creation and upload code to use new ResourceManager and ICommandBuffer methods.
2026-04-03 01:48:49 +09:00
a00cb27529 feat(wrapper): span-based interop, resource API refactor
Refactored native wrappers to use ReadOnlySpan<T> for pointer parameters, improving .NET safety and interop. Enhanced wrapper generator with $TYPE and prefix/suffix-based parameter remapping. Added platform-specific native library loading for meshoptimizer, nvtt, and ufbx. Updated D3D12GraphicsEngineFactory for native DLL resolution and removed redundant logic from UnitTestApp. Changed RenderGraphBuilder's resource extraction API to use QueryTextureExtraction/QueryBufferExtraction with explicit handles and flags. Removed IRenderer and D3D12Renderer, moving RenderContext to RenderPipeline. Improved mesh loading, resource management, and updated test shader conventions. Updated project references, build settings, and added launchSettings.json for tooling.

BREAKING CHANGE: Native wrapper APIs now use ReadOnlySpan<T> instead of pointers. RenderGraphBuilder resource extraction API has changed. IRenderer and D3D12Renderer have been removed.
2026-04-01 14:50:20 +09:00
b28b32f502 feat(ui): migrate ProjectBrowser to GridView, improve cleanup
Refactored ProjectBrowser to use GridView instead of ItemsView for file display, updated selection logic, and set a minimum grid height. FloatingWindow now manages DockingLayout cleanup on close to prevent resource leaks. Simplified DockDocument and DockGroup instantiations in EngineEditorWindow. Updated GetDirectoryNameConverter to use Path.GetDirectoryName directly. App shutdown now calls EditorApplication.Shutdown(). Added Ghost.Engine reference in ActivationHandler.
2026-03-29 19:55:05 +09:00
fa617accc3 fix(docking): restore incremental layout updates to prevent visual tree rebuilds 2026-03-29 19:32:44 +09:00
ff22b89ba3 feat(docking): implement proportional sizing for docking layout
- Add DockLength property to DockModule to track star weights
- Add SyncLengths() to DockPanel to capture current Grid weights
- Update DockPanel.UpdateLayoutStructure to use DockLength
- Update DockingLayout.SplitGroup to distribute weights when splitting
2026-03-29 19:02:21 +09:00
2e6e705558 fix: update DockGroup to use DockTabItem and fix tab selection 2026-03-29 18:51:52 +09:00
e6e38f5eea fix(docking): defer container cleanup to avoid visual tree modification during layout 2026-03-29 18:47:38 +09:00
d15bd22743 feat(docking): improve tab management and error handling
Refactored DockGroup to only remove obsolete TabViewItems and restore tab selection more reliably. Updated DockGroup.xaml to enable tab reordering and add-tab button. Switched to CommunityToolkit.WinUI.Controls for GridSplitter and added a style for it. Made DockPanel, DockRegionHighlight, and DockingLayout partial classes. In App.xaml.cs, wrapped initialization in a try-catch to exit on error, and ensured process exit on window close. Improved ProjectBrowser scrollbar behavior and layout settings.
2026-03-29 16:07:18 +09:00
15870ffe89 refactor: adopt WinUI.Dock approach for layout updates and tab content hosting 2026-03-29 15:16:08 +09:00
70b7e56eb7 feat(editor): implement scroll state saving for ProjectBrowser ItemsView 2026-03-29 14:54:26 +09:00
257838b33e refactor: make DockPanel grid definitions incremental to preserve virtualization state 2026-03-29 14:18:49 +09:00
8ff98c56be refactor: remove SizeChanged hack from ProjectBrowser 2026-03-29 14:17:19 +09:00
2c84696994 fix: make DockPanel layout updates incremental to preserve visual tree state 2026-03-29 14:03:38 +09:00
a33a150d06 fix: resolve root module null reference and itemsview scroll bug 2026-03-29 12:30:07 +09:00
b5d8009bec Fixed the issue that crash when close. 2026-03-29 01:13:51 +09:00
3aef53cad9 fix: resolve element already child exception during tab drag and drop 2026-03-28 23:44:52 +09:00
99adf8fc3b fix: merge docking resource dictionary and add test layout 2026-03-28 23:36:23 +09:00
1c553a55fa fix(editor): ensure source container cleanup in ReplaceChild and document cross-layout moves 2026-03-28 23:10:46 +09:00
e9f822409d fix(docking): prevent layout tree loss and enforce cross-layout ownership 2026-03-28 23:07:28 +09:00
0d8bc6f868 fix(docking): improve root cleanup and simplify DockPanel cleanup logic 2026-03-28 23:05:23 +09:00
c8f24edfd8 fix(docking): address final code quality issues in docking layout 2026-03-28 23:03:32 +09:00
2946b905c6 fix(docking): address final code quality issues in docking layout 2026-03-28 23:01:28 +09:00
666528263b fix(docking): address final code quality issues in docking layout 2026-03-28 22:57:54 +09:00
c52daf3914 fix(docking): address code quality issues in DockingLayout 2026-03-28 22:54:30 +09:00
9738971369 fix(docking): address code quality issues in DockingLayout and FloatingWindow 2026-03-28 22:52:34 +09:00
af56338347 feat(docking): add floating window support 2026-03-28 22:50:28 +09:00
45711e7770 fix: address re-entrancy in ReplaceChild and invalid split in AddDocument 2026-03-28 22:48:58 +09:00
0f0b36a932 fix: address code quality issues in DockContainer and DockPanel
- Throw ArgumentException in DockContainer.ReplaceChild if newChild is already in the container to avoid index shifting bugs.
- Add comment in DockPanel.CheckCleanup explaining the asymmetric root panel collapse behavior.
2026-03-28 22:46:26 +09:00
e6d0529ef1 fix(docking): address code quality issues in Docking system 2026-03-28 22:43:44 +09:00
d367cff79f fix(docking): address code quality issues and improve structural integrity 2026-03-28 22:42:07 +09:00
35731d4ebe fix(docking): address code quality issues and improve structural integrity 2026-03-28 22:39:57 +09:00
8d3c5ecb1f fix(docking): address reentrancy and validation issues in DockContainer 2026-03-28 22:37:59 +09:00
1d48784a1c fix(docking): improve structural integrity and add null validation 2026-03-28 22:35:43 +09:00
e5aa328576 fix(docking): address code quality issues and improve docking robustness 2026-03-28 22:32:57 +09:00
55eb240de6 fix(docking): improve type safety, document retention, and container cleanup 2026-03-28 22:29:14 +09:00
45d810e01c feat(docking): implement drag and drop logic 2026-03-28 22:17:16 +09:00
1ec8496b8b fix(docking): add ownership guards and rename FindFirstLeafDockGroup 2026-03-28 22:15:55 +09:00
45375ac2ff fix(docking): address code quality issues in DockingLayout and DockRegionHighlight 2026-03-28 22:14:40 +09:00
4188152f49 fix(docking): address code quality issues in DockingLayout 2026-03-28 22:11:49 +09:00
5521a8cce2 fix(docking): address code quality issues in DockingLayout and DockRegionHighlight 2026-03-28 22:10:08 +09:00
baca976c6f feat(docking): add DockRegionHighlight and DockingLayout 2026-03-28 22:08:20 +09:00
b87e01f6b3 refactor: replace magic numbers and string literals in DockPanel 2026-03-28 22:05:54 +09:00