Hey Bruno,
Both solutions are a good idea and are possible to do using Bonsai.Shaders in different ways.
1. To load textures dynamically, you can use LoadImage (Shaders) to load a filename into a Texture. The image is loaded to the GPU immediately and can then be attached as a shader texture using BindTexture. So for example:
This would load a series of filenames stored in the CSV file as textures, pack them all into an array and stored in a Subject to be accessed later. When you need it you can get the array, Index into it and pass it to BindTexture to attach it to a specific shader. This has the advantage that no specific names need to be used anywhere, and only texture handles are passed around.
2. There is another option which is already built into TextureResources, which is to use the ImageSequence resource:
This resource type loads either a video or an image sequence into an array of textures. To specify loading from a folder of images, a specific syntax needs to be used to indicate the number of digits in the numbering scheme. For example, the name frame-%03d.png looks for images named like frame-000.png, frame-001.png, etc.
The entire sequence is preloaded at startup time and is used as any other texture in Bonsai/BonVision through the operator BindTexture. By default only the first frame is used. However, if you have a texture array you can then use the Index property of BindTexture to indicate exactly which frame you want to display at any given time.
Either option should give you instantaneous frame swaps without any performance cost and are probably the fastest way of changing static images in Bonsai Shaders.
Hope this helps.