New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap #80

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

Comments

Projects
None yet
7 participants
@SimonDanisch
Member

SimonDanisch commented Mar 24, 2016

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

This comment has been minimized.

Show comment
Hide comment
@musm

musm Mar 24, 2016

Contributor

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.

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

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch

SimonDanisch Mar 24, 2016

Member

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.

Member

SimonDanisch commented Mar 24, 2016

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

This comment has been minimized.

Show comment
Hide comment
@joa-quim

joa-quim Mar 24, 2016

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

joa-quim commented Mar 24, 2016

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

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch

SimonDanisch Mar 25, 2016

Member

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 notifications@github.com:

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)

Member

SimonDanisch commented Mar 25, 2016

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 notifications@github.com:

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

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch

SimonDanisch Mar 25, 2016

Member

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 ;)

Member

SimonDanisch commented Mar 25, 2016

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

This comment has been minimized.

Show comment
Hide comment
@joa-quim

joa-quim Mar 25, 2016

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?

joa-quim commented Mar 25, 2016

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

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch

SimonDanisch Mar 25, 2016

Member

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...

Member

SimonDanisch commented Mar 25, 2016

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

This comment has been minimized.

Show comment
Hide comment
@joa-quim

joa-quim Mar 25, 2016

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.

joa-quim commented Mar 25, 2016

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

This comment has been minimized.

Show comment
Hide comment
@hustf

hustf Mar 25, 2016

hustf commented Mar 25, 2016

@SimonDanisch

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch

SimonDanisch Mar 26, 2016

Member

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.

Member

SimonDanisch commented Mar 26, 2016

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.

@kleinash

This comment has been minimized.

Show comment
Hide comment
@kleinash

kleinash Mar 29, 2016

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.

kleinash commented Mar 29, 2016

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

This comment has been minimized.

Show comment
Hide comment
@ChrisRackauckas

ChrisRackauckas Jul 23, 2016

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.

Contributor

ChrisRackauckas commented Jul 23, 2016

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

This comment has been minimized.

Show comment
Hide comment
@ultradian

ultradian Jul 23, 2016

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!).

ultradian commented Jul 23, 2016

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

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch

SimonDanisch Jul 24, 2016

Member

@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/ ?

Member

SimonDanisch commented Jul 24, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@ultradian

ultradian Jul 24, 2016

@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.

ultradian commented Jul 24, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch

SimonDanisch Jul 24, 2016

Member

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

Member

SimonDanisch commented Jul 24, 2016

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

@SimonDanisch

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch

SimonDanisch Nov 9, 2016

Member

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
Member

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

This comment has been minimized.

Show comment
Hide comment
@SimonDanisch
Member

SimonDanisch commented Nov 20, 2016

Issues from other packages:
GLAbstraction:

Plots:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment