It's midterm time! And therefore it is time for a summary. What did I learn these past few weeks, and what were the main road blocks?
What I learned
This is my first project where I use OpenGL, and a lot has become clearer how this system works: the pipeline, the individual shaders and GLSL, and how they're used for drawing 2D and 3D shapes. Of course, I've only scratched the surface right now, but this is a very good basis for more advances techniques.
I've learned about some mathematical techniques for drawing 2D sprites
A bit more Git experience in a situation where I'm not the only developer of the repository.
This has been a great experience, and the core developers of Vispy are very active and responsive.
I was a bit fooled by my almost lecture free college schedule in May/June, but the final personal assignments where a bit tougher and bigger than expected. So combining GSoC and all these study assignments was sometimes quite a challenge. But the college year is almost over, and after next week I can focus 100% on the GSoC.
In terms of code: I don't think I've encountered real big roadblocks, it took maybe a bit more time before every piece of a lot of shader code fell together, but I think I'm starting to get a good understanding of both the Vispy architecture and OpenGL.
The past week I've trying to flesh out the requirements for the network API a bit, and I've also been investigating the required changes for the arrow head visual, because there's a scenegraph and visual system overhaul coming: https://github.com/vispy/vispy/pull/928.
Another two weeks have passed! At some point every piece fell together and all arrow shader code became clear to me, which has resulted in all Glumpy arrows ported to Vispy! A few selected examples can be seen in the image below.
It's not perfect yet, the OpenGL shader tries to automatically calculate the orientation of the arrow head, but it is often slightly off. Also note that I've also added the new "inhibitor" arrow head. We've decided to document the principles behind this, and I used a few days to write a tutorial about it, which can be found here.
However, there's a big update coming to Vispy changing quite a lot about the visual and scene system, so it requires a few changes to the code before it can be merged.
The coming weeks I'll start thinking about the design of the network API!
Part of my Google Summer of Code project involves porting several arrow
heads from Glumpy to
Vispy. I also want to make a slight change to them:
the arrow heads in Glumpy include an arrow body, I want to remove that
to make sure you can put an arrow head on every type of line you want.
Making a change like that requires that you understand how those shapes
are drawn. And for someone without a background in computer graphics this took some thorough
investigation of the code and the techniques used. This article is aimed
at people like me: good enough programming skills and linear algebra
knowledge, but almost no former experience with OpenGL or computer
graphics in general.