title: Operations on complex numbers in vertex shader
body: <p>I am developing a hyperbolic graph for visualizing trees with a large amount of nodes. That's why I am using WebGL, and the ThreeJS library, in order to enhance performance. You can check what I have developed until now here: <a href="http://hyperbrowser.herokuapp.com/" rel="nofollow noreferrer">http://hyperbrowser.herokuapp.com/</a>. The idea is to be able to interact with the graph: clicking a node centers the graph in this node, and dragging and dropping the mouse moves the graph around.</p>
  
  <p>I have been able to display up to 100.000 nodes. But when you drag and drop with such a big amount of nodes, performance drops down. I think that is because now I am doing all the operations with JavaScript itself, and then update the vertices position of my THREE.PointCloud.</p>
  
  <p>After making some research I came up with the idea of performing the operations in the Vertex Shader, directly to the vertices itself. And passing the parameters for the specific transformations in either uniforms or attributes. I think this seems viable, thus I want to ask:</p>
  
  <ul>
  <li>Whether this is the proper approach or not</li>
  <li><del>And in case it is, since the transformations I am applying are functions with complex numbers, is there a way to perform this operations in the shaders itself?</del>
  The way is just making the math transformations: <a href="https://github.com/julesb/glsl-util" rel="nofollow noreferrer">https://github.com/julesb/glsl-util</a></li>
  </ul>
  
  <p>All the code is in <a href="https://github.com/vabada/hyperBrowser/" rel="nofollow noreferrer">https://github.com/vabada/hyperBrowser/</a> in case you want to see how I am performing any specific operations. Of course any tips, ideas and advice are more than welcome.</p>