Skip to content
This repository has been archived by the owner on Apr 28, 2021. It is now read-only.

Roadmap #80

Open
SimonDanisch opened this issue Mar 24, 2016 · 18 comments
Open

Roadmap #80

SimonDanisch opened this issue Mar 24, 2016 · 18 comments

Comments

@SimonDanisch
Copy link
Member

I was wondering what I should concentrate on in the coming month to make GLVisualize a package that is pleasant to use.
I currently have this list:

  • Improve Camera
  • Add interactive Labels and Axis
  • improve sliders/buttons/checkboxes.
  • remove most daring performance bottlenecks in GLAbstraction.
  • better anti aliasing for 3D primitives
  • improve ray marcher (intersection with camera plane and remove bugs)
  • Seamless integration of OpenCL kernels for computations
  • add examples that walk you through the basic usage of GLVisualize and also some complex examples

What do you as users of GLVisualize think are the most important work items?
Does the API work out for you? Are the examples good to understand?

Best,
Simon

CC: @StreetLevel, @timholy, @Musmo, @joa-quim, @hustf, @dlfivefifty, @CarloLucibello, @kleinash @dpsanders

@musm
Copy link
Contributor

musm commented Mar 24, 2016

List looks great. I would add better transparency handling as a priority. It's pretty broken right now.

What's your opinion on the Float32. Is it not cumbersome and ugly to have to ensure all your code is using 32 floats when using gl visualize. Is the performance penalty large enough to warrant the user be explicit regarding using Float32 as opposed to Float64.

@SimonDanisch
Copy link
Member Author

Yeah transparency... That's a little more difficult to do efficiently. I can have a look at it, though!
Actually, GLVisualize already handles the conversion automatically, I just don't encourage it ;) Please report if it doesn't work for you. The overhead is only the conversion, which can be troubling for animated data.

@joa-quim
Copy link

Hi Simon,

Regarding the sliders/buttons/checkboxes item, a more general question/doubt is how GLVisualize will play with a GUI building tool. Implementing menus and buttons seams an very big task no? But without them how could we use the rendering capabilities in 3rth party GUI toolkit?

Joaquim

@SimonDanisch
Copy link
Member Author

I hope to offer a nice set of GUI elements.
But you could still integrate GLVisualize into any GUI framework which
offers an OpenGL context (e.g QT and TK), but not all of the integration
will work that nicely (best example of why it's practical to make a
visualization library good at GUI elements is probably the rotation cube
from: http://www.glvisualize.com/examples/camera/#billiard)

2016-03-25 0:28 GMT+01:00 Joaquim [email protected]:

Hi Simon,

Regarding the sliders/buttons/checkboxes item, a more general
question/doubt is how GLVisualize will play with a GUI building tool.
Implementing menus and buttons seams an very big task no? But without them
how could we use the rendering capabilities in 3rth party GUI toolkit?

Joaquim


You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
#80 (comment)

@SimonDanisch
Copy link
Member Author

Also the stuff that plotly does will be very hard to achieve without a great basis for interactive GUI's:
https://plot.ly/python/3d-parametric-plots/
I think a plotting library without this kind of interactivity would be pretty lame, so something like QT doesn't really offer a way out ;)

@joa-quim
Copy link

Ok, and to be more direct. Don't know how much you experimented with Mirone but do you think I could hope to be able to port it to Julia using only GLVisualize?

@SimonDanisch
Copy link
Member Author

I think so. Most of the things you need are items on my list as well.
Can you open a separate issue with detailed information on the functionality you need for a full port?
I'm currently brain storming a bit with @shashi to see how we can use ComputeFramework to visualize and process data sets which are to big for GPU memory...

@joa-quim
Copy link

Ok, I did that but as stated in the issue it basically consists in listing some of the handle graphics capabilities available in Matlab and common to other GUI building toolkits.
Once I start working on it I'm sure that many more details will come up.

@hustf
Copy link

hustf commented Mar 25, 2016 via email

@SimonDanisch
Copy link
Member Author

Is it a bit early to focus on OpenCL kernels for computations?

In the simplest form it should be very quick to add a few examples... It's basically already there ;)

Can we hope for more lectures, blogs or publications?

I hope! :)

Camera ...

Yeah, that's very essential. A lot of this should be straight forwad, though :)
E.g. http://www.glvisualize.com/examples/camera/#camera already shows off a lot of the functionality you'll need.

@ashleylid
Copy link

My 2c:

Improve Camera

I think this is pretty far along. I think it would be nice to have better understand now to use it though, and to see how everything works together (GLFW, GLWindow, GLVisualize, GLAbstraction etc.) So links to GL for the base calls, and the ability to step through what is attaching to what.

Add interactive Labels and Axis

I find I never use interactive stuff, but it really helps when there are simple easy to use ways to annotate your diagram, so that when you re-plot everything looks the way it should for print. Things like drawing arrows, axes, labeling, highlighting, using Latex in labels (though this is probably there already)

remove most daring performance bottlenecks in GLAbstraction.

Yup - Is this in the area of parallelizing code? Or more on how OpenGL is being used?
improve ray marcher (intersection with camera plane and remove bugs)

Seamless integration of OpenCL kernels for computations

this this talks to the above no?

add examples that walk you through the basic usage of GLVisualize and also some complex examples

yes please! but simple examples.. start basic, primitive even (mind numbingly basic), then re-write for adding things. Its great having nice colorful graphs and elegant code, but easy ways to manage, save, load data for plots is a real plus for me. I find that examples are normally really large, so its hard to see what each part is doing.

@ChrisRackauckas
Copy link
Contributor

For me, the main thing will be being able to use it through Plots.jl. As a fast backend for Plots.jl I could get a lot of use out of this. That's more on Tom's side though.

I think compatibility with Float16's may be one way to help the GPU memory problem. Recent GPUs can store and compute on Float16s directly. Maybe not necessary, but something to think about.

@ultradian
Copy link

I am going through GLVisualize, attempting to learn its components. I have found the examples most helpful, but have a hard time finding out information through the API. I believe the functions in the edit and visualize folders look quite good, but I'm still figuring out how to use them (particularly textedit_signals). Perhaps I need a lower level tutorial (or could eventually create one!).

@SimonDanisch
Copy link
Member Author

@ChrisRackauckas the Plots backend is almost finished :) The work final work just got hold up by my vacation and rebasing some branches of mine.
I think GLVisualize should support Float16 fully. If not, please open an issue!

@ultradian sorry for the mess. This is a work which is only slowly progressing! I think I will refactor the edit and visualize folders soon and will take the chance to add a few comments!
Have you checked out http://www.glvisualize.com/ ?

@ultradian
Copy link

@SimonDanisch No need to apologize. This is a large work. I find it overwhelming to just think of what GUI elements to add as everything gets so interconnected. I have gone through
http://www.glvisualize.com/, but wanted to make an input text box which led me back to the code in the visualize folder. As I said before, I found the examples helpful, although there are use cases that aren't covered which made me want to either check an API or a basic tutorial. I am new to GitHub projects, but if I can help in some way to move this forward, let me know how.

@SimonDanisch
Copy link
Member Author

Oh, text editing is broken right now! :( Bringing it back is my next project after merging the Plots backend ;)

@SimonDanisch
Copy link
Member Author

SimonDanisch commented Nov 9, 2016

Update:

  • Improve Camera
  • improve sliders/buttons/checkboxes.
  • remove most daring performance bottlenecks in GLAbstraction. (Allthough there are still more!)
  • better anti aliasing for 3D primitives
  • add examples that walk you through the basic usage of GLVisualize and also some complex examples ( Added a runtest that walks you through all examples)
  • added lots of details and small improvements
  • improve ray marcher (intersection with camera plane and remove bugs)
  • Seamless integration of OpenCL/CUDA kernels for computations (Not done, but I did improve things, development happens in GPUArrays)
  • Add interactive Labels and Axis
  • remove all OpenGL specific code from GLVisualize
  • thin out visualize to improve performance and really just create a diff against the default parameter set
  • create a WebGL backend with ThreeJS

@SimonDanisch
Copy link
Member Author

SimonDanisch commented Nov 20, 2016

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants