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/
The engine is now capable of flat shaded textures and gouraud shaded
textures, though no screen shots are yet available.
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.
Here is the same sphere, now done with gouraud:
And the cylinder:
And finally, the wine glass:
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
- These times are on a 486dx100 with 16mb, under OS/2 Connect
- They are taken from the torus (See text2.jpg), which in non-texture
shading has only 180 points
- The current implementation is Mode 13h, so has non-negligible
overhead of copying the 64k buffer & clearing it. The zbuffer routines
must also clear the zbuffer.
- Backface culling was turned off. Thus the poly/sec is for non-trivial
For a Pentium Pro 200, with gouraud shaded texture maps and a
sphere consisting of
2048 faces, I get a bit better times:
||Timings ignoring culled polys
||Can you say Partial Stalls?
||This hurts... Beaten by a machine, but...
||A tad better, no?
Back to Jeff's Homepage