Commit Graph

96 Commits

Author SHA1 Message Date
600892bbe2 Refactor RHI documentation and remove unused files 2026-03-25 01:31:09 +08:00
9fae910854 Editor: 更新编辑器面板和UI控件系统
- 添加新的UI控件系统(Core.h, ScalarControls.h, VectorControls.h, UI.h)
- 更新SceneManager支持场景层级管理
- 优化SelectionManager选择管理
- 改进InspectorPanel/GameViewPanel/HierarchyPanel等面板
- 更新RHI文档说明Vulkan实现计划
2026-03-24 20:02:38 +08:00
6ed033890a docs: 整理 plan 文档,废弃文档移至 used 目录
- 废弃的计划文档移动到 docs/plan/used/
- 更新 RHI 抽象层设计文档
- 保留当前有效的计划文档
2026-03-24 18:21:53 +08:00
612342d170 docs: 更正 Editor 设计文档中的 Component 系统描述
- 更正: Engine 核心已有完整组件系统,Editor Inspector 只是未完善
- 补充: Editor 和 Engine 使用两套不同的 GameObject/Component 系统 (重大架构问题)
- 补充: Scene 序列化依赖描述修正
- 补充: 架构问题中新增 Editor/Engine 系统差异分析
2026-03-24 18:20:10 +08:00
4daed24a05 docs: 添加 Editor 设计与实现分析文档
- 对比分析 XCEngine Editor 与 Fermion Boson Editor 各面板功能
- 详细列出缺失的面板: SettingsPanel, OverlayRenderPanel, MaterialEditorPanel, TextureConfigPanel, AssetManagerPanel
- 分析核心系统差异: Application 架构、SceneManager、UI 控件封装、选择系统、资源系统
- 制定改进计划分阶段实施路线
2026-03-24 18:15:03 +08:00
0dde7234b7 refactor(RHI): remove void* from CommandList interfaces and fix OpenGL MRT bug
- Remove void* parameters from RHICommandList abstract interface
- TransitionBarrier, SetVertexBuffer, SetIndexBuffer, SetRenderTargets,
  ClearRenderTarget, ClearDepthStencil, CopyResource now use RHIResourceView*
- SetPipelineState now uses RHIPipelineState* instead of void*
- Simplified SetVertexBuffer to 3 params, SetIndexBuffer to 2 params
- Add internal D3D12 APIs for native type support (low-level escape hatch)
- Fix OpenGL SetRenderTargets to call glDrawBuffers for MRT support
- Update tests to match new interface signatures

All 289 RHI tests pass (158 unit + 64 OpenGL backend + 58 D3D12 backend + 8 integration + 1 disabled)
2026-03-24 17:20:51 +08:00
ac5c98584a refactor: rename ui_editor to editor for consistency 2026-03-24 16:23:04 +08:00
512161bf81 docs: Fix markdown formatting in RHIFence.md 2026-03-24 02:29:52 +08:00
08c01dd143 RHI: Refactor Fence module to pure timeline semantics
- Remove IsSignaled() from RHIFence interface (semantic inconsistency)
- Remove Reset() from OpenGL implementation (no D3D12 counterpart)
- OpenGL Fence now uses single GLsync + CPU counters for timeline simulation
- OpenGL Fence Initialize() now accepts uint64_t initialValue (was bool)
- Add comprehensive timeline semantics tests for all backends:
  - Signal increment/decrement scenarios
  - Multiple signals
  - Wait smaller than completed value
  - GetCompletedValue stages verification
- Update documentation to reflect actual implementation
2026-03-24 01:53:00 +08:00
f427699ac6 refactor: improve test infrastructure and fix OpenGL GLAD initialization
- Rename D3D12Enum.h to D3D12Enums.h for naming consistency
- Fix OpenGL unit test GLAD initialization by using gladLoadGL()
  instead of gladLoadGLLoader(wglGetProcAddress) for fallback support
- Migrate remaining tests to use gtest_discover_tests for granular
  test discovery (math, core, containers, memory, threading, debug,
  components, scene, resources, input, opengl)
- Remove obsolete TEST_RESOURCES_DIR and copy_directory commands
  from OpenGL unit test CMakeLists (minimal/Res doesn't exist)
- Update TEST_SPEC.md with performance metrics and per-module
  build/test commands for faster development workflow
- Update CMake path references to use lowercase paths
2026-03-23 00:43:02 +08:00
0f0ab8922a docs: fix naming conventions across threading, math, memory, core, and debug modules
threading/:
- Rename 19 camelCase method files to hyphenated names
- task-system: createtaskgroup→create-task-group, etc.
- tasksystemconfig: enabletaskprofiling→enable-task-profiling, etc.
- thread: getcurrentid→get-current-id, etc.
- task: addref→add-ref, getid→get-id, etc.

math/:
- Rename underscore operator files to hyphenated
- vector3: operator_add→operator-add, etc.
- matrix4: gettranslation→get-translation, etc.
- vector4: tovector3→to-vector3, constructor_vector3→constructor-vector3
- sphere: sphere_constructor→sphere-constructor, etc.

memory/:
- Remove duplicate memorymanager/ folder (kept manager/ which was correct)

core/:
- filewriter: Consolidate ctor-default.md and ctor-file.md into constructor.md
- Rename dtor.md→destructor.md

debug/:
- filelogsink: Rename construct.md→constructor.md, ~filelogsink.md→destructor.md

All overview pages updated with new file references.
2026-03-22 23:09:29 +08:00
36d3decef6 feat: 添加独立的输入系统和平台抽象层
- 新增 Platform 模块:PlatformTypes.h, Window.h, WindowsWindow
- 新增 Input 模块:InputTypes, InputEvent, InputAxis, InputModule, InputManager
- 新增 WindowsInputModule 处理 Win32 消息转换
- 将 RHI 集成测试从 render_model 迁移到 sphere
- 更新 CMakeLists.txt 添加 Platform 和 Input 模块
2026-03-22 15:21:52 +08:00
6af872e9eb docs: fix Resources module API docs naming conventions and broken links
- Rename constructor/destructor files to follow template spec:
  - ctor.md → constructor.md, dtor.md → destructor.md (audioclip)
  - texture_constructor.md → constructor.md, texture_destructor.md → destructor.md (texture)
  - material-loader-constructor.md → constructor.md, material-loader-destructor.md → destructor.md

- Create missing constructor/destructor docs:
  - audio-loader: constructor.md, destructor.md
  - texture-loader: constructor.md, destructor.md

- Fix broken links to ResourceManager:
  - shader-loader/index.md
  - material-loader/index.md

- Remove duplicate folders (keep hyphenated versions):
  - Delete shaderloader/ (keep shader-loader/)
  - Delete resourcepackage/ (keep resource-package/)
  - Merge textureimportsettings/ into texture-import-settings/

- Rename audio-loader method files:
  - canload.md → can-load.md
  - getdefaultsettings.md → get-default-settings.md
  - getsupportedextensions.md → get-supported-extensions.md

- Update overview pages with proper method links and constructor/destructor entries
2026-03-22 14:42:27 +08:00
1797e7fe17 fix: encapsulate OpenGL types in VertexAttribute to eliminate raw GL API usage in tests
- Add VertexAttributeType and VertexAttributeNormalized enums in OpenGLVertexArray.h
- Add ToGLAttributeType() converter in OpenGLVertexArray.cpp
- Remove glActiveTexture() call from quad test (already handled by texture.Bind())
- Remove #include <glad/glad.h> from triangle test
- Update unit tests to use encapsulated enums

All three OpenGL integration tests (minimal, triangle, quad) pass with 0% pixel difference.
2026-03-22 14:33:57 +08:00
1f129ed20f docs: fix README.md project structure to match actual codebase
Engine modules:
- Audio: remove AudioSource/Listener components (they belong in Components/), add IAudioEffect.h
- Components: add AudioSourceComponent.h and AudioListenerComponent.h
- Math: remove non-existent OBB.h
- Resources: fix DependencyGraph.h -> ResourceDependencyGraph.h
- Threading: add TaskSystemConfig.h
- RHI: remove incorrect RHIDescriptor.h (already covered by RHIDescriptorPool.h)

Backend fixes:
- OpenGL: add OpenGLScreenshot.h
- D3D12: fix file order (D3D12Enum.h before D3D12Types.h)
2026-03-22 14:18:48 +08:00
7028027adc Fix Equalizer::ComputeCoefficients pointer arithmetic bug
The band index was incorrectly calculated using pointer arithmetic on a
local parameter address, which is meaningless. Now uses the band index
passed as a parameter instead.
2026-03-22 13:36:10 +08:00
750ac95951 docs: update README.md and fix components module docs
- Update README.md project structure docs/api section
  - Add missing audio/, components/, scene/ directories
  - Reorder alphabetically
- Update Components test count from 2+ to 3
- Expand documentation section with module listings
- Remove incomplete audio-source and audio-listener component docs
  from components.md (referenced 30+ and 16+ non-existent method docs)
2026-03-22 13:28:14 +08:00
a9d5a68dd6 docs: Add Component, GameObject, TransformComponent and Scene API documentation
- Add Component class documentation with lifecycle methods
- Add GameObject class documentation with component system
- Add TransformComponent documentation with transform methods
- Add Scene class documentation with GameObject management
- Add SceneManager singleton documentation with scene loading
- Update components.md overview with all component classes
- Update main.md navigation with Scene module
2026-03-22 03:33:55 +08:00
d83ed56177 fix(rhi): Fix RHI abstraction layer API docs per api-skill.md template
- Rename texture/dtor.md to destructor.md per template spec
- Remove duplicate non-hyphenated fence docs (getnativehandle.md, issignaled.md, getcompletedvalue.md)
- Fix template field issues:
  - swap-chain, command-queue: 类型 now uses 'class (abstract)'
  - sampler: 头文件 now uses full path 'XCEngine/RHI/RHISampler.h'
  - types: 类型 fixed from 'structs' to 'struct'
  - enums: 类型 fixed from 'enums' to 'enum class'
- Fix include paths in command-queue and pipeline-layout code examples
- Create missing constructor/destructor docs for 11 classes:
  buffer, texture, shader, device, command-list, command-queue,
  fence, sampler, swap-chain, pipeline-state, pipeline-layout
- Update class overview pages to include constructor/destructor entries
2026-03-22 03:07:41 +08:00
1358bb0a5a docs: 修复 D3D12 后端 API 文档问题
- 修复 texture/dtor.md 和 enums/enums.md 的错误链接
- 重命名 texture/ctor.md → constructor.md, texture/dtor.md → destructor.md
- 创建 command-list, fence, device, query-heap, sampler 的 constructor/destructor 文档
- 创建 D3D12Texture 缺失的 16 个方法文档
- 创建 D3D12CommandList 缺失的 12 个 internal 方法文档
- 补充 shader-resource-view 缺少的头文件和类型字段
2026-03-22 02:08:51 +08:00
161a0896d5 docs: 添加 Audio 模块和 Components 模块 API 文档
- 新增 Audio 模块文档 (54 个文件)
  - AudioSystem 单例类及 20 个方法页
  - AudioMixer 混音器类及 11 个方法页
  - IAudioBackend、IAudioEffect 接口
  - FFTFilter、Reverbation、Equalizer、HRTF 效果类
  - WASAPIBackend Windows 后端
  - AudioConfig、Audio3DParams 等结构体
  - 9 个枚举类型文档
- 新增 Components 模块文档 (3 个文件)
  - AudioSourceComponent 音频源组件
  - AudioListenerComponent 音频监听器组件
- 更新 docs/api/main.md 添加模块导航
2026-03-22 01:56:16 +08:00
a172d75e36 Add Music fluctuations project and Chinese plan docs 2026-03-21 15:55:54 +08:00
629455df07 Update API documentation and remove obsolete plan files 2026-03-21 15:55:04 +08:00
810b0861c5 Docs: Add audio module architecture design document
- Add XCEngine音频模块架构设计.md
- Design audio system following Unity-style architecture
- Include AudioSourceComponent, AudioListenerComponent, AudioClip, AudioMixer
- Document DSP effect system (FFT, Reverb, EQ, Compressor)
- Document 3D spatial audio with HRTF support
- Define IAudioBackend abstraction layer with WASAPI/OpenAL backends
- Outline 5-phase implementation priorities
2026-03-20 19:59:06 +08:00
5201638bb1 Docs: Add D3D12 swap chain and texture API docs 2026-03-20 19:43:46 +08:00
60d11f3109 Docs: Add D3D12 API documentation 2026-03-20 19:43:28 +08:00
05a57addc7 Docs: Update UI-Editor GameObject system analysis 2026-03-20 19:43:24 +08:00
f1ad13430b Docs: Add UI-Editor design and implementation doc 2026-03-20 19:06:20 +08:00
761552273b Docs: Add UI-Editor design documents 2026-03-20 19:06:11 +08:00
26fe3cd835 D3D12: Add bounds check to GetBackBuffer and update unit tests
- Add assert() bounds check to GetBackBuffer() to catch invalid indices
- Include <cassert> in D3D12SwapChain.cpp
- Update test_swap_chain.cpp to use reference return type
- Mark InvalidIndex test as DISABLED (assert aborts on invalid index)
- Update get-back-buffer.md documentation
2026-03-20 18:35:00 +08:00
ad0c265c4c docs: add blueprint documentation 2026-03-20 02:36:29 +08:00
070b444f8f docs: update RHI API docs 2026-03-20 02:35:45 +08:00
ea756c0177 docs: update resources API docs 2026-03-20 02:35:35 +08:00
fd792b7df1 docs: update memory and threading API docs 2026-03-20 02:35:24 +08:00
c5b17239ca docs: update math API docs 2026-03-20 02:35:15 +08:00
e165dbea1c docs: update core and debug API docs 2026-03-20 02:35:07 +08:00
0c073db4e8 docs: update containers API docs 2026-03-20 02:35:01 +08:00
7e1782e203 docs: 重写 api-skill.md,完善文档规范与生成流程 2026-03-19 12:41:53 +08:00
5257f3d75c docs: Fix SKILL.md规范 violations - Remove ## 方法列表 and flatten ### sub-headers in ## 公共方法 2026-03-19 02:01:18 +08:00
8e85fd98b8 docs: Remove sub-headers from 公共方法 sections to follow SKILL.md规范 2026-03-19 01:59:38 +08:00
b46d450429 Fix RHI documentation discrepancies
Fixed the following issues:
- command-list.md: Shutdown linked to threading/task-system instead of local shutdown.md
- fence.md: Wait linked to threading/task-group instead of local wait.md
- factory/create-rhi-device-string.md: Claimed Vulkan/Metal support but source doesn't support them
- opengl/buffer/buffer.md: GetType linked to command-queue/get-type (wrong type)
- d3d12/device/device.md: Initialize/Shutdown linked to threading/task-system
- d3d12/command-list/command-list.md: Initialize/Shutdown/Reset/Close/Clear linked to wrong docs
- d3d12/texture/texture.md: Initialize/Shutdown linked to threading/task-system
- opengl/command-list/command-list.md: Shutdown linked to threading/task-system
- opengl/device/device.md: GetNativeHandle incorrectly linked to get-window.md

All links validated with fix_links.py - no broken references remaining.
2026-03-19 01:23:10 +08:00
2076a484d4 Fix debug module documentation structure
- Create overview page for FileLogSink (filelogsink/filelogsink.md)
- Create constructor page for FileLogSink (filelogsink/construct.md)
- Create overview page for ConsoleLogSink (consolelogsink/overview.md)
- Fix self-referencing links in FileLogSink and ConsoleLogSink constructor pages

The constructor pages were incorrectly linking to themselves as 'overview' pages.
Created proper overview pages that list all public methods and link to their
individual documentation pages.
2026-03-19 01:22:11 +08:00
7e4c48d4f9 docs: Document stub/not-implemented methods in resources module
Fixed discrepancies between source code and documentation:
- AsyncLoader: Document Initialize() ignores workerThreadCount, Submit() doesn't do actual async loading, Update() is stub
- ResourceManager: Document UnloadUnused() and ReloadResource() are stubs
- ResourceCache: Document OnZeroRefCount() and Flush() are stubs
- ResourceDependencyGraph: Document TopologicalSort() returns empty (stub)
- ResourceFileSystem: Document GetResourceInfo() doesn't fill modifiedTime, EnumerateResources() is stub
- FileArchive: Document Enumerate() is stub
- ResourcePackageBuilder: Document AddDirectory() is stub
- ImportSettings: Document LoadFromJSON/SaveToJSON are stubs
- TextureImportSettings/MeshImportSettings: Document JSON methods are stubs
- TextureLoader/MeshLoader/MaterialLoader/ShaderLoader/AudioLoader: Document GetDefaultSettings() returns nullptr
- AudioLoader: Document ParseWAVData() is stub, Load() doesn't parse WAV headers
- ShaderLoader: Document DetectShaderType/ParseShaderSource are stubs
- MaterialLoader: Document ParseMaterialData() is stub
- Texture: Document Create() mipLevels=0 behavior, GenerateMipmaps() returns false
- Mesh: Document MeshLoader::Load() is example only
- IResourceLoader: Document GetDefaultSettings() returns nullptr for all loaders
2026-03-19 01:16:12 +08:00
8c719418d0 Add missing destructor documentation for PoolAllocator and ProxyAllocator
- Created docs/api/memory/pool-allocator/~pool-allocator.md documenting the destructor
- Created docs/api/memory/proxy-allocator/~proxy-allocator.md documenting the destructor
- Added ~ProxyAllocator entry to proxy-allocator.md overview table
- Verified link validation passes (no broken references)
2026-03-19 01:15:45 +08:00
94beec946b Fix documentation links and add missing destructor docs
- Add missing ~ProxyAllocator destructor entry to proxy-allocator.md
- Fix relative link paths in resources documentation
2026-03-19 01:14:36 +08:00
7332a2a592 Fix broken link in FileWriter documentation
- Removed broken [FileWriter](FileWriter.md) link from 方法列表 section since the constructor is already documented on the main page and FileWriter.md doesn't exist (file is named filewriter.md)

Also includes link fixes from fix_links.py:
- Fixed relative paths in containers documentation
2026-03-19 01:14:22 +08:00
12ae6f561a docs: Fix containers module documentation discrepancies
- Array::SetAllocator: Remove reference to non-existent PoolAllocator class
- HashMap::SetAllocator: Remove reference to non-existent GetDefaultAllocator()
- HashMap::Copy/Move: Fix move constructor complexity (O(m_bucketCount), not O(1))
- HashMap::iterator: Remove C++20 structured bindings example
- String: Add missing links for operator+ and operator==/!=
2026-03-19 01:14:20 +08:00
2141534995 docs: Fix RHI module documentation discrepancies
Fixed incorrect links in RHI documentation:
- Fixed OpenGL swap-chain docs with wrong references to threading/containers
- Fixed OpenGL texture docs with incorrect buffer/ texture links
- Fixed OpenGL vertex-array docs with wrong threading links
- Fixed OpenGL sampler docs with wrong threading links
- Fixed OpenGL device docs with incorrect swap-chain links
- Fixed fence docs with incorrect command-queue links
- Fixed command-list docs with missing shutdown link
- Fixed get-framebuffer-size.md title mismatch

Added missing documentation:
- Created fence/wait.md
- Created command-list/shutdown.md
- Created swap-chain/resize.md
- Created OpenGL sampler initialize.md, bind.md, unbind.md
2026-03-19 01:07:49 +08:00
452ccd4f8f docs: Add missing resources module documentation
Added documentation for undocumented classes:
- ResourcePath: Path manipulation and GUID conversion utilities
- FileArchive: Archive file reading support
- ResourcePackage/ResourcePackageBuilder: Resource packaging system

Updated resources.md overview to include new documentation modules
and added ImportSettings and ResourceFileSystem to core components.
2026-03-19 01:06:12 +08:00
f436280aa5 Fix math documentation discrepancies
- Vector4.md: Add index mapping (0=x, 1=y, 2=z, 3=w) to operator[] description
- Transform.md: Add proper '运算符' subsection header for operator* documentation

Found and fixed missing operator documentation:
- Vector4: operator[] index mapping was undocumented
- Transform: operator* was listed without proper section header
2026-03-19 01:05:17 +08:00