An approach to optimizing performance in many-layered Satori Paintings. By Michael Hirsh.

People use Satori for all sorts of projects, and they value the software for its three key benefits: Performance, Editability and Resolution Independence. (R.I.)

Many Satori users will be creating relatively simple images, or series of images, employing only a few layers. Satori will tear through this kind of work faster than any bitmap based program, and still offer the benefits of full editability and R.I.

When it comes to creating large, complicated paintings with a few dozen layers, each containing anything up to a hundred brush and geometry objects, users can see one of the precious benefits begin to suffer: Performance.

Obviously, performance is the aspect of Satori most likely to be influenced by the user’s hardware. While Satori may be written to be extremely efficient at creating and manipulating images, the best software writer in the world cannot magically provide the user with the optimum hardware set-up to keep the program zipping along.

Performance Boosting Techniques

There’s a recognised technique within Satori, to reduce the processing overheads occasioned by having many layers open on a large canvas. The method is to flatten all the work you have done part way through a picture into a single layer bitmap, using Save As... from the File Menu, and choosing the ".rir" option. This method allows you to open up the .rir bitmap as a new canvas, add more layers and keep on painting without losing performance. (See the tutorial in the Satori Reference Guide: Section 2 Chapter 4 ; "Painting an Animation Background in Satori".)

So far, so good. However, by converting several sluggish layers into one fast layer, you can inadvertently throw away two vitally important things: Editability and R.I.

When layers are flattened into a .rir bitmap, all the objects are lost along with your ability to edit them, unless you save the layers themselves in a .cvs file.

It is vital not to overlook this important fact if you want to change anything later, (Or worse, your client wants changes) and also if you want to output the final image at any resolution higher than screen resolution; For print, say.

How To Make A Big Mess

If you use this technique of flattening parts of an image and save a few layers in one .cvs file and a few other layers in another, as well as scrunching down those layers into new, incremental versions of your picture, you can end up with an almighty mess in the folder that you are using to store all those chunks of the picture. You can make matters much, much, worse if you adopt some spontaneous, improvised system for naming all these canvases and bitmaps. When you come to output your image, you’ll have to try and find all the layers and put them all back into some sort of master file, in order to try and regain editability and R.I. Re-structuring a chaotically filed mass of components of a picture effectively wipes out any performance gains you might have won through splitting the picture into speedy little chunks in the first place. Unless the Master file is properly organised, you could end up with another problem, rather than a new solution.

Learn Filing For Fun And Profit, Or, Michael’s MO.

My own solution has been to put some serious thought into organising my data structures from the outset and getting into that fun-filled field of office life: Filing.

Here’s how I tackle big, complicated pictures. First, I create a folder for my image with an appropriate name such as Scene 15, or whatever. Then I create four sub- folders called: 1) MASTER, 2) STAGES, 3) RESOURCES, and 4), OUTPUT.

Here’s what goes in each:

1) The MASTER Folder. This folder contains only those files which will be required to render the final output. These will typically include: The original scan (if working with a scanned image, or a layout that’s used as a painting guide), and the file called "Master.cvs", which will eventually contain all the layers of the painting needed for the final render. If you need to output an image which will be split into a foreground (FG) level, and a background (BG) level, as often happens in animation projects, then create master files for both levels. Name them "BGMaster.cvs" and "FGMaster.cvs", or whatever convention you use.

These files may only have layers added to them, and must not be: A) Moved, or B) Re-sized, so make sure you know your canvas ratio (X:Y) before you start.

2) The STAGES Folder. This folder contains all the stages in the making of the painting, and the number of files contained within it will grow as the painting progresses. Use simple names for the stages of your painting such as "Stage 1.cvs" or "Version 1 .cvs", or "SoFar1.cvs". Whatever you call these steps in the making of your picture, it really helps to use only one name plus a number, and stick with this naming all the way through the picture. Wild and fanciful naming of versions will work against you when you try and recompile a picture, even after an interval of only a week. If you try to remember what a bunch of funny .cvs names once meant when you return to the project after a year, you probably won’t be able to make any sense of them at all. They’ll no longer be funny, either.

Here’s how the stages work to keep up the best performance your machine can deliver with Satori. (We’ll start with Stage 1) You open your scanned image, or whatever your starting point is. You paint several layers until you think performance is beginning to slow down. (This slowdown is apparent when using the Zoom button, and especially the Hi-Rez button. See your Status Bar for details.) Save your canvas as "Stage 1.cvs" and also save it as "Stage 1 .rir". Open the (empty) Master file in the Master folder, and copy the newly created layers from "Stage 1.cvs" in to the "Master.cvs". Then close both files.

TIP: When you save and close the Master.cvs file, if you use Save As... from the File menu, you’ll get an extra set of options which allows you to choose the amount of compression you’d like Satori to use when the canvas is stashed away. If you choose the top option (None) your Master .cvs file will be quicker to open up for copy operations, but it might be quite a large size in megabytes. As we’re talking about large pictures here anyway, let’s just accept this size penalty in favour of the performance boost, which is what we want, after all.

Now open the flattened bitmap version called "Stage 1.rir", and Satori will offer to create a new canvas. Accept by making sure that the New Canvas radio button is clicked when opening the file. As soon as the new canvas is open, use the Save As... to save the canvas with the name: "Stage 2.cvs". Then add the new layers you wish to paint, daub away happily and speedily until the performance starts to slow, and then repeat the saving process, remembering to save your canvas as both a .cvs file and also as a .rir bitmap file. Then, open the Master again, as well as "Stage 2.cvs", and copy the newly created layers into the "Master.cvs", but not the layer containing the flattened version of Stage 1, which you’ve probably had lurking down at the bottom of your Layer List Palette as you painted over the top of it.

Carry on starting new canvases as you need to, save them in the two different file types; .cvs and .rir, carry the flattened bitmap to serve as the basis of the next .cvs, and copy all new layers to the Master file. You’ll end up with a whopping great Master file, and all the layers will be duplicated in the chunks of the painting called Stage n.cvs. I use a notebook to remind me of where all these layers are, and I’ve also resorted to using a screen capture utility to take snapshots of the Layer List Palette, as I go. I’ve even created a spreadsheet to map where all 37 layers of a painting were spread over the 17 stages that I had used in painting it.

One day, who knows?, Satori might have its very own, user-accessible file explorer to handle these copying functions without even opening the canvases. OK, next sub-folder.

3) The RESOURCES Folder. This one contains miscellaneous files such as small canvases you might create (or import) for use as mapping objects, and test files where you might try out ideas, and finally, Swatches of colours. I usually move all of my ever growing tribe of colour swatches into whichever is my current project folder, but here in the Resources sub-folder, they have found their true home. They’ve even started phoning out for pizzas, and leaving their dirty laundry lying around.

4) The OUTPUT Folder. This will eventually hold all the rendered-out versions of your Master canvas as bitmaps ready for export. Having all the outputs in one folder makes for easy archiving, as well as exporting.


It is worth recognising that when creating large complicated pictures in Satori, the user’s hardware can impose limits on the program’s performance. Figuring out a working method that balances the constraints of hardware against the three principal benefits of the software repays the effort involved. A tightly structured approach to data management becomes vital as file sizes and image complexity increase.

I invite criticism of the methods I have proposed, and I welcome constructive suggestions as to how they might be improved.

Big Picture Diagram