Welcome to the 3DJS Renderer project! This is a TypeScript-based 3D rendering engine that I built to explore the fundamentals of computer graphics and rendering pipelines. The project focuses on implementing core rendering techniques, including wireframe rendering, triangle rasterization, and advanced line-drawing algorithms like Bresenham's 3D and EFLA.
- Wireframe Rendering: Visualize 3D models in wireframe mode.
- Triangle Rasterization: Render filled triangles with depth testing.
- Custom Line Algorithms: Implemented Bresenham's 3D and Extremely Fast Line Algorithm (EFLA).
- Lighting Models: Support for flat shading and Blinn-Phong shading.
- Z-Buffering: Depth testing to handle occlusion.
This project has been an incredible learning experience! Here are some of the key takeaways:
- 3D Math: Gained a deeper understanding of vector math, matrix transformations, and projections.
- Rendering Pipeline: Learned how to transform 3D models into 2D screen space and handle clipping, culling, and depth testing.
- Line-Drawing Algorithms: Explored and implemented efficient algorithms for drawing lines in 3D space.
- Debugging Graphics: Improved my debugging skills by tackling issues like invisible lines, depth testing errors, and vertex transformations.
- TypeScript: Strengthened my TypeScript skills, especially in handling complex types and interfaces.
- Clone the repository:
git clone https://github.com/your-username/3DJS.git
- Install dependencies:
bun install
- Build the project:
bun run build
- Open
index.htmlin your browser to see the renderer in action.
- Add support for textures and UV mapping.
- Optimize performance for larger models.
- Experiment with real-time shadows and reflections.
Feel free to explore the code and contribute if you'd like! This project is a stepping stone for me to dive deeper into the world of computer graphics.
