\chapter{Conclusions and Future Work}\label{ch7}

\section{Conclusions}\label{sec:Conclusions}

We have seen that Sandstorm has met all of its design goals listed in Chapter 4,
the ability to use a vector field to `guide' particles along predetermined paths.
We can use this ability not only to guide particles according to a simulated helicopter downdraft model, but it can also be used to visualize many other atmospheric or visual phenomena.
Such phenomenon could be, but are not limited to tornados, hurricanes, wind fields, and even fires.

We have also seen that Sandstorm has the ability to run in a multi-contextual environment.
While running in the multi-contextual environment described in Chapter 6, the performance was not as great as it was on a single context.
This can be attributed to the fact that the shared memory machine that Sandstorm was run on only had two graphics cards, forcing two screens to share one graphics card.
The Future Work section below describes some possible areas of optimization for Sandstorm.

Other design goals that were listed in Chapter 4 and that Sandstorm has met are as follows.
Sandstorm is a particle system that has the ability to create a visual representation of phenomenon such as dust clouds.
Sandstorm has the ability to change attributes such as emission area, rate, lifetime, and maximum number of particles.
Sandstorm utilizes GPU-offloading to update and render particles.
Sandstorm can update and render above 100,000 particles in such an environment, currently above 300,00 particles.

So we have seen that Sandstorm is capable of creating such atmospheric phenomena as dust clouds, and that Sandstorm can use observed and simulated scientific data to guide the particles according to the data.
We can now consider Sandstorm for use in both scientific and training applications that focus on helicopter-desert environment interaction.
Such applications would help the user to understand the interaction between helicopter and desert environments.
Hopefully, such understanding will decrease the number of helicopter crashes and deaths cause by the aforementioned interaction. 

\section{Future Work}\label{sec:future}

Considering that Sandstorm is currently just a prototype there are many things that can be done to increase the quality of the system.

The first item to address is that the current Sandstorm has areas that can use a bit of optimization.
Currently, both emitters and particles reside in the same buffer objects, causing the shaders that use these buffers to contain branching.
Branching in a shader can be computationally expensive, therefore it might be better to separate emitters and particles into different buffers.
Another thing about the current Sandstorm is that the size of the buffers are currently of static size and do not dynamically increase or decrease in size.
Instead of using a soft maximum amount of particles to create a pseudo-dynamic size, it might be beneficial to create a dynamic sized buffer.
These dynamic sized buffers will definitely increase speed when the amount of particle is small, but they might not help at all as the size of the buffers reach large numbers.

Other features that can be added to Sandstorm to increase the quality of the system are as follows:
\begin{itemize}\item Collisions between particles and static objects can also be implemented. Such a static object would be the terrain in the sample application, a method for this can be found in ~\cite{kipfer04:uber}.\end{itemize}
\begin{itemize}\item Collisions between dynamic objects, such as the helicopter and the particles, could be added to Sandstorm. This would require a voxelization of dynamic objects described in ~\cite{voxel}.\end{itemize}
\begin{itemize}\item Soft particles could be added to Sandstorm to allow for more realistic looking particles ~\cite{sofparticles}.\end{itemize}
\begin{itemize}\item Motion Blur is another effect that could be added to make the particles look more verisimilar ~\cite{motion_blur}.\end{itemize}
\begin{itemize}\item Light Scattering could be used to give the illusion that particles are blocking out light ~\cite{light_scatter}.\end{itemize}
\begin{itemize}\item Finally, a shader based physics model could be implemented to allow users of the system to change the behavior of the particles without having to recompile.\end{itemize}

Other improvements that can supplement Sandstorm are the creation of a vector field simulator and a vector field creator/editor.
A vector field simulator could be created to feed Sandstorm dynamically changing vector fields so that the particle motion acts more natural.
A vector field creator/editor can be created to help scientists visualize vector fields before they are used in Sandstorm.
This application could also be developed for a 3D virtual reality environment and is also currently designed and being implemented.
