Skip to content

UnityEQ Painting Lab

Quick Start

Paint colour, mask, flow and direction maps directly in the Unity editor - on a 2D canvas, on your mesh, or both side by side - and export each mode to the format it needs.

Supported Unity baseline: Unity 2022.3 LTS or newer, including Unity 6.

The editor with the 2D canvas on the left and the painted mesh preview on the right.
The editor with the 2D canvas on the left and the painted mesh preview on the right.
  • standalone EQPaintingLabAsset
  • standalone editor window
  • custom inspector entry point
  • texture list management
  • persistent texture bytes stored on the asset
  • fixed left sidebar for settings and asset controls
  • center focus workspace for painting and previewing
  • 2D paint canvas
  • paint, erase, smooth, fill, and clear tools
  • mirror and radial symmetry modes
  • custom brush-tip texture masking
  • angle, size, scatter, and opacity jitter controls
  • channel preview modes
  • decoded vector previews when viewing the full packed texture: animated Flow motion and static Direction-field arrows
  • viewport legend badges that label the active decoded Flow or Direction preview
  • manual undo and redo inside the editor window
  • export active texture or all textures into Assets/EQPaintingLab/Generated
  • mode-specific export profiles for Color, Mask, Flow, and Direction workflows
  • recommended export format warnings when a mode is forced to a less suitable format
  • non-destructive export post processing with Smooth, Blur, Alpha Edge Padding, and viewport preview
  • first 3D mesh preview using the assigned preview mesh
  • direct UV-space painting on the preview mesh
  • projection-aware 3D painting that samples the visible mesh under the brush footprint and paints local UV dabs across seams
  • UV Channel selector for choosing which preview mesh UV set drives 3D painting, texture preview, and shell overlays
  • Show UV Shell overlay that draws the selected preview mesh UV shell over both the 2D canvas and 3D preview
  • 3D Paint Mode control for switching between ProjectionAware and the older UVSpace behavior
  • Projection Seam Angle control for deciding how far projection painting can wrap around surface angle changes
  • viewport modes for 2D, Split, and 3D
  • persisted workspace mode, split divider, swap order, foldouts, scroll, last asset, and 3D camera framing
  • live brush cursor ghost-stamp preview with brush-tip masking and jitter bounds
  • preview and reset/fill utility actions
  1. Create an asset from Create/EQ Painting Lab/Painting Asset
  2. Select it in the Project window
  3. Click Open in EQPaintingLab

You can also open the window from:

  • Tools/EQLabs/EQ Painting Lab/Open Editor
  • create or open an asset
  • create a starter texture
  • manage texture slots
  • paint directly in the active texture canvas or switch to split mode to watch the mesh at the same time
  • use mouse wheel over the canvas to resize the brush
  • use Ctrl+Z and Ctrl+Y (macOS: Cmd+Z and Cmd+Y, or Cmd+Shift+Z) in the window for paint snapshots
  • choose Mirror X, Mirror Y, Mirror XY, or Radial symmetry from the Brush section
  • assign a readable Brush Tip texture to shape the stamp
  • use Angle Jitter, Size Jitter, Scatter, and Opacity Jitter to break up repeated stamps
  • preview the active texture or isolate a single channel
  • in Flow mode, keep Channel Preview on All to see animated motion bands; switch to R, G, B, or A when you need to inspect packed data directly
  • in Direction mode, keep Channel Preview on All to see static arrows aligned to the direction field; switch to B to inspect the painted/valid mask
  • the viewport header badge names the decoded vector preview when Flow or Direction is shown in All
  • use the Vector Preview toggle in the 3D viewport header to turn the decoded Flow/Direction preview shader on or off
  • switch the focus workspace between 2D, Split, and 3D
  • drag the split divider and use Swap to favor canvas-first or mesh-first review
  • reopen the window or Unity and continue with the last saved workspace layout
  • export the active texture or all textures from the Export section
  • leave Export Format on Auto for the safest mode-specific output: Color and Mask use PNG, while Flow and Direction use EXR
  • use Post Process before export when a painted mask, color map, flow map, or direction map needs a softer generated output; increase Process Radius for wider blur and Process Passes for more buildup without modifying the saved painting asset
  • enable Alpha Edge Padding for transparent color textures that need RGB bleed around visible pixels to reduce edge fringes in mips or UV borders
  • keep Preview Processed Export enabled to see the generated result in the 2D and 3D preview panes before writing files
  • assign a mesh in Preview Mesh to inspect the active texture in 3D
  • choose UV Channel to target UV0, UV1, UV2, or UV3 on the preview mesh
  • enable Show UV Shell to inspect the selected UV island boundaries while painting on either the canvas or 3D preview
  • left-click on visible mesh triangles to paint through the selected UV channel
  • use ProjectionAware 3D paint mode when painting across visible UV seams or duplicated seam vertices
  • use UVSpace 3D paint mode when you want the lighter direct UV stamp behavior; strokes now step in screen space and raycast each sample, so they no longer bridge through unrelated texture regions when the cursor crosses a UV island boundary or a U=0/1 seam
  • older assets are migrated to ProjectionAware the next time they are opened so they default to the wider-footprint seam-painting path
  • save texture bytes back onto the asset

For mesh painting:

  • the 3D preview pane is verified rendering under the Built-in Render Pipeline, URP 17.3.0 and HDRP 17.3.0, on Unity 6000.3.14f1. The preview shader is a Built-in CG shader with a single SubShader and no SRP subshaders; it renders in those SRPs via its Unlit/Texture fallback. Other pipeline versions and other editor versions are not verified. 2D painting and all exported textures work with every pipeline.
  • the preview mesh must be readable
  • the preview mesh must have valid data in the selected UV channel
  • Show UV Shell is an editor-only guide and does not write into texture pixels or exported files
  • the 2D overlay draws UV island boundaries and seam edges directly in texture space
  • the 3D overlay draws the same shell edges on front-facing preview mesh surfaces so seam placement is visible while orbiting
  • right mouse drag orbits and mouse wheel zooms the preview camera
  • projection-aware painting raycasts screen-space brush samples against the visible mesh and writes local UV dabs only where the preview surface is actually hit
  • lower Projection Seam Angle values keep paint on surfaces facing the hit normal; higher values let paint wrap farther around corners
  • projection-aware strokes do not interpolate through UV space, which prevents cylinder-style 0/1 seams from creating long texture-space bridge strokes
  • projection-aware primary strokes can cross visible seams, while mirrored symmetry clones still use texture-space stamping
  • if 3D Paint Mode shows UVSpace, the tool exposes a one-click button to switch back to ProjectionAware for the wider screen-footprint seam-painting behavior

For brush tips:

  • the brush-tip texture must have Read/Write enabled in its import settings
  • the tip currently acts as a mask on top of the brush falloff
  • Brush Shape controls the footprint independently from the assigned tip: Circle masks to a round dab, while Square samples the full square tip
  • enable Invert Brush Tip when the useful stamp shape is dark on a light/white background; the grayscale mask is flipped while alpha is preserved
  • opaque grayscale brush tips are supported and now shape the stamp correctly
  • if a brush tip is unreadable, EQPaintingLab now builds a temporary readable copy automatically
  • use Fix Brush Tip Import Settings in the Brush section if the assigned tip is not readable
  • the canvas and mesh cursor now shows a live ghost preview of the current stamp mask before paint is applied

For jitter:

  • Angle Jitter: 0-360 degrees of random stamp rotation
  • Size Jitter: 0-100% random stamp scale variation
  • Scatter: 0-100% lateral offset away from the stroke path
  • Opacity Jitter: 0-100% random stamp strength variation
  • Spacing remains the stamp cadence control and already works with the new jitter system
  • the cursor shows a light outer bound when size jitter or scatter can push stamps outside the main brush footprint

For export:

  • Color: recommended as sRGB PNG with transparency handling
  • Mask: recommended as linear PNG for grayscale, alpha, or packed mask data
  • Flow: recommended as linear EXR for motion direction in R/G and accumulated strength in B
  • Direction: recommended as linear EXR for direction-field R/G data and the B painted/valid mask
  • exported file names include the active paint-mode suffix, such as _Color, _Mask, _Flow, or _Direction
  • preview motion, arrows, and colors are editor-only visualization; exported Flow files keep packed R/G direction plus B strength, while Direction files keep packed R/G direction plus the B painted/valid mask
  • generated exports are written under Assets/EQPaintingLab/Generated
  • keep exported textures organized by painting asset name
  • use Export Active for one texture or Export All for every texture slot in the current painting asset
  • imported export textures are configured without mipmaps and with uncompressed import settings
Report an issue with this tool

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