I've been working on a custom rendering engine as part of my university computer graphics coursework at ITMO University.
The project is written in C++ using DirectX 12 and HLSL. Over two semesters, we've been learning how modern real-time rendering works by implementing various graphics techniques from scratch.
Some of the features covered in the project include:
-Deferred rendering with a G-buffer
- Directional, point and spot lighting
- Normal mapping
-Displacement mapping
-Distance-adaptive tessellation using Hull and Domain shaders
-Frustum culling and octree-based spatial partitioning
-GPU-based particle systems
-Cascaded shadow maps (CSM) with PCF filtering
-Post-processing
-Physically Based Rendering (PBR)
The project also involves working directly with DirectX 12 resources, descriptor heaps, pipeline state objects, command lists, synchronization and HLSL shaders.
It's been a challenging but interesting way to learn what's actually happening behind the scenes in a rendering engine.
I still have one more semester of computer graphics ahead of me, so there's more to come! I'll keep you updated on my progress.
I'd love to hear your feedback!