I did this project like 5 years ago in order to get a better idea of how real time 3d renders work.

First try…

Mmm… Well… This is not a render engine but everyting a begining, right?

(Just playing around with 3d projections)

RT render engine

Initially, I coded absolutely everything (even the matrix operations) and of course, I did not any kind of hardware accelaration. Not even a highly optimized mathematical library, openGL, directX,…. I wanted to understand all low level details.

As expected, the rendering was quite slow, even for simple objects. But who cares, it worked! 😄

File format

I chose .obj due to its simplicity and popularity.

More: https://en.wikipedia.org/wiki/Wavefront_.obj_file

Renders

Shadings

  • Wireframe (technically not a shader)
  • Flat: Angle between the normal of a polygon’s surface and the light.
  • Gouraud: Interpolates the light intensities
  • Phong: Interpolation between the vertices

Textures and maps

Here I play around with many different maps (opacity, normals, bump,…) and texture tricks.

Handling million of polygons

Future work

  • More maps (e.g.: Parallax, poly-displacement)
  • (RT) Reflections
  • (RT) Global illumination
  • Postprocessing
  • (RT) Fluid simulation and tricks (e.g.: Perlin noise)
  • User interations in the 3d view
  • 3D sound
  • Procedural generation