GP2X 3d Engine Demonstration Challenge


Dzz

stmia r0!, {r2-r9}
Joined
Jan 30, 2006
Messages
1,098
Website
Visit site
Hey!

So I know a lot of folks are working on 3D engines for the gp2x, including me. I haven't worked on it much lately though because I'm not sure exactly what I want to do with it. I haven't even started rasterizing yet. So, how about this: Sometime by June 15 (one month from now), everybody try to release a little teaser demo. Even if it's just a spinning cube.

Deal or No Deal?
 
I thought everyone was writing demos? :)

But, sounds like fun, and would give me a break from my PCE emu.

Stand by for Squidge's Spinning Cube! :D
 
Squidge posted on May 15 2006 at 04:19 PM said:
I thought everyone was writing demos? :)
Ha!

Well, after June 15, there's still 6 weeks to apply the 3D engines to create entries for the demo competition!
 
Last edited by a moderator:
Yo squidge! Get back to your snes emu or I will need to chain you up in the basement again! And you know you didn't like that the last time :D ;)
hehe jk... I am really excited to see some nice and innovative 3d games on the gp2x since I have seen that payback demo. Maybe some 3d puzzle games or something.
 
Dzz posted on May 15 2006 at 11:21 PM said:
Squidge posted on May 15 2006 at 04:19 PM said:
I thought everyone was writing demos? :)
Ha!

Well, after June 15, there's still 6 weeks to apply the 3D engines to create entries for the demo competition!

Eep... I'm guessing there are not many people writing demos then... I would have done, but well I didn't think I could come up with anything fancy at the time... I also didn't have the free time. (Last exam tomorrow! Hooray!)
I know for a fact I could not code a 3D engine from scratch currently. Anything in 3D from me would use the Vincent OGL library...
 
Last edited by a moderator:
PokeParadox posted on May 15 2006 at 05:22 PM said:
Dzz posted on May 15 2006 at 11:21 PM said:
Squidge posted on May 15 2006 at 04:19 PM said:
I thought everyone was writing demos? :)
Ha!

Well, after June 15, there's still 6 weeks to apply the 3D engines to create entries for the demo competition!

Eep... I'm guessing there are not many people writing demos then... I would have done, but well I didn't think I could come up with anything fancy at the time... I also didn't have the free time. (Last exam tomorrow! Hooray!)
I know for a fact I could not code a 3D engine from scratch currently. Anything in 3D from me would use the Vincent OGL library...
There's no reason that demos for the competition have to be 3D, but they could if they want. I expect most of them will not.

As to not having enough time, there is a LOT of time -- two and a half months -- until that competition's deadline. I expect a lot of entries won't even be started until July.

This thread has nothing to do with the demo thing in particular, Squidge was just poking fun at me for sponsoring that competition and now encouraging this different thing.
 
Last edited by a moderator:
why doesn't everyone get together to make one really good 3d engine or a few groups make 3d engines that serve the needs of what they want it to do. it seems like it would be kind of silly to have everyone trying to make their own individual 3d engines considering the gp2x doesn't have any kind of 3d acceleration. it really seems if we want homebrew 3d games on the gp2x we need several talented coders to put together a decent 3d engine.

so yeah showing off 3d demos will be cool but make sure to pool your resources and source code together at least afterward so everyone that wants to make a 3d game won't have to start from scratch.
 
Everyone has different ideas and ways of optimizing a 3d engine, so if you let everyone create a simple 3d engine, then you can easily see what the best ways are, and choose the fastest of everything for a super duper 3d engine :)

xnopasaranx posted on May 15 2006 at 11:58 PM said:
Yo squidge! Get back to your snes emu or I will need to chain you up in the basement again! And you know you didn't like that the last time :D ;)
hehe jk... I am really excited to see some nice and innovative 3d games on the gp2x since I have seen that payback demo. Maybe some 3d puzzle games or something.

I would do, but I thought reesy had took over SquidgeSnes - and there's no real point on two completely different versions being released if he's got something magic up his sleeves, such as a huge injection of asm or whatever.
 
Last edited by a moderator:
Dzz posted on May 15 2006 at 11:47 PM said:
Deal or No Deal?

Deal !

Anyway, I was planning a first release in two weeks or so.

Dzz, you are helping us too much for the demo compo : article serie, and now you gives us milestones too...
:)
 
Last edited by a moderator:
jbrodack posted on May 16 2006 at 04:34 AM said:
why doesn't everyone get together to make one really good 3d engine or a few groups make 3d engines that serve the needs of what they want it to do. it seems like it would be kind of silly to have everyone trying to make their own individual 3d engines considering the gp2x doesn't have any kind of 3d acceleration. it really seems if we want homebrew 3d games on the gp2x we need several talented coders to put together a decent 3d engine.

so yeah showing off 3d demos will be cool but make sure to pool your resources and source code together at least afterward so everyone that wants to make a 3d game won't have to start from scratch.

Thats a good idea but I think like me most are coding the gp2x for fun, and writing a 3d engine is really good fun. :)

The last software render I wrote was for the 486 and did not do textures. So I got the gp2x for two reasons. One to get back to the old school coding I did on the Amiga and to give me an excuse to code up a proper 3d engine. As the last 10 years has been spent using 3d harware i've decided to make the 940 be my GPU. This is already giving me a new insite how the real 3D HW works.

Here is my spinning cube, although still only running on the main cpu. :)
The message is just there for a friend who is going to do some art for me.
cube.zip

My engine currently has...
8bit rendering (the cube demo is still at 16bit, I think, its changing so quick these days)
Texture
Custom font rendering, with tool. (its cool, i'll share it in a bit)
Fixed point C++ math lib
940 used as GPU, uses a 'ring' buffer for comunication.
PC version. (although it may go as its a bit of a pain supporting)

Todo:
Get the940 going without crashing the gp2x on exit. (the cube demo does not crash on exit)
Sound.
Alpha blending.
And some other stuff.
Now that the 940 is my bitch i'm not so sure I need to ditch Linux anymore. Depends on how it all fits together at the end of the day.
Pushing Linux to one side may give a bit more speed but i'll loose file support ect......
 
Last edited by a moderator:
@MadDog: Holy Moly! Sounds like a nice project you have going on there... I am looking forward to what you will be making of it.
 
MadDog posted on May 16 2006 at 03:31 PM said:
Here is my spinning cube, although still only running on the main cpu. :)
The message is just there for a friend who is going to do some art for me.
cube.zip

Dammation ! I'm not the first to show something !

So that I will be at least the second, here is the URL of my project :

http://gna.org/projects/gpu940/

For now it's not compilable because I'm in the process of rewriting the handling of memory buffers.

It's written in C (some very few routines in ARM asm). It can do true perspective texturing with lighting in 16bpp.
It's slow as hell but when Im done with memory management I will start rewriting many things in ARM asm.

Obviously this lacks a documentation.
 
Last edited by a moderator:
Wow, you guys are way ahead of me!

Cooperation is nice but a little friendly rivalry may spur productivity even more sometimes! I know I'm feeling motivated to get to work!

We also have the yeti3d thing, the Vincent library (which seems to have gone quiet), and I recall somebody working on porting sdgl (?). Oh, also vobbo posted a demo with a spinning cube, but I don't know if he has a full 3D engine or not.

I have internal representations and geometry transformations done and close to being somewhat optimized, clipping is half done and I haven't started rasterizing yet.
 
rixed posted on May 16 2006 at 05:11 PM said:
For now it's not compilable because I'm in the process of rewriting the handling of memory buffers.
It's written in C (some very few routines in ARM asm). Obviously this lacks a documentation.

This is the same place i'm at with mine, all in C/C++ at the mo. I'm about to drop the windows version for a bit, its getting i the way. May get it working again when the GPU is sorted but before the hand rolled asm stage. Yours sounds like its going for higher quality, and that web page is far better than mine! I'm going for out and out speed. Hence the 8bit FB, no Zbuffer, and no lighting(yet). I did a few flight sims and other games with no zbuffer so have some tricks up my sleves. ;)

Will be some egg on my face if yours is still faster than mine. The race is on! B)

You got a precompiled version of your prog?

Dzz, you look like you've gone for more of a methodical approach. I've not done the clipping yet, optimisation, err, in the future. :) I've been concentration on the frame work and API. Lovely name spaces :)

Here is a snip of my matrix class def, when I really start to use it i'll get an idea if its any good. My fixed point is using 17:15 format. Bit odd but means that +-1 can fit in 16bits, so I may do a mini matrix 3x3 class that does not support scales or have a translation. But would only take up 9*sizeof(short) or 20 bytes(with alignment) Just one of my many mad ideas.


struct Matrix
{
// m[0][0],m[0][1],m[0][2] x axis
// m[1][0],m[1][1],m[1][2] y axis
// m[2][0],m[2][1],m[2][2] Z axis
// m[3][0],m[3][1],m[3][2] Transform in here.

f32 m[4][3];

Matrix &operator = (const Matrix &pIn);

void SetTranslation(f32 pX,f32 pY,f32 pZ);//Sets the translation set to x,y,z, leaves what ever is in the rotation.
void Set(f32 pX,f32 pY,f32 pZ);//Sets as identity with translation set to x,y,z.
void SetIdentity();
void SetScale(f32 pScale);
void SetScale(f32 pX,f32 pY,f32 pZ);
void SetRotationX(a16 pX);
void SetRotationY(a16 pY);
void SetRotationZ(a16 pZ);
void SetRotation(a16 pX,a16 pY,a16 pZ);

//Rotation stuff.
void ApplyRotationXPost(a16 pX);
void ApplyRotationYPost(a16 pY);
void ApplyRotationZPost(a16 pZ);
void ApplyRotationXPre(a16 pX);
void ApplyRotationYPre(a16 pY);
void ApplyRotationZPre(a16 pZ);

//Same as above, but the translation is not effected/changed etc.. Uses Mul3x3
void ApplyRotationXPost3x3(a16 pX);
void ApplyRotationYPost3x3(a16 pY);
void ApplyRotationZPost3x3(a16 pZ);
void ApplyRotationXPre3x3(a16 pX);
void ApplyRotationYPre3x3(a16 pY);
void ApplyRotationZPre3x3(a16 pZ);

void Mul(const Matrix &pA,const Matrix &pB); //Does this = pA * pB
void Mul(const Matrix &pIn); //Does this = this * pIn
void MulPre(const Matrix &pIn); //Does this = pIn * this

//This treats the matrix as a 3x3 not a 4x3 so no translation.
//This means that any translation that there is, is not changed or overwritten
void Mul3x3(const Matrix &pA,const Matrix &pB);
void Mul3x3(const Matrix &pIn);//Does this = this * pIn
void MulPre3x3(const Matrix &pIn); //Does this = pIn * this
};
 
Last edited by a moderator:
MadDog posted on May 16 2006 at 06:54 PM said:
I'm going for out and out speed. Hence the 8bit FB, no Zbuffer, and no lighting(yet). I did a few flight sims and other games with no zbuffer so have some tricks up my sleves. ;)

Man, I also did many 3d without zbuffers, and I plan to add a Zbuffer only for doing CSG.

I also did a fligh sim without zbuffer in the past ( http://happyleptic.org/fachoda.php ).

We are following closely the same path :)

Any plan to port a flight sim for the gp2x stick ?

MadDog posted on May 16 2006 at 06:54 PM said:
You got a precompiled version of your prog?

Ive got a .gpe on a SD card, but as it's not terrific I'd rather delay the release for a few more days.

MadDog posted on May 16 2006 at 06:54 PM said:
My fixed point is using 17:15 format. Bit odd but means that +-1 can fit in 16bits, so I may do a mini matrix 3x3 class that does not support scales or have a translation. But would only take up 9*sizeof(short) or 20 bytes(with alignment) Just one of my many mad ideas.

If you approxate -1=-0.9999 and 1=0.9999 (binary of course), you could achieve the same with more conventionnal 16:16 fixed format. (this was an advice from a guy that does all his divs on 64 bits ;-) )
 
Last edited by a moderator:
Wow, here you all are stating your advanced 3d routines, and here's me just starting out in the world of 3d trying to get a cube to rotate :eek:

Any good pointers to useful articles? (I don't mean fixed point vs floating point, I know all about that, but kinda new to 3d...). I know there's loads of 3d tuts on google, but just wondering if you recommend any of them.
 
Squidge posted on May 16 2006 at 06:46 PM said:
Wow, here you all are stating your advanced 3d routines, and here's me just starting out in the world of 3d trying to get a cube to rotate :eek:

Any good pointers to useful articles? (I don't mean fixed point vs floating point, I know all about that, but kinda new to 3d...). I know there's loads of 3d tuts on google, but just wondering if you recommend any of them.


Check out the OpenGL Blue Book, as it has all the math laid out for you to steal ....
 
Last edited by a moderator:
Back
Top