USING FRAGMENT:FLOW FOR PRINT
Although primarily a tool for real-time visuals designed to run at 1080p-4k, Fragment:Flow can also be used to produce high quality still images suitable for print. Given the high resolutions necessary to achieve print ready images at a sufficient DPI its suitability for this kind of work depends upon your hardware and target print size. The process involves simply working out a suitable resolution for the desired print size and then setting these values in Fragment:Flow before exporting your image. Very large prints will not be possible, but those on higher-end GPUs such as the RTX 2080 should be able to achieve A1 size prints at 300 dpi while those on weaker cards may still find it useful for more modestly sized prints.
This guide comes with the caveat that pushing the resolution too high for your hardware is likely to cause Fragment:Flow to freeze and/or crash, so save your presets regularly and increase such values incrementally in order to find sensible limits for your system. Be sure that you are achieving a solid 55-60fps during normal use beforehand (and that FF is not running on integrated graphics), that your GPU is happy working under high/full load and that you set the resolutions cautiously, taking care not to enter astronomical values by mistake! If you feel that you are pushing your system too hard, reduce the settings using the default value buttons provided (1080p) or disable rendering via FF’s smaller fps window (it’s also a good idea to do this whenever you sneak out for a break etc).
For real-time performance and video work, please stick to the standard resolutions provided by Fragment:Flow’s GUI (1080p, 4k etc).
The reference card that I’m using is an RTX 2080, so bear that in mind and adjust your expectations and approach according to your own hardware. On any system, as you increase the resolution inevitably your FPS will begin to drop (there’s also some variation depending upon which shaders are enabled). However, since real-time performance isn’t our priority in this case, working at much lower frame-rates is acceptable provided that FF remains stable . You can also manually set the target fps to some low value if you prefer not to stress your hardware unnecessarily.
1 Calculating your target resolution
The industry standard for print is 300 dpi, and commonly up to 600 dpi for fine printing. The calculation for working out the necessary resolution for a given DPI/print size is pretty straightforward – you simply multiply the horizontal and vertical dimensions of your print in inches by the target DPI, so an A4 print at 300 dpi, which has a physical size of 8.3 x 11.7 inches in portrait, works out as follows:
8.3 inches x 300 dpi = 2490 px
11.7 inches x 300 dpi = 3510 px
= 2490 x 3510 px
This should be quite comfortable for many users, but those on more powerful cards should be able push it to 600 dpi:
8.3 inches x 600 dpi = 4980 px
11.7 inches x 600 dpi = 7020 px
= 4980 x 7020 px
On the other hand, an A1 print at 300 dpi will result in a much more taxing target resolution of 7020 x 9930. Working at 7020 x 9930 on my RTX 2080 generally results in frame-rates of between 25-35 fps (depending on the active shaders and source material). Since my card can run FF at 4k @ 60 fps for hours and hardly break a sweat I know that it’s working hard here, so I’m not comfortable going too much higher than this:
23.4 inches x 300dpi = 7020 px
33.1 inches x 300dpi = 9930 px
= 7020 × 9930 px
Another more moderate example – a vinyl sleeve cover is typically 12.375 x 12.375 inches, so at 300 dpi that works out at:
12.375 inches x 300 dpi = 3713 px (3712.5 more accurately, but just round up in such cases)
= 3713 × 3713 px
The best approach is to gradually establish the comfortable upper limit for your hardware by starting low – once you’re hitting lows of 25-30 fps it’s a good time to settle. Nonetheless, for album covers, large format books (A4 etc) and other more moderately sized print jobs, many users will find that they have sufficient headroom.
TIP: you can also use an online calculator like this one to get your target resolutions:
2 Setting up Fragment:Flow’s resolution values
In the example below I’m aiming at an A4 print at 600 dpi on an RTX 2080 (4980 x 7020 px). There are 2 important settings in FF which dictate image size and the level of detail of exported images:
A) The first is the Texture Dimensions setting which can be found under the “Display” tab. This determines the internal texture resolution of the real-time render and the size of exported images (in pixels). This should be set to the target resolution that you calculated using the method above. Be sure to enter the values according to whether you want to print in portrait or landscape, for example:
A4 portrait @ 600 dpi would be entered as:
Whereas in landscape it would be:
B) The second setting is the Noise Seed Resolution which dictates the “density” of the noise values used to seed the simulation. Increasing this increases the level of detail, with very fine details achievable at high settings, but it can also alter how the shader actually behaves. Aim to match the target resolution that you calculated originally (or higher when you afford to). If it changes the behaviour of your preset in an undesirable way simply set it as close/high as you can whilst maintaining the effect that you want. Remember to re-seed by pressing spacebar or using the button provided. The important thing is that increased values here result in finer details, and they needn’t necessarily match the values that you entered for the Texture Dimension setting (although that often makes sense).
Note: Importantly, both the Texture Dimensions and the Noise Seed Resolution settings can significantly impact performance as they increase, so don’t go too high.
TIP: In most cases it isn’t necessary to use extremely high quality source material (images/video) to get high quality output from Fragment:Flow, so there’s usually no need to match your sources to the final output resolution. Since the images are being reconstituted by the reaction-diffusion shader code the Noise and Texture Dimensions have a much greater impact on the perceived level of detail. For example, given a generous Noise Seed and Texture resolution the difference between a 1080p video and a 4k one will be pretty negligible, but the latter may significantly impact performance. Indeed, in much of my work the source material is well below 1080p (including the images at the bottom of this page). The exception to this is when you’re bypassing the RD shaders or using the Shader Mix Slider/Blend Modes, in which case source material quality is much more important, since you’re seeing it directly. This is especially useful to understand when working in a live context where optimal performance is paramount.
3 Exporting and adjusting your image
Once your resolutions are set up you can simply press the Save Image button at the bottom of the GUI to export your image to the default folder. Note that the output window size is decoupled from the actual texture resolution so will not accurately represent the quality of the exported image.
It will take a few moments to write the file at these sizes, during which time FF’s output will freeze temporarily. Once exported, you should have a highly detailed image at the required dimensions. For me Microsoft Paint will not open images over a certain size, but Gimp, Photoshop and other software should handle the images fine.
One thing that remains to be done is to change a few of the image settings. Straight out of FF the Print Size and DPI settings are usually incorrect, so we need to adjust those. I’m using Gimp here, but the process is essentially the same in Photoshop. Again, I’m working toward an A4 print at 600 dpi.
A) Open up the exported file in Gimp and go to Image > Print Size. You’ll see that the values are incorrect:
B) Make sure that the measurements are set to inches in all fields and simply enter the print size and DPI (in the resolution fields) that you used in your original calculation. Provided that these calculations and the Texture Dimensions in FF were correct the image shouldn’t change size at all, but will now report the correct values.
Save the image and you should have a file that’s ready for printing.
Below you’ll find a selection of images created using this method. Obviously, the original images are too large for online use, but I’ve extracted small sections from the larger images which should give an indication of the kind of results that you can achieve (compression aside). I hope that this inspires you to explore another use for Fragment:Flow. Please feel free to get in touch if you have questions or require my help with anything.