Develop a real-time global illumination rendering engine capable of computing indirect lighting in dynamic scenes. 开发一个实时全局光照渲染引擎,支持动态场景中的间接光照计算。
- Implement the core rendering pipeline using Direct3D 12. 使用 Direct3D 12 编写核心渲染管线。
- Write HLSL shaders to achieve Screen Space Reflections (SSR) and Screen Space Global Illumination (SSGI). 编写 HLSL 着色器实现屏幕空间反射 (SSR) 和屏幕空间全局光照 (SSGI)。
- Support shadow mapping for light sources and dynamic reflections. 支持光源阴影映射和动态反射。
- Use multithreading to handle scene geometry frustum culling and lighting calculations. 使用多线程处理场景几何体剔除(Frustum Culling)和光照计算。
- Build System and Compiler Information
- Build System Generator: CMake
- Build System: MSBuild
- Compiler: MSVC (Microsoft Visual C++)
- Integrated Development Environment (IDE): Visual Studio 2022
- Libraries
- Graphics and Rendering: DirectX 12
- Windows Platform Interface: Windows API
- COM Programming: Microsoft WRL (Windows Runtime C++ Template Library)
- Model Loading: tinyobjloader
- Development and Debugging Tools
Objective: Set up the development environment and understand Direct3D 12 basics.
Tasks:
- ✅ Install Visual Studio 2022 and Windows SDK.
- ✅ Learn Direct3D 12 pipeline: Root Signature, Command List, Descriptor Heap.
- ✅ Initialize project: Render a simple triangle.
Result: Direct3D 12 Triangle Rendering
Timeframe: 2024-11-15 to 2024-11-29
Objective: Implement the rendering pipeline and basic lighting with shadows.
Tasks:
- ✅ Implement Root Signature and PSO.
- ✅ Add camera movement.
- ✅ Load simple models.
- ❌ Implement dynamic lighting and shadow mapping.
After reconstructing my code, I still couldn’t get it to work properly. So, I’ve decided to start reading and practicing with the book "Introduce to 3D Game Programming with DirectX12". I’m also actively updating my code and notes in my repository D3D12book_code. I’ll continue sharing updates once I feel more confident in my understanding. 😊
Timeframe: 2024-11-30 to xxx
Objective: Add screen-space global illumination (SSGI) and reflections (SSR).
Tasks:
- Implement SSGI for indirect lighting.
- Add SSR using depth buffer ray tracing.
- Optimize post-processing performance.
Timeframe: xxx to xxx
Objective: Optimize rendering performance with multithreading and culling.
Tasks:
- Use command lists for parallel rendering.
- Implement frustum culling.
- Optimize memory usage and resource management.
Timeframe: xxx to xxx
Objective: Enhance visual quality with PBR materials and volumetric lighting.
Tasks:
- Add PBR materials with metalness and roughness.
- Implement volumetric lighting for atmospheric effects.
- Create a demo showcasing all features.
Timeframe: xxx to xxx