NumberFlow Documentation

Noise Library

NumberFlow contains a C# noise library that you can directly use in your own code as well. See its documentation for details.

Platforms and Performance

NumberFlow is a CPU-based solution that runs on all platforms. Generating textures at runtime can be costly, depending on their size and complexity. Multi-frequency noise is especially heavy. You can mitigate the impact on the frame rate by using threads or by distributing texture creating over multiple frames.

While dynamic animation of textures is possible, this puts a constant strain on the CPU. Especially for mobiles this is not a good idea. Instead, use short looping animations and generate all required textures at load time. This spares the CPU at the cost of memory.

Frequently Asked Questions

Does it require Unity Pro?
No. NumberFlow works with both the free and Pro versions of Unity. It also looks nice with both the Light and Dark skin.
Can I use procedural textures while editing my scenes?
Yes. With the help of a Diagram Material Manager, you can use materials with procedural textures in edit mode.
Do I need to program to use it?
No. You design diagrams visually by dragging, configuring, and connecting nodes. You can link them materials with a Diagram Material Manager. You can also export them to PNG images and use those like any other texture.
Does it run on mobiles?
Yes. It works on iOS, Android, and any other platform.
Does it run on Flash?
Don't count on it. It might, but NumberFlow is not supported for Unity's discontinued Flash export.
Does it use the GPU?
No. NumberFlow runs fully on the CPU.
Can I use texture animations?
Yes, but it is only practical to do realtime texture animation in very limited cases. You also need to do some scripting yourself. The web player demos give a good impression of how nonstop texture generation strains the CPU. The Gallery demo has some examples of using shaders for animation, which is a lot cheaper.
How can I generate textures as fast as possible?
The fastest way is to design in NumberFlow and then reproduce the result with your own code. Then you can eliminate the overhead of the diagram structure and incorporate all kinds of case-specific optimizations. Whether this is a wise use of development time is questionable.
How can I improve performance?
There are many ways to be smart about this. Here are some tips, but the main idea is to use less more creatively. Use a Diagram Material Manager or your own thread to compute textures. Generate once at load time. Use a lower resolution. Use less frames for animations. Use pregenerated short looping animations. Use multiple simple images for more complex effects. Use less octaves of noise. Use square distances.
Is it memory friendly?
Yes. Once a diagram is initialized it allocates no memory while generating textures. Of course the textures themselves do take up memory, as do any color arrays that you use. Make sure to set textures that won't change to be no longer readable.
Can I generate compressed textures at runtime?
Textures need to have the ARGB32, RGB24, or Alpha8 format, otherwise their pixels cannot be set. However, you can use the Texture2D.Compress method afterwards to compress to DXT1 or DXT5, if available.
Does it use Allegorithmic's Substance technology?
No. NumberFlow is a visual scripting tool for designing procedural textures yourself, right inside Unity. The textures are generated by scripts written in C#. There is no custom data format, no native libaries, and no external tool needed.
Can it be used with JavaScript/UnityScript and Boo?
Yes. Though NumberFlow is written in C#, you can use it just fine with the other scripting languages.
Is the source code available?
Yes. The package is distributed in source code form, not as DLLs. Of course, you could always compile NumberFlow to a DLL for internal use.
Can I add my own node types?
Yes. See the custom nodes documentation page.