> ## Documentation Index
> Fetch the complete documentation index at: https://sudomock.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> The base URL is https://api.sudomock.com.
> Authenticate every request with the x-api-key header. Keys begin with sm_.
> A render returns the finished image at data.print_files[0].export_path. A request sent with is_async true returns a job_id to poll at GET /api/v1/jobs/{job_id}.
> Prefer the official SDKs over hand-written HTTP calls: npm install sudomock for Node, pip install sudomock for Python.

# Smart filters

> Photoshop smart filters render with Adobe-level fidelity.

Smart filters are non-destructive Photoshop filters applied to smart object
layers. Perspective Warp is the one designers use to bend artwork onto walls,
corners, and angled surfaces. SudoMock renders supported smart filters with
Adobe-level fidelity and keeps them accurate for every design you upload, so
each new artwork gets the look the designer built in Photoshop.

<Info>
  **No extra parameters.** Smart filter rendering is automatic. If the PSD
  carries a supported filter, [Render a PSD
  mockup](/docs/api-reference/psd-mockups/render-a-psd-mockup) applies it, and the
  requests you already send do not change.
</Info>

## How it works

Keep the filter live on the [smart object](/docs/psd-mockups/smart-objects) and
upload the PSD as it stands. [Create a mockup from a
PSD](/docs/api-reference/psd-mockups/create-a-mockup-from-a-psd) reads each supported
filter off the layer and keeps it with the template instead of flattening it
into the artwork. Every later render applies it to the design you send, so one
template serves every design you have.

The rendered result carries the layer masks and blend modes the filter was built
with. Where the artwork lands and how it sits on the material is still decided
by `fit` and the blend mode, covered in [fit and blend
modes](/docs/concepts/fit-and-blend-modes). What a template can and cannot carry is
listed in [PSD compatibility](/docs/psd-mockups/psd-compatibility).

## Supported filters (as of June 2026)

Every filter below is graded against Photoshop's own output rather than our own
assumptions.

| Filter                                          | Verified result                                                       |
| ----------------------------------------------- | --------------------------------------------------------------------- |
| Perspective Warp                                | Adobe-level fidelity against Photoshop's own output.                  |
| Curves                                          | Bit-exact, with zero per-pixel error on the test fixture.             |
| Gaussian Blur                                   | Matches Photoshop's radius and edge handling.                         |
| Box Blur                                        | Opaque interior matches within a fraction of a level.                 |
| Brightness/Contrast, Invert                     | Invert is bit-exact, Brightness/Contrast matches within one level.    |
| Blur, Blur More, Solarize                       | Bit-exact one-click filters.                                          |
| Sharpen, Sharpen More, Sharpen Edges, Despeckle | One-click filters, matching within a fraction of a level.             |
| Displace                                        | Adobe-level fidelity, including heavily downscaled smart objects.     |
| Find Edges                                      | Adobe-exact on a clean reference fixture, mean per-pixel error 0.003. |

## How other tools document smart filters

The leading PSD-upload mockup APIs ask you to strip smart filters before you
upload. [Dynamic Mockups](https://dynamicmockups.com/knowledge/photoshop-psd-format/)
allows "No Smart filters or layer styles" and says these "will be ignored", and
[Mediamodifier](https://mediamodifier.com/blog/psd-format) prints the same line:
"No Smart filters or layer styles (these will be ignored)". Both PSD formatting
guides accessed June 2026. SudoMock renders those filters instead, so a template
that loses its warp elsewhere keeps it here.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Can an API render Photoshop smart filters?">
    Yes. SudoMock renders Perspective Warp, Curves, Gaussian Blur, Box Blur,
    Brightness/Contrast, Invert, Displace, Find Edges, and the one-click filters
    today, and they stay accurate for every design you upload.
  </Accordion>

  <Accordion title="Why does my perspective warp look flat in mockup generators?">
    Most PSD mockup tools skip smart filters entirely, so the layer renders
    without the warp and the artwork sits flat against the scene. SudoMock
    renders Perspective Warp with Adobe-level fidelity instead.
  </Accordion>

  <Accordion title="Do I need to rasterize smart filters before uploading?">
    For Perspective Warp, no. Keep the filter live and SudoMock renders it with
    Adobe-level fidelity on every design you upload.
  </Accordion>

  <Accordion title="How accurate is the Perspective Warp rendering?">
    In our reference test against Photoshop's own output, mean per-pixel error
    was 0.24 on a 0 to 255 scale, 89.5% of pixels matched bit for bit, and edge
    alignment stayed accurate to within 0.006 pixels.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Render a PSD mockup" icon="image" href="/docs/api-reference/psd-mockups/render-a-psd-mockup">
    Send a design to a template and get the rendered image back.
  </Card>

  <Card title="Create a mockup from a PSD" icon="upload" href="/docs/api-reference/psd-mockups/create-a-mockup-from-a-psd">
    Upload a PSD and read back the layers it carries.
  </Card>

  <Card title="Fit and blend modes" icon="layers" href="/docs/concepts/fit-and-blend-modes">
    Control how artwork meets an area and sits on the material.
  </Card>

  <Card title="Prepare a PSD" icon="file-check" href="/docs/psd-mockups/preparing-a-psd">
    Set up a template so every layer renders the way it was designed.
  </Card>
</CardGroup>
