Commit Graph

176 Commits

Author SHA1 Message Date
ac9a62082e Refactor: use CreateDescriptorRange 2026-03-17 01:34:00 +08:00
312699e262 Add CreateDescriptorRange helper 2026-03-17 01:33:17 +08:00
271c05d8c7 Add CreateDesc for D3D12RenderTargetView 2026-03-17 01:32:22 +08:00
9fe79681fb Refactor: use CreateDesc for SRV 2026-03-17 01:27:37 +08:00
f615a86aab Add CreateDesc for D3D12ShaderResourceView 2026-03-17 01:26:40 +08:00
07450e76a4 Refactor: use CreateDesc for DSV 2026-03-17 01:23:50 +08:00
83e91b16c7 Add CreateDesc for D3D12DepthStencilView 2026-03-17 01:23:23 +08:00
97653041bd Refactor: use CreateDesc for DescriptorHeap 2026-03-17 01:22:11 +08:00
9fda349fa1 Add CreateDesc helper for DescriptorHeap 2026-03-17 01:21:17 +08:00
f4db1eafea Refactor: use CreateSamplerDesc for cleaner sampler creation 2026-03-17 01:20:00 +08:00
3d6787b6a4 Add CreateSamplerDesc helper method 2026-03-17 01:19:21 +08:00
64bd8c5074 Refactor: use engine helpers for RootSignature and PSO creation 2026-03-17 01:16:39 +08:00
73627f62f4 Fix CreateDescriptorTable: pass descriptor ranges array instead of using static 2026-03-17 01:03:13 +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
210bc450fa Refactor: use engine封装 for Vertex/Index Buffer operations 2026-03-17 00:47:05 +08:00
4b41a4cca1 Fix D3D12 build: add missing headers and fix CMake paths 2026-03-17 00:40:29 +08:00
5bcf9d74a3 Remove legacy RHI header files 2026-03-16 22:25:37 +08:00
472f106a12 Refactor D3D12: remove ICommandQueue, IFence dependencies 2026-03-16 21:50:54 +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
430d23b719 Replace GLFW window management with OpenGLDevice from engine 2026-03-16 18:06:57 +08:00
220494c3c5 Replace local Shader class with OpenGLShader from engine 2026-03-16 17:29:20 +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
434ba0f336 Add OpenGL backend core classes: Buffer, VertexArray
- Added OpenGLBuffer class for VBO/IBO management
- Added OpenGLVertexArray class for VAO management
- Updated CMakeLists.txt to include new source files
2026-03-16 16:11:24 +08:00
170df5506b Add OpenGLShader class
- Created OpenGLShader class for shader compilation
- Supports compiling from file or source code
- Provides uniform setting methods (SetInt, SetFloat, SetVec3, SetMat4)
- Integrated with GLAD for OpenGL function loading
2026-03-16 16:09:09 +08:00
6aaf89e603 Add OpenGL backend: OpenGLDevice class
- Created OpenGLDevice class for window and OpenGL context management
- Added CreateWindow() and InitializeWithExistingWindow() methods
- Integrated with GLFW and GLAD
- Added to tests/OpenGL as test target

This is the first step in building the OpenGL RHI backend parallel to D3D12.
2026-03-16 16:07:12 +08:00
9c29cfa0a6 Rename README.md to AGENT.md for both D3D12 and OpenGL tests 2026-03-16 15:57:32 +08:00
722b6b86ba Add OpenGL test framework with logging and screenshot comparison
- Unified resolution to 1280x720 (same as D3D12)
- Added XCEngine Logger integration for debug output
- Added screenshot capture at frame 30 (glReadPixels -> PPM)
- Added run.bat test script
- Added compare_ppm.py for screenshot comparison
- Added GT.ppm reference image
- Added README.md documentation
- Updated CMakeLists.txt to link XCEngine library

Test: OpenGL rendering test passed (screenshot comparison 100% match)
2026-03-16 15:55:49 +08:00
0ce312e648 Remove RHI interface inheritance from all D3D12 backend classes
- D3D12Device, D3D12CommandQueue, D3D12CommandAllocator, D3D12Fence
- D3D12DescriptorHeap, D3D12QueryHeap, D3D12RootSignature
- D3D12PipelineState, D3D12Sampler, D3D12Shader
- D3D12Buffer, D3D12Texture, D3D12SwapChain

All D3D12 backend classes now directly use D3D12 APIs without
going through RHI interface abstraction. This decouples the
D3D12 backend from the RHI abstraction layer.

Test: D3D12 rendering test passed (screenshot comparison 100% match)
2026-03-16 15:48:14 +08:00
0014c32fa5 Remove IRHIDevice inheritance from D3D12Device
- D3D12Device no longer inherits from IRHIDevice interface
- Removed interface factory methods (CreateCommandQueue, CreateCommandList, etc.)
- Keep concrete D3D12-specific methods (Initialize, Shutdown, GetDevice, etc.)
- This is the first step to decouple RHI abstraction from D3D12 backend
2026-03-16 15:41:30 +08:00
11db594967 更新D3D12引擎日志和Unity RHI架构设计文档 2026-03-16 14:44:38 +08:00
77a121fc4f 精简 OpenGL 测试代码,移除冗余功能 2026-03-16 14:31:21 +08:00
d2d45bd973 Add OpenGL test project with backpack model and textures 2026-03-16 14:19:32 +08:00
3a78065574 移除D3D12测试中对RHIDevice抽象层的引用 2026-03-16 13:28:59 +08:00
9314aae32d Remove unused IRHIDevice abstraction from D3D12 test 2026-03-16 13:27:48 +08:00
2b3ac27243 Add OpenGL backend project and third phase plan 2026-03-16 13:18:53 +08:00
554c48448b Implement IShader and ISwapChain interfaces for D3D12 backend
- D3D12Shader now implements IShader interface with GetBytecode, GetBytecodeSize, GetType, GetInputLayout
- D3D12SwapChain now implements ISwapChain interface with GetBackBuffer returning IResource*
- Added D3D12Texture back buffer storage to SwapChain
- Fixed ISwapChain const correctness (GetCurrentBackBufferIndex, GetBackBuffer)
- main.cpp: use GetD3D12Bytecode() instead of GetBytecode() for PSO creation
2026-03-16 12:38:17 +08:00
f4d94bda3d Make D3D12Sampler implement ISampler interface 2026-03-16 00:35:18 +08:00
1d99ef4d31 Make D3D12PipelineState implement IPipelineState interface 2026-03-16 00:28:26 +08:00
8c1d68da57 Make D3D12RootSignature implement IRootSignature interface 2026-03-16 00:09:42 +08:00
068fea77f4 Make D3D12QueryHeap implement IQueryHeap interface 2026-03-16 00:04:06 +08:00
37750fda7d Make D3D12DescriptorHeap implement IDescriptorHeap interface 2026-03-16 00:00:46 +08:00
f231e3dc18 Make D3D12CommandAllocator implement ICommandAllocator interface 2026-03-15 23:50:45 +08:00