Jump to content

significant performance drop when using many particles


deniz
 Share

Recommended Posts

Hi everyone,

 

I have a problem related to the performance of particles. as part of our simulation visualization, we want to implement weather conditions using particles (rain, snow etc). Due to the specifications we need a large number of particles. When performing rendering using RenderFramework(), I do not experience a significant performance drop with 10k particles, but with 50k particles I get a huge performance drop and I could not find out its reason.. any suggestions?

 

thanks in advance :)

Link to comment
Share on other sites

Particles don't work very well with rain and snow, because they go through ceilings of buildings.

I have made a raycast based rain and snow class.

It works so that it rains 3D raindrop meshes only near the player, since he can't see any difference anyway if it rains everywhere since his screen is full of rain or snow. The raycasts are done only once when the particle appears high in the sky, and the height of the raycast is remembered, and when the raycast height was reached (also using spear logic, so it checks if the next step would be inside the building), then the particle is positioned high up again and a new raycast is done.

Ryzen 9 RX 6800M ■ 16GB XF8 Windows 11 ■
Ultra ■ LE 2.53DWS 5.6  Reaper ■ C/C++ C# ■ Fortran 2008 ■ Story ■
■ Homepage: https://canardia.com ■

Link to comment
Share on other sites

Hi everyone,

 

I have a problem related to the performance of particles. as part of our simulation visualization, we want to implement weather conditions using particles (rain, snow etc). Due to the specifications we need a large number of particles. When performing rendering using RenderFramework(), I do not experience a significant performance drop with 10k particles, but with 50k particles I get a huge performance drop and I could not find out its reason.. any suggestions?

 

thanks in advance :)

Why not make the emitter follow the camera around and use a smaller number of particles? You won't even see most of those if they are far away.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

Why not make the emitter follow the camera around and use a smaller number of particles? You won't even see most of those if they are far away.

 

Hi Josh,

 

I have already done what you suggested.

The reason I tried 50k particles is that I needed a denser rain/snow.

As a comparison I implemented a method on my own in OpenGL where I could run 40k particles at a fixed 60 fps (with vsynch on) on an nvidia 9500gt

I pushed it as far as to run 1 million particles at 34 fps on the same gpu ;)

here is the video: http://www.youtube.com/watch?v=a_hAw7vkF8o

 

so I think 40k particles should not a problem at the slightest.

BTW I get the fps drop in LE even after having disabled all effects (pure rendering, not even lights)

I thought if this was related to rendering of individual particles, but the same drop continued even when the particles were not visible (outside of the view-frustum)

so I need some help here :)

Link to comment
Share on other sites

Particles don't work very well with rain and snow, because they go through ceilings of buildings.

I have made a raycast based rain and snow class.

It works so that it rains 3D raindrop meshes only near the player, since he can't see any difference anyway if it rains everywhere since his screen is full of rain or snow. The raycasts are done only once when the particle appears high in the sky, and the height of the raycast is remembered, and when the raycast height was reached (also using spear logic, so it checks if the next step would be inside the building), then the particle is positioned high up again and a new raycast is done.

 

Hi Lumooja,

 

thanks for your answer..

So correct me if I did not understand your method correctly:

you probably use individual entities (mesh objects) to define your own particles (not LE-particles).

Because otherwise you could not assign unique life-times to each particle, since all particles originating from a single emitter have the same life-span.

 

how do you draw the particles?

as billboards (point-sprites) or did you define your own custom geometry?

 

thanks ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...