texture coordinates with jit.gl.multiple

    Dec 04 2013 | 3:16 pm
    Hi, is there any way to set individual texture coordinates for each instance with jit.gl.multiple? This is not what i'm trying to do, but imagine you're trying to split apart or shatter one larger image into a grid of smaller individual videoplanes.

    • Dec 04 2013 | 6:33 pm
      absolutely. since max 6 gl.multiple allows setting texplane_s/t as one of the glparams matrices. here's a silly example i made way back when. it uses this feature to utilize a font-atlas with gl.multiple.
    • Dec 04 2013 | 10:21 pm
      Cool patch. I can't see any coordinate variation though? dstdimstart dstdimend.
    • Dec 06 2013 | 2:27 pm
      @rob. Is the alphabet supposed to map on the spheres - each letter per sphere? If so it isn't working on my machine.
      Processor 2.6 GHz Intel Core i7 Memory 16 GB 1600 MHz DDR3 Graphics NVIDIA GeForce GT 650M 1024 MB Software OS X 10.9 (13A603)
    • Dec 06 2013 | 7:50 pm
      it maps whatever letter you type on the keyboard. possibly only works for US keyboard layouts.
      in any case, to send texture coordinates to gl.multiple instances, provide tex_plane_s tex_plane_t as args to the @glparams attribute, and send 4 plane float32 matrices to the corresponding inputs.
    • Jan 27 2014 | 10:32 am
      Sorry, I forgot to thank you. That patch has taught me how to use jit.multiple. Thank you!
    • Jan 27 2014 | 4:19 pm
      thanks for bumping this up, as i have looked for a way to have different textures on several instances from a jit.gl.multiple, and this might be the solution !
    • Mar 12 2018 | 8:34 pm
      Good afternoon. I was hoping someone on here might help. I'm trying to get a cache of frames to instance across a series of jit.gl.gridshapes using jit.gl.multiple. Even if I can get the frame index how might I apply them throughout the group in succession?
    • Mar 13 2018 | 1:55 pm
      from a quick look at the source, I believe you can have up to 256 texture names as args to the texture attribute (also the limit of values you can supply to the char matrix). so you need to construct the list of texture names in some logical order, prepend it with texture, and you can then control which texture is set to which instance via the texture_matrix input. so if you have "texture tex1 tex2 tex3 ...", you set the cell val to 0 for tex1, 1 for tex2, etc. there may be some other limitation to the number of textures supported.
    • Jun 10 2021 | 9:54 am
      @rob, I try to run your "silly example" with gl3, but I get the message "texgen/apply is obsolete when using the gl3 engine" (it works fine with gl2). What is the trick with gl3 to set the tex coordinates of the jit.gl.multiple instances individually?
    • Jun 16 2021 | 12:22 pm
      Is there anyone who has made tex_plane_s/tex_plane_t work with jit.gl.multiple with gl3? I would be very happy to get a small example. Thanks a lot.
    • Jun 16 2021 | 2:33 pm
      yeah those attributes are deprecated with the gl3. as with most gl2 to gl3 porting tasks, the answer is to do it in the shader. let me see if i can throw something together that provides this functionality.
    • Jun 16 2021 | 3:00 pm
      for starters, here's a modernized version of that ancient patch
    • Jun 18 2021 | 5:26 pm
      Ok here's the update of this patch for gl3. It's based on the Mesh Instances example from the launcher patch, since currently the gl3 version of jit.gl.multiple doesn't support custom shaders.
      We simply add another instanced buffer to the mesh that contains the two non-zero values of each tex_plane_s/t list, packed into a 4 plane matrix. These values are used in the shader to calculate the tex_map 1 (Object plane) texture coordinates for each instance. We also add a fourth element to the position buffer to handle uniform scaling of each instance in the shader.
      hopefully this gives you something to go on.