Changed how rendering works and optimized volume renderer

Now, instead of passing a view and projection matrix, a camera interface
is passed that can retrieve those matrices alongside with a lot of other
useful data