/SoftwareRenderer

Javascript 3D software renderer

Primary LanguageJavaScriptMIT LicenseMIT

Javascript Software Renderer

3D Software renderer implemented in HTML canvas.
This program is written in vanilla javascript. No WebGL, No external library used.

Video: https://youtu.be/EGpyw_Su2r0
Live Demo: https://sopiro.github.io/SoftwareRenderer/

Example

Post processing Normal mapping
img1 img2
Line and triangle Flat and smooth shaded spheres
img3 img4
Normal mapped cube 1 Normal mapped cube 2
img5 img6
Normal mapped barrel Textured cubes and Blender Suzanne
img7 img8
Diablo model with normal mapping Diablo model without normal mapping
img9 img10

Implemented Features

  • Real-time rendering
  • Point and line rendering
  • Triangle rasterization
    • A Parallel Algorithm for Polygon Rasterization. Juan Pineda. Siggraph 1988.
    • Explained
  • Indexed vertex rendering
  • Depth buffering
  • Clipping for z-near plane
  • Perspective projection, viewport transform
  • Back face culling
  • Perspective-correct vertex attribute interpolation
  • Texture mapping
  • Skybox
  • OBJ model loading
    • Calculating face normal and tangent vectors
  • Vertex, Fragment(Pixel) shading
  • Phong shading model
    • Directional light
  • Normal mapping
  • Resolution changer
  • Post-processing stage