60c8461be3
refactor(RHI): 将窗口管理接口从 RHIDevice 移至 RHISwapChain
...
- 从 RHIDevice 抽象基类中移除 PollEvents/SwapBuffers/ShouldClose/SetShouldClose 接口
- 这些功能现在应该通过 RHISwapChain 访问
- 符合设计文档中定义的分层架构
2026-03-18 02:32:31 +08:00
83c2426830
fix(OpenGL): 修复工厂方法返回 nullptr 的问题
...
- OpenGLDevice::CreateBuffer 现在创建并返回 OpenGLBuffer 对象
- OpenGLDevice::CreateTexture 现在创建并返回 OpenGLTexture 对象
- OpenGLDevice::CreateSwapChain 现在创建并返回 OpenGLSwapChain 对象
- OpenGLDevice::CreateCommandList 现在创建并返回 OpenGLCommandList 对象
- OpenGLDevice::CreateCommandQueue 现在创建并返回 OpenGLCommandQueue 对象
- OpenGLDevice::CompileShader 现在创建并返回 OpenGLShader 对象
- OpenGLDevice::CreatePipelineState 现在创建并返回 OpenGLPipelineState 对象
- OpenGLDevice::CreateFence 现在创建并返回 OpenGLFence 对象
- OpenGLDevice::CreateSampler 现在创建并返回 OpenGLSampler 对象
2026-03-18 02:29:12 +08:00
a532cabf92
feat(RHI): 添加 RHIDescriptorPool 抽象类
...
- 新增 RHIDescriptorPool 抽象基类,定义描述符池统一接口
- D3D12DescriptorHeap 现在继承自 RHIDescriptorPool
- 添加 DescriptorPoolDesc 结构体,包含设备指针、类型、数量等信息
- 添加 Initialize(const DescriptorPoolDesc&) 统一初始化方法
2026-03-18 01:46:01 +08:00
a220638298
fix(D3D12): 修复 D3D12Fence::IsSignaled() 实现错误
...
- 原来实现假设 GetCompletedValue() > 0 即为 signaled,这是错误的
- 添加 m_signalValue 成员变量跟踪最后一次 signal 的值
- IsSignaled() 现在正确检查 GetCompletedValue() >= m_signalValue
2026-03-18 01:37:55 +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
254f794cdc
feat(RHI): add rendering state abstraction to RHICommandList
...
- Add DepthStencilState and BlendState structs to RHICommandList
- Add SetPrimitiveTopology, SetDepthStencilState, SetStencilRef,
SetBlendState, SetBlendFactor virtual methods
- Implement new methods in OpenGL backend with full state control
- Implement stub methods in D3D12 backend (states controlled via PSO)
2026-03-17 23:17:43 +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
05c879a818
fix(OpenGL): 修复 RHIDeviceInfo majorVersion/minorVersion 为0的问题
2026-03-17 19:44:50 +08:00
0a2f8050e5
fix(RHI): 修复 OpenGL 测试接口不匹配问题
...
- 修复 RHIDeviceInfo 缺少 majorVersion/minorVersion
- 修复 OpenGLTexture 使用 GetTextureType 替代 GetType
- 修复 OpenGLSampler 使用 OpenGLSamplerDesc
- 修复 BlendFactor::OneMinusSrcAlpha -> InvSrcAlpha
- 修复 OpenGLRenderTargetViewDesc/OpenGLDepthStencilViewDesc 重定义问题
- 恢复 OpenGL 测试文件到 CMakeLists
2026-03-17 19:43:20 +08:00
94bf04f06c
feat(Resources): 添加资源系统基础框架
...
- ResourceTypes: 资源类型枚举、ResourceGUID生成
- IResource: 资源基类接口
- ResourceHandle: 资源句柄智能指针
- IResourceLoader: 加载器接口
- ResourceManager: 资源管理器(单例模式)
- ResourceCache: LRU缓存实现
- AsyncLoader: 异步加载器
- 测试框架: test_resource_types, test_resource_guid
Note: 当前与现有容器API存在编译差异,需要后续修复
2026-03-17 19:38: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
a257ff2d8b
fix(RHI): 修复抽象基类编译问题
2026-03-17 18:24:08 +08:00
20445999fc
feat(RHI): 实现 RHIPipelineState 抽象基类
2026-03-17 18:09:34 +08:00
354b6a5cfc
feat(RHI): 实现 RHISwapChain 抽象基类
2026-03-17 18:05:40 +08:00
55865a0252
feat(RHI): 实现 RHICommandList 抽象基类
2026-03-17 18:01:55 +08:00
4638539f17
feat(RHI): 实现 RHICommandQueue 抽象基类
2026-03-17 17:54:44 +08:00
14fb51e61e
feat(RHI): 实现 RHIDevice 抽象基类
2026-03-17 17:45:01 +08:00
af718279ff
feat(RHI): 实现 RHIFence 抽象基类
...
- 新增 RHIFence 抽象基类
- D3D12Fence 继承 RHIFence
- OpenGLFence 继承 RHIFence
- 文档更新 RHIFence 差异处理策略
2026-03-17 17:36:17 +08:00
f046e17ad6
feat(RHI): 实现 RHISampler 抽象基类
...
- 新增 RHISampler 抽象基类
- D3D12Sampler 继承 RHISampler
- OpenGLSampler 继承 RHISampler,使用 OpenGLSamplerDesc
- 文档更新 RHISampler 差异处理策略
2026-03-17 17:31:32 +08:00
e38d5ccede
feat(RHI): 实现 RHIBuffer, RHITexture, RHIShader 抽象基类
...
- 新增 RHIBuffer, RHITexture, RHIShader 抽象基类
- D3D12Buffer/Texture/Shader 继承抽象基类
- OpenGLBuffer/Texture/Shader 继承抽象基类
- 添加 RHICapabilities, RHIDevice 头文件
- RHIEnums 添加 Fragment/TessControl/TessEvaluation
- 文档更新差异处理策略
2026-03-17 17:26:41 +08:00
8c6516183e
test: 添加 D3D12 引擎测试框架
...
- 修复 engine/CMakeLists.txt 路径问题
- 在 tests/D3D12_engine/test/ 创建测试框架
- 添加基础测试夹具 D3D12TestFixture
- 添加 13 个基础测试用例
- 所有测试通过
2026-03-17 03:29:39 +08:00
d1c7c23527
test: 添加 D3D12 测试框架基础设施
...
- 创建 engine/src/RHI/D3D12/test/ 目录
- 添加 CMakeLists.txt 构建配置
- 添加基础测试夹具 D3D12TestFixture.h
- 添加各组件测试文件框架
- 更新 tests/CMakeLists.txt 集成新测试
2026-03-17 02:51:34 +08:00
5683b10e65
Rename RHI header files for clarity
...
- Rename Enums.h to RHIEnums.h
- Rename Types.h to RHITypes.h
- Update all include references in D3D12 headers and test files
2026-03-17 02:39:22 +08:00
0418c61db6
Enhance OpenGLShader with comprehensive shader support
2026-03-17 02:27:13 +08:00
d75780f8c4
Enhance OpenGLSwapChain with presentation control
...
- Add PresentMode enum (Immediate, VSync, Mailbox, Fifo)
- Add SurfaceFormat enum for color formats
- Add Initialize() overloads with vsync, width/height, PresentMode
- Add Resize(), SetVSync() for runtime control
- Add GetWidth/Height/FramebufferWidth/FramebufferHeight
- Add ShouldClose, SetShouldClose, PollEvents for window management
- Implement using GLFW for window/swap control
2026-03-17 02:25:18 +08:00
be72e2f4a7
Enhance OpenGL RTV and DSV with comprehensive framebuffer support
...
OpenGLRenderTargetView:
- Add RenderTargetType enum for different texture types
- Add RenderTargetViewDesc struct with mip level, array slice, layer info
- Add Initialize() with desc parameter for 2D/2DArray/3D/Cube
- Add InitializeCubemap() for cubemap faces
- Add Bind(count) overload for multiple framebuffers
- Add Clear() methods for color and depth-stencil
- Add static BindFramebuffer/UnbindFramebuffer methods
OpenGLDepthStencilView:
- Add DepthStencilType enum for different texture types
- Add DepthStencilViewDesc struct with mip level, array slice, layer info
- Add Initialize() with desc parameter for 2D/2DArray/Cube
- Add InitializeCubemap() for cubemap faces
- Add ClearDepth, ClearStencil, ClearDepthStencil methods
- Add static BindFramebuffer/UnbindFramebuffer methods
2026-03-17 02:20:56 +08:00
6126404e3f
Enhance OpenGLFence with proper synchronization
...
- Add FenceStatus enum for status query
- Add m_sync (GLsync) for OpenGL fence synchronization
- Add Signal(value) overload with fence value
- Add Wait(timeoutNs) with timeout support
- Add GetStatus() for async status check
- Add GetCompletedValue() and GetCurrentValue()
- Implement using glSync for proper GPU synchronization
- Replace glFinish blocking with glClientWaitSync
2026-03-17 02:17:41 +08:00
1de66b835d
Enhance OpenGLPipelineState with comprehensive state management
...
- Add BlendOp enum for blend operations
- Add PolygonMode enum for polygon rendering mode
- Add StencilOp enum for stencil operations
- Add ScissorState and LogicalOperation structs
- Add DepthStencilState: stencil enable, read/write mask, stencil ref, stencil func, stencil ops
- Add BlendState: blend equation, color write mask, blend factor
- Add RasterizerState: polygon mode, polygon offset, depth clip, scissor test, multisample
- Add ViewportState: float coordinates with min/max depth
- Add Apply methods for individual state groups
- Add AttachShader/DetachShader for program management
- Add getter methods for state structs
2026-03-17 02:15:48 +08:00
413f4c178f
Enhance OpenGLCommandList with comprehensive rendering API
...
- Add ClearFlags, ClearColor, ClearDepth, ClearStencil, ClearDepthStencil
- Add SetVertexBuffers (multiple buffers)
- Add SetIndexBuffer with offset
- Add BindVertexArray with index buffer
- Add SetViewport with depth range, SetViewports
- Add SetScissor, SetScissorRects, EnableScissorTest
- Add depth test/write/func methods
- Add stencil test methods
- Add blending methods (enable, blend func, equation, color)
- Add culling methods (enable, cull face, front face, polygon mode)
- Add instanced drawing (DrawInstanced, DrawIndexedInstanced)
- Add indirect drawing (DrawIndirect, DrawIndexedIndirect)
- Add MultiDrawArrays, MultiDrawElements
- Add Dispatch and Compute Shader support
- Add MemoryBarrier and TextureBarrier
- Add texture/sampler binding methods
- Add buffer binding (BindBufferBase, BindBufferRange)
- Add Enable/Disable for OpenGL caps
- Add uniform setting methods
- Add query methods
- Add ReadPixels, BlitFramebuffer, CopyImageSubData
- Add framebuffer invalidation
- Add debug group push/pop
2026-03-17 02:13:02 +08:00
a54666df11
Enhance OpenGLTexture with more texture types
...
- Add OpenGLTextureType enum (1D, 2D, 2DArray, 3D, Cube, CubeArray)
- Add OpenGLFormat enum for texture formats
- Add Initialize() method for generic texture creation
- Add InitializeCubeMap() for cubemap textures
- Add BindImage() for image load/store
- Add GenerateMipmap(), SetFiltering(), SetWrapping() methods
- Add GetType(), GetMipLevels(), GetDepth() getters
2026-03-17 02:10:53 +08:00
56c32bfbde
Enhance OpenGLBuffer with more buffer types and features
...
- Add OpenGLBufferType enum (Vertex, Index, Uniform, CopyRead, CopyWrite, etc.)
- Add Initialize() method with buffer type parameter
- Add Map/Unmap for direct buffer access
- Add SetData for dynamic updates
- Add BindBase for buffer binding to indexed targets
- Add GetType and IsDynamic getters
2026-03-17 02:08:49 +08:00
393a0c67f1
Add ResourceStates::GenericRead and HeapType enums
2026-03-17 01:37:38 +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
f615a86aab
Add CreateDesc for D3D12ShaderResourceView
2026-03-17 01:26:40 +08:00
83e91b16c7
Add CreateDesc for D3D12DepthStencilView
2026-03-17 01:23:23 +08:00
9fda349fa1
Add CreateDesc helper for DescriptorHeap
2026-03-17 01:21:17 +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
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