Yet another 3D Engine

The following pictures are screenshots from my 3d engine. The engine was written in C with assembly handling the face rendering. Its primitives consist of triangles & quads of each of the shading types. The desired poly is rendered to an edge list, which an assembly function then renders to the screen.

Some of the screenshots have been corrupted/blurred through the capture/ save procedure.

The engine is now capable of flat shaded textures and gouraud shaded textures, though no screen shots are yet available.

Flat shading

First we have a typical sphere. It consists of 512 faces & 258 points.

Next, a cylinder. It is a mere 15 faces (quads) and 30 points.

Now something more interesting: The archetypical wineglass. It is 60 faces and 75 points.

Gouraud shading

Here is the same sphere, now done with gouraud:

And the cylinder:

And finally, the wine glass:

Texture mapping

A more detailed sphere, some 2048 faces and 1026 points:

An alternative world: Living on a doughnought. 180 faces and 208 points.

Or a wineglass??

Z-Buffered Gouraud Shading

Yep, cool zbuffer effects:

More cool views:


Now what you are waiting for. How fast does this all run? Keep in mind that:
Type FPS Poly/Sec
Flat 58.05 10,458
Ghou 51.60 9,288
Text 43.25 7,785
ZBuf 35.90 6,462

For a Pentium Pro 200, with gouraud shaded texture maps and a sphere consisting of 2048 faces, I get a bit better times:

Type FPS Poly/Sec Timings ignoring culled polys
p5 Asm 27.1 27,750 Can you say Partial Stalls?
Watcom C 37.1 37,990 This hurts... Beaten by a machine, but...
ppro Asm 50.0 51,200 A tad better, no?

Back to Jeff's Homepage