Skip to content

๐Ÿ‘พ Complete Quartus Project for FPGA-based-3D-renderer

License

Notifications You must be signed in to change notification settings

TaKeTube/FPGA-based-3D-renderer-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ โ€‹FPGA-based 3D Renderer ๐Ÿ‘พ

This is the Final Project of ECE385 in UIUC

implemented on DE2-115 FPGA board

Team Member: debugevent90901 ๐Ÿ˜…, TaKeTube ๐ŸŽ‹

This is only a project that is for learning and fun, not industrial productive.

For complete Quartus Project Files, please refer to https://github.com/TaKeTube/FPGA-based-3D-renderer-Project

1. Description ๐Ÿ“„

โ€‹ This project implements a simple graphics pipeline on FPGA. It can render 3D objects with FPGA, and control the position of camera, rotations of the object through keyboard. โ€‹ It uses on-chip memory to store the information of the 3D object and 2 frame buffers, and uses NIOS-II as a controller to communicate with the keyboard. โ€‹ Other features include simple clipping, .obj loading, etc.

For more details, see report.pdf and proposal.pdf.

  • In Final folder are the final finished files, all well-commented.
  • In MidPoint folder are existing files before mid point check, not fully functioned and may be messy. Not all files are commented.

2. Third-Party Libraries ๐Ÿš€

Original contributor: WangXuan95/Verilog-FixedPoint Instead of floating point, we choose to use fixed point number. This is the only outer existing library we used, and we make certian modification to it, see details in /Final/trigonometric_lib.sv.

3. Design & Implementation Details ๐Ÿ“ƒ

Top Block Diagram

See the Final Report and Final Proposal for detailed description.

4. Operationsโ€‹ ๐ŸŽฎ

op description op description
โ†‘ Forward (camera) โ†“ Backward (camera)
โ† Left (camera) โ†’ Right (camera)
w Rotate along y axis s Rotate along y axis
a Rotate along x axis d Rotate along x axis
q Rotate along z axis e Rotate along z axis
key 0 Reset

To load a model (.obj format), please use the python script inside the ObjConvertScript folder and follow the description in Final Report & Comments in the code.

When the screen is locked, you should push key 0 to reset.

5. Final Result ๐Ÿ’ป

Cube

Result1.gif

Dodecahedron

Result2.gif

Stanford Bunny ๐Ÿ‡

Unfortunately, this model failed to rotate smoothly because of the unconverging timing

Result3.gif

About

๐Ÿ‘พ Complete Quartus Project for FPGA-based-3D-renderer

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published