Drider Engine is a robust, modular 3D game engine developed in C++ (specifically targeting Windows/DirectX 11). It is designed to demonstrate advanced rendering techniques, component-based architecture, and integration with industry-standard third-party libraries. The engine emphasizes a clean separation of concerns through its modular design, supporting Deferred Rendering, Scripting, Physics, and Audio.
- Graphics: Custom abstraction layer (currently implementing Direct3D 11) managing resources, buffers, and shaders.
- Render Manager: A sophisticated Deferred Rendering pipeline handling complex lighting and post-processing.
- Physics: Integrated ReactPhysics3D for rigid body dynamics, collisions, and gravity simulation.
- Scripting: Embedded AngelScript engine for game logic, supporting object binding, custom types, and debugging.
- Audio: FMOD integration for 2D/3D sound management, DSP effects, and channel groups.
- Networking: Custom TCP/UDP socket wrapper with packet handling for multiplayer capabilities.
- UI/Editor Tools: DriderImgui module utilizing ImGui and ImGuizmo for runtime editor tools, gizmos, and debug inputs.
- GBuffer Architecture: Efficient handling of scene geometry and material properties (Albedo, Normal, Metallic, Roughness, Depth).
- Lighting: Support for Point and Directional lights, Image-Based Lighting (IBL) with Irradiance and Environment maps.
- Shadows: Cascaded Shadow Maps (CSM) with efficient sub-frustum splitting.
- Post-Processing Stack:
- Screen Space Ambient Occlusion (SSAO)
- Bloom & Luminescence
- Screen Space Reflections (SSR)
- Depth of Field (DoF) & Bokeh
- Chromatic Aberration & Vignette
- Horizontal/Vertical Blur
- Compute Shaders: Utilized for heavy lifting in lighting, SSAO, and blurring passes.
- Component-Based Object Model: Flexible
GameObjectand component system (Script, Rigidbody, Collider, Sound, Light, Camera, etc.). - Web-Powered UI: Unique capability to use modern web technologies for game UI, supporting transparent rendering and input forwarding.
- Resource Management: robust resource loading and management for Models, Textures, Scripts, and Sounds.
- Input System: Abstraction for Keyboard, Mouse, and Joystick inputs.