Loading...
Searching...
No Matches
Getting Started

1. Opening the window

From the Unity menu bar:

Tools → Leadwort Studios → Watercolor Image Processor

Figure 1, the Tools > Leadwort Studios > Watercolor Image Processor menu path

This opens a floating (or dockable) window split into two columns:

  • Left column: loaded textures list, preview controls, and the preview area.
  • Right column: parameters for the active preset, organized by section.

Figure 2, the window right after opening, with no texture or preset loaded yet


2. Loading input images

The window works with a list of textures, so you can queue up several images and process them under the same preset.

Under Loaded Textures, you have two ways to add images:

  • Drag and drop one or more textures onto the drop area.
  • Click Add Single Texture to pick one from the Project via the object picker.

Note: Textures you've added stay in the list across sessions.

Figure 3, the Loaded Textures panel with the drop area, Add Single Texture and Clear All buttons, and a few loaded thumbnails

Once you have more than one texture loaded, use the < / > arrows on either side of the drop area, or click directly on a thumbnail in the strip below, to switch which texture is active. The counter (e.g. 2 / 5) shows your position in the list.

Figure 4, the thumbnail strip with several textures loaded, one selected, and the remove button visible on hover

To remove a texture, click the small button on its thumbnail. To clear everything, use Clear All (this asks for confirmation first).

Note: any imported Texture2D in the project works as input. If a texture has invalid dimensions (0x0) or can't be read, the window will warn you and won't attempt to process it.


3. Creating or assigning a Watercolor Preset

Without a Watercolor Preset assigned, the parameters panel stays empty and you will only see a notice asking you to assign or create one.

You have three options:

Option A: Create a new preset

Click Create New Preset. A dialog will open to choose a name and location within the project (Assets/...). The preset is created as an .asset file and is automatically assigned as the active preset.

Option B: Use an existing preset

Drag an already-created WatercolorPreset asset into the Active Preset field, or select one with the object picker.

Option C: Duplicate the active preset

Click Duplicate Preset to save a copy of the currently active preset under a new name, then keep tweaking the copy without touching the original. Useful for branching off a variant (e.g. "Soft Preset" → "Soft Preset — High Contrast").

Figure 5, the Create New Preset / Duplicate Preset / Override button row, and Unity's Save File Panel dialog for naming a new preset asset

Figure 6, the Active Preset field with a preset already assigned, with the unlocked parameters panel visible in the background

Presets are reusable: you can have several different presets (e.g. "Soft Preset", "High Contrast Preset") and switch between them without losing each one's configuration, since every value is stored on its own asset.


4. Per-texture overrides

Sometimes one image in your batch needs slightly different settings than the rest, without creating (and remembering to assign) a whole separate preset asset.

Click Override while a texture is selected to branch off a private copy of the active preset just for that texture. The button highlights orange while an override is active.

  • Any parameter you change while the override is active only affects that texture.
  • Switching to a different texture and back preserves the override.
  • Clicking Override again on the same texture removes it and reverts that texture to the shared preset.
  • Overrides persist across sessions, same as everything else in the window.

Figure 7, the Override button in its active orange-highlighted state, with a parameter now differing from the base preset for this texture only

This is useful for batch exports where most images share a look, but one or two need a tweak (e.g. a busier image needing a larger Spatial Radius).


5. Processing the image

With at least one texture and a preset assigned, you have two workflows:

  • Realtime Preview (enabled by default): any parameter change automatically reprocesses the currently selected image.
  • Realtime Preview (disabled): parameter changes aren't applied until you press Process Image manually. Useful on slower machines or when the compute shader takes a while with large images.

Figure 8, the Realtime Preview / Process Image / Export Current / Export All button row, with Realtime Preview toggled on


6. Preview and Debug Views

Below the configuration area you'll find two main tabs:

  • Original Image: shows the unprocessed input texture.
  • Final Result: shows the final output of the watercolor pipeline.

Figure 9, the Original Image / Final Result tabs with Final Result selected, showing an already-processed image

In addition, the Debug View dropdown lets you inspect intermediate buffers of the pipeline, useful for understanding or debugging what each stage is doing:

Debug View What it shows
None Same as Final Result
MeanShiftResult Result of the Mean-Shift segmentation (requires it to be enabled)
MorphologyResult Result of the morphology filter (requires it to be enabled)
EdgeDarkening Final result with the edge-darkening debug mode
DryBrush Final result with the dry-brush debug mode
TurbulenceTexture Turbulence texture used for pigment dispersion
DispersionTexture Pigment dispersion texture
PaperTexture Paper surface texture

Figure 10, the Debug View dropdown expanded, showing the full list of options

Figure 11, side-by-side comparison of MeanShiftResult vs. Final Result for the same image

Figure 12, the preview in its empty state, showing a gray box with a centered explanatory message

Note: switching between textures in the Loaded Textures list automatically resets the view back to Final Result, so you don't accidentally read a debug buffer from the wrong image.

Preview zoom

Use the Preview Zoom slider to zoom in or out within the panel, or the 1x button to return to the original size.

Figure 13, the Preview Zoom slider next to the 1x button, with the preview at a noticeably higher zoom level


7. Adjusting preset parameters

The right panel groups the active (or overridden) preset's controls into the following sections. Every individual parameter has its own Reset button to return it to its default value.

Figure 14, a typical parameter row with a slider and its Reset button

Mean-Shift Segmentation

Groups similar colors into flat regions, simulating how watercolor tends to "flatten" in areas of uniform color.

  • Spatial Radius: how far (in pixels) similar colors get grouped together.
  • Color Radius: how similar colors need to be in order to group together.
  • Iterations: number of passes of the algorithm (more iterations = more smoothing, more cost).

Figure 15, before/after comparison of enabling Mean-Shift on the same image

Morphology Filter

Smooths or expands the edges of the segmented regions.

  • Kernel Size (Radius): size of the sampling area for the filter.
  • Morphology Mode: Expand or Dilatate, changes how edges behave.

Figure 16, comparison of the Expand vs Dilatate modes on the same image with the same Kernel Size

Pigment Density Textures

Controls the textures that simulate how pigment behaves on paper: turbulence, dispersion, and paper texture.

  • Turbulence Map / Pigment / Scale
  • Dispersion Map / Pigment / Scale
  • Paper Surface / Pigment / Resolution

Figure 17, the Turbulence Map, Dispersion Map and Paper Surface fields with their default textures, and the visual contribution of each

Effects & Mixing

  • Edge Darkening: darkens edges between color regions, simulating the "pigment buildup" effect typical of watercolor.
  • Edge Thickness: thickness of that darkening.
  • Wobbling Strength: organic distortion at the edges.
  • Global Intensity: overall intensity of the watercolor effect over the original image.

Figure 18, comparison with Edge Darkening at 0 vs. a high value, showing the characteristic dark-edge watercolor effect

Dry Brush Simulation

Simulates "dry brush" areas, where pigment doesn't fully cover the paper.

  • Threshold: the point at which an area is considered "dry".
  • Softness: how smooth the transition is between dry and wet areas.

Figure 19, comparison with Dry Brush disabled vs. enabled at a mid-range Threshold

If a texture has an active override, any parameter change here only affects that texture. See Per-texture overridesPer-texture overrides.


8. Exporting the result

You have two export options, both available once at least one image has been processed:

Export Current

Click Export Current to save only the currently selected image's result. A native dialog opens, defaulting to a filename based on the source texture (e.g. myImage_watercolor.png).

Figure 20, the Export Current button and the native save dialog with a default filename

Export All

Click Export All to batch-process and export every texture in the Loaded Textures list using the shared preset (respecting any per-texture overrides). You'll be asked to choose a destination folder, then a progress bar shows processing status per image; you can cancel mid-batch.

Figure 21, the Export All button, the folder-selection dialog, and the cancelable progress bar mid-batch

When the batch finishes, a summary is logged to the Console with the number of successes and failures and the destination folder.

If an export fails (for example, due to folder permissions or disk space) you'll see an error detailing the cause in the Console, prefixed with [Watercolor].


9. Undo / Redo

All parameter changes on the active (or overridden) preset are integrated with Unity's Undo system (Ctrl+Z / Cmd+Z, Ctrl+Y / Cmd+Y). You can undo slider, toggle, and texture changes just like any other editor operation.

Figure 22, an example entry in Unity's Undo History showing a Watercolor Preset parameter change


10. Persistence across sessions

The window automatically remembers your entire loaded texture list, which one was selected, the active preset, the zoom level, and every per-texture override — even if you close and reopen Unity. This is saved per-project (not a global editor setting).


Common troubleshooting

Symptom Likely cause
The window shows "Compute shaders not found" The .compute files are missing from the Resources/Shaders/Compute/... paths
The preview stays gray with a message The selected debug view has no data (the related effect is disabled, etc.)
The result doesn't change when adjusting a parameter Realtime Preview is disabled, press Process Image manually
I can't touch any parameters No Watercolor Preset is assigned, create one or assign one
A parameter change isn't showing up on other images in my batch That texture has an active Override — changes only apply to it, not the shared preset
Nothing happens on export / an error shows up in the console Check the [Watercolor] message in the console: it usually points to permissions or an invalid path

See also: Classes for the full class reference.

Changelog: Changelog