gacamp
01-12-2013 22:43:07
I've been looking at improving the performance of HydraX.
I've basically taken these steps:-
1) Start with the community hydrax project:
viewtopic.php?f=20&t=29704
2) Add the available performance fixes:
viewtopic.php?f=20&t=13510
3) Thread the calculation performed in the projected grid module:
viewtopic.php?f=20&t=11691
4) Optimize loops where possible
These changes have given mixed improvements (these figures are using the default settings with non-GPU processing on a relatively fast CPU/GPU) :-
102 FPS baseline with none of the above changes made.
987 FPS when camera is static
175 FPS when camera is moving
As the above figures show the performance gain for a static (non-moving camera) is considerable (9x). However when the camera is moving the frame rate drops (1.7x). This is due to how much recalculation of the projected grid is required when the camera moves.
I may be able to increase this frame rate a little by using camera listeners to start the recalculation as soon as the frame starts rather than when Hydrax gets notified. However, I am wondering if there is a reasonable way of altering the projected grid algorithm for camera movement (adding skirts perhaps). Or if the best approach is actually to write a less efficient but easier to thread geo-mipmap module for Hydrax.
Any thoughts/musings welcome...
I've basically taken these steps:-
1) Start with the community hydrax project:
viewtopic.php?f=20&t=29704
2) Add the available performance fixes:
viewtopic.php?f=20&t=13510
3) Thread the calculation performed in the projected grid module:
viewtopic.php?f=20&t=11691
4) Optimize loops where possible
These changes have given mixed improvements (these figures are using the default settings with non-GPU processing on a relatively fast CPU/GPU) :-
102 FPS baseline with none of the above changes made.
987 FPS when camera is static
175 FPS when camera is moving
As the above figures show the performance gain for a static (non-moving camera) is considerable (9x). However when the camera is moving the frame rate drops (1.7x). This is due to how much recalculation of the projected grid is required when the camera moves.
I may be able to increase this frame rate a little by using camera listeners to start the recalculation as soon as the frame starts rather than when Hydrax gets notified. However, I am wondering if there is a reasonable way of altering the projected grid algorithm for camera movement (adding skirts perhaps). Or if the best approach is actually to write a less efficient but easier to thread geo-mipmap module for Hydrax.
Any thoughts/musings welcome...