edit shader
This idea came up with James George at Detroit´s oF DevCon 2012. It consist on a set of connecting boxes that let you load and processes different type of data on the GPU. It´s designed to be flexible and visually minimalist for quick editing on life performances. But also very handy for graphically debugging, editing GLSL Shaders on the fly, and as a complement of ofxGui.

Check out the code at: https://github.com/patriciogonzalezvivo/ofxComposer


11 thoughts on “ofxComposer

  1. Compiling under windows has some problems with gl headers. But adding #include “windows.h” solve it. And seems like ofxPatch has some problems with shader files translation under win. I will test it soon and let you know.

  2. About shader load issue on win.
    Error appears only in debug mode: “Debug Assertion Failed!” at xstring.
    This line in xstring has next text: _DEBUG_ERROR(“string subscript out of range”);
    Call stack says it happents at GLEditor line 983 with following code:
    if (m_Text[m_Position]==*i) ParseOpenParentheses(m_Position,type);
    It seems like m_Text empty somehow…

    • Wow! thank’s Peko! Are you using windows isn’t?

      Do you like to push this changes in the gitHub? I will check that line. I’m not sure if it’s a ofxGLEditor problem or it’s how I’m sending the string information…

      • Yap, windows too, besides linux & os x

        Right now I’m debugging through it . As soon as I find the source of problems I’ll let you know.

        Your extension very useful for my glsl experiments, so I’m very motivated to fix it :)

  3. The bug in windows of “string subscript out of range” is at the function setText of ofxGLEditor (line 144), the call to glEditor.size() returns a size_type (unsigned type), so when we have editor = 0, (editor – 1) becomes -1 and we have a signed number bigger than a unsigned number (two’s complement).

    Use a simple cast to transform it to a signed int:

    instead of “if(editor = glEditor.size()){“,
    use “if(editor = (int)glEditor.size()){“.

    Patricio, you rock!
    I study psychology by myself (graduating in Electronic Engineering), I love it!
    Orgulho para a América Latina (portuguese… yes, I’m from Brazil).


    • Hello Feodrippe!

      Thanks for that! I´m making those changes and push them to Akira repository.
      Also thanks for your wonderful feedback!

      What themes are you studing? what are your interest? It´s incredible how life it´s full of things to learn and discover!!

      Viva America!

      • Sorry for the delay…

        I’m studying (or using) image processing, arduino, vvvv, windows phone, kinect (mainly interacting with windows phone), openframeworks, opengl (shaders), graphics for video mapping controlled by audio in real-time… yeah, learn is living, altought time is being each day compressed more and more.

        About health stuff, I’m trying for the second year to go to the Imagine Cup world’s final (last year we were between the six world top of the Embedded Systems category) with a health monitoring system project to be used in emergences and tragedies, this area (health) is the reason why I choose electronic engineering… although I will make psychology some day, I think it is more worthwhile in long term (programming or electronics, at least the way I want to use them, are just tools… incredible tools).

        Abraço cara!

  4. Buena Pato, que cool esta esto.
    Nunca supe que estabas tramando algo así, jaj.
    Lo hecharé a andar y te cuento como me va y se me ocurren algunas mejoras/extensiones.

    un abrazo

  5. Hello Patricio,

    nice work, i love to play with it.
    But if i try to close a Composer Window i got this Message.
    I’m working on a OSX 10.8
    malloc: *** error for object 0xd9beb4: pointer being freed was not allocated

    What am i doing wrong?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>