Commit Graph

14 Commits

Author SHA1 Message Date
7a66913f2b refactor(RHI): 将窗口职责从RHI移到Platform层
- RHIDeviceDesc 删除 windowHandle/width/height/appName
- SwapChainDesc 添加 windowHandle 字段
- RHISwapChain 删除 PollEvents/ShouldClose/SetFullscreen 等窗口相关接口
- OpenGLDevice 删除 CreateRenderWindow,改用 InitializeWithExistingWindow
- 更新所有集成测试使用新API
- 273个单元测试 + 8个集成测试全部通过
2026-03-24 23:00:49 +08:00
d575532966 docs: update TEST_SPEC.md and README.md to reflect new directory structure
- TEST_SPEC.md: Updated test directory structure to reflect Core/Asset,
  Core/IO, and Resources/<Type> subdirectories
- TEST_SPEC.md: Updated module names and test counts (852 total)
- TEST_SPEC.md: Updated build commands for new Resources subdirectories
- README.md: Updated engine structure with Core/Asset/ and Core/IO/
- README.md: Updated Resources section with layered architecture
- README.md: Updated test coverage table with accurate counts
2026-03-24 16:14:05 +08:00
eb4840eac4 【关键节点】修复D3D12CommandQueue::ExecuteCommandLists类型混淆bug并完善集成测试配置
1. D3D12CommandQueue::ExecuteCommandLists修复:确保正确调用GetNativeHandle()
2. 集成测试修复:传递&gCommandList而不是gCommandList.GetCommandList()
3. CMakeLists.txt修复:添加renderdoc.dll到所有D3D12/OpenGL集成测试的POST_BUILD命令

测试验证:
- 单元测试:144/144通过
- D3D12集成测试:minimal/quad/triangle/sphere全部通过
- OpenGL集成测试:minimal/quad/triangle/sphere全部通过
2026-03-24 05:00:38 +08:00
0a3fe842b9 Refactor RHI ResourceView abstraction layer for unified cross-platform interface
- Create unified RHIResourceView base interface with type-specific Initialize methods
- Implement D3D12ResourceView with RTV/DSV/SRV/UAV/CBV support
- Implement OpenGL ResourceView simulation layer using FBO, texture units, and UBO
- Add OpenGLTextureUnitAllocator for managing texture unit bindings
- Add OpenGLUniformBufferManager for UBO binding points
- Add OpenGLFramebuffer for FBO management
- Remove deprecated D3D12 view classes (RenderTargetView, DepthStencilView, etc.)
- Fix ExecuteCommandLists type confusion bug by adding GetNativeHandle to RHICommandList
- Fix test bug where Close() was called before ExecuteCommandLists
- Update all integration tests to use new D3D12ResourceView class
- All tests pass: 144 unit tests + 8 integration tests
2026-03-24 03:49:13 +08:00
bc6b47ffcf fix: RHI单元测试修复与命名规范统一
RHI抽象层测试修复:
- OpenGL Shader: 空描述符正确返回nullptr
- OpenGL Texture: 修复TextureType映射(case 2/3)
- OpenGL Buffer: 设置stride和state支持
- OpenGL Texture: 添加Format和State支持
- OpenGL SwapChain: 修复IsFullscreen硬编码false问题

命名规范统一( snake_case + _test后缀):
- D3D12_Minimal -> d3d12_minimal_test
- D3D12_Triangle -> d3d12_triangle_test
- D3D12_Quad -> d3d12_quad_test
- D3D12_Sphere -> d3d12_sphere_test
- OpenGL_Minimal -> opengl_minimal_test
- OpenGL_Triangle -> opengl_triangle_test
- OpenGL_Quad -> opengl_quad_test
- OpenGL_Sphere -> opengl_sphere_test
- CTest名称去掉_Integration后缀

测试结果: 138个测试中从21个失败减少到16个失败
2026-03-23 20:32:33 +08:00
3af24bb1bc revert: restore BeginCapture/EndCapture instead of TriggerCapture
TriggerCapture caused incomplete rdc files due to async file writing.
BeginCapture/EndCapture ensures synchronous file write on EndCapture.
2026-03-23 20:23:20 +08:00
6f6bb13da4 add RenderDocCapture to D3D12 quad, sphere, triangle integration tests
- Add RenderDocCapture include
- Initialize RenderDocCapture before D3D12 device creation
- SetDevice after D3D12 device initialization
- TriggerCapture on frame 29 before Present
- Add RenderDocCapture::Get().Shutdown() on exit
2026-03-23 20:14:28 +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
fa50892150 refactor: simplify D3D12 test infrastructure
- Delete run_tests.py and run_tests.bat (use cmake/ctest directly)
- Fix integration test CMakeLists: output_ppm name, threshold=0, GT.ppm copy
- Rewrite TEST_SPEC.md to be concise
- Update integration test CTest registration
2026-03-22 21:41:56 +08:00
74adeb74a0 cleanup: remove unused shader/model/image folders from RHI integration tests 2026-03-22 20:15:17 +08:00
0eadc7cfd1 refactor: use XCEngine::Math module in sphere test, update matrix to left-handed coordinate system
- Use Matrix4x4 type directly instead of float[16]
- Remove wrapper functions (IdentityMatrix, TranslationMatrix, PerspectiveMatrix, LookAtMatrix, MultiplyMatrix, TransposeMatrix)
- Direct use of Matrix4x4::Identity(), Matrix4x4::Translation(), Matrix4x4::Perspective()
- Transpose matrices before uploading to GPU to match HLSL column-major
- Update Math module Perspective and Orthographic to left-handed coordinate system
- Update math unit tests for new matrix values
2026-03-22 20:08:36 +08:00
7d1362a41e fix: D3D12 sphere - enable depth write, fix texture UV seam tearing and orientation
- Enable depth write mask (D3D12_DEPTH_WRITE_MASK_ALL) to fix rendering artifacts
- Change texture address mode from Wrap to Clamp to fix UV seam tearing
- Remove V coordinate flip in shader to fix upside-down texture
- Add ground truth screenshot (GT.ppm) for testing
2026-03-22 18:41:11 +08:00
6c92164a03 fix: D3D12 sphere rendering - correct matrix math, enable depth test, add texture sampling
- Fix TranslationMatrix to use correct indices (m12/m13/m14 for translation)
- Fix PerspectiveMatrix projection formula
- Enable depth testing (was disabled)
- Add texture sampling in pixel shader
- Adjust sphere radius to 1.0 and position to z=5
- Fix D3D12Buffer copy size calculation
2026-03-22 17:58:30 +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