deniz Posted May 18, 2011 Share Posted May 18, 2011 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 Quote Link to comment Share on other sites More sharing options...
Canardia Posted May 18, 2011 Share Posted May 18, 2011 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. Quote ■ Ryzen 9 ■ RX 6800M ■ 16GB ■ XF8 ■ Windows 11 ■ ■ Ultra ■ LE 2.5 ■ 3DWS 5.6 ■ Reaper ■ C/C++ ■ C# ■ Fortran 2008 ■ Story ■ ■ Homepage: https://canardia.com ■ Link to comment Share on other sites More sharing options...
Josh Posted May 18, 2011 Share Posted May 18, 2011 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. Quote 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 More sharing options...
deniz Posted May 22, 2011 Author Share Posted May 22, 2011 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 Quote Link to comment Share on other sites More sharing options...
deniz Posted May 22, 2011 Author Share Posted May 22, 2011 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.