Graphics
roadmap
math (for reference):
learning graphics:
- scratchapixel
 - graphics from scratch
 - raytracing in one weekend
 - real-time rendering
 - tinyrenderer
 - rasterization in one weekend
 - A trip through the Graphics Pipeline
 - physically based rendering
 
learning api:
- vulkan-tutorial
 - introduction to 3D Game Programming with DirectX 12
 - vkguide
 
game engine:
other resources
projects
- Make a sphere mesh using spherical coordinates, and render it.
 - Implement shader for simple diffuse and specular shading.
 - Directional Lights, point lights, and spot lights
 - Heightmap Rendering
 - Write a simple parser for a simple mesh format such as Wavefront .obj, import it into your program and render it. In particular, try and import and render meshes with textures.
 - 
Implement a simple minecraft renderer. It is surprisingly simple to render minecraft-like worlds, and it is also very learningful.
 - 
Render reflections using cubemaps
 - Shadow rendering using shadow maps.
 - 
Implement view frustum culling. This is a simple, yet very practical optimization technique.
 - 
Implement rendering of particle systems
 - Learn how to implement Gamma Correction.
 - Implement normal mapping
 - Learn how to render lots of meshes efficiently with instanced rendering
 - Animate meshes with mesh skinning.
 
advanced
- Various post-processing effects. Like Bloom(using Gaussian blur), ambient occlusion with SSAO, anti-aliasing with FXAA.
 - Implement deferred shading, a technique useful for rendering many light sources.