www.jpct.net

jPCT-AE - a 3d engine for Android => Support => Topic started by: EgonOlsen on March 03, 2010, 10:33:54 pm

Title: First alpha version released
Post by: EgonOlsen on March 03, 2010, 10:33:54 pm
Finally, after a long time of struggling with the platform and its shortcomings, i've decided to release the current version to the public. It's still in its infancy, so bear with it.
I've created a fancy webpage for it:

http://www.jpct.net/jpct-ae (http://www.jpct.net/jpct-ae)

... ;D You should get everything from there to get you started. If not, please let me know.

About the version itself: It's a port, not just a normal jPCT version with a different renderer. It will help tremendously if you are already familiar with the normal version of jPCT if you are going to use this one. If you are not, it might be a bit harder, because all the jPCT related resources in the forum and the wiki have been created for the normal version and even if both are very similar, there are some differences here and there.

This board is meant to be used for feedback, bug reports, support questions, projects until further notice.

Have fun!
Title: Re: First alpha version released
Post by: zammbi on March 04, 2010, 02:59:18 am
That's great.
Now I want to get an android to test this. I might import one for my network as I can't get one local. Though if I do get one over Windows Mobile, I hope JavaFX comes out soon for it.
Title: Re: First alpha version released
Post by: raft on March 04, 2010, 09:34:59 am
ah, it's the big day ;D
Title: Re: First alpha version released
Post by: EgonOlsen on March 04, 2010, 11:26:54 am
About the version number: This version identifies itself as 1.19. I decided to keep the version numbering consistent between the two branches. However, 1.19 isn't really correct in this case. It more like a 1.21 minus something.
Title: Re: First alpha version released
Post by: raft on March 04, 2010, 12:53:03 pm
btw, desktop 1.21 alpha link is broken. since it still is downloadable via directory listing  ;)
Title: Re: First alpha version released
Post by: EgonOlsen on March 04, 2010, 01:43:05 pm
btw, desktop 1.21 alpha link is broken. since it still is downloadable via directory listing  ;)
Thanks. It's fixed now.
Title: Re: First alpha version released
Post by: raft on March 04, 2010, 05:01:52 pm
i've asked my friend to run demo app on his phones:

* HTC Tattoo (android 1.6) demo runs at max 10fps, while moving around fps drops down to 7. seems as hw acceleration is not present
* G1 (android 1.6-2.0 hybrid community version): fps up to 24-25, while moving around drops down to 15

he also said, G1 is sensitive to orientation change (restarts app lifecycle) and some times app chrashes on orientation change

fyi
Title: Re: First alpha version released
Post by: EgonOlsen on March 04, 2010, 07:16:21 pm
Information on the MSM7225 (the chipset of the Tattoo) is, as usual, sparse. But from what i've found, it seems that it doesn't include a GPU, which would explain the low frame rate.
G1 performance is similar to my phone, it's fine. The orientation change thing was to be expected. Changing the orientation destroys the GL context, which makes me upload all textures again. The demo application is simple...it just discards everything and starts from scratch when changing orientation. This can be changed in the demo, it's not a fault of the engine. I've experienced that crash problem myself with this demo as well as with other OpenGL apps. I blame it to the native implementation for now.
Title: Re: First alpha version released
Post by: EgonOlsen on March 04, 2010, 08:57:34 pm
I've updated the jar and the demo's source. The version number is correct now (1.21) and i changed some internal stuff dealing with freeing resources.
Title: Re: First alpha version released
Post by: raft on March 05, 2010, 06:38:33 pm
i've just saw demo app running on my friend's G1 and i loved it, it looks very nice ;D
Title: Re: First alpha version released
Post by: EgonOlsen on March 05, 2010, 11:42:36 pm
Thank you. It was just a test case based on some shadow mapping test case that i'm using for the desktop version.

I've updated both, the AE jar and the 1.21 one. They can (de-)serialize animations now and the AE version includes the animation optimizations. Performance in my test case increased from 4 to 18, which is a nice boost. I've extended Mesh's strip()-method to remove more data that isn't needed for animations IMHO. However, it seems a bit strange that i haven't removed those parts before, so maybe it's not such a good idea as i thought...so if something fails now that worked before, this might be the reason. In that case, please let me know.

For now, i haven't added the option to (de-)serialize Mesh or Animation as stand-alone. I might add it later, but one can only do so much... ;)

Android is strange...obviously, you can't load any single file larger than 1 MB even if it's from an InputStream. It throws an IOException in that case. So in case your serialized animations are bigger, just zip them. The loader doesn't unzip it itself, but you can simply wrap the inputstream.

Title: Re: First alpha version released
Post by: raft on March 06, 2010, 12:18:54 am
great thanks ;D i really appreciate your efforts and support for this engine if has any meaning ;)

i've managed to run facial animation demo in emulator. it has ~3000 polygons. without animation it was running at ~11 fps, with new release it runs at ~14 fps.

however with animation, both versions drops down to ~2 fps. so i guess your optimization only applies to built-in mesh animations ?
Title: Re: First alpha version released
Post by: EgonOlsen on March 06, 2010, 12:37:41 am
No, it applies to all meshes that can be modified. However, some "if" depended solely on animation and didn't take vertex controllers into account. This is changed now, i've updated the jar. Depending on how you created the Animation-instance, make sure that Animation.setCaching(true); has been called. If all goes well, the log should read like:

Code: [Select]
Remapping xxx animation indices!
Creating animation cache (yyyy bytes)!

If that doesn't happen, something is still fishy...if it happens, and it's still slow...well...
Title: Re: First alpha version released
Post by: raft on March 06, 2010, 12:45:47 am
i couldnt get it. that facial animation does not create an Animation instance. it just depends on vertex controller ??? do you mean, i should create a regular jpct animation via my vertex controller animation ?
Title: Re: First alpha version released
Post by: EgonOlsen on March 06, 2010, 09:42:42 am
Shoudn't matter...it should print out that messages anyway. They don't appear? Strange....i'll write myself a simple test case and see what happens then.
Title: Re: First alpha version released
Post by: EgonOlsen on March 06, 2010, 10:27:39 am
Works fine in my test case, i.e. the optimization is used when using an IVertexController. Maybe your controller is just that slow? It's easy to slow something down at a crawl on Dalvik...
Title: Re: First alpha version released
Post by: raft on March 06, 2010, 06:02:29 pm
messages appear, but only the remapping part. here is the relevant part of output:

Code: [Select]
I/jPCT-AE (  716): OpenGL vendor:     Android
I/jPCT-AE (  716): OpenGL renderer:   Android PixelFlinger 1.0
I/jPCT-AE (  716): OpenGL version:    OpenGL ES-CM 1.0
I/jPCT-AE (  716): OpenGL renderer initialized (using 2 texture stages)
I/jPCT-AE (  716): Remapping 720 animation indices!
I/jPCT-AE (  716): Subobject of object 1/object3 compiled using 720 vertices in 69ms!
I/jPCT-AE (  716): Object 1/object3 compiled to 1 subobjects in 97ms!
I/jPCT-AE (  716): Remapping 348 animation indices!
I/jPCT-AE (  716): Subobject of object 2/object4 compiled using 348 vertices in 34ms!
I/jPCT-AE (  716): Object 2/object4 compiled to 1 subobjects in 48ms!
I/jPCT-AE (  716): Remapping 822 animation indices!
I/jPCT-AE (  716): Subobject of object 3/object5 compiled using 822 vertices in 82ms!
I/jPCT-AE (  716): Object 3/object5 compiled to 1 subobjects in 108ms!
I/jPCT-AE (  716): Remapping 2706 animation indices!
I/jPCT-AE (  716): Subobject of object 4/object6 compiled using 2706 vertices in 264ms!
I/jPCT-AE (  716): Object 4/object6 compiled to 1 subobjects in 365ms!
I/jPCT-AE (  716): Remapping 4416 animation indices!
I/jPCT-AE (  716): Subobject of object 5/object7 compiled using 4416 vertices in 681ms!
I/jPCT-AE (  716): Object 5/object7 compiled to 1 subobjects in 851ms!

i would expect skeletal animation to be slow but not this one. skeletal animation makes many matrix multplications but this one basicly multiplies a vector with a scalar and adds it to mesh vertices. skelatal anim is applied to each mesh vertice but this one is applied to only relevant vertices.

here is the application (http://www.aptalkarga.com/tmp/A1.apk) if you want to see it yourself. center button enables/disables animation

edit: changed controls to enable/disable animation
Title: Re: First alpha version released
Post by: EgonOlsen on March 06, 2010, 09:04:03 pm
Stupid question...how do i press 0 and 1 on a phone without a real keyboard?
Title: Re: First alpha version released
Post by: raft on March 06, 2010, 09:11:32 pm
mm, it's not the question but my app which is stupid ::) i will update it to use some other key..
Title: Re: First alpha version released
Post by: EgonOlsen on March 06, 2010, 09:16:13 pm
The log output makes no sense to me...unless your objects all include Animation instances which aren't used but state that they don't want the cache. I've uploaded an AE version with that has a more detailed logging and that doesn't use the "if" at that stage, so that everything that is dynamic (which this thing obviously is, because the remapping-output is there) will use it. Please give it a try and post the results as well as that part of the log.
Title: Re: First alpha version released
Post by: raft on March 06, 2010, 09:51:29 pm
this definitely performs better while animating. ~6-7 fps. i must have messed up versions last time. the link is updated (center button enables/disables animation)

here is the log:

Code: [Select]
I/jPCT-AE (  719): OpenGL vendor:     Android
I/jPCT-AE (  719): OpenGL renderer:   Android PixelFlinger 1.0
I/jPCT-AE (  719): OpenGL version:    OpenGL ES-CM 1.0
I/jPCT-AE (  719): OpenGL renderer initialized (using 2 texture stages)
I/jPCT-AE (  719): Remapping 130 vertex indices!
I/jPCT-AE (  719): Dynamic: true
I/jPCT-AE (  719): Animation: null
I/jPCT-AE (  719): Cache usage: No animation present
I/jPCT-AE (  719): Creating vertex cache (3120 bytes)!
I/jPCT-AE (  719): Subobject of object 1/object3 compiled using 720 vertices in 55ms!
I/jPCT-AE (  719): Object 1/object3 compiled to 1 subobjects in 82ms!
I/jPCT-AE (  719): Remapping 72 vertex indices!
I/jPCT-AE (  719): Dynamic: true
I/jPCT-AE (  719): Animation: null
I/jPCT-AE (  719): Cache usage: No animation present
I/jPCT-AE (  719): Creating vertex cache (1728 bytes)!
I/jPCT-AE (  719): Subobject of object 2/object4 compiled using 348 vertices in 31ms!
I/jPCT-AE (  719): Object 2/object4 compiled to 1 subobjects in 46ms!
I/jPCT-AE (  719): Remapping 184 vertex indices!
I/jPCT-AE (  719): Dynamic: true
I/jPCT-AE (  719): Animation: null
I/jPCT-AE (  719): Cache usage: No animation present
I/jPCT-AE (  719): Creating vertex cache (4416 bytes)!
I/jPCT-AE (  719): Subobject of object 3/object5 compiled using 822 vertices in 66ms!
I/jPCT-AE (  719): Object 3/object5 compiled to 1 subobjects in 94ms!
I/jPCT-AE (  719): Remapping 473 vertex indices!
I/jPCT-AE (  719): Dynamic: true
I/jPCT-AE (  719): Animation: null
I/jPCT-AE (  719): Cache usage: No animation present
I/jPCT-AE (  719): Creating vertex cache (11352 bytes)!
I/jPCT-AE (  719): Subobject of object 4/object6 compiled using 2706 vertices in 197ms!
I/jPCT-AE (  719): Object 4/object6 compiled to 1 subobjects in 285ms!
D/dalvikvm(  619): GC freed 3940 objects / 223760 bytes in 120ms
I/jPCT-AE (  719): Remapping 752 vertex indices!
I/jPCT-AE (  719): Dynamic: true
I/jPCT-AE (  719): Animation: null
I/jPCT-AE (  719): Cache usage: No animation present
I/jPCT-AE (  719): Creating vertex cache (18048 bytes)!
I/jPCT-AE (  719): Subobject of object 5/object7 compiled using 4416 vertices in 415ms!
I/jPCT-AE (  719): Object 5/object7 compiled to 1 subobjects in 582ms!

i dont get what exactly is happening here. you said your optimization depends on leaving unchanged vertices alone. you can know this for built-in mesh animator, but for a vertex controller ? do you compare them with original values ?
Title: Re: First alpha version released
Post by: EgonOlsen on March 06, 2010, 10:12:34 pm
No, it doesn't leave unchanged vertices alone, it simply changes less vertices by using indexed geometry for rendering. The geometry in jPCT is always indexed, i.e. if a vertex in a mesh is referenced by four triangles, it's only stored once and all triangles just hold an index to that one instance. However, when compiling a mesh this isn't always the case. Depending on the object (and in desktop jPCT depending on the compile()-call, which happens automagically in AE), it may either be compiled to indexed or plain mode (i.e. multiplying a vertex by the number of triangles that uses it). Plain mode is faster on Android (i don't understand why, but anyway...), so it's default. For animations, the most time is spend at the "transfer the changed vertices to the GPU"-stage, which is why plain mode sucks here. However, to use indexed mode for animations, i need some additional data structures...which are one part of the optimization. Those structures consume a little more memory, which is why i made them optional. And in the former version, this wasn't implemented correctly, which is why your test case sucked performance wise.

Title: Re: First alpha version released
Post by: raft on March 06, 2010, 11:30:35 pm
i see, it makes sense now :)
Title: Re: First alpha version released
Post by: raft on March 08, 2010, 05:47:20 pm
Quote from: raft
here is the application (http://www.aptalkarga.com/tmp/A1.apk) if you want to see it yourself. center button enables/disables animation

egon, have you run this app on your phone ? it throws an OutOfMemory in G1 ::)

and this is another application (http://www.aptalkarga.com/tmp/S1.apk) with skeletal animation, the ninja demo. it replaces the other one. it has a menu to start/stop animation. it runs ok on G1 with same performance on my emulator. ~30 fps without animation, ~10 fps with animation. i will be glad if you run them and post results..
Title: Re: First alpha version released
Post by: EgonOlsen on March 09, 2010, 07:27:44 am
Both work fine on my phone. The head @ ~8fps, the ninja @ ~29/9. The APK for the ninja seems a bit strange as it downloads as S1, but installs as A1 overwriting the head installation!? But you can't start A1 after that from the menu. It says that it isn't installed...strange.
Title: Re: First alpha version released
Post by: raft on March 09, 2010, 02:04:56 pm
they are exported from same application in Eclipse, only different activities. that's why they install over each other. removing one first before installing other may help launch problem.

yesterday i read something about memory, not sure if it applies to Nexus One or all Andoid devices: as a measure against software piracy, applications are installed on main memory not on SD card. meaning install more apps and have less memory. i guess that may be the reason my friend is getting an OutOfMemory. google announced that behaviour will vanish but god knows when
Title: Re: First alpha version released
Post by: EgonOlsen on March 09, 2010, 09:24:17 pm
I've updated the AE-jar with a version that includes some micro optimizations for animations. I don't think that it'll increase performance much (if any), but maybe you can test it to see, if i haven't broken anything.
Title: Re: First alpha version released
Post by: raft on March 09, 2010, 09:38:44 pm
it seems ok. both face and ninja demos worked fine
Title: Re: First alpha version released
Post by: EgonOlsen on March 15, 2010, 09:19:39 pm
I've uploaded a new jar with much higher initialization performance and 100 times faster calcTextureWrapXXX()-methods. The suckiness of these methods never hurt on the desktop, but it did on AE, so i finally fixed this.
Title: Re: First alpha version released
Post by: dl.zerocool on March 17, 2010, 11:03:54 pm
Hello !
First of all, thanks for porting jPCT to AE.

I'm studying software engineer at the moment in Switzerland, and I would like to use jPCT-AE inside a school project.
But at moment I'm quite annoyed, I tried by many ways to run the demo (compiled from source) in my nexus one
but I only get a black screen. I tried with a friend spica samsung who's based on 1.5 and I did not success either.

So I decided to rewrite it a little bit to understand how things work and I got stuck in the same place... A black screen at start.
(It does work inside the emulator)

I attached my modified version of your demo.

ps: I know that your demo is just a simple example.
And what you can do with jPCT is really awesome, I take a look at all the lib and it's quite impressive.
It's a pleasure to see JavaDoc use etc.
So thank you ! :P

I'm not saying that you don't know it or something like that, I hope you don't take it bad (I don't explain myself very well in English, excuse me).
But what I would like to say is that all member of a class are set to null if they are pointers to object,
0 if they are primitive types like int,float etc. and all booleans are set to false.
If you do it by yourself, the vm will do twice the work settings all the members to your settings.
exemple  private boolean abool = false;
will be set 2 times, a default to false then false again forced by the =.

I saw that you use floats and arrays in your demo.
I'm not an expert but what I read is that float operations are not well managed by this kind of devices.
-> http://developer.android.com/guide/practices/design/performance.html#avoidfloat

I saw that you are having trouble with animations (low framerate)
I don't know how you register/store all the informations but perhaps hashmaps,
arraylist or linkedlist.
Do a better work than simple arrays, for example to search something in an array if you have not the exact position
you can have a search algorithm in O(nē) which is not great hashmaps will find the information in O(n) or very close too which is really faster.

Here is some tips from android to improve performance : http://developer.android.com/guide/practices/design/performance.html

Of course I'm not saying that you don't know this things, perhaps it will help someone else :)
I was so happy when I found that jPCT was ported ! :P

But well I think I'm doing something wrong so It cannot be displayed on phone.

If someone have a little time to spare in this, thanks in advance !

Best regards.

Here is the DDMS LogCat
Code: [Select]
03-17 23:05:58.742: ERROR/AndroidRuntime(1125): ERROR: thread attach failed
03-17 23:05:58.932: INFO/jPCT-AE(1065): Loading Texture...
03-17 23:05:58.943: INFO/jPCT-AE(1065): Loading Texture...
03-17 23:05:58.962: INFO/jPCT-AE(1065): Loading Texture...
03-17 23:05:58.983: INFO/jPCT-AE(1065): Loading Texture...
03-17 23:05:58.993: INFO/jPCT-AE(1065): Loading Texture...
03-17 23:05:59.082: INFO/jPCT-AE(1065): Loading Texture...
03-17 23:05:59.162: INFO/jPCT-AE(1065): Adding Lightsource: 0
03-17 23:05:59.162: INFO/jPCT-AE(1065): OpenGL vendor:     Qualcomm
03-17 23:05:59.162: INFO/jPCT-AE(1065): OpenGL renderer:   Adreno
03-17 23:05:59.162: INFO/jPCT-AE(1065): OpenGL version:    OpenGL ES-CM 1.1
03-17 23:05:59.162: INFO/jPCT-AE(1065): OpenGL renderer initialized (using 2 texture stages)
03-17 23:05:59.243: INFO/jPCT-AE(1065): Subobject of object 7/plane compiled using 2400 vertices in 50ms!
03-17 23:05:59.243: INFO/jPCT-AE(1065): Object 7/plane compiled to 1 subobjects in 73ms!
03-17 23:05:59.263: INFO/jPCT-AE(1065): Subobject of object 9/tree1 compiled using 690 vertices in 15ms!
03-17 23:05:59.263: INFO/jPCT-AE(1065): Object 9/tree1 compiled to 1 subobjects in 21ms!
03-17 23:05:59.282: INFO/jPCT-AE(1065): Subobject of object 10/tree2 compiled using 690 vertices in 14ms!
03-17 23:05:59.282: INFO/jPCT-AE(1065): Object 10/tree2 compiled to 1 subobjects in 21ms!
03-17 23:05:59.292: INFO/jPCT-AE(1065): Subobject of object 11/grass compiled using 264 vertices in 7ms!
03-17 23:05:59.292: INFO/jPCT-AE(1065): Object 11/grass compiled to 1 subobjects in 10ms!
03-17 23:05:59.302: INFO/jPCT-AE(1065): Subobject of object 8/rock compiled using 84 vertices in 2ms!
03-17 23:05:59.302: INFO/jPCT-AE(1065): Object 8/rock compiled to 1 subobjects in 3ms!
03-17 23:05:59.602: INFO/ActivityManager(113): Displayed activity com.demo.jpctae/.jpctae: 885 ms (total 885 ms)
03-17 23:06:10.182: INFO/jPCT-AE(1065): Visibility lists disposed!


[attachment deleted by admin]
Title: Re: First alpha version released
Post by: EgonOlsen on March 18, 2010, 07:51:18 am
Quote
I'm studying software engineer at the moment in Switzerland, and I would like to use jPCT-AE inside a school project.
But at moment I'm quite annoyed, I tried by many ways to run the demo (compiled from source) in my nexus one
but I only get a black screen. I tried with a friend spica samsung who's based on 1.5 and I did not success either.

So I decided to rewrite it a little bit to understand how things work and I got stuck in the same place... A black screen at start.
(It does work inside the emulator)

I attached my modified version of your demo.
Looks like as if it stops before being able to do anything...no idea why. Maybe this line in the log: "03-17 23:05:58.742: ERROR/AndroidRuntime(1125): ERROR: thread attach failed" is an indicator of some problem, but i have no idea what this should be (I've never seen this message on my phone, which is a Samsung i7500 running 1.5). I'm not claiming that my way of creating the Activity is the right way. It's just something that i took from some example and modified it to work with jPCT-AE. Maybe i'm doing something really stupid!? Then again, some people already tried it on an actual phone and it worked fine for them. I suggest to put some logging in all these start/stop/pause/resume/create/...-methods to see what actually happens and post the results. Maybe that will help.

Quote
But what I would like to say is that all member of a class are set to null if they are pointers to object,
0 if they are primitive types like int,float etc. and all booleans are set to false.
If you do it by yourself, the vm will do twice the work settings all the members to your settings.
exemple  private boolean abool = false;
will be set 2 times, a default to false then false again forced by the =.
It's a matter of taste IMHO. Maybe it's more work for the vm (i'm not even sure about this, because it would be very stupid of the compiler to create code that does redundant settings to false, but then again, the java compiler is pretty stupid), but even on Android's slow Dalvik-VM, this won't hurt in any way. Change it to the way you like, i don't mind which way one uses. I'm using both ways myself, i have to real preference here.

Quote
I saw that you use floats and arrays in your demo.
I'm not an expert but what I read is that float operations are not well managed by this kind of devices.
-> http://developer.android.com/guide/practices/design/performance.html#avoidfloat
You can't avoid float in a 3D engine. Back in the "good old days" of 386-CPUs, people (including myself) were writing this 3D stuff in assembler and used fixed-point instead, because there was no fpu. But the engines and the graphics were a whole lot simpler in the old days. You can't do what a modern engine does in fixed-point without going mad and asking for trouble (accuracy problems, overflows,...). Apart from that, fixed-point isn't really that much faster on Android...i did some tests. Actually, the fpu-emulation code seems to be pretty good. And more recent chipsets will (i *think* the Nexus one already does...) include a fpu anyway.

Quote
I saw that you are having trouble with animations (low framerate)
I don't know how you register/store all the informations but perhaps hashmaps,
arraylist or linkedlist.
Do a better work than simple arrays, for example to search something in an array if you have not the exact position
you can have a search algorithm in O(nē) which is not great hashmaps will find the information in O(n) or very close too which is really faster.
Very bad idea for storing geometry data. An ArrayList for example is nothing more than a wrapper around an array (hence the name....), which can never be faster than the direct array access. HashMaps are used in jPCT for calculating normals and texture coordinates and stuff and it really helps there, but it's not a good place to store geometry in. And you don't have to, because you simply don't need to search this data. The best idea is to keep your data structures as close as possible to what OpenGL uses, which are plain float buffers in direct memory. And animations are as fast as it gets now. The time is spend mostly in the process that copies the data from VM memory into native buffers...and you can't avoid this step.

Quote
Here is some tips from android to improve performance : http://developer.android.com/guide/practices/design/performance.html
Did almost everything that is mentioned there. Were applicable of course.
Title: Re: First alpha version released
Post by: zammbi on March 18, 2010, 08:30:21 am
Quote
And more recent chipsets will (i *think* the Nexus one already does...) include a fpu anyway.
I believe the snapdragon cpu has a fpu which the latest phones seem to use. The Milestone I believe I read that it also has an fpu cpu.
Title: Re: First alpha version released
Post by: EgonOlsen on March 18, 2010, 08:35:21 am
I believe the snapdragon cpu has a fpu which the latest phones seem to use. The Milestone I believe I read that it also has an fpu cpu.
I think so too, which is why i'm very interested in some results from one of those devices.
Title: Re: First alpha version released
Post by: dl.zerocool on March 18, 2010, 12:29:32 pm
Hi !

I wasn't hopping that you answered all my questions, thank you !

I understand your choice about floating point and yes I was thinking on fixed points (I worked on Nintendo DS system, where most of the time included in 3D rendering I used fixed points)
Of course it's not comparable to Android hardware.

Nexus one does include an FPU, I would be proud to provide you more informations, just ask me and I'll try to answer all of your questions and make the corresponding tests.
As I said I'm doing a project with 2 other people in my classroom, it's a school project that we have to make in the next 12weeks, so I'm really interested in this project.

Depending on my classmates I'll share the project or parts of the project here, if you wish to.

Back to my problem, what I found strange is that on the  emulator it does run slowly but fine.
I will take a look and try to put some logs like you said.

Anyway I'll keep you informed.

Best regards,

dl.zerocool

ps: about your activity, I don't think there's any mistake.
All android code I've seen, use the same way to do it.
Perhaps that I miss something, I've no idea at moment, but be sure that I'll keep you informed as soon as I find.
Right now I'm pretty busy and not working on project (we have other classes to follow, project is a small part of my school).

And about your question concerning class members, yes it's quite stupid but is how it works.
Last 6 months I followed a "POO" sounds strange in English,it's (Object Oriented Development) in Java and C++.
And this was mentioned few times, of course I think it does not make any real performance problems even on Dalvik, like you said.
Title: Re: First alpha version released
Post by: dl.zerocool on March 23, 2010, 01:34:58 am
Hi,
I just wanted to say that I tried running your jpct-ae example apk with the nexus one and the Samsung spica, but the result was the same. A single black screen, so perhaps it does come from the engine.

Tell me what you think or if you have another apk that I can test.
Best greetings.
Title: Re: First alpha version released
Post by: EgonOlsen on March 23, 2010, 06:39:50 am
More likely from the Activity. The engine's core should be fine IMHO. I'll create a version with more logging in the Activity to be able to see what is going on here.
Title: Re: First alpha version released
Post by: dl.zerocool on March 23, 2010, 08:31:17 am
Thanks for the fast reply.

I'll be working on project tomorrow morning (here, Tue 8:28am now). If you post an apk, I'll try and give you feedbacks today but I'll not have time to dev anything today.

I already tried to log and see what's happening but didn't find anything interesting, except that everything seems to load correctly, models etc. Plus apparently the engine seems to be running as all methods OnDraw OnSurfaceChanged etc.. are all called correctly.
I could get fps in log so there's something running in the background.

Title: Re: First alpha version released
Post by: EgonOlsen on March 23, 2010, 08:53:35 pm
I could get fps in log so there's something running in the background.
I'm confused now. How can you get fps in the log if the demo doesn't log any? It only blits them on screen, it doesn't print them into the log!? Are we actually talking about the same thing here?
Anyway, i've update the apk of the demo with a version that includes more logging and that doesn't clear the screen to black but to some shade of blue or purple or whatever. So it should be possible to see if it actually paints something (i.e. at least applies the new color) and if the scene isn't all black by accident.

If it still doesn't work, the complete log output might be helpful.
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 12:40:41 am
Good news :) I see something ! :)
And it works pretty well (50fps)~

Here is the DDMS logcat with your new apk.
Code: [Select]
03-24 00:31:42.307: INFO/ActivityManager(128): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.threed.jpct/.example.Demo }
03-24 00:31:42.347: INFO/jPCT-AE(3979): onCreate
03-24 00:31:42.347: INFO/jPCT-AE(3979): onResume
03-24 00:31:42.407: INFO/jPCT-AE(3979): onSurfaceCreated
03-24 00:31:42.427: INFO/jPCT-AE(3979): Loading Texture...
03-24 00:31:42.437: INFO/jPCT-AE(3979): Loading Texture...
03-24 00:31:42.457: INFO/jPCT-AE(3979): Loading Texture...
03-24 00:31:42.507: INFO/jPCT-AE(3979): Loading Texture...
03-24 00:31:42.527: INFO/jPCT-AE(3979): Loading Texture...
03-24 00:31:42.557: INFO/jPCT-AE(3979): Loading Texture...
03-24 00:31:42.637: INFO/jPCT-AE(3979): Adding Lightsource: 0
03-24 00:31:42.637: INFO/jPCT-AE(3979): OpenGL vendor:     Qualcomm
03-24 00:31:42.637: INFO/jPCT-AE(3979): OpenGL renderer:   Adreno
03-24 00:31:42.637: INFO/jPCT-AE(3979): OpenGL version:    OpenGL ES-CM 1.1
03-24 00:31:42.637: INFO/jPCT-AE(3979): OpenGL renderer initialized (using 2 texture stages)
03-24 00:31:42.637: INFO/jPCT-AE(3979): onSurfaceChanged/320/483
03-24 00:31:42.717: INFO/jPCT-AE(3979): Subobject of object 35/plane compiled using 2400 vertices in 54ms!
03-24 00:31:42.717: INFO/jPCT-AE(3979): Object 35/plane compiled to 1 subobjects in 76ms!
03-24 00:31:42.737: INFO/jPCT-AE(3979): Subobject of object 37/tree1 compiled using 690 vertices in 17ms!
03-24 00:31:42.737: INFO/jPCT-AE(3979): Object 37/tree1 compiled to 1 subobjects in 23ms!
03-24 00:31:42.757: INFO/jPCT-AE(3979): Subobject of object 38/tree2 compiled using 690 vertices in 16ms!
03-24 00:31:42.757: INFO/jPCT-AE(3979): Object 38/tree2 compiled to 1 subobjects in 23ms!
03-24 00:31:42.777: INFO/jPCT-AE(3979): Subobject of object 39/grass compiled using 264 vertices in 5ms!
03-24 00:31:42.777: INFO/jPCT-AE(3979): Object 39/grass compiled to 1 subobjects in 10ms!
03-24 00:31:42.777: INFO/jPCT-AE(3979): Subobject of object 36/rock compiled using 84 vertices in 2ms!
03-24 00:31:42.777: INFO/jPCT-AE(3979): Object 36/rock compiled to 1 subobjects in 3ms!
03-24 00:31:43.357: INFO/ActivityManager(128): Displayed activity com.threed.jpct/.example.Demo: 1025 ms (total 1025 ms)

I attached two screenshots, hope it will help you.


I could get fps using "Logger.log" with my modified version not with your apk.
and verify that everything was running fine by doing logs in every function in interesting code parts, to be sure that everything was done correctly and apparently it was.

[attachment deleted by admin]
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 12:41:30 am
another screenshot.

[attachment deleted by admin]
Title: Re: First alpha version released
Post by: EgonOlsen on March 24, 2010, 07:16:12 am
So there is some rendering going on, but colors are ignored completely. And that affects both, calculated vertex colors and colors given by a dedicated color array (for the fps blitting). Plus the blitting somehow looks garbled...strange. Can you take the example's source code (it doesn't include my latest changes though) and remove this part at the beginning:

Code: [Select]
mGLView.setEGLConfigChooser(new GLSurfaceView.EGLConfigChooser() {
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
// Ensure that we get a 16bit framebuffer. Otherwise, we'll fall
// back to Pixelflinger on some device (read: Samsung I7500)
int[] attributes = new int[] { EGL10.EGL_DEPTH_SIZE, 16, EGL10.EGL_NONE };
EGLConfig[] configs = new EGLConfig[1];
int[] result = new int[1];
egl.eglChooseConfig(display, attributes, configs, 1, result);
return configs[0];
}
});

....maybe that helps. And whether it helps or not, can you please tell me what the log says about OpenGL vendor, renderer and such if removing that part?
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 08:42:49 am
I had already tried to remove this part before, and sorry, no it does not help :(.

opengl vendor is :
Quote
03-24 08:46:10.569: INFO/jPCT-AE(4838): OpenGL vendor:     Qualcomm
03-24 08:46:10.569: INFO/jPCT-AE(4838): OpenGL renderer:   Adreno
03-24 08:46:10.569: INFO/jPCT-AE(4838): OpenGL version:    OpenGL ES-CM 1.1
03-24 08:46:10.569: INFO/jPCT-AE(4838): OpenGL renderer initialized (using 2 texture stages)
So nothing changed, but Samsung spica (i5700) has another opengl vendor and it doesn't work either.

Perhaps is something wrong with the way you clear the buffer ?
Title: Re: First alpha version released
Post by: EgonOlsen on March 24, 2010, 09:02:59 am
No, you can't do anything wrong with a glClear. Something is wrong with either vertex colors (most likely) or texture upload (unlikely, because the alpha channel on the trees' leaves looks fine). I just have no idea what this should be ATM. The code works fine on my phone, in the emulator, on the G1 and finally the desktop version of jPCT uses it too and it works fine on a variety of GPUs.

So something on your phones has to be different...i just have no idea how to figure this out without an actual phone of that kind... ???
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 09:27:19 am
Well, I know that you can't do anything wrong with glclear, except calling it in the wrong place.
But it is really strange because I tested a lot of things, included basic 3d rendering and array colors do work like they have to.

Example a simple 3D Cube with colors work really fine. What is strange is that other 3D apps don't have any problem.

Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 09:40:42 am
I'm unable to help you since the source code is closed, I already read about it on the forum, so don't worry I do understand.
If you want me to help in any way, let me know.
I would be proud to help, I'll continue searching by my side.
Title: Re: First alpha version released
Post by: EgonOlsen on March 24, 2010, 10:53:03 am
Maybe a call to glEnable(GL_COLOR_MATERIAL); right after creating the FrameBuffer will help?
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 11:58:57 am
sadly it doesn't help either :
Code: [Select]
public void onSurfaceChanged(GL10 gl, int width, int height) {
Logger.log("On SurfaceChanged engine", Logger.MESSAGE);
if (fb != null) {
fb.dispose();
}
fb = new FrameBuffer(gl, width, height);
gl.glEnable(GL10.GL_COLOR_MATERIAL);

}
Title: Re: First alpha version released
Post by: EgonOlsen on March 24, 2010, 12:35:20 pm
Another shot in the dark is to remove the call to world.setRGBScale(World.RGB_SCALE_2X); and to remove the creation of the Light-instance to see if any of that helps...i doubt it, but just to be sure...
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 02:11:17 pm
It was a nice shot !

Removing RGB scale don't affect anything, but when removing the light it worked out !
*Screen added

*ps: It does not work without the gl material color enabled.
*Sorry first edit was wrong :P

[attachment deleted by admin]
Title: Re: First alpha version released
Post by: EgonOlsen on March 24, 2010, 02:19:44 pm
So it has to do something with the lighting...strange, but at least something to build upon...thanks for testing, i'll see what i can do to fix this by doing more shots in the dark... ;)
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 02:25:38 pm
Thanks to you, at least I can work with this version now.
Until you changed some things :)

I've other lessons now, so I might not be available next few hours, but continue asking for tests, I'll try to do it asap.

Best regards :)
Title: Re: First alpha version released
Post by: EgonOlsen on March 24, 2010, 02:34:37 pm
Texture colors on the trees look a bit strange too. Like some little-/big-endian problem with swapped color channels. If you experience some other problems with texture colors, please let me know.
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 08:16:01 pm
I don't know, but you are probably right, I was thinking this was due to the missing light.
But apparently not.
I'm blind color so between green and brown I do have some difficulties to see the differences.

But my classmate told me that you're true about colors.

*Edit:
I tested on the samsung spica and the it's really slow ! ~6fps.
Quite impressive to see the difference.
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 08:57:27 pm
I'm sorry but I said something wrong.

gl.glEnable(GL10.GL_COLOR_MATERIAL); is not needed.
But if you remove world.setRGBScale(World.RGB_SCALE_2X); only it does work with lights activated :)
!!!  Apparently setRGBScale has no effect on the emulator, but it does do something in my mobile.
I'm sorry that I send you in the wrong way, my tests were incomplete.

*Screen available and code too.
I don't know if you added what I added right after the framebuffer instation. But probably yes :)
Anyway if so, don't take care to it.

I tried the code without that too.




[attachment deleted by admin]
Title: Re: First alpha version released
Post by: EgonOlsen on March 24, 2010, 09:39:34 pm
Cool! I'll remove the support for RGB-Scaling then. It doesn't work on my phone anyway...but it doesn't harm. However, it does seem to harm on your device, so i'll turn it off and hide the setting for now.

To summarize: It's all fine like it is, you just have to remove the call to setRGBScale, correct?

I'm currently working on support for 4bpp textures (are always 8bpp right now) and cleanup some things. I'll upload a new version when done.

I'm impressed with the performance of your phone. What was it again? The Spica doesn't have a GPU as far i know, so it should be using Android's software renderer (just like the emulator). The gl renderer in the log should be something like "pixelflinger" in that case.

BTW: Don't worry about being color blind when doing graphics coding. Years ago, i had a mail discussion with someone about how to implement gouraud shading correctly in a software renderer and that guy was blind. Which didn't prevent him from implementing it...i never understood how he did that...

Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 10:13:37 pm
Nice :) I'm waiting for it !

Yes apparently it's correct removing RGB scaling is enough to make it work.

Code: [Select]
03-24 22:08:50.768: INFO/jPCT-AE(8550): OpenGL vendor:     Samsung Electronics
03-24 22:08:50.768: INFO/jPCT-AE(8550): OpenGL renderer:   FIMG
03-24 22:08:50.768: INFO/jPCT-AE(8550): OpenGL version:    1.1 (lib version 11.02.72)
03-24 22:08:50.768: INFO/jPCT-AE(8550): OpenGL renderer initialized (using 2 texture stages)
With this phone I only get 5-8 fps.

Nice story hehe :P I don't have much troubles with colors etc, except when someone ask me what color something is :P
Most of the time I'm wrong ^^
Title: Re: First alpha version released
Post by: EgonOlsen on March 24, 2010, 10:23:04 pm
OpenGL vendor is Samsung and renderer is...FIMG?...oh boy, why does every phone has to be different? Anyway, looks very much like a software renderer too me judging from the performance. My "big" Samsung Galaxy with a slower cpu than the Spica runs the demo @ around 27fps. Maybe they have written their own software renderer or just renamed pixelflinger. Any message like "generated scanline_..." in the log? That's what pixelflinger prints out when creating assembler code on the fly for optimized scanline renderers.

I've updated the jar, the docs and the demo (but not the demo's sources). Could you give the new demo a try to see if it works (it's using 4bpp textures now, which increases performance on my phone slightly)?

Thank you for your efforts, i really appreciate them. Without you doing these tests, i would never had the chance to figure this out.
Title: Re: First alpha version released
Post by: dl.zerocool on March 24, 2010, 10:39:58 pm
No no message like "generated scanline..." so it's probably something else.
Code: [Select]
03-24 22:28:45.403: INFO/(8731): EGL_VENDOR     : HUONE
03-24 22:28:45.403: INFO/(8731): EGL_VERSION    : 1.3
03-24 22:28:45.403: INFO/(8731): EGL_EXTENSIONS :no extension
03-24 22:28:45.403: INFO/(8731): EGL_CLIENT_APIS: OpenVG OpenGL_ES
03-24 22:28:45.683: INFO/ActivityManager(1846): Displayed activity com.test.test/.test: 1090 ms
03-24 22:28:45.908: INFO/dalvikvm-heap(8731): Grow heap (frag case) to 3.632MB for 263188-byte allocation
03-24 22:28:46.033: INFO/jPCT-AE(8731): Loading Texture...
03-24 22:28:46.093: INFO/jPCT-AE(8731): Loading Texture...
03-24 22:28:46.128: INFO/jPCT-AE(8731): Loading Texture...
03-24 22:28:46.268: INFO/jPCT-AE(8731): Loading Texture...
03-24 22:28:46.378: INFO/jPCT-AE(8731): Loading Texture...
03-24 22:28:46.508: INFO/jPCT-AE(8731): Loading Texture...
03-24 22:28:46.913: INFO/jPCT-AE(8731): Adding Lightsource: 0
03-24 22:28:46.933: INFO/jPCT-AE(8731): OpenGL vendor:     Samsung Electronics
03-24 22:28:46.938: INFO/jPCT-AE(8731): OpenGL renderer:   FIMG
03-24 22:28:46.938: INFO/jPCT-AE(8731): OpenGL version:    1.1 (lib version 11.02.72)
03-24 22:28:46.938: INFO/jPCT-AE(8731): OpenGL renderer initialized (using 2 texture stages)
03-24 22:28:47.428: INFO/jPCT-AE(8731): Subobject of object 0/plane compiled using 2400 vertices in 345ms!
03-24 22:28:47.428: INFO/jPCT-AE(8731): Object 0/plane compiled to 1 subobjects in 485ms!
03-24 22:28:47.563: INFO/jPCT-AE(8731): Subobject of object 2/tree1 compiled using 690 vertices in 99ms!
03-24 22:28:47.563: INFO/jPCT-AE(8731): Object 2/tree1 compiled to 1 subobjects in 132ms!
03-24 22:28:47.598: INFO/ActivityManager(1846): Process com.dlcideas.ARescue (pid 8550) has died.
03-24 22:28:47.733: INFO/jPCT-AE(8731): Subobject of object 3/tree2 compiled using 690 vertices in 91ms!
03-24 22:28:47.733: INFO/jPCT-AE(8731): Object 3/tree2 compiled to 1 subobjects in 123ms!
03-24 22:28:47.783: INFO/jPCT-AE(8731): Subobject of object 4/grass compiled using 264 vertices in 37ms!
03-24 22:28:47.788: INFO/jPCT-AE(8731): Object 4/grass compiled to 1 subobjects in 52ms!
03-24 22:28:47.803: INFO/jPCT-AE(8731): Subobject of object 1/rock compiled using 84 vertices in 12ms!
03-24 22:28:47.808: INFO/jPCT-AE(8731): Object 1/rock compiled to 1 subobjects in 18ms!
03-24 22:28:47.943: INFO/dalvikvm-heap(8731): Grow heap (frag case) to 4.548MB for 262160-byte allocation
03-24 22:28:48.293: ERROR/(8731): Post fs attach shader: GL_INVALID_VALUE

I just tested the new demo with the Spica  there's an improvement from 5-8fps to 8 -10fps
With the nexus one, there's no move or perhaps just not noticeable.
ahah ^^ don't worry, I do like to help, and as I said I'm really really interested in using jpct in our school project.

We don't have time to build our own 3D engine with model loaders etc. So we do have to work with a base that it's already done.
And I thank you a lot for making this option possible to us.
Title: Re: First alpha version released
Post by: dl.zerocool on March 25, 2010, 06:14:25 pm
Hello,

I would like to set the background to transparent (clear with transparency) my scene is it that possible ?
So I would be able to see a normal surfaceview (with another infos) trough my glsurfaceview.

I'm sorry to ask such a basic information ^^

Thank you in advance.
Title: Re: First alpha version released
Post by: EgonOlsen on March 25, 2010, 09:56:28 pm
I've updated the jar with a version that uses the alpha value of a RGBColor (if assigned) when clearing the frame buffer. No idea, if this helps somehow... ???
Title: Re: First alpha version released
Post by: dl.zerocool on March 26, 2010, 02:46:05 am
Perfect ! :) That's exactly what I needed.

Thank you so much :P It does work ! ^^

I could get transparency, with the fb and correct alpha I also changed my layout and set a background color to it.
Really nice!

Best regards.
----------------------------------------------
EDIT : color to layout is not needed.

Why do I use your alpha and color to fb.clear ?
Because behind my scene I use the camera, and I can apply filters to the camera view by applying filters on the clear.
like a color and an alpha value that I like.

So it's quite easy to set reduce brightness etc on the screen by this way, without modifying the picture or modifying the camera properties.

Thank you so much, I spend all the day doing this but well, since your clear always covered mines with black XD

I added a small screenshot with your demo scene and the camera behind :P

[attachment deleted by admin]
Title: Re: First alpha version released
Post by: EgonOlsen on March 26, 2010, 08:10:17 am
Looks cool...and reminds me to get a coffee now...
Title: Re: First alpha version released
Post by: dl.zerocool on March 26, 2010, 12:43:24 pm
ahahah advertising does work finally :P
Title: Re: First alpha version released
Post by: zammbi on March 30, 2010, 02:58:12 am
A little good news about fragmentation: http://www.engadget.com/2010/03/29/exclusive-android-froyo-to-take-a-serious-shot-at-stemming-plat/
Though this doesn't help us atm.
Title: Re: First alpha version released
Post by: EgonOlsen on March 30, 2010, 07:29:33 am
However, it's unlikely that for example Samsung will update the Galaxy to anything higher than 1.6 (which still isn't officially available through NPS).
Title: Re: First alpha version released
Post by: raft on March 31, 2010, 06:42:27 pm
i've barrowed my friend's G1 for 10 days or so, and i must say all jPCT apps look very cute ;D
Title: Re: First alpha version released
Post by: raft on April 02, 2010, 02:28:55 pm
see this movie ? quake3 running on an IPhone:
http://www.youtube.com/watch?v=g64n3DylJfQ&playnext_from=TL&videos=SkGDKEWY7Iw

there are similar movies on youtube. well after seeing this, i must admit, i begun to think android games can be a dead end ::) even with a JIT they can never catch native performace. prcessing will be faster but java to native data flow will be a bottleneck i'm afraid. as we saw in animation tests..

i remember, Sun was once working an a cpu which directly executes bytecode. maybe someday google takes that way to execute dalvik bytecode and only then iphone and android can race head to head. i'm kind of pessimistic ::)
Title: Re: First alpha version released
Post by: zammbi on April 02, 2010, 03:15:06 pm
There is a few videos of quake 3 running on android like so:

http://www.youtube.com/watch?v=q9Xaz7ECI4M

Though its probably mostly native...
Title: Re: First alpha version released
Post by: zammbi on April 02, 2010, 03:20:19 pm
Found this:
http://code.google.com/p/kwaak3/

99.9% native code  :-\
Title: Re: First alpha version released
Post by: EgonOlsen on April 02, 2010, 03:27:14 pm
Can't see the videos right now, because this phone's youtube player can't play anything but old videos. However, a 1 Ghz cpu, a fpu and a jit should give us pretty good performance. At the moment, Suckvik is the major problem IMHO. But i hope that this will improve. I like this phone, but if i compare the gui and navigation feel with even the IPhone 2, IPhone wipes the floor with Android. However, the hardware is pretty similar, so there has to be room for improvement...
Title: Re: First alpha version released
Post by: dl.zerocool on April 02, 2010, 04:12:14 pm
Yes atm there's room for improvement.
But what I read this last days about the android platform is that it hasn't been compiled with the last gcc,
so it doesn't include neon floating-point optimization.

Another thing that I read is that OpenglES does allow to work in fixed points instead of floating points.
So here is a big big difference between the iPhone and the Android, even if of course the nexus as exemple has twice pixels.
(even if in the test he said that he changed the viewport... I don't think android os allows you to do that, it will just ignore and
render graphics like it was in the all surface).

I do know some features still have to be in floating points, but why meshes and animation couldn't be used as fixed points ?

On http://code.google.com/p/kwaak3/ you can see that they do have 2 version with and without neon-float (which I don't understand since you have to recompile the os to be able to use this feature, and it will only work with the latest ndk + an linux-android kernel build with neon optimization).
As far as I understood what I've read.
Using VBO's (OpenglES 1.1) so not supported by all devices, apparently will give a performance boost too.

Perhaps you're true saying that android phones aren't ready for real gaming... Even I don't want to trust it.
But at the moment if you dev on an iPhone you know what is possible and is not.
Hope this will change soon !

Well anyway, I'm pretty sure too that google need to work on this and that there's a lot of room for improvement behind the scene.
Android os have a lot to improve, it's a great os but performance have to be improved.
it should restrict phone vendors to a min GPU,CPU,RAM requirement for example...
I really would like to help, but I'm quite missing time, so just let me know if you have improve something I'll test asap.

Here is some links that I've read.
Floating points on android.
http://www.anddev.org/good_fixed_point_math_libraries-t6714.html
Apparently there's good devs around this web site, and providing help.
Perhaps opening some discussion with them can make things improve like for this guy :
http://www.anddev.org/opengl_es_performance_problems-t12194.html

Best regards.

Title: Re: First alpha version released
Post by: EgonOlsen on April 02, 2010, 04:33:22 pm
AE already supports VBOs. You can enable them in Config. I've disabled them by default, because the performance gain was 0.0 on my phone and you bind the geometry to the gl context, which is bad for orientation changes.
I did some tests with fixed point and it wasn't worth it imho.
Title: Re: First alpha version released
Post by: EgonOlsen on April 02, 2010, 05:32:47 pm
well after seeing this, i must admit, i begun to think android games can be a dead end ::)
I've installed a lot of games on my phones to get some ideas especially regarding the controls (99% of them sucked btw.). Most of them were 2D anyway (maybe around 95%). Those that used 3D graphics, usually didn't use much (if any) animation....like racing games. I also watched a video of a polished looking sci-fi shooter...the only thing animated there was the boss enemy. And even that looked pretty basic.
Look at the neocore demo...it looks pretty neat, but you don't find one single animation expect for sub-object translations and rotations.
To simplify this: Game objects in Android games are either balls (70%), cars (20%) or robots (10%), because they don't require complex animations. I want to code some game for Android, i just have no idea what. But i've already decided what my game objects will look like: Ball-like robots without any animation (in fact, i'm going to reuse the models from Paradroidz (R.I.P.)).
Title: Re: First alpha version released
Post by: raft on April 02, 2010, 06:24:36 pm
quake3 was using skeletal animation if i remember correctly. it runs ok
Title: Re: First alpha version released
Post by: dl.zerocool on April 02, 2010, 06:35:47 pm
I'll try enabling VBO to see if there's any change on my phone (since I'm always on landscape mode, I don't care about that problem)
Title: Re: First alpha version released
Post by: EgonOlsen on April 02, 2010, 06:40:37 pm
quake3 was using skeletal animation if i remember correctly. it runs ok
No, md3 is still keyframed. But it seperated the model into sub-parts (head, torso,...) and maybe there was a basic skeleton to connect those parts, but the actual animation was keyframed.
Title: Re: First alpha version released
Post by: raft on April 02, 2010, 06:58:04 pm
mm, you are right. but still there is animation and it performs quite well ;)

i've just discovered we can profile Android apps within Eclipse ;D i'm not good at reading profiling results, but seems as with animation most of the time is spent in nio buffer operations.  if i got it correct, once direct nio buffers are filled, it's only passing a pointer to native code. so i suppose you are right, JIT can dramatically reduce time of passing data to native code ;D
Title: Re: First alpha version released
Post by: EgonOlsen on April 02, 2010, 10:43:45 pm
....i hope so.

I didn't know that you can profile Android apps with Eclipse. Do i have to install something or does this work with the Android plugin for Eclipse out of the box?
Title: Re: First alpha version released
Post by: raft on April 02, 2010, 10:52:41 pm
just out of the box ;D make android|devices view visible and you will see profiling option. seems as only available with actual devices..
Title: Re: First alpha version released
Post by: zammbi on April 12, 2010, 10:27:55 am
Finally got my Milestone :)

Installed the sample on the download page works great.

36-56 fps
Av 50fps.
Title: Re: First alpha version released
Post by: EgonOlsen on April 12, 2010, 12:55:04 pm
Not bad. Have you tried raft's bones example too?
Title: Re: First alpha version released
Post by: EgonOlsen on April 12, 2010, 11:36:23 pm
Finally got my Milestone :)
Which Android version is that? 2.0 or 2.1?
Title: Re: First alpha version released
Post by: zammbi on April 12, 2010, 11:57:26 pm
2.0. This version of the milestone does not have the 2.1 update yet.
Title: Re: First alpha version released
Post by: zammbi on May 12, 2010, 02:50:21 pm
Seems some good news in 2.2: http://www.androidpolice.com/2010/05/11/exclusive-androidpolice-coms-nexus-one-is-running-android-2-2-froyo-how-fast-is-it-compared-to-2-1-oh-only-about-450-faster/
Title: Re: First alpha version released
Post by: EgonOlsen on May 12, 2010, 04:21:47 pm
Their server seems to run on 2.2 too...it's faster than the database:

Code: [Select]
Error establishing a database connection

 :'(

Title: Re: First alpha version released
Post by: zammbi on May 12, 2010, 05:02:28 pm
Working fine for me atm.
Title: Re: First alpha version released
Post by: EgonOlsen on May 12, 2010, 05:22:44 pm
Yep, works fine now.   ;D
Title: Re: First alpha version released
Post by: EgonOlsen on May 12, 2010, 05:36:04 pm
Results look promising. However, older phones like mine will never see an official update to 2.2. So you either have to drop support for them or still limit yourself to something that works reasonable well on these devices.
Title: Re: First alpha version released
Post by: zammbi on May 12, 2010, 06:19:43 pm
Yeah true. Though a lot of phones are getting the 2.1 update which is slowly being handed out. Droid Eris for this week. I got mine a few weeks back.
So it will also take a while for 2.2 to be handed around.

2.1 is spreading to the masses(32.4%) but the current stat's still show a lot on 1.5/1.6 however: http://developer.android.com/resources/dashboard/platform-versions.html

Title: Re: First alpha version released
Post by: fir3d on May 13, 2010, 01:05:09 am
I heard that 2.2 was supposed to end the fragmentation and bring most of the phones up to speed. No idea but nexus one is safe for sure  ;D
Title: Re: First alpha version released
Post by: zammbi on May 13, 2010, 02:26:42 am
Quote
I heard that 2.2 was supposed to end the fragmentation and bring most of the phones up to speed. No idea but nexus one is safe for sure 
That was 2.1. Flash wont support a number of the older phones specs so 2.2 may be limited(it would give them a the reason to limit it).

Quote
No idea but nexus one is safe for sure
I wouldn't be surprised if it was the first phone to get the update heh.
Title: Re: First alpha version released
Post by: raft on May 20, 2010, 05:41:58 pm
Results look promising. However, older phones like mine will never see an official update to 2.2. So you either have to drop support for them or still limit yourself to something that works reasonable well on these devices.
may not be the actual case. it's written in this post (http://www.androidpolice.com/2010/05/20/google-devs-android-2-2-froyo-upgrades-technically-possible-on-every-phone-on-the-market-even-the-g1-google-io-blitz-coverage-day-1/) that Froyo upgrades are technically possible for every phone on market ;D but of course it also depends on the carriers and the manufacturers to package up and offer the Froyo updates to their customers..
Title: Re: First alpha version released
Post by: zammbi on May 20, 2010, 07:25:37 pm
I been watching the live Google IO videos (http://www.youtube.com/GoogleDevelopers), looks like 2.2 is going to be great: http://www.androidpolice.com/2010/05/20/exclusive-new-android-2-2-features-exposed-update-all-auto-update-apps-speed-boost-tethering-flash-color-trackball-car-dock-improvements-with-pics/
http://developer.android.com/sdk/android-2.2-highlights.html

The Javascript test, Android vs the iPad was quite funny.

Edit:
Looks like HTC has good support: http://www.androidcentral.com/most-2010-htc-android-phones-will-get-froyo-2010
Title: Re: First alpha version released
Post by: EgonOlsen on May 20, 2010, 08:23:43 pm
may not be the actual case. it's written in this post (http://www.androidpolice.com/2010/05/20/google-devs-android-2-2-froyo-upgrades-technically-possible-on-every-phone-on-the-market-even-the-g1-google-io-blitz-coverage-day-1/) that Froyo upgrades are technically possible for every phone on market ;D but of course it also depends on the carriers and the manufacturers to package up and offer the Froyo updates to their customers..
...which Samsung won't do for the Galaxy. They didn't even manage to make 1.6 official albeit there are unofficial roms made by Samsung available. Of course you can flash it on your own with some hacked version, but i actually want to use that phone and i don't want to convert it to a piece of junk by accident...
Title: Re: First alpha version released
Post by: EgonOlsen on May 23, 2010, 10:31:35 pm
2.2 is out for the Nexus one...can't wait to see some numbers...anyone!?
Title: Re: First alpha version released
Post by: dl.zerocool on May 26, 2010, 01:04:23 am
I'm on 2.2.

Tell me what to test and I'll post the results.
Title: Re: First alpha version released
Post by: raft on May 26, 2010, 01:13:16 am
i really wonder how bones will perform on 2.2. apk url (http://www.aptalkarga.com/bones/Bones-Android-Ninja.apk) is the same
Title: Re: First alpha version released
Post by: dl.zerocool on May 26, 2010, 01:22:44 am
(My nexus one is not overclocked, stock 2.2, just rooted)
Nexus one froyo 2.2 :
Bones test results :
- No animation 1 model
60
- Animation 1 model
~(depend on the selected animation)40fps -> 60 after a second(do not depend on the animation all of them go to 60 after a second).

- No animation 2 models
56-60
- Animation 2 models
~36->55 after a second

- No animation 8 models
42-44 ~

- Animation 8 models
17-25  (depends on the animation)


Rotating arround the models don't change too much the results (1-2fps)
Title: Re: First alpha version released
Post by: raft on May 26, 2010, 01:28:41 am
wow :o compared to previous results (http://www.jpct.net/forum2/index.php/topic,1503.msg11356.html#msg11356) you posted for nexus one, animation with 8 models boosted from 5 to 17-25 fps ;D

thanks, that's promising :D
Title: Re: First alpha version released
Post by: dl.zerocool on May 26, 2010, 09:50:24 am
Yes that's a nice improvement :)
Title: Re: First alpha version released
Post by: EgonOlsen on May 26, 2010, 01:39:00 pm
wow :o compared to previous results (http://www.jpct.net/forum2/index.php/topic,1503.msg11356.html#msg11356) you posted for nexus one, animation with 8 models boosted from 5 to 17-25 fps ;D

thanks, that's promising :D
But weren't those 5 fps taken from a version that used a slower version of AE?
Title: Re: First alpha version released
Post by: dl.zerocool on May 26, 2010, 01:47:41 pm
he said that the bones apk is already the same I don't think he changed the Jpct-AE did he ?
Title: Re: First alpha version released
Post by: EgonOlsen on May 26, 2010, 02:42:56 pm
The url is the same, not necessarily the apk's content. I made some improvements regarding animations in mid-april IIRC and i don't think that your first benchmark reflects this. Anyway, performance is pretty good now, it doesn't matter in the end... ;D
Title: Re: First alpha version released
Post by: raft on May 26, 2010, 05:40:37 pm
Quote from: EgonOlsen
But weren't those 5 fps taken from a version that used a slower version of AE?
maybe, not sure ::) zero cool posted it at april first
Title: Re: First alpha version released
Post by: raft on July 28, 2010, 11:01:48 pm
wow :o compared to previous results (http://www.jpct.net/forum2/index.php/topic,1503.msg11356.html#msg11356) you posted for nexus one, animation with 8 models boosted from 5 to 17-25 fps ;D

thanks, that's promising :D
But weren't those 5 fps taken from a version that used a slower version of AE?
i've re-run bones demo on stock (2.1) Nexus One: 10 fps with 8 animated models
5 to 10: jPCT's internal improvement ;D
10 to 17-25 JIT thing
Title: Re: First alpha version released
Post by: EgonOlsen on July 28, 2010, 11:07:38 pm
Nice to see these results. For the An3DBench benchmark, the JIT actually doesn't help much...but for bones, it really seems to help.