Skip to content

Smart Mask & Texture Processor

Module: Art · Category: TextureArt · Tool ID: SmartMaskTextureProcessor

A four-tab texture processor consolidating common per-asset operations. Height to Normal converts heightmaps via Sobel filter. Normal Map Mixer blends two normal maps (RNM, Linear, Overlay, Partial Derivative). Smart Mask Generator auto-builds edge/wear, cavity, position-gradient, and ID masks from a source texture. Material Instance Factory creates UMaterialInstanceConstant from a parent material + texture set.

Screenshot 01 — Hero shot — Tool open on Smart Mask Generator tab with source loaded, generated masks list showing Edge/Cavity/Position/ID masks with thumbnails.


  • Quick height-to-normal conversion without leaving UE
  • Blending two normal maps (e.g., a base detail normal with a per-asset variation)
  • Generating smart masks for material setup (edge wear, cavity AO, height-based blending)
  • Batch creating material instances from a parent + texture set workflow
  • Don’t expect this to replace Substance Designer / Painter — it’s targeted at quick in-engine operations, not full procedural authoring
  • Don’t use for runtime texture generation — all operations are offline asset edits

  1. Open the EQLabs Hub and search for Smart Mask (or browse to Art → TextureArt)
  2. Click the tool card
  3. Use the tab bar: Height to Normal, Normal Map Mixer, Smart Mask Generator, or Material Instance Factory

Convert a heightmap to a normal map via Sobel filtering.

FieldWhat it doesDefault
Heightmap pickerThe grayscale source heightmap(empty)
Heightmap ThumbLive thumbnail preview
Normal StrengthScale factor on the computed normals1.0
Output PathFolder for the resulting normal map(empty)
ConvertRuns Sobel + saves as a UTexture2D
  1. Drop the heightmap
  2. Tune Normal Strength (1.0 is neutral; raise for more pronounced normals)
  3. Pick output path, click Convert

Blend two normal maps using a chosen blend mode.

FieldWhat it doesDefault
Primary Normal pickerBase normal map(empty)
Detail Normal pickerDetail / second normal(empty)
Blend ModeRNM, Linear, Overlay, Partial DerivativeRNM
Blend StrengthMix weight0.5
Output PathSave destination(empty)
MixRuns the blend + saves
ModeWhat it does
RNM (Reoriented Normal Mapping)Mathematically correct normal blend; preserves both surfaces’ direction
LinearSimple lerp; loses detail at high blend values
OverlayPhotoshop-style overlay; cheap and stylized
Partial DerivativeDifferentiation-based blend; high quality

Screenshot 02 — Normal Map Mixer — Mixer tab with two normal maps loaded (Primary + Detail), RNM blend mode selected, output configured.


Auto-build common masks from a single source texture.

FieldWhat it doesDefault
Mask Source pickerSource texture(empty)
Generate Edge MaskToggle edge mask generationtrue
Edge ThresholdSensitivity of edge detection0.15
Generate Cavity MaskToggle cavity masktrue
Cavity StrengthHow aggressive cavity detection is1.0
Generate Position GradientToggle position gradient masktrue
Generate ID MaskToggle ID masktrue
ID Mask Color CountNumber of unique colors in the ID mask4
GenerateRuns all enabled mask generators
Mask Results listPer-mask row: name, description, dimensions, export PNG action
MaskWhat it represents
EdgeDetected edges (great for wear/scratch authoring)
CavityRecessed areas (great for AO darkening / dirt accumulation)
Position GradientXY-position-driven gradient (height-blend authoring)
IDColor-quantized regions (per-region material masks)

Create UMaterialInstanceConstant from a parent material + texture set.

FieldWhat it doesDefault
Master Material pickerParent UMaterialInterface(empty)
MI Output FolderWhere instances are saved/Game/MaterialInstances
MI Name Prefix / SuffixFilename prefix and suffixempty / _MI
Texture Param SlotsAuto-populated from parent material’s texture parameters; assign textures per slot
Refresh Material ParamsReads parameters from the picked master material
Create Material InstanceBuilds the instance with the assigned textures
  1. Pick a master material (must have texture parameters)
  2. Click Refresh Material Params — slots populate from the master’s texture parameters
  3. For each slot, assign the appropriate texture
  4. Configure name prefix/suffix and output folder
  5. Click Create Material Instance

Screenshot 03 — Material Instance Factory — Factory tab with master material loaded, 5 texture param slots populated with assigned textures, Create button ready.


FieldDefault
Normal Strength1.0
Blend ModeRNM
Blend Strength0.5
Edge Threshold0.15
Cavity Strength1.0
ID Mask Color Count4
MI Output Folder/Game/MaterialInstances
MI Suffix_MI

Settings are persisted to [Project]/Saved/EQLabs/Settings/SmartMaskTextureProcessor.json.


  • Height to Normal — new normal map UTexture2D asset
  • Normal Map Mixer — new blended normal map UTexture2D
  • Smart Mask Generator — generates masks in-panel; export each as PNG via per-row action
  • Material Instance Factory — new UMaterialInstanceConstant asset

  • RNM is the right default for normal blending — Linear can lose detail at high blend values
  • Edge Threshold of 0.15 is a good baseline — drop to 0.05 for very subtle edge detection on smooth surfaces
  • ID Mask color count should match material setups — if you have 3 paint zones, use 3 ID colors
  • Material Instance Factory respects parent texture parameter naming — make sure your master material has clearly named parameters before using
  • Absorbs HeightmapToNormal and NormalMapMixer — those legacy standalone tools are now Tabs 0 and 1 of this suite


Report an issue with this tool

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