https://github.com/ucpp/sge
A simple game engine project built with DirectX 12, featuring several milestones to learn and implement rendering techniques.
https://github.com/ucpp/sge
cpp directx directx12 rendering
Last synced: 10 months ago
JSON representation
A simple game engine project built with DirectX 12, featuring several milestones to learn and implement rendering techniques.
- Host: GitHub
- URL: https://github.com/ucpp/sge
- Owner: ucpp
- License: mit
- Created: 2024-12-22T09:33:35.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-29T15:36:19.000Z (over 1 year ago)
- Last Synced: 2024-12-29T16:29:00.067Z (over 1 year ago)
- Topics: cpp, directx, directx12, rendering
- Language: C++
- Homepage:
- Size: 63.2 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SGE - Simple Game Engine
SGE (Simple Game Engine) is a learning project aimed at building a minimalistic game engine using **DirectX 12**. This project is structured as a roadmap consisting several tasks, designed to teach and implement various modern rendering techniques and systems.
This project is **actively under development**, and its purpose is to experiment and test various ideas in graphics engine development.
### Important:
- The project may contain **low-quality, messy, and suboptimal code**.
- Errors, bugs, and missing or incorrect functionality may exist.
- The code is intended for **personal use** and experimentation only.
> **Please note**: This project is **not intended for production use** or for creating finished products.
## Roadmap
---
✔ 1. Initialize D3D12 context: Set up the DirectX 12 framework.

[Last commit](https://github.com/ucpp/sge/commit/13da25b1de4a97eeb2f3149d05a9619258020e4b)
✔ 2. Process input and camera control: Implement user input and basic camera movement.

[Last commit](https://github.com/ucpp/sge/commit/ba4c22781d8f4f9242fe2f4917e1cb136106b02b)
✔ 3. Load simple models without animation: Import static models such as teapots, cars, and tanks.

[Last commit](https://github.com/ucpp/sge/commit/97288dfe5bd48521b60c2f83586c5614c38b82e2)
---
**4. Load mip-mapped textures**: Support diffuse, normal, specular, and gloss maps.
**5. GPU compressed textures**: Use compressed texture formats for better performance.
**6. Phong lighting**: Calculate lighting from direct and point lights in the pixel shader.
**7. Fog effect**: Add fog either in the pixel shader or as a post-process effect.
**8. Deferred lighting**: Implement direct, capsule, point, and spot lights with a deferred pipeline.
**9. Cook-Torrance BRDF and Image-Based Lighting (IBL)**: Add realistic PBR lighting.
**10. HDR pipeline**: Add auto exposure and tone mapping for high dynamic range rendering.
**11. Bloom effect**: Implement a post-process bloom effect.
**12. Dynamic environment reflections**: Render cube maps for dynamic reflections.
**13. Soft shadows**: Implement soft shadows using techniques like SM+PCF, VSM, or ESM.
**14. SSAO**: Implement screen-space ambient occlusion.
**15. SSLR**: Add screen-space local reflections.
**16. Load skinned mesh animations**: Import animated models and process on the GPU.
**17. Animation blending**: Combine multiple animations (e.g., running and shooting).
**18. MSAA**: Support multi-sample anti-aliasing.
**19. Particle system**: Create a system that supports 10,000+ particles.
## Project Goals
The SGE project is designed to:
- Learn DirectX 12 fundamentals and advanced features.
- Implement modern rendering techniques used in game engines.
- Build a foundation for further exploration of game engine development.
## Contribution
This repository is a personal learning project, but feel free to report issues or suggest improvements!
## License
This project is licensed under the MIT License. See the LICENSE file for details.