Commit Graph

192 Commits

Author SHA1 Message Date
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
2fa9976658 feat(docking): add DockPanel 2026-03-28 22:01:49 +09:00
e92e365a3a fix(docking): improve DockGroup robustness and state preservation 2026-03-28 21:59:44 +09:00
09576bb6e1 fix(docking): enforce DockDocument children in DockGroup and fix style 2026-03-28 21:58:21 +09:00
332a940993 fix(docking): improve DockDocument nullability and DockGroup property reactivity 2026-03-28 21:56:05 +09:00
acbf315e8f feat(docking): add DockDocument and DockGroup 2026-03-28 21:53:50 +09:00
11101f8352 fix(editor): improve DockContainer robustness and style consistency
- Added cycle detection in AddChild to prevent tree-cycle bugs
- Added defensive null validation to AddChild and RemoveChild
- Standardized using directives and exception throwing style
2026-03-28 21:51:52 +09:00
bf40eabcac fix(docking): improve DockContainer robustness and encapsulation 2026-03-28 21:48:25 +09:00
ea4d1084e9 fix(docking): improve container consistency and re-parenting 2026-03-28 21:46:38 +09:00
47ffc01524 feat(docking): add core enums and base classes 2026-03-28 21:43:30 +09:00
5f0eea49cf docs: add docking layout implementation plan 2026-03-28 21:34:00 +09:00
51398f29d2 docs: add docking layout design spec 2026-03-28 21:23:25 +09:00
d8a7b07624 feat(graphics): improve rendering pipeline and docs
- Refactor D3D12 backend and RenderGraph module
- Update graphics RHI and core rendering components
- Add Random.hlsl shader include
- Regenerate API documentation and update user guides
2026-03-27 22:23:44 +09:00
0a2eb619eb Add document 2026-03-26 12:51:07 +09:00
447a4e6904 feat(render): add meshlet rendering and ECS query ref API
Introduces meshlet-based rendering pipeline with new HLSL structures and push constant layouts. Refactors meshlet upload/cooking, updates RenderGraphContext for global/view/instance data, and enhances ECS QueryBuilder with ref returns and [UnscopedRef] for fluent chaining. Improves resource management and disposal patterns, updates D3D12 interop for compatibility, and refines test/app infrastructure. Includes dependency updates, bug fixes, and code cleanups.
2026-03-25 20:27:46 +09:00
b729ca86f5 feat(meshlet): refactor meshlet pipeline and add render pass
Refactor meshlet data structures to use packed uint triangle indices, update meshlet cooking and upload logic, and align HLSL mesh shader. Add MeshRenderPass with bindless rendering and blit support. Improve RenderExtractionSystem, RootSignatureLayout, and TestRenderPipeline. Update GraphicsTestWindow for new pipeline and meshlet logic. Includes code cleanups and comments.
2026-03-25 13:13:03 +09:00
7860e5e341 feat(render): add ECS-based test render pipeline
Introduce TestRenderPipeline and settings, replacing MeshRenderPass.
The new pipeline manages per-frame instance, view, and global data buffers,
and uploads them for each render request. Refactor GraphicsTestWindow to use
ECS World, setting up camera and mesh entities. Remove MeshRenderPass and
related demo code. Add TotalRecordCount to RenderList, new data structs for
buffer uploads, and static masks to RenderingLayerMask. Update project
references and InternalsVisibleTo for Ghost.Graphics.Test access.
2026-03-24 20:14:26 +09:00
92e3d33361 feat(render): per-frame render requests & thread safety
Refactor RenderSystem to store render requests per-frame within FrameResource, improving encapsulation and resource management. Update render loop and AddRenderRequest to use the new structure, ensuring proper disposal and clearing of requests to prevent memory leaks. Remove the old global renderRequests array and update Dispose logic accordingly.

Add spin lock-based thread safety to D3D12ResourceDatabase for AddResource/AddAllocation, and introduce EnterParallelRead/ExitParallelRead methods for explicit locking.

Enhance RenderExtractionSystem and Material to support transparent render lists and a MaterialRenderType property, preparing for advanced rendering features. Includes minor code cleanups and comment improvements.
2026-03-24 16:46:30 +09:00
d44ec0be31 feat(d3d12): unify resource mgmt & add pooling system
Refactored D3D12 resource and command management with a new D3D12Object<T> base class for unified lifetime and naming of COM objects. Introduced pooled command buffer and resource management in D3D12GraphicsEngine and ResourceManager, using frame-based return queues for safe reuse. Updated RenderSystem to use pooled command buffers and render requests, and to properly dispose of per-frame resources. Changed frame synchronization and resource release logic to use ulong fence/frame values for improved robustness. Refactored swap chain to DXGISwapChain and improved error handling and code clarity. Removed renderer management from IGraphicsEngine. Changed ResourceDesc, TextureDesc, and BufferDesc to record structs with equality and hashing for pooling.

BREAKING CHANGE: Renderer management APIs removed from IGraphicsEngine. Frame and resource synchronization now use ulong instead of uint. Resource pooling and command buffer pooling are now required for correct usage.
2026-03-23 20:48:08 +09:00
2b3bf21a74 feat(engine): refactor resource mgmt & render pipeline
Refactors engine infrastructure for improved resource/service
management and render pipeline extensibility. Replaces World’s
resource API with a service-based API. Splits IGraphicsEngine’s
RenderFrame into BeginFrame/EndFrame. Adds support for pluggable
render pipelines in RenderSystem. Replaces disposed checks with
Debug.Assert in performance paths. Updates RenderExtractionSystem
and render loop for new APIs. Improves diagnostics and code clarity.

BREAKING CHANGE: Resource API replaced with service API; render
pipeline and frame lifecycle interfaces changed.
2026-03-22 21:04:05 +09:00
37f4795b4f feat(engine)!: refactor graphics, ECS, and logging APIs
Major refactor of graphics and ECS infrastructure:
- Removed IResourceManager, IRenderSystem, IFenceSynchronizer interfaces; ResourceManager and RenderSystem are now concrete classes.
- Updated all render graph, pipeline, and context code to use concrete ResourceManager.
- Refactored camera/frustum math and render extraction for clarity and correctness; frustum now uses inline arrays.
- RenderingLayerMask is now an immutable struct with bitwise operators.
- Meshlet and meshlet group data structures improved; meshlet build callback signature updated.
- Logging system overhauled: LogMessage is now a class, LogCollection supports change events, and Logger is used directly in the debug console.
- ECS query API: ChunkView.Count renamed to EntityCount; query builder/iterators use VirtualStack.Scope.
- Updated render pipeline and passes for new resource manager and render list APIs.
- Cleaned up obsolete files, improved code style, and updated documentation.
- HLSL meshlet shader updated for new struct layout.
- Debug console now uses new logger and log collection.

BREAKING CHANGE: Public APIs for resource management, rendering, ECS queries, and logging have changed. Interfaces removed; use new concrete types and updated method signatures.
2026-03-21 22:10:28 +09:00
793df1af4f Merge pull request 'feat: implement CPU meshlet baking and update pipeline shaders' (#4) from Julian/GhostEngine:feature/meshlet-pipeline into develop
Reviewed-on: #4
2026-03-20 08:09:20 +00:00
a35321df89 feat: implement CPU meshlet baking and update pipeline shaders 2026-03-20 07:53:23 +00:00
db0be367ef feat(meshopt): add typed enums and improve naming logic
Introduce SimplifyOptions and SimplifyVertexOptions enums for mesh simplification, replacing magic numbers with type-safe flags. Update MeshOptApi with strongly-typed wrapper methods. Refactor MeshletUtility to use new enums and nullable delegates, and fix stride calculation for pointer arithmetic.

Rename NamingConventions.GetMethodName to GetName, update name removal logic to use "$TBare", and add ALL_CAPS style for constants. Update config files to match new naming conventions and add ALL_CAPS constant rule for meshopt. Refactor BindingParser and related classes to support constant member kind. Apply minor bug fixes and code style improvements throughout.
2026-03-20 15:17:38 +09:00
4a98e44630 feat(meshlet)!: consolidate and modernize Cluster LOD logic
Refactored Cluster LOD mesh generation by merging ClodBounds, ClodConfig, ClodMesh, ClodGroup, ClodCluster, Cluster, and related logic into a new MeshletUtility.cs under Ghost.Graphics.Utilities.
Removed legacy Clod* files and updated to use improved memory management (UnsafeArray, Allocator.FreeList) and more idiomatic C# patterns.
Updated .csproj package versions for compatibility.
Minor code style improvements in RenderGraphResourcePool.cs.

BREAKING CHANGE: Cluster LOD API has been consolidated and refactored; previous Clod* types and entry points have been removed or replaced. Callers must update to use MeshletUtility.cs.
2026-03-18 21:18:41 +09:00
9cf03e0b6f Merge pull request 'docs: add XML summary comments to public Meshlet types and methods' (#3) from Julian/GhostEngine:feature/meshlet-docs into develop
Reviewed-on: #3
2026-03-17 04:10:16 +00:00
bc78c8fbee docs: add XML summary comments to public Meshlet types and methods 2026-03-17 04:02:28 +00:00
fe49e57330 Merge pull request 'feat: implement ClusterLOD C# bindings in Ghost.Graphics.Meshlet' (#2) from Julian/GhostEngine:develop into develop
Reviewed-on: #2
Reviewed-by: Misaki <misaki_39@outlook.com>
2026-03-17 03:52:12 +00:00
2376fc9414 fix: resolve all build errors in Meshlet LOD pipeline
- Use correct UnsafeList constructor (int capacity, Allocator)
- Use .Count instead of .Length for UnsafeList
- Cast GetUnsafePtr() to typed pointers explicitly
- Use Api.meshopt_* constants (not MeshOptApi) for simplify flags
- Use meshopt_Meshlet instance methods BuildsFlex/BuildsSpatial
- Use correct meshopt_Meshlet field names (vertex_offset, triangle_offset, etc.)
- Fix byte constant overflow with unchecked cast in LockBoundary
- Add Ghost.MeshOptimizer project reference to Ghost.Graphics.csproj
2026-03-17 03:14:09 +00:00
0a3502b858 refactor: optimize memory for mega-meshes and fix collection usage
- Switch large/dynamic collections from StackScope to Allocator.Temp/Persistent to prevent stack overflow
- Remove redundant Resize calls; use capacity in constructor + Add or AsSpan().Fill for initialization
- Correctly propagate Allocator parameter for returned collections
- Ensure all temporary collections are properly disposed before returning
- Refine ClodBuilder, ClodPartition, ClodBoundsHelper, and ClodSimplify for high-scale mesh processing
2026-03-17 02:34:42 +00:00
22fdae1061 cleanup: remove obsolete Clod.cs file 2026-03-17 02:21:01 +00:00
92c503b253 refactor: address PR review feedback on meshlet LOD system
- Remove WORK_SUMMARY.md
- Use Debug.Assert for stride validation in ClodBuilder
- Fix ClodBuilder.Build return value after cluster disposal
- Update ClodPartition to accept AllocationHandle for return collections
- Standardize on camelCase for public fields in ClodConfig, ClodMesh, ClodBounds, etc.
- Remove redundant Resize calls where capacity suffices or Add is used
- Enforce stack allocator usage for internal temporary collections
- Ensure proper allocator propagation for collections returned from methods
2026-03-17 02:18:37 +00:00
f7fb7da496 fix: correct API calls and cleanup documentation
- Replace .Ptr with .GetUnsafePtr() for UnsafeList access
- Use proper MeshOptApi method names (CamelCase): ComputeClusterBounds, BuildMeshletsBound, PartitionClusters, etc.
- Fix SimplifyVertex_Protect constant access
- Remove IMPLEMENTATION_COMPLETE.md
- Rename AGENT_GUIDELINES.md to AGENT.md
2026-03-17 00:23:42 +00:00
2ba60c4bae refactor: improve unsafe collection API usage per review
- Replace float[3] with Vector3 (System.Numerics)
- Use UnsafeList.GetUnsafePtr() instead of fixed blocks
- Use AllocationManager.CreateStackScope() for temporary collections
- Remove redundant properties in ClodConfig (public fields suffice)
- Use MeshOptApi directly instead of Api alias
- Fix method signatures to not require allocator for stack-scoped collections
2026-03-16 23:55:19 +00:00
f2b68955b1 docs: comprehensive implementation summary 2026-03-16 16:12:33 +00:00
85a000e5c4 docs: add work summary for clusterlod translation 2026-03-16 16:05:02 +00:00