This is a 3D Software renderer implemented in HTML canvas using vanilla javascript.
No WebGL, No external library used!
Live Demo: https://sopiro.github.io/SoftwareRenderer/
Video: https://youtu.be/EGpyw_Su2r0
| Post processing effects | Normal mapping | 
|---|---|
![]()  | 
![]()  | 
| Line and triangle | Flat and smooth shaded spheres | 
|---|---|
![]()  | 
![]()  | 
| Normal mapped cube 1 | Normal mapped cube 2 | 
|---|---|
![]()  | 
![]()  | 
| Normal mapped barrel | Textured cubes and Blender Suzanne | 
|---|---|
![]()  | 
![]()  | 
| Diablo model with normal mapping | Diablo model without normal mapping | 
|---|---|
![]()  | 
![]()  | 
- Point and line rendering
 - Triangle rasterization
- Perspective-correct vertex attribute interpolation
 - Paper Scratchapixel
 
 - Depth buffering
 - Clipping for near plane
 - Back face culling
 - Indexed mesh rendering
 - Texture mapping
 - OBJ model loading
- Calculate face normal and tangent vectors
 
 - Vertex and fragment shading
 - Perspective projection, viewport transform
 - Phong shading model
- Directional light
 
 - Normal mapping
 - Post-processing effects
 - Skybox rendering
 









