batched point sprites benchmark

BlitzMax Forums/BlitzMax Programming/batched point sprites benchmark

dmaz(Posted 2008) [#1]
I'd like to compare the cards/machines from MGE and Grey's thread with this executable here.
http://www.ooeyug.com/files/pstest.exe

ok I expected more of a difference. I'm no opengl expert but point sprites -seem- pretty easy. I may be doing something wrong. the code below won't compile since I used some of my util includes... just remove that code if you want to modify.

my results (fast computer/card)
GL 2.0
1
63
4024 DrawPointSprites
3450 DrawImage

this test doesn't have any texture switching... maybe it's just not worth it on my card.... oh alphablended point sprites seem to do almost the same as DrawImage on my card.



MGE(Posted 2008) [#2]
GL 1.3
1.0
256.0

PointSprites: Nothing rendered.
DrawImage: 54fps
GPU: Intel 82845G on Celeron 2.93ghz


Grey Alien(Posted 2008) [#3]
Gl 2.0
1.0
8192.0

Not sure which mode is which, but when it says [S]DrawPointSprite I get 2500FPS and when it says [S]DrawImage I get 1500FPS.

CPU: P4 3.2GHz XP SP2
GPU: Radeon HD 2600XT AGP 512MB GDDR3


dmaz(Posted 2008) [#4]
@MGE, that's funny, 1.3 is supposed to have point sprites. I'll make a change in the code when I get home tonight. is that a pretty old driver on that machine?

my work machine
GL 1.4
1.0
255.0

220 drawpointsprite
159 drawimage

CPU: intel 1.59GHz
GPU: intel 9466GZ onboard


slenkar(Posted 2008) [#5]
GL 1.3
1.0
255

20FPS for pointsprites

Intel graphics


dmaz(Posted 2008) [#6]
Jeremy, nothing for DrawImage?

press the 'S' key to switch between.


slenkar(Posted 2008) [#7]
no, nothing, just pointsprites


plash(Posted 2008) [#8]
GL 2.0
1.00000000
8192.00000

[S]DrawPointSprite: 3000FPS
[S]DrawImage: 1770FPS


Muttley(Posted 2008) [#9]
GL 2.0
1
63

[S]DrawPointSprite: 3221FPS
[S]DrawImage: 2517FPS


Kurator(Posted 2008) [#10]
GL 2.0, 1, 64

Image: 4223 FPS
Point: 2750 FPS

NV GF 8800GTS, Q6600


Gabriel(Posted 2008) [#11]
You might want to put together a more technically demanding benchmark. When your FPS value are in the thousands, the numbers are too small to accurately compare. What seems like a 50% speed difference at those values, could turn out to be 10% or 500%, or it could turn out to be bang on 50%, but it would be better to know.


klepto2(Posted 2008) [#12]
i don't post any fps, because they are not accurate like Gabriel mentioned.
Here is an image of an early pointsprite particle test I've made with minib3d



As you may notice there are no textures or blending.
Also you may be able to speed it up a lot if you use VertexArrays instead of glvertex.
Next, you should never use extensions based on the GL Version. Check for the extension itself its much saver.
Unfortunatly pointsprites are not well supported on common hardware. Thats why i have dropped the mission to implement them in minib3d.
Maybe i will bring them back later ;)


slenkar(Posted 2008) [#13]
oh, I think I misunderstood the text in the demo,
The first demo doesnt show anything but after pressing S some large white dots show up


dmaz(Posted 2008) [#14]
When your FPS value are in the thousands, the numbers are too small to accurately compare.
yes on high end machines... I'm not worried about those, I get plenty of smooth action out of those. I was wondering if point sprites are worth adding to improve low end machines sprite/particle count. my work computer was 220.

Also you may be able to speed it up a lot if you use VertexArrays instead of glvertex.
ok, I'll give those a go

Next, you should never use extensions based on the GL Version. Check for the extension itself its much saver.
right, and in a proper application that's what I would do... I was more interested in what version were still being run

Unfortunatly pointsprites are not well supported on common hardware. Thats why i have dropped the mission to implement them in minib3d.
that was my fear.... maybe it's just not worth it all? though those flare screen savers that came with even the first "os x" computers make me want to think otherwise.


dmaz(Posted 2008) [#15]
@Jeremy and MGE - are your drivers pretty out of date?


MGE(Posted 2008) [#16]
2005 drivers. The latest and final for the 82845G gpu's.

To be honest, I tend to think it may not be worth it. And here's why...

If you're worrying about more eye candy for the casual market, you can never count on anything and you're probably going to have to stick with DX drivers and just support the lowest spec you can.

If you're targeting the more hardcore market, they're going to have better hardware anyway so you might as well stick to drawimage. The recent benchmark I coded is drawing 2000 32x32 drawimages per frame with alpha and lightblend sprites and the frames rates on some of those better systems are in the 100's, sometimes 200's and occasionally even higher! ;)


ImaginaryHuman(Posted 2008) [#17]
I think point sprites also have some limitation in OpenGL, something to do with the texture coordinates at the corners of the sprite having to be 0,0 through 1,1 and you can't modify it on a sprite-by-sprite basis, so you have to either have one sprite image for all point sprites, or do them in batches, or generally not be able to keep the texture from switching between image sets. It's not exactly efficient or flexible that way. I think I heard something also about not being able to rotate/scale them or something? Also in GL it requires extensions to be supported which may not be.

I think you'd be better off using normal quad images with large spritesheet textures, minimal texture swaps and vertex arrays of some kind.


dmaz(Posted 2008) [#18]
@Gabriel and klepto
When your FPS value are in the thousands, the numbers are too small to accurately compare.



yes on high end machines... I'm not worried about those, I get plenty of smooth action out of those. I was wondering if point sprites are worth adding to improve low end machines sprite/particle count. my work computer was 220.


with further testing I do see exactly what you mean... I feel kind of stupid because I knew this... I don't know what I was thinking. thanks, I'm going to try again but some new tests seems to show vertex arrays not really as fast as I was hoping?? I don't know what I should be expecting?

is %40 gain is fps when drawing 40,000 sprites (vertex array quads) good? I suppose anything is good if it's still able to run on low end hardware and vertex arrays started at 1.1 I think?

I post another that ramps up to the max number of sprites that one can display at 60fps...


slenkar(Posted 2008) [#19]
I have the latest drivers also, same hardware as MSG


dmaz(Posted 2008) [#20]
well, batching does not give great gains based on my opengl tests. I tried vertex arrays and interleaved vertex arrays with point sprites and quads. I think it just comes down to the fact that we are modifying all the vertexes each pass so the small gain over how blitz does it now doesn't seem to be worth it.