The last two weeks, I didn't do much programming with OpenGL and GLSL. I used the weekend to catch up with some of the bug reports on Github and made the application more robust against missing input data or broken shaders. The net result is that it now can also cycle through a set of shaders:
While putting off working on my Perl Advent Calendar submission, I was instead active in resolving bugs in App::ShaderToy and adding some interesting features. The three major features I added this week are, in order of implementation, loading of bitmap images, hot reloading of code and the feature to make the window stay always on top.
It is incredible how much joy quicker iterations bring me while toying around with shaders, tweaking the parameters to see if I can find new visuals.
The shader is a modification of a shader by Inigo Quilez, hacked up by Weyland.
After the initial rush of success, I spent this week working more on the UI side of the app, putting off adding support for geometry generation for later. Prima proves to be a solid UI toolkit and to me it feels closer to using Delphi or Visual Basic, API wise.
For a long time, I've wanted to actually make use of the modern hardware I have at home. The graphics card is capable of OpenGL and OpenGL now has a fancy little language to actually bring images to life. For example [https://www.shadertoy.com] has great so-called "shaders" that show off what can be done with them.
Because I also want to toy around with programming some shaders, I want to get a live environment running. So during the weekend, I took the Glew library, wrote a small Perl script to convert the header files to XS, and then fought with OpenGL until I had a driver that could run shaders from Shadertoy.com:
In what is a somewhat mild case of yak-shaving, I need a portable
way of identifying file types in several situations. For example, when
indexing files for Dancer::SearchApp or when handling user uploads, I want to somewhat reliably identify various files.
I want to determine their type without trusting what the user tells me they are, and I also
want to send the appropriate
Content-Type header when serving files again.
Search this blog
- Shadertoy progress - playlists
- Staying on top of bitmaps
- Shadertoy progress and the state of OpenGL in Perl
- Modern OpenGL with Perl
- Virtual Spring Cleaning (part 11 of XX) - in which I determine the type of yak wool I need
- Virtual Spring Cleaning (part 10 of X) wherein I tackle finances
- Virtual Spring Cleaning (part 9 of X) wherein I retrieve content
- Interlude 2, in which I write more about the release pipeline
- Virtual Spring Cleaning (part 8 of X) wherein I release leftovers
- Virtual Spring Cleaning (part 7 of X) Wherein I Enter the Archives