Since i started to work on shaders in late 2008, i found many interesting possibilities offered by the GPU in terms of realtime complex geometry management.Starting from simple particle symulations i tried to apply common principles (like realtime texture generation) in new ways, such as generating and controlling high density meshes.
This research gave me all the instruments i needed to build the graphic world of projects like Genesi , Les Objets Impossibles , Partitura .
I published my shader library as a contribution to the community of vvvv, the programming environment i use.
I published my shader library as a contribution to the community of vvvv, the programming environment i use.
Pipes
After playing a bit with simple GPU particles i tried to use GPU power to control complex geometries.
Once i found a way to put all data i needed in a realtime generated float texture, i could use it to splite and place the vertices of a precomputed mesh containing all the pipes; this avoid the famous draw call bottleneck of the GPU, since all the elements are a single mesh and they are called just once.
The main thing is just to generate a control texture using any algorithm (that will describe the final behaviour of the mesh) and feed the shader that draw the geometry.
Here i used verlet integration algorithm to generate floating tubes behaviour:
Here i used verlet integration algorithm to generate floating tubes behaviour:
Another example of texture control generation: spring simulation
another funky behaviour: queue
you just need to drive the head of the pipe and write new segment each frame.
you just need to drive the head of the pipe and write new segment each frame.
Looking for b-spline smooth tubes i came up with this behaviour, that allow to extrude the pipe along a given path
Evolving this principle i build the spline elements you can see in partitura project
Here some Partitura tests during a development session (august 2011 ):