Skip to content

No. 0081 TE TechEQLabs Pro

Cymatics FX

UE 5.4–5.85/52.0.5

Module: Tech · Category: Texture Generators · Tool ID: CymaticsFX

A library of wave-noise Material Functions built on spectral control rather than the usual Perlin/Worley/Voronoi primitives. Drag one into any material graph and you get watercolour bleed, manga paper grain, hatching, magic dissolve, foliage variation, cloth weave, volumetric mist, or a flowmap basis — patterns that are genuinely hard to reach by stacking legacy noise nodes.

Three tabs: Library browses and regenerates the starters, Design tunes a custom variant and exports it as a new Material Function, and Bake renders any of them to a static Texture2D.

Cymatics FX Library tab listing the starter Material Functions with thumbnails and per-row actions, the search counter reading 12 of 12.
Cymatics FX Library tab listing the starter Material Functions with thumbnails and per-row actions, the search counter reading 12 of 12.
The wave and noise function library searched for dissolve, watercolor, strata, weave and hatching — each shown in a material — then a template driven live from the Design tab.
  • Stylised rendering: watercolour, manga, hatching, ink
  • Dissolve and reveal effects that need organic structure
  • Per-instance foliage variation without extra textures
  • Cloth weave and fabric detail
  • Volumetric mist
  • Flowmap bases for advection
  • Anywhere legacy noise nodes look synthetic
  • Don’t use it where a plain texture is cheaper. These are procedural functions evaluated per pixel; bake them if the cost matters.
  • Don’t expect 3D output from the bake. V1.0 bakes 2D only — see below.
  1. Open the EQLabs Hub and search for cymatics or noise (or browse to Tech → Texture Generators).
  2. Click the tool card.
  3. On first use, click Regenerate Library.

The starter functions are generated into your project, not shipped as fixed assets. If the Library shows ”⚠ Asset missing — click Regenerate Library”, that is what it means. Regenerating is also how you pick up updated maths after an upgrade.

A searchable browser over the 12 starter Material Functions:

FunctionUse
MF_Cymatics_TerrainStrataLayered rock strata
MF_Cymatics_WatercolorWatercolour bleed
MF_Cymatics_MangaPaperManga paper grain
MF_Cymatics_InkBloomInk bloom
MF_Cymatics_FoliageVariationPer-instance foliage variation
MF_Cymatics_MagicDissolveDissolve / reveal
MF_Cymatics_HatchingCross-hatching
MF_Cymatics_ClothWeaveFabric weave
MF_Cymatics_PixelDitherDither patterning
MF_Cymatics_VolumetricMistVolumetric mist
MF_Cymatics_FlowmapBasisFlowmap basis
MF_Cymatics_CustomSpectralOpen spectral base for custom work
ControlNotes
SearchFilters by name, description or use-case keywords
Show in Content BrowserReveals the asset
Open in Material EditorOpens the function
Regenerate LibraryRe-creates the starter functions

Assets are written under /EQLabs/EQLabs/Cymatics/Functions/.

Note (v2.0.2): in 2.0.2 the Regenerate button’s tooltip says “all 11 starter Material Functions”. The generator defines 12, and 12 is what you get - the search counter above the list reads 12 / 12. Fixed in the next release, where the tooltip derives the number from the spec table.

Usage is simply drag-and-drop: put any MF_Cymatics_* into a material graph in place of a noise node.

Cymatics FX Design tab with the Hatching template selected, its Scale and AnisoDir parameters, a live preview rendering the pattern, animation Play and Speed controls, and the export destination path.
Cymatics FX Design tab with the Hatching template selected, its Scale and AnisoDir parameters, a live preview rendering the pattern, animation Play and Speed controls, and the export destination path.

Build a custom variant from a starter template and export it as its own Material Function.

ControlNotes
Noise TypeThe underlying wave-noise family
TemplateA starter library function used as the base
ParametersTunable values for the chosen template
Reset to Template DefaultsRestores the template’s original values
PreviewUpdates live as you tune
Asset NameSaved as MF_Cymatics_<name>
Export as Material FunctionGenerates the new function

The preview is resolution-independent: “The exported MF will render the same pattern at any resolution.”

Exports go to /EQLabs/EQLabs/Cymatics/Functions/MF_Cymatics_<AssetName>, and the panel shows the exact destination path before you commit.

Two guards worth knowing:

  • Export refuses to overwrite a starter. “Export refused — ‘X’ is a starter library function. Pick another Asset Name (e.g. X_Custom).” Your custom work cannot silently replace a library function, and a Regenerate cannot silently destroy your custom work.
  • Export requires a template. “Export failed — no template selected.”

The panel’s tip is the thing most people need: wire a Time node into the exported MF’s Phase input pin to animate the pattern in a material. The Design tab’s Play button and Speed slider animate the preview only — the animation in your shipped material comes from that Time node.

Renders any Cymatics function to a static Texture2D — for mobile, VFX graphs, or anywhere per-pixel evaluation is too expensive.

SettingNotes
Source Material FunctionPick the MF to bake
ResolutionSquare, N × N px
CompressionSee below
Output NameSaved as T_Cymatics_<name>
Overwrite existing textureOff by default — a bake refuses to replace an existing texture unless ticked
Bake to Texture2DRuns the bake
FormatEngine settingUse
Grayscale R8TC_GrayscaleUncompressed single channel — mobile-friendly
Mask BC4TC_MasksCompressed single channel
Color BC7TC_BC7High-quality compressed RGB

Single-channel patterns — dissolve masks, hatching, dither — should use BC4 rather than BC7, which spends three channels storing the same greyscale.

Output goes to /EQLabs/EQLabs/Cymatics/BakedTextures/T_Cymatics_<name>.

  • The baked Texture2D is static. “Animation runs purely in preview.”
  • 2D bake only in V1.0. VolumetricMist (Wave3D) is noted as producing 3D output in a later version.
  • Baking needs a CPU bake function for the selected MF; where none exists the tool says so rather than producing an empty texture.
  1. Library → Regenerate Library (first run).
  2. Find MF_Cymatics_MagicDissolve → Open in Material Editor to see how it is wired.
  3. Design → select it as Template.
  4. Tune parameters against the live preview.
  5. Set Asset Name to MagicDissolve_Custom (it will refuse the starter’s own name).
  6. Export as Material Function.
  7. Drag it into your material; wire Time in to animate.
  8. If the cost is too high on your target platform: Bake → Mask BC4 at a suitable resolution.
  • Regenerate Library first. Missing-asset warnings in the Library mean the functions were never generated in this project.
  • In v2.0.2 the Regenerate tooltip says 11; there are 12. Trust the 12 / 12 counter. Corrected in the next release.
  • Exports cannot overwrite starters. By design, and it protects both directions.
  • Animation in a material comes from a Time node wired to the Phase pin, not from the Design tab’s Play button.
  • Baked textures are static. Animated patterns must stay procedural or be baked as a flipbook by another tool.
  • Use BC4 for single-channel patterns, not BC7.
  • Bake overwrite is off by default. A name clash refuses rather than replacing.
  • Regenerating replaces the starters, so keep custom variants under their own names (which the export guard enforces).
Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.