Technical¶
The following documents some technical details about smartCache. Most probably interesting for TDs.
Creating cache files¶
All rendered images and their hash values get written into a cache directory.
Click the reveal cache
button on a cache node to reveal its cache
directory. smartCache creates a manifest file for every frame in the cache
directory. It detects all upstream dependent nodes of the node to cache and
writes a separate .json
file that contains all dependent nodes for every
cached frame.
For each node it keeps record of all knob values. Any node or knob listed in
the ‘ignore’ fields as defined in the settings gets ignored. By default
smartCache ignores some nodes like ‘Dot’ and ‘NoOp’ nodes that don’t contribute
to the output image but server more for structural reasons. The same applies to
several knobs that don’t change the image output, e.g. xpos and ypos. The
actual node position does not change the rendered image output so any node
position change does not affect the cache validity. There are several other
knobs like label
, dope_sheet
, bookmark
, help
,
postage_stamp
, gl_color
, tile_color
, etc. that get ignored as well.
The user can update nodes and knobs to ignore as needed in the ignore section
in the settings.
Once a manifest has been written, we create a hash sum of this .json
file
and store a node-knob-setup hash for each frame in a hash.json
file. By
default, smartCache keeps all manifest files on disk. But if you want to save
some storage space, the manifest can also be deleted automatically by setting
the environment variable CRAGL_SMARTCACHE_DELETE_SETUP_SOURCE_FILE
to
True
.
When creating a cache, we store the hashes in a master
folder. Clicking the
check cache validity
creates the same procedure in a folder with the
current timestamp. smartCache compares the hashes of the master hash.json
to the hash.json
of the current timestamp to perform a frame by frame
validity check. Any frame’s hash that does not correlate to the master hash
will be marked as outdated.
