[GLSL] Multiple Texture Buffers

   796   0   0
User Avatar
Member
941 posts
Joined: 7月 2005
Offline
I'm trying to see if I can get an array of textures into my glsl fragment shader, but I'm only partially able to do this, so I'm thinking there must be a better way to do it than what I'm trying right now.

Context:
  • H19.5
  • GLSL-330


Current Approach:
  • My Houdini-side shader node (VOP) has a multiparm of image-path string parms, equiv to an array of images. This gets filled programatically and so can shrink and grow dynamically. Let's say each image-path entry in the array is named image#.
  • The image index that should be used for a given prim is stashed as an int prim attribute that gets picked up by the glsl-geo shader and passed to the glsl-frag shader. All of this works as expected.
  • The glsl-frag shader declares a set (finite, but large, say 50 or so) of uniform texture buffers named in the same way as the houdini-shader multiparm entries: uniform sampler2D image0; uniform sampler2D image1; etc.. These appear to be generated (loaded/assigned) correctly by the gl engine, and it all works fine... but only up to some limit...

Problem:
It appears, from testing, that H19.0 has a limit of ~15 such buffers available/generated for the fragment shader, and H19.5 only gets around 10 max.
Is there an alternate/better way to do this so that I don't hit these texture buffer limits?
If the above approach is correct, is there maybe a way to increase these limits? (didn't see an obvious envar via hconfig)
Or maybe I'm going about it the wrong way?

Thanks in advance for any/all help!
Edited by Mario Marengo - 2023年7月18日 19:57:50
Mario Marengo
Senior Developer at Folks VFX [folksvfx.com] in Toronto, Canada.
  • Quick Links