067c82c3a9
refactor: RHI抽象层测试支持参数化
...
- 将RHITestFixture改为TestWithParam<RHIType>,支持D3D12和OpenGL双后端
- 重构RHIFactory.cpp的include结构,修复OpenGL设备创建
- 在CMakeLists.txt中添加XCENGINE_SUPPORT_OPENGL宏定义
- 更新engine/CMakeLists.txt和tests/RHI/unit/CMakeLists.txt
- 将所有TEST_F改为TEST_P以支持参数化测试
测试结果: 138 tests (D3D12: 58 passed / OpenGL: 48 passed)
2026-03-23 19:17:32 +08:00
81dc337262
feat: add RenderDocCapture to Debug module for frame capture debugging
...
- Add RenderDocCapture class for dynamic loading of renderdoc.dll
- Support BeginCapture/EndCapture/TriggerCapture APIs
- Add RenderDoc log category
- Add unit tests for RenderDocCapture in tests/debug
2026-03-23 17:11:01 +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
fa2d2713d7
feat: 实现 Window 与 InputModule 消息集成
2026-03-22 17:14:11 +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
91291b2075
Add HRTF 3D spatialization audio effect
2026-03-21 12:25:42 +08:00
36119e62aa
Add Equalizer DSP effect
2026-03-21 12:19:27 +08:00
00c2699542
Add Reverbation DSP effect and fix FFTFilter include paths
2026-03-21 12:16:19 +08:00
b68cde82b2
Add IAudioEffect interface and FFTFilter DSP effect using KissFFT
2026-03-21 12:08:16 +08:00
dfc948fc89
Move kissfft to engine/third_party and add AudioMixer class
2026-03-21 12:06:15 +08:00
d786914552
Engine: 添加 /FS 标志修复 MSVC PDB 冲突问题
...
- 在 CMakeLists.txt 中为 MSVC 编译选项添加 /FS 标志
- 添加 OpenGL Screenshot 模块支持
2026-03-21 11:56:59 +08:00
47808f5f90
Add audio module foundation: AudioTypes, AudioConfig, IAudioBackend, WASAPIBackend, AudioSystem, AudioSourceComponent, AudioListenerComponent, and third-party KissFFT library
2026-03-20 20:31:24 +08:00
00f70eccf1
Engine: 实现 Components 和 Scene 模块,包含完整单元测试
...
新增 Components 模块:
- Component 基类 (生命周期、启用状态管理)
- TransformComponent (本地/世界空间变换、矩阵缓存、父子层级)
- GameObject (组件管理、父子层级、激活状态、静态查找)
新增 Scene 模块:
- Scene (场景管理、对象创建销毁、查找、生命周期)
- SceneManager (单例模式、多场景管理、场景切换)
新增测试:
- test_component.cpp (12 个测试)
- test_transform_component.cpp (35 个测试)
- test_game_object.cpp (26 个测试)
- test_scene.cpp (20 个测试)
- test_scene_manager.cpp (17 个测试)
所有测试均已编译通过。
2026-03-20 20:22: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
fc7c8f6797
feat: 完成资源系统导入设置类实现
...
- 新增 ImportSettings 基类
- 新增 TextureImportSettings 纹理导入设置类
- 新增 MeshImportSettings 网格导入设置类
- 新增 ResourcePath 资源路径类
- 完善 CMakeLists.txt 配置
- 新增对应单元测试 (45个测试用例)
2026-03-18 13:39:32 +08:00
3196261e9b
fix(RHI): 添加 OpenGL 源文件到 CMakeLists 并修复编译错误
...
- 添加 OpenGL RHI 所有源文件到 engine/CMakeLists.txt
- 修复 OpenGLPipelineState 结构体重定义问题
- 修复 BufferDesc/TextureDesc/ShaderCompileDesc API 不匹配
- 添加 OpenGLShader 缺少的基类纯虚函数实现
- 修复 HashMap 迭代器支持和 ResourceManager API 调用
2026-03-18 03:37:34 +08:00
a532cabf92
feat(RHI): 添加 RHIDescriptorPool 抽象类
...
- 新增 RHIDescriptorPool 抽象基类,定义描述符池统一接口
- D3D12DescriptorHeap 现在继承自 RHIDescriptorPool
- 添加 DescriptorPoolDesc 结构体,包含设备指针、类型、数量等信息
- 添加 Initialize(const DescriptorPoolDesc&) 统一初始化方法
2026-03-18 01:46:01 +08:00
70571316da
feat(RHI): 添加 RHIFactory 工厂类
...
- 新增 RHIFactory 头文件和实现,支持通过 RHIType 或字符串创建设备
- 修复 D3D12Buffer 缺失的 Map/Unmap/SetData 实现
- 添加 RHI 工厂测试用例
- 更新 CMakeLists.txt 添加新文件
2026-03-18 01:33:15 +08:00
d2585f14b3
feat(Resources): Add ResourceDependencyGraph for resource dependency tracking
...
- Implement dependency graph for resource management
- Add/remove nodes and dependencies
- Reference counting support
- Circular dependency detection
- Add unit tests
2026-03-18 01:13:02 +08:00
bd69c3e124
feat(Resources): Add ResourcePackage system for asset bundling
...
- Implement ResourcePackageBuilder for creating .xcp packages
- Implement ResourcePackage for reading packaged assets
- Add unit tests for package builder and package reader
2026-03-18 00:49:22 +08:00
02ca59edf6
test(Resources): Add comprehensive resource system tests (8 new test files, +48 test cases)
...
- Add Shader tests (8 test cases)
- Add Material tests (13 test cases)
- Add FileArchive tests (7 test cases)
- Add Loader tests for Texture, Mesh, Audio, Shader, Material (4 tests each)
- Implement IResourceLoader.cpp with ReadFileData and GetExtension
- Update CMakeLists.txt to include new test files and source
2026-03-18 00:09:06 +08:00
417477c2ca
feat: Implement resource system Phase 4.5 - ResourceFileSystem (4 files, +305 lines)
2026-03-17 22:43:59 +08:00
4710e6ba60
feat: Implement resource system Phase 2 - Concrete resource types
...
- Add Material class with shader/texture bindings and property system
- Add MaterialLoader for .mat/.json format
- Add Shader class (Vertex/Fragment/Geometry/Compute)
- Add ShaderLoader for .vert/.frag/.glsl/.hlsl
- Add AudioClip class (WAV/OGG/MP3/FLAC support)
- Add AudioLoader for audio files
- Add Texture/Mesh classes and loaders (from design doc)
- Fix HashMap iterator and String API usage
- Fix Mutex compatibility with std::lock_guard
- Update CMakeLists.txt with new resource files
- All tests pass: 11 Resources + 51 Containers
2026-03-17 22:32:27 +08:00
e138fb2075
fix(RHI): 修复 OpenGL/D3D12 后端编译问题
...
- 修复 OpenGLCommandList 方法签名匹配 RHI 抽象接口
- 修复 OpenGLSwapChain Present/Resize 方法签名
- 添加 OpenGL 特有方法重载支持后端测试(底层逃逸)
- 暂时禁用不兼容的 Resources 模块
- 更新 OpenGL 测试 CMakeLists
2026-03-17 19:35:51 +08:00
8c6516183e
test: 添加 D3D12 引擎测试框架
...
- 修复 engine/CMakeLists.txt 路径问题
- 在 tests/D3D12_engine/test/ 创建测试框架
- 添加基础测试夹具 D3D12TestFixture
- 添加 13 个基础测试用例
- 所有测试通过
2026-03-17 03:29:39 +08:00
988f94eb29
Add static helper methods to D3D12RootSignature and D3D12PipelineState
2026-03-17 00:57:35 +08:00
7874033379
Add RootSignatureBuilder and PipelineStateBuilder for cleaner RHI API
2026-03-17 00:52:24 +08:00
4a0f6d65d1
Remove OpenGLMesh (not needed, D3D12 has no Mesh)
2026-03-16 19:15:18 +08:00
801c563eb5
Add OpenGLMesh class to engine (not yet integrated in main.cpp)
2026-03-16 19:12:27 +08:00
bf98fa0b89
Add OpenGLRenderTargetView and OpenGLDepthStencilView
2026-03-16 19:06:21 +08:00
3cd47ea4c8
Add OpenGLSampler
2026-03-16 18:52:00 +08:00
aee4ae88db
Add OpenGLFence
2026-03-16 18:48:12 +08:00
377f43260b
Add OpenGLSwapChain
2026-03-16 18:41:05 +08:00
fce3d2421c
Add OpenGLCommandList
2026-03-16 18:35:02 +08:00
0be91748c2
Add OpenGLPipelineState and integrate into main.cpp
2026-03-16 18:25:58 +08:00
fee738b0b9
Move OpenGL backend classes from tests/OpenGL to engine/
...
- Relocated OpenGLDevice, OpenGLShader, OpenGLBuffer, OpenGLVertexArray, OpenGLTexture to engine/
- Updated engine/CMakeLists.txt to include OpenGL backend source files
- Updated tests/OpenGL/CMakeLists.txt to use engine backend
- Added OpenGLTexture class implementation
2026-03-16 17:22:45 +08:00
dfbd218435
Move D3D12 cpp files to src/RHI/D3D12/ subdirectory
2026-03-15 20:50:06 +08:00
3959f74908
Add D3D12QueryHeap and D3D12UnorderedAccessView
2026-03-15 19:30:19 +08:00
42c17ee106
Add D3D12 view wrapper classes: RTV, DSV, SRV, CBV
2026-03-15 19:10:32 +08:00
c3feeda5d4
feat: 实现 D3D12Shader 着色器类
...
- 添加 D3D12Shader.h/cpp
- 支持从文件编译着色器
- 支持从内存编译着色器
- 测试通过
2026-03-15 18:51:38 +08:00
db8e8633c8
feat: 实现 D3D12Sampler 采样器类
...
- 添加 D3D12Sampler.h/cpp
- 支持采样器描述符
- 测试通过
2026-03-15 18:48:04 +08:00
017bbf281d
feat: 实现 D3D12Texture 和 D3D12Buffer 资源类
...
- 添加 D3D12Texture.h/cpp - 纹理资源封装
- 添加 D3D12Buffer.h/cpp - 缓冲区资源封装
- 支持 CreateCommittedResource 创建资源
- 测试通过
2026-03-15 18:45:11 +08:00
2a8f50134c
feat: 实现 D3D12PipelineState 并替换到 tests/D3D12
...
- 添加 D3D12PipelineState.h/cpp
- 全局变量 gPipelineState
- 使用 D3D12PipelineState::Initialize 替代原生 CreateGraphicsPipelineState
- 测试通过
2026-03-15 18:41:27 +08:00
2bdd6d3199
feat: 实现 D3D12RootSignature 根签名类
...
- 添加 D3D12RootSignature.h 头文件
- 实现 ID3D12RootSignature 封装
- 支持序列化根签名描述符
- 测试通过
2026-03-15 18:36:11 +08:00
f187aa3b37
feat: 实现 D3D12SwapChain 交换链类
...
- 添加 D3D12SwapChain.h 头文件
- 实现 IDXGISwapChain3 封装
- 实现 Initialize、Present、Resize 等方法
- 测试通过
2026-03-15 18:24:02 +08:00
7f064e9e71
feat: 实现 D3D12DescriptorHeap 描述符堆类
...
- 添加 D3D12DescriptorHeap.h 头文件
- 实现 ID3D12DescriptorHeap 封装
- 支持 RTV、DSV、CBV_SRV_UAV、Sampler 堆类型
- 支持 GPU 可见描述符堆
- 添加 GetCPUDescriptorHandle、GetGPUDescriptorHandle 等方法
- 测试通过
2026-03-15 18:17:59 +08:00
bf37b1c00c
feat: 实现 D3D12CommandList 命令列表类
...
- 添加 D3D12CommandList.h 头文件,包含 Viewport、Rect、ResourceBarrierDesc 结构体
- 实现 ID3D12GraphicsCommandList 封装
- 实现所有渲染命令:TransitionBarrier、UAVBarrier、AliasBarrier
- 实现状态追踪和资源追踪
- 添加到 CMakeLists.txt 构建系统
- 修复 tests/D3D12/run.bat 路径问题
2026-03-15 18:05:06 +08:00
4881aee70a
refactor: 将截图功能移到RHI模块的D3D12Screenshot类
2026-03-15 15:39:15 +08:00
17c8ea46c5
feat: 实现D3D12Fence封装
...
- 添加D3D12Fence类封装ID3D12Fence
- 包含Signal/Wait/GetCompletedValue等同步功能
- 更新测试项目使用新的封装类
2026-03-15 03:23:39 +08:00
8fb11dc650
feat: 实现D3D12CommandQueue和D3D12CommandAllocator
...
- 添加D3D12CommandQueue类封装ID3D12CommandQueue
- 添加D3D12CommandAllocator类封装ID3D12CommandAllocator
- 在D3D12Enum.h中添加CommandQueueType转换函数
- 在CMake中添加Res文件夹自动拷贝到输出目录
- 更新测试项目使用新的封装类
2026-03-15 03:15:12 +08:00