Dark Bit Factory & Gravity
GENERAL => Projects => Topic started by: Optimus on June 15, 2006
-
Hi!
This is my 3d software engine I am currently developing in C (I am thinking to port it in Freebasic too oneday). It derives from the GP32 3d engine I was developing since a long time which used a lot of fixed point and precalcs for divisions, though this one is the PC oriented where I replaced most of the integer things with floating point values and real divisions again (except from the triangle rasterizer). That's because the fixed point version would overflow and bug with bigger worlds and objects and I also wanted to have a modern fpu one for experimenting on PC which is more than enough for fast floating point math.
With this one I decided to render some really detailed meshes which I downloaded from Stanford university. The least detailed of them is the Stanford bunny (65000 polygons) and the next one I tried is Armadillo (365000 polys! >:D). In the website there are free objects to download that have even some million polygons (especially Lucy with 38 million polygons!!!!!!! O0). I won't try to render the last ones yet (the Armadillo in some conversion of data I have to rewrite, took 1 and a half hour to generate my 3do format (the original objects were ply and I read the ASCII versions of them))
The file is 6MB and is located at freewebs. Go in my website and download because external hotlinking is not allowed. Here:
http://www.freewebs.com/optimus6128/ZeEngine3D.htm
p.s. I couldn't believe my software engine could rendered 65000 polygons with gouraud shading or env-mapping in around 15-20fps in my PC. Wow! The armadillo with all full runs at 5fps!
p.p.s. Please notice there are keys to render dots, wireframe, flat, gouraud and z-buffer(1-5), Space to change object, s to change gouraud colors
p.p.p.s. At the beginning you may have to wait some pregeneration of normals. With the armadillo object it makes 3-5 seconds in my computer before the start.
-
That's very cool. The wrapping from side to side is a bit strange, needs some clipping code added. :)
-
Man that's some sweet stuff.
The armadillo in mode 5 renders in 9 fps here and looks absolutely excellent!
I was surprised at some of the other objects, especially the Statue :)
All modes work fine here, some objects gave tremendously high fps, such as the teapot which ran at about 400fps and the cube ran at over 750 fps!!!
It's looking good so far Optimus.
-
Cool stuff Optimus, I have some missing triangles with modes 3 and 5 though, particularly with the F1 car.
-
Looks like its coming along nicely ;D
great stuff, keep it coiming
-
>The wrapping from side to side is a bit strange, needs some clipping code added
Yep, it's one thing in my todo list :)
Also, if the object move more out of the screen, crashes or extreme slow downs may appear. It's one of the things I haven't fixed. I wanted to add an option to rotate and zoom an object with the mouse, but this would easilly lead to such cases and crash the system. That's why I have each object carefully placed and rotated at a specified area by myself so that the very bad errors doesn't occure in this preview ;)
>Cool stuff Optimus, I have some missing triangles with modes 3 and 5 though, particularly with the F1 car.
Yes, I compiled this fast for the preview without changing the specific object to another one. At first I thought wtf? Later, I tried some proffesional mesh viewers/converters to see the object but the bugs were similar. And so I think that the object data is wrong already in the file, wrong triangle orientation produces wrong normal generation.
>The armadillo in mode 5 renders in 9 fps here and looks absolutely excellent!
>All modes work fine here, some objects gave tremendously high fps, such as the teapot which ran at about 400fps and the cube ran at >over 750 fps!!!
You Must Have a Monster PC!!! ok,. the armadillo with mode 5, 6fps here. But the rest? You must also have a preety slick videocard (at least if the 400/750 values were reported while the rendering window was 100% in front of you). To explain my point, I made an experiment in the past. It seems that SDL speed is cleverly not affected by the rendering when you move the window or part of it outside the screen or if another window is in front of it or hides part of it. And it seems that a lot of time is eaten just for rendering the window with SDL. When I want to see pure calculating speed, I move the main window down so that it's out of the screen, you see then the frame rate going high. But with all the framebuffer hidden I can't even get more than 400-600 at the cube with dots rendered. If you got such big number while the rendering screen was in front of you (and not hidden by any other window) then it's extreme. Both your gfx card is preety good at rendering/gfx output AND your CPU is preety slick enough. Btw, how was the frame rate in the bunny? :||
Lol O0
-
Pretty cool dude :)
For the bunny, I got:
mode 1 = 130 fps
mode 2 = 50 fps
mode 3 = 33 fps
mode 4 = 19 fps
mode 5 = 21 fps
P4 2.8Ghz 512MB
Geforce 6600gt 128MB
-
whooaaa!!!!
-
Ok, Yes I must have had part of the view window obscured so here are some more fps readings..
Cube..
Mode 1: 678 FPS
Mode 2: 702 FPS
Mode 3: 403 FPS
Mode 4: 354 FPS
Mode 5: 361 FPS
Bunny:
Mode 1: 257 FPS
Mode 2: 72 FPS
Mode 3: 43 - 50 FPS
Mode 4: 19 - 25 FPS
Mode 5: 23 - 30 FPS
Armadillo:
Mode 1: 73 FPS
Mode 2: 13 FPS
Mode 3: 10 FPS
Mode 4: 7 - 8 FPS
Mode 5: 9 FPS
Teapot:
Mode 1: 677 FPS
Mode 2: 665 - 692 FPS
Mode 3: 377 - 398 FPS
Mode 4: 316 - 340 FPS
Mode 5: 334 - 339 FPS
My Computer isn't a great spec but it's ok.
P4 3.0 GHZ, Radeon X300 SE 128MB, 512MB Ram
-
Nb. I Tried hiding all the display window behind the dos window and ran the cube in dot mode and got some crazy fps of over 2,500!
-
Bunny
1- 184
2- 45
3- 34
4- 16
5- 22
Car1
1- 364
2- 187
3- 127
4- 85
5- 94
Car2
1- 320
2- 162
3- 115
4- 80
5- 84
Armadillo
1- 58
2- 9
3- 8
4- 5
5- 6
Cube
1- 435
2- 425
3- 260
4- 230
5- 241
Face
1- 424
2- 364
3- 202
4- 175
5- 150
Teapot
1- 433
2- 405
3- 265
4- 225
5- 228
Collesium
1- 418
2- 285
3- 130
4- 80
5- 81
Statue
1- 400
2- 260
3- 135
4- 93
5- 110
The fps are taken from a machine with:
2.66ghz Pentium 4
Geforce 5500 w/ 128 Mb
512 Mb
XP SP2
Sweet engine Optimus dude.
Cheers and all the best,
Clyde.
-
Thanks! The data are interesting.
-
that's all gouraud? No texture mapping? WOW!
-
The bunny in the screenshot is enviroment mapped and uses a non perspective texture mapping routine that looks like an ass on a cube ;)
Yep, the two objects are sooo well detailed that they look like bump mapped with only pure gouraud enabled!
-
That's excellent!
(These FPS are averaged[Meaning I took the high and low and made a guess at an average] )
Bunny
Mode 1 - 233 FPS
Mode 2 - 73 FPS
Mode 3 - 40 FPS
Mode 4 - 26 FPS
Mode 5 - 32 FPS
Car
Mode 1 - 503 FPS
Mode 2 - 285 FPS
Mode 3 - 157 FPS
Mode 4 - 107 FPS
Mode 5 - 115 FPS
RaceCar
Mode 1 - 428 FPS
Mode 2 - 242 FPS
Mode 3 - 133 FPS
Mode 4 - 91 FPS
Mode 5 - 97 FPS
Amradillo
Mode 1 - 64 FPS
Mode 2 - 14 FPS
Mode 3 - 9/10 FPS
Mode 4 - 6 FPS
Mode 5 - 8 FPS
Cube
Mode 1 - 610 FPS ( With the screen hidden, over 1300 FPS )
Mode 2 - 585 FPS
Mode 3 - 347 FPS
Mode 4 - 315 FPS
Mode 5 - 283 FPS
Face
Mode 1 - 599 FPS
Mode 2 - 523 FPS
Mode 3 - 257 FPS
Mode 4 - 217 FPS
Mode 5 - 182 FPS
Teapot
Mode 1 - 601 FPS
Mode 2 - 560 FPS
Mode 3 - 351 FPS
Mode 4 - 285 FPS
Mode 5 - 294 FPS
Building
Mode 1 - 575 FPS
Mode 2 - 400 FPS
Mode 3 - 165 FPS
Mode 4 - 118 FPS
Mode 5 - 96 FPS
Statue
Mode 1 - 571 FPS
Mode 2 - 391 FPS
Mode 3 - 286 FPS
Mode 4 - 125 FPS
Mode 5 - 135 FPS
Specs:
AMD Athlon64 2.2 GHz 512K Cache, 1 gig dual channel DDR, PCI-Express ATI RADEON X800 Pro 256Mb GDDR3 O0
-
Thanks, other interesting data. Now I am thinking it, one major reason for the speed diferrence would be the faster memories (My own computer has some old DDRs at "I don't remember" mhz)